[cvc4] 01/10: New upstream version 1.5

Fabian Wolff fw-guest at moszumanska.debian.org
Tue Jul 11 23:02:01 UTC 2017


This is an automated email from the git hooks/post-receive script.

fw-guest pushed a commit to branch master
in repository cvc4.

commit c9b82843611eb71d8e698eabeb3410cd31ebf7af
Author: Fabian Wolff <fabi.wolff at arcor.de>
Date:   Tue Jul 11 17:06:09 2017 +0200

    New upstream version 1.5
---
 AUTHORS                                            |    19 +-
 INSTALL                                            |    15 +-
 Makefile.am                                        |     4 +-
 Makefile.in                                        |     5 +-
 NEWS                                               |    17 +-
 README                                             |    55 +-
 RELEASE-NOTES                                      |    36 +-
 THANKS                                             |    44 +-
 config/cryptominisat.m4                            |    10 +-
 configure                                          |   168 +-
 configure.ac                                       |    36 +-
 contrib/Makefile.in                                |     1 +
 cvc4autoconfig.h.in                                |     3 +
 doc/SmtEngine.3cvc                                 |    95 +-
 doc/cvc4.1                                         |    79 +-
 doc/libcvc4.3                                      |     2 +-
 doc/options.3cvc                                   |   132 +-
 examples/Makefile.in                               |     1 +
 examples/SimpleVC.java                             |     4 +-
 examples/SimpleVCCompat.java                       |     4 +-
 examples/api/Makefile.in                           |     1 +
 examples/api/bitvectors.cpp                        |     4 +-
 examples/api/bitvectors_and_arrays.cpp             |     4 +-
 examples/api/combination.cpp                       |     4 +-
 examples/api/datatypes.cpp                         |     4 +-
 examples/api/extract.cpp                           |     4 +-
 examples/api/helloworld.cpp                        |     4 +-
 examples/api/java/BitVectors.java                  |     4 +-
 examples/api/java/BitVectorsAndArrays.java         |     4 +-
 examples/api/java/CVC4Streams.java                 |     4 +-
 examples/api/java/Combination.java                 |     4 +-
 examples/api/java/Datatypes.java                   |     4 +-
 examples/api/java/HelloWorld.java                  |     4 +-
 examples/api/java/LinearArith.java                 |     4 +-
 examples/api/java/Makefile.in                      |     1 +
 examples/api/java/PipedInput.java                  |     4 +-
 examples/api/java/Strings.java                     |     4 +-
 examples/api/linear_arith.cpp                      |     4 +-
 examples/api/sets.cpp                              |     4 +-
 examples/api/strings.cpp                           |     4 +-
 examples/hashsmt/Makefile.in                       |     1 +
 examples/hashsmt/sha1.hpp                          |     4 +-
 examples/hashsmt/sha1_collision.cpp                |     4 +-
 examples/hashsmt/sha1_inversion.cpp                |     2 +-
 examples/hashsmt/word.cpp                          |     2 +-
 examples/hashsmt/word.h                            |     4 +-
 examples/nra-translate/Makefile.in                 |     1 +
 examples/nra-translate/normalize.cpp               |     2 +-
 examples/nra-translate/smt2info.cpp                |     4 +-
 examples/nra-translate/smt2todreal.cpp             |     2 +-
 examples/nra-translate/smt2toisat.cpp              |     4 +-
 examples/nra-translate/smt2tomathematica.cpp       |     2 +-
 examples/nra-translate/smt2toqepcad.cpp            |     2 +-
 examples/nra-translate/smt2toredlog.cpp            |     4 +-
 examples/sets-translate/Makefile.in                |     1 +
 examples/sets-translate/sets_translate.cpp         |     4 +-
 examples/simple_vc_compat_c.c                      |     4 +-
 examples/simple_vc_compat_cxx.cpp                  |     4 +-
 examples/simple_vc_cxx.cpp                         |     4 +-
 examples/translator.cpp                            |     4 +-
 library_versions                                   |     1 +
 proofs/lfsc_checker/code.cpp                       |    19 +
 proofs/signatures/Makefile.in                      |     1 +
 proofs/signatures/signatures.cpp                   |    45 +-
 proofs/signatures/smt.plf                          |    41 +
 proofs/signatures/th_bv_bitblast.plf               |     4 +-
 src/Makefile.am                                    |   636 +-
 src/Makefile.in                                    |  1422 +-
 src/base/Makefile.in                               |     1 +
 src/base/configuration.cpp                         |     2 +-
 src/base/configuration.h                           |     2 +-
 src/base/configuration_private.h                   |     7 +-
 src/base/cvc4_assert.cpp                           |     4 +-
 src/base/cvc4_assert.h                             |     4 +-
 src/base/exception.cpp                             |     4 +-
 src/base/exception.h                               |     4 +-
 src/base/listener.cpp                              |     4 +-
 src/base/listener.h                                |     4 +-
 src/base/modal_exception.h                         |     4 +-
 src/base/output.cpp                                |     4 +-
 src/base/output.h                                  |     2 +-
 src/base/ptr_closer.h                              |     2 +-
 src/base/tls.h.in                                  |     4 +-
 src/bindings/Makefile.in                           |     1 +
 src/bindings/compat/Makefile.in                    |     1 +
 src/bindings/compat/c/Makefile.in                  |     1 +
 src/bindings/compat/java/Makefile.in               |     1 +
 src/bindings/java_iterator_adapter.h               |     4 +-
 src/bindings/java_stream_adapters.h                |     4 +-
 src/bindings/swig.h                                |     4 +-
 src/compat/Makefile.in                             |     1 +
 src/compat/cvc3_compat.cpp                         |     2 +-
 src/compat/cvc3_compat.h                           |     4 +-
 src/context/backtrackable.h                        |     4 +-
 src/context/cdchunk_list.h                         |     4 +-
 src/context/cddense_set.h                          |     4 +-
 src/context/cdhashmap.h                            |     2 +-
 src/context/cdhashmap_forward.h                    |     4 +-
 src/context/cdhashset.h                            |     4 +-
 src/context/cdhashset_forward.h                    |     4 +-
 src/context/cdinsert_hashmap.h                     |     2 +-
 src/context/cdinsert_hashmap_forward.h             |     4 +-
 src/context/cdlist.h                               |     2 +-
 src/context/cdlist_forward.h                       |     4 +-
 src/context/cdmaybe.h                              |     4 +-
 src/context/cdo.h                                  |     2 +-
 src/context/cdqueue.h                              |     4 +-
 src/context/cdtrail_hashmap.h                      |     2 +-
 src/context/cdtrail_hashmap_forward.h              |     4 +-
 src/context/cdtrail_queue.h                        |     4 +-
 src/context/cdvector.h                             |     4 +-
 src/context/context.cpp                            |     2 +-
 src/context/context.h                              |     4 +-
 src/context/context_mm.cpp                         |     2 +-
 src/context/context_mm.h                           |     2 +-
 src/context/stacking_vector.h                      |   114 -
 src/decision/decision_attributes.h                 |     4 +-
 src/decision/decision_engine.cpp                   |     4 +-
 src/decision/decision_engine.h                     |     4 +-
 src/decision/decision_strategy.h                   |     4 +-
 src/decision/justification_heuristic.cpp           |     2 +-
 src/decision/justification_heuristic.h             |     4 +-
 src/expr/Makefile.am                               |    31 +-
 src/expr/Makefile.in                               |    32 +-
 src/expr/array.h                                   |     4 +-
 src/expr/array_store_all.cpp                       |     4 +-
 src/expr/array_store_all.h                         |     4 +-
 src/expr/ascription_type.h                         |     4 +-
 src/expr/attribute.cpp                             |     2 +-
 src/expr/attribute.h                               |     2 +-
 src/expr/attribute_internals.h                     |     2 +-
 src/expr/attribute_unique_id.h                     |     4 +-
 src/expr/chain.h                                   |     4 +-
 src/expr/convenience_node_builders.h               |     4 +-
 src/expr/datatype.cpp                              |    38 +-
 src/expr/datatype.h                                |     7 +-
 src/expr/emptyset.cpp                              |     2 +-
 src/expr/emptyset.h                                |     4 +-
 src/expr/expr_iomanip.cpp                          |     4 +-
 src/expr/expr_iomanip.h                            |     4 +-
 src/expr/expr_manager_scope.h                      |     4 +-
 src/expr/expr_manager_template.cpp                 |    10 +-
 src/expr/expr_manager_template.h                   |    12 +-
 src/expr/expr_stream.h                             |     4 +-
 src/expr/expr_template.cpp                         |    17 +-
 src/expr/expr_template.h                           |     2 +-
 src/expr/kind_map.h                                |     4 +-
 src/expr/kind_template.h                           |     4 +-
 src/expr/matcher.h                                 |     4 +-
 src/expr/metakind_template.h                       |     9 +-
 src/expr/mkexpr                                    |     8 +-
 src/expr/mkkind                                    |    11 +-
 src/expr/mkmetakind                                |    11 +-
 src/expr/node.cpp                                  |     2 +-
 src/expr/node.h                                    |    18 +-
 src/expr/node_builder.h                            |     7 +-
 src/expr/node_manager.cpp                          |    21 +-
 src/expr/node_manager.h                            |     5 +-
 src/expr/node_manager_attributes.h                 |     4 +-
 src/expr/node_manager_listeners.cpp                |     4 +-
 src/expr/node_manager_listeners.h                  |     4 +-
 src/expr/node_self_iterator.h                      |     4 +-
 src/expr/node_value.cpp                            |     6 +-
 src/expr/node_value.h                              |     4 +-
 src/expr/pickle_data.cpp                           |     4 +-
 src/expr/pickle_data.h                             |     4 +-
 src/expr/pickler.cpp                               |     2 +-
 src/expr/pickler.h                                 |     4 +-
 src/expr/predicate.cpp                             |     4 +-
 src/expr/predicate.h                               |     4 +-
 src/expr/record.cpp                                |     4 +-
 src/expr/record.h                                  |     4 +-
 src/expr/symbol_table.cpp                          |     4 +-
 src/expr/symbol_table.h                            |     2 +-
 src/expr/type.cpp                                  |    27 +-
 src/expr/type.h                                    |     2 +-
 src/expr/type_checker.h                            |     4 +-
 src/expr/type_checker_template.cpp                 |     8 +-
 src/expr/type_node.cpp                             |    42 +-
 src/expr/type_node.h                               |     6 +-
 src/expr/type_properties_template.h                |     4 +-
 src/expr/uninterpreted_constant.cpp                |     4 +-
 src/expr/uninterpreted_constant.h                  |     4 +-
 src/expr/variable_type_map.h                       |     4 +-
 src/git_versioninfo.cpp                            |     8 +-
 src/include/cvc4.h                                 |     4 +-
 src/include/cvc4_private.h                         |     4 +-
 src/include/cvc4_private_library.h                 |     4 +-
 src/include/cvc4_public.h                          |     4 +-
 src/include/cvc4parser_private.h                   |     4 +-
 src/include/cvc4parser_public.h                    |     4 +-
 src/lib/Makefile.in                                |     1 +
 src/lib/clock_gettime.c                            |     4 +-
 src/lib/clock_gettime.h                            |     4 +-
 src/lib/ffs.c                                      |     4 +-
 src/lib/ffs.h                                      |     4 +-
 src/lib/replacements.h                             |     4 +-
 src/lib/strtok_r.c                                 |     4 +-
 src/lib/strtok_r.h                                 |     4 +-
 src/main/Makefile.in                               |     1 +
 src/main/command_executor.cpp                      |     2 +-
 src/main/command_executor.h                        |    11 +-
 src/main/command_executor_portfolio.cpp            |     2 +-
 src/main/command_executor_portfolio.h              |     4 +-
 src/main/driver_unified.cpp                        |    19 +-
 src/main/interactive_shell.cpp                     |     8 +-
 src/main/interactive_shell.h                       |     4 +-
 src/main/main.cpp                                  |     5 +-
 src/main/main.h                                    |     6 +-
 src/main/portfolio.cpp                             |     4 +-
 src/main/portfolio.h                               |     4 +-
 src/main/portfolio_util.cpp                        |     2 +-
 src/main/portfolio_util.h                          |     2 +-
 src/main/util.cpp                                  |   241 +-
 src/options/Makefile.am                            |    29 +-
 src/options/Makefile.in                            |    30 +-
 src/options/argument_extender.h                    |     4 +-
 src/options/argument_extender_implementation.cpp   |     4 +-
 src/options/argument_extender_implementation.h     |     4 +-
 src/options/arith_heuristic_pivot_rule.cpp         |     4 +-
 src/options/arith_heuristic_pivot_rule.h           |     4 +-
 src/options/arith_options                          |    26 +-
 src/options/arith_options.cpp                      |   366 +-
 src/options/arith_options.h                        |   768 +-
 src/options/arith_propagation_mode.cpp             |     4 +-
 src/options/arith_propagation_mode.h               |     4 +-
 src/options/arith_unate_lemma_mode.cpp             |     4 +-
 src/options/arith_unate_lemma_mode.h               |     4 +-
 src/options/arrays_options.cpp                     |    80 +-
 src/options/arrays_options.h                       |   158 +-
 src/options/base_handlers.h                        |     4 +-
 src/options/base_options.cpp                       |   110 +-
 src/options/base_options.h                         |   228 +-
 src/options/base_options_template.cpp              |     4 +-
 src/options/base_options_template.h                |     4 +-
 src/options/booleans_options.cpp                   |     8 +-
 src/options/booleans_options.h                     |    14 +-
 src/options/builtin_options.cpp                    |     8 +-
 src/options/builtin_options.h                      |    14 +-
 src/options/bv_bitblast_mode.cpp                   |     2 +-
 src/options/bv_bitblast_mode.h                     |     2 +-
 src/options/bv_options.cpp                         |   186 +-
 src/options/bv_options.h                           |   376 +-
 src/options/datatypes_options.cpp                  |    66 +-
 src/options/datatypes_options.h                    |   130 +-
 src/options/decision_mode.cpp                      |     4 +-
 src/options/decision_mode.h                        |     4 +-
 src/options/decision_options.cpp                   |    48 +-
 src/options/decision_options.h                     |    98 +-
 src/options/decision_weight.h                      |     4 +-
 src/options/didyoumean.cpp                         |     2 +-
 src/options/didyoumean.h                           |     2 +-
 src/options/expr_options.cpp                       |    38 +-
 src/options/expr_options.h                         |    74 +-
 src/options/fp_options.cpp                         |     8 +-
 src/options/fp_options.h                           |    14 +-
 src/options/idl_options.cpp                        |    16 +-
 src/options/idl_options.h                          |    30 +-
 src/options/language.cpp                           |    12 +-
 src/options/language.h                             |    13 +-
 src/options/language.i                             |     2 +
 src/options/main_options.cpp                       |   112 +-
 src/options/main_options.h                         |   226 +-
 src/options/open_ostream.cpp                       |     4 +-
 src/options/open_ostream.h                         |     4 +-
 src/options/option_exception.h                     |     4 +-
 src/options/options.h                              |     4 +-
 src/options/options_get_option_template.cpp        |     4 +-
 src/options/options_handler.cpp                    |     6 +-
 src/options/options_handler.h                      |     4 +-
 src/options/options_holder_template.h              |     4 +-
 src/options/options_public_functions.cpp           |     4 +-
 src/options/options_set_option_template.cpp        |     4 +-
 src/options/options_template.cpp                   |     4 +-
 src/options/parser_options.cpp                     |    38 +-
 src/options/parser_options.h                       |    74 +-
 src/options/printer_modes.cpp                      |     4 +-
 src/options/printer_modes.h                        |     4 +-
 src/options/printer_options.cpp                    |    24 +-
 src/options/printer_options.h                      |    50 +-
 src/options/proof_options.cpp                      |    34 +-
 src/options/proof_options.h                        |    66 +-
 src/options/prop_options.cpp                       |    70 +-
 src/options/prop_options.h                         |   138 +-
 src/options/quantifiers_modes.cpp                  |     2 +-
 src/options/quantifiers_modes.h                    |     2 +-
 src/options/quantifiers_options                    |    16 +-
 src/options/quantifiers_options.cpp                |   986 +-
 src/options/quantifiers_options.h                  |  2028 +-
 src/options/sep_options.cpp                        |    44 +-
 src/options/sep_options.h                          |    86 +-
 src/options/set_language.cpp                       |     4 +-
 src/options/set_language.h                         |     4 +-
 src/options/sets_options                           |     3 +
 src/options/sets_options.cpp                       |    32 +-
 src/options/sets_options.h                         |    67 +-
 src/options/simplification_mode.cpp                |     4 +-
 src/options/simplification_mode.h                  |     4 +-
 src/options/smt_options                            |    51 +-
 src/options/smt_options.cpp                        |   388 +-
 src/options/smt_options.h                          |   784 +-
 src/options/strings_options.cpp                    |   162 +-
 src/options/strings_options.h                      |   322 +-
 src/options/theory_options.cpp                     |    22 +-
 src/options/theory_options.h                       |    44 +-
 src/options/theoryof_mode.cpp                      |     4 +-
 src/options/theoryof_mode.h                        |     4 +-
 src/options/uf_options.cpp                         |   108 +-
 src/options/uf_options.h                           |   216 +-
 src/options/ufss_mode.h                            |     4 +-
 src/parser/Makefile.am                             |     2 +
 src/parser/Makefile.in                             |     6 +-
 src/parser/antlr_input.cpp                         |    48 +-
 src/parser/antlr_input.h                           |    24 +-
 src/parser/antlr_input_imports.cpp                 |    16 +-
 src/parser/antlr_line_buffered_input.cpp           |   321 +-
 src/parser/antlr_line_buffered_input.h             |    24 +-
 src/parser/antlr_tracing.h                         |     4 +-
 src/parser/antlr_undefines.h                       |     4 +-
 src/parser/bounded_token_buffer.cpp                |     4 +-
 src/parser/bounded_token_buffer.h                  |     4 +-
 src/parser/bounded_token_factory.cpp               |     4 +-
 src/parser/bounded_token_factory.h                 |     4 +-
 src/parser/cvc/Cvc.g                               |    47 +-
 src/parser/cvc/Cvc.tokens                          |   340 +-
 src/parser/cvc/CvcLexer.c                          |  3852 +-
 src/parser/cvc/CvcLexer.h                          |   190 +-
 src/parser/cvc/CvcParser.c                         | 11162 ++--
 src/parser/cvc/CvcParser.h                         |   193 +-
 src/parser/cvc/Makefile.in                         |     1 +
 src/parser/cvc/cvc_input.cpp                       |     2 +-
 src/parser/cvc/cvc_input.h                         |     4 +-
 src/parser/input.cpp                               |     2 +-
 src/parser/input.h                                 |     7 +-
 src/parser/line_buffer.cpp                         |    88 +
 src/parser/line_buffer.h                           |    76 +
 src/parser/memory_mapped_input_buffer.cpp          |     2 +-
 src/parser/memory_mapped_input_buffer.h            |     4 +-
 src/parser/parser.cpp                              |     4 +-
 src/parser/parser.h                                |     2 +-
 src/parser/parser_builder.cpp                      |     3 +-
 src/parser/parser_builder.h                        |     4 +-
 src/parser/parser_exception.h                      |     4 +-
 src/parser/smt1/Makefile.in                        |     1 +
 src/parser/smt1/Smt1.g                             |    11 +-
 src/parser/smt1/Smt1Lexer.c                        |   866 +-
 src/parser/smt1/Smt1Lexer.h                        |     4 +-
 src/parser/smt1/Smt1Parser.c                       |   419 +-
 src/parser/smt1/Smt1Parser.h                       |    13 +-
 src/parser/smt1/smt1.cpp                           |     2 +-
 src/parser/smt1/smt1.h                             |     4 +-
 src/parser/smt1/smt1_input.cpp                     |     2 +-
 src/parser/smt1/smt1_input.h                       |     4 +-
 src/parser/smt2/Makefile.in                        |     1 +
 src/parser/smt2/Smt2.g                             |   322 +-
 src/parser/smt2/Smt2.tokens                        |   277 +-
 src/parser/smt2/Smt2Lexer.c                        | 60045 ++++++++++---------
 src/parser/smt2/Smt2Lexer.h                        |   337 +-
 src/parser/smt2/Smt2Parser.c                       |  6364 +-
 src/parser/smt2/Smt2Parser.h                       |   290 +-
 src/parser/smt2/smt2.cpp                           |    33 +-
 src/parser/smt2/smt2.h                             |    12 +-
 src/parser/smt2/smt2_input.cpp                     |     5 +-
 src/parser/smt2/smt2_input.h                       |     4 +-
 src/parser/smt2/sygus_input.cpp                    |     4 +-
 src/parser/smt2/sygus_input.h                      |     4 +-
 src/parser/tptp/Makefile.in                        |     1 +
 src/parser/tptp/Tptp.g                             |    17 +-
 src/parser/tptp/TptpLexer.c                        |   720 +-
 src/parser/tptp/TptpLexer.h                        |     4 +-
 src/parser/tptp/TptpParser.c                       |   679 +-
 src/parser/tptp/TptpParser.h                       |    13 +-
 src/parser/tptp/tptp.cpp                           |     4 +-
 src/parser/tptp/tptp.h                             |     4 +-
 src/parser/tptp/tptp_input.cpp                     |     4 +-
 src/parser/tptp/tptp_input.h                       |     4 +-
 src/printer/ast/ast_printer.cpp                    |     4 +-
 src/printer/ast/ast_printer.h                      |     4 +-
 src/printer/cvc/cvc_printer.cpp                    |    28 +-
 src/printer/cvc/cvc_printer.h                      |     4 +-
 src/printer/dagification_visitor.cpp               |     4 +-
 src/printer/dagification_visitor.h                 |     4 +-
 src/printer/printer.cpp                            |     7 +-
 src/printer/printer.h                              |     4 +-
 src/printer/smt1/smt1_printer.cpp                  |     4 +-
 src/printer/smt1/smt1_printer.h                    |     4 +-
 src/printer/smt2/smt2_printer.cpp                  |   284 +-
 src/printer/smt2/smt2_printer.h                    |     7 +-
 src/printer/tptp/tptp_printer.cpp                  |     4 +-
 src/printer/tptp/tptp_printer.h                    |     4 +-
 src/proof/arith_proof.cpp                          |     4 +-
 src/proof/arith_proof.h                            |     2 +-
 src/proof/array_proof.cpp                          |    31 +-
 src/proof/array_proof.h                            |     2 +-
 src/proof/bitvector_proof.cpp                      |     6 +-
 src/proof/bitvector_proof.h                        |     3 +-
 src/proof/clause_id.h                              |     4 +-
 src/proof/cnf_proof.cpp                            |     2 +-
 src/proof/cnf_proof.h                              |     2 +-
 src/proof/lemma_proof.cpp                          |    19 +-
 src/proof/lemma_proof.h                            |    17 +-
 src/proof/proof.h                                  |     4 +-
 src/proof/proof_manager.cpp                        |    80 +-
 src/proof/proof_manager.h                          |    35 +-
 src/proof/proof_output_channel.cpp                 |    18 +-
 src/proof/proof_output_channel.h                   |     7 +
 src/proof/proof_utils.cpp                          |     4 +-
 src/proof/proof_utils.h                            |     4 +-
 src/proof/sat_proof.h                              |    27 +-
 src/proof/sat_proof_implementation.h               |    91 +-
 src/proof/simplify_boolean_node.cpp                |   183 +
 .../simplify_boolean_node.h}                       |    22 +-
 src/proof/skolemization_manager.cpp                |     4 +-
 src/proof/skolemization_manager.h                  |     2 +-
 src/proof/theory_proof.cpp                         |    25 +-
 src/proof/theory_proof.h                           |     5 +-
 src/proof/uf_proof.cpp                             |    89 +-
 src/proof/uf_proof.h                               |     4 +-
 src/proof/unsat_core.cpp                           |     4 +-
 src/proof/unsat_core.h                             |     7 +-
 src/prop/bvminisat/Makefile                        |    77 +-
 src/prop/bvminisat/Makefile.in                     |     1 +
 src/prop/bvminisat/bvminisat.cpp                   |    16 +-
 src/prop/bvminisat/bvminisat.h                     |    16 +-
 src/prop/cnf_stream.cpp                            |     2 +-
 src/prop/cnf_stream.h                              |     4 +-
 src/prop/cryptominisat.cpp                         |    16 +-
 src/prop/cryptominisat.h                           |    16 +-
 src/prop/minisat/Makefile                          |    77 +-
 src/prop/minisat/Makefile.in                       |     1 +
 src/prop/minisat/core/Solver.cc                    |     7 +-
 src/prop/minisat/minisat.cpp                       |    16 +-
 src/prop/minisat/minisat.h                         |    16 +-
 src/prop/prop_engine.cpp                           |     2 +-
 src/prop/prop_engine.h                             |     2 +-
 src/prop/registrar.h                               |     2 +-
 src/prop/sat_solver.h                              |     2 +-
 src/prop/sat_solver_factory.cpp                    |     4 +-
 src/prop/sat_solver_factory.h                      |     4 +-
 src/prop/sat_solver_types.h                        |     4 +-
 src/prop/theory_proxy.cpp                          |     4 +-
 src/prop/theory_proxy.h                            |     2 +-
 src/smt/command.cpp                                |   120 +-
 src/smt/command.h                                  |   126 +-
 src/smt/command_list.cpp                           |     4 +-
 src/smt/command_list.h                             |     4 +-
 src/smt/dump.cpp                                   |     4 +-
 src/smt/dump.h                                     |     4 +-
 src/smt/logic_exception.h                          |     4 +-
 src/smt/logic_request.cpp                          |     4 +-
 src/smt/logic_request.h                            |     4 +-
 src/smt/managed_ostreams.cpp                       |     4 +-
 src/smt/managed_ostreams.h                         |     4 +-
 src/smt/model.cpp                                  |     4 +-
 src/smt/model.h                                    |     4 +-
 src/smt/smt_engine.cpp                             |   399 +-
 src/smt/smt_engine.h                               |    31 +-
 src/smt/smt_engine.i                               |     1 -
 src/smt/smt_engine_check_proof.cpp                 |     4 +-
 src/smt/smt_engine_scope.cpp                       |     4 +-
 src/smt/smt_engine_scope.h                         |     2 +-
 src/smt/smt_statistics_registry.cpp                |     4 +-
 src/smt/smt_statistics_registry.h                  |     4 +-
 src/smt/term_formula_removal.cpp                   |    19 +-
 src/smt/term_formula_removal.h                     |     4 +-
 src/smt/update_ostream.h                           |     4 +-
 src/smt_util/Makefile.in                           |     1 +
 src/smt_util/boolean_simplification.cpp            |     4 +-
 src/smt_util/boolean_simplification.h              |     4 +-
 src/smt_util/lemma_channels.cpp                    |     4 +-
 src/smt_util/lemma_channels.h                      |     4 +-
 src/smt_util/lemma_input_channel.h                 |     4 +-
 src/smt_util/lemma_output_channel.h                |     4 +-
 src/smt_util/nary_builder.cpp                      |     4 +-
 src/smt_util/nary_builder.h                        |     4 +-
 src/smt_util/node_visitor.h                        |     2 +-
 src/svn_versioninfo.cpp                            |     8 +-
 src/theory/arith/approx_simplex.cpp                |     4 +-
 src/theory/arith/approx_simplex.h                  |     4 +-
 src/theory/arith/arith_ite_utils.cpp               |     4 +-
 src/theory/arith/arith_ite_utils.h                 |     4 +-
 src/theory/arith/arith_rewriter.cpp                |    10 +-
 src/theory/arith/arith_rewriter.h                  |     2 +-
 src/theory/arith/arith_static_learner.cpp          |     2 +-
 src/theory/arith/arith_static_learner.h            |     4 +-
 src/theory/arith/arith_utilities.h                 |    58 +-
 src/theory/arith/arithvar.cpp                      |     4 +-
 src/theory/arith/arithvar.h                        |     4 +-
 src/theory/arith/attempt_solution_simplex.cpp      |     4 +-
 src/theory/arith/attempt_solution_simplex.h        |     4 +-
 src/theory/arith/bound_counts.h                    |     4 +-
 src/theory/arith/callbacks.cpp                     |     4 +-
 src/theory/arith/callbacks.h                       |     4 +-
 src/theory/arith/congruence_manager.cpp            |     7 +-
 src/theory/arith/congruence_manager.h              |     7 +-
 src/theory/arith/constraint.cpp                    |     4 +-
 src/theory/arith/constraint.h                      |     4 +-
 src/theory/arith/constraint_forward.h              |     4 +-
 src/theory/arith/cut_log.cpp                       |     4 +-
 src/theory/arith/cut_log.h                         |     2 +-
 src/theory/arith/delta_rational.cpp                |     4 +-
 src/theory/arith/delta_rational.h                  |     2 +-
 src/theory/arith/dio_solver.cpp                    |     4 +-
 src/theory/arith/dio_solver.h                      |     4 +-
 src/theory/arith/dual_simplex.cpp                  |     4 +-
 src/theory/arith/dual_simplex.h                    |     4 +-
 src/theory/arith/error_set.cpp                     |     4 +-
 src/theory/arith/error_set.h                       |     4 +-
 src/theory/arith/fc_simplex.cpp                    |     4 +-
 src/theory/arith/fc_simplex.h                      |     4 +-
 src/theory/arith/infer_bounds.cpp                  |     4 +-
 src/theory/arith/infer_bounds.h                    |     4 +-
 src/theory/arith/kinds                             |     2 +
 src/theory/arith/linear_equality.cpp               |     4 +-
 src/theory/arith/linear_equality.h                 |     4 +-
 src/theory/arith/matrix.cpp                        |     4 +-
 src/theory/arith/matrix.h                          |     4 +-
 src/theory/arith/nonlinear_extension.cpp           |  2271 +
 src/theory/arith/nonlinear_extension.h             |   208 +
 src/theory/arith/normal_form.cpp                   |    18 +-
 src/theory/arith/normal_form.h                     |     8 +-
 src/theory/arith/partial_model.cpp                 |     4 +-
 src/theory/arith/partial_model.h                   |     4 +-
 src/theory/arith/pseudoboolean_proc.cpp            |     4 +-
 src/theory/arith/pseudoboolean_proc.h              |     4 +-
 src/theory/arith/simplex.cpp                       |     4 +-
 src/theory/arith/simplex.h                         |     4 +-
 src/theory/arith/simplex_update.cpp                |     4 +-
 src/theory/arith/simplex_update.h                  |     4 +-
 src/theory/arith/soi_simplex.cpp                   |     4 +-
 src/theory/arith/soi_simplex.h                     |     4 +-
 src/theory/arith/tableau.cpp                       |     4 +-
 src/theory/arith/tableau.h                         |     4 +-
 src/theory/arith/tableau_sizes.cpp                 |     4 +-
 src/theory/arith/tableau_sizes.h                   |     4 +-
 src/theory/arith/theory_arith.cpp                  |    27 +-
 src/theory/arith/theory_arith.h                    |     8 +-
 src/theory/arith/theory_arith_private.cpp          |   540 +-
 src/theory/arith/theory_arith_private.h            |    54 +-
 src/theory/arith/theory_arith_private_forward.h    |     4 +-
 src/theory/arith/theory_arith_type_rules.h         |     2 +-
 src/theory/arith/type_enumerator.h                 |     4 +-
 src/theory/arrays/array_info.cpp                   |     2 +-
 src/theory/arrays/array_info.h                     |     2 +-
 src/theory/arrays/array_proof_reconstruction.cpp   |     2 +-
 src/theory/arrays/array_proof_reconstruction.h     |     4 +-
 src/theory/arrays/static_fact_manager.cpp          |     4 +-
 src/theory/arrays/static_fact_manager.h            |     4 +-
 src/theory/arrays/theory_arrays.cpp                |    40 +-
 src/theory/arrays/theory_arrays.h                  |    11 +-
 src/theory/arrays/theory_arrays_rewriter.cpp       |     4 +-
 src/theory/arrays/theory_arrays_rewriter.h         |     2 +-
 src/theory/arrays/theory_arrays_type_rules.h       |     9 +-
 src/theory/arrays/type_enumerator.h                |     8 +-
 src/theory/arrays/union_find.cpp                   |     4 +-
 src/theory/arrays/union_find.h                     |     4 +-
 ...heory_arith_private_forward.h => assertion.cpp} |    22 +-
 src/theory/assertion.h                             |    52 +
 src/theory/atom_requests.cpp                       |     4 +-
 src/theory/atom_requests.h                         |     4 +-
 src/theory/booleans/circuit_propagator.cpp         |     4 +-
 src/theory/booleans/circuit_propagator.h           |     2 +-
 src/theory/booleans/theory_bool.cpp                |     5 +-
 src/theory/booleans/theory_bool.h                  |     4 +-
 src/theory/booleans/theory_bool_rewriter.cpp       |     2 +-
 src/theory/booleans/theory_bool_rewriter.h         |     4 +-
 src/theory/booleans/theory_bool_type_rules.h       |     2 +-
 src/theory/booleans/type_enumerator.h              |     6 +-
 src/theory/builtin/kinds                           |     2 +-
 src/theory/builtin/theory_builtin.cpp              |     4 +-
 src/theory/builtin/theory_builtin.h                |     4 +-
 src/theory/builtin/theory_builtin_rewriter.cpp     |     4 +-
 src/theory/builtin/theory_builtin_rewriter.h       |     4 +-
 src/theory/builtin/theory_builtin_type_rules.h     |     2 +-
 src/theory/builtin/type_enumerator.h               |     8 +-
 src/theory/bv/abstraction.cpp                      |     4 +-
 src/theory/bv/abstraction.h                        |     4 +-
 src/theory/bv/aig_bitblaster.cpp                   |    22 +-
 src/theory/bv/bitblast_strategies_template.h       |     4 +-
 src/theory/bv/bitblast_utils.h                     |     4 +-
 src/theory/bv/bitblaster_template.h                |     9 +-
 src/theory/bv/bv_eager_solver.cpp                  |     4 +-
 src/theory/bv/bv_eager_solver.h                    |     4 +-
 src/theory/bv/bv_inequality_graph.cpp              |     4 +-
 src/theory/bv/bv_inequality_graph.h                |     4 +-
 src/theory/bv/bv_quick_check.cpp                   |     2 +-
 src/theory/bv/bv_quick_check.h                     |     4 +-
 src/theory/bv/bv_subtheory.h                       |     2 +-
 src/theory/bv/bv_subtheory_algebraic.cpp           |     2 +-
 src/theory/bv/bv_subtheory_algebraic.h             |     4 +-
 src/theory/bv/bv_subtheory_bitblast.cpp            |     2 +-
 src/theory/bv/bv_subtheory_bitblast.h              |     2 +-
 src/theory/bv/bv_subtheory_core.cpp                |     5 +-
 src/theory/bv/bv_subtheory_core.h                  |     2 +-
 src/theory/bv/bv_subtheory_inequality.cpp          |     4 +-
 src/theory/bv/bv_subtheory_inequality.h            |     2 +-
 src/theory/bv/bv_to_bool.cpp                       |     4 +-
 src/theory/bv/bv_to_bool.h                         |     4 +-
 src/theory/bv/bvintropow2.cpp                      |     4 +-
 src/theory/bv/bvintropow2.h                        |     4 +-
 src/theory/bv/cd_set_collection.h                  |     4 +-
 src/theory/bv/eager_bitblaster.cpp                 |     2 +-
 src/theory/bv/lazy_bitblaster.cpp                  |    12 +-
 src/theory/bv/slicer.cpp                           |     4 +-
 src/theory/bv/slicer.h                             |     4 +-
 src/theory/bv/theory_bv.cpp                        |    24 +-
 src/theory/bv/theory_bv.h                          |     4 +-
 src/theory/bv/theory_bv_rewrite_rules.h            |    29 +-
 .../theory_bv_rewrite_rules_constant_evaluation.h  |     2 +-
 src/theory/bv/theory_bv_rewrite_rules_core.h       |     2 +-
 .../bv/theory_bv_rewrite_rules_normalization.h     |     2 +-
 .../theory_bv_rewrite_rules_operator_elimination.h |     2 +-
 .../bv/theory_bv_rewrite_rules_simplification.h    |    38 +-
 src/theory/bv/theory_bv_rewriter.cpp               |    12 +-
 src/theory/bv/theory_bv_rewriter.h                 |     2 +-
 src/theory/bv/theory_bv_type_rules.h               |     4 +-
 src/theory/bv/theory_bv_utils.cpp                  |     4 +-
 src/theory/bv/theory_bv_utils.h                    |     2 +-
 src/theory/bv/type_enumerator.h                    |     8 +-
 src/theory/care_graph.h                            |    62 +
 src/theory/datatypes/datatypes_rewriter.h          |    64 +-
 src/theory/datatypes/datatypes_sygus.cpp           |     2 +-
 src/theory/datatypes/datatypes_sygus.h             |     4 +-
 src/theory/datatypes/theory_datatypes.cpp          |   143 +-
 src/theory/datatypes/theory_datatypes.h            |    12 +-
 src/theory/datatypes/theory_datatypes_type_rules.h |    24 +-
 src/theory/datatypes/type_enumerator.cpp           |     2 +-
 src/theory/datatypes/type_enumerator.h             |    14 +-
 src/theory/example/ecdata.cpp                      |     4 +-
 src/theory/example/ecdata.h                        |     4 +-
 src/theory/example/theory_uf_tim.cpp               |     4 +-
 src/theory/example/theory_uf_tim.h                 |     4 +-
 src/theory/fp/theory_fp.cpp                        |     4 +-
 src/theory/fp/theory_fp.h                          |     4 +-
 src/theory/fp/theory_fp_rewriter.cpp               |     4 +-
 src/theory/fp/theory_fp_rewriter.h                 |     4 +-
 src/theory/fp/theory_fp_type_rules.h               |     4 +-
 src/theory/idl/idl_assertion.cpp                   |     4 +-
 src/theory/idl/idl_assertion.h                     |     4 +-
 src/theory/idl/idl_assertion_db.cpp                |     4 +-
 src/theory/idl/idl_assertion_db.h                  |     4 +-
 src/theory/idl/idl_model.cpp                       |     4 +-
 src/theory/idl/idl_model.h                         |     4 +-
 src/theory/idl/theory_idl.cpp                      |     2 +-
 src/theory/idl/theory_idl.h                        |     4 +-
 src/theory/interrupted.h                           |     4 +-
 src/theory/ite_utilities.cpp                       |     2 +-
 src/theory/ite_utilities.h                         |     4 +-
 src/theory/logic_info.cpp                          |     8 +-
 src/theory/logic_info.h                            |     4 +-
 src/theory/mkrewriter                              |     8 +-
 src/theory/mktheorytraits                          |     9 +-
 src/theory/output_channel.h                        |     2 +-
 src/theory/quantifiers/alpha_equivalence.cpp       |     2 +-
 src/theory/quantifiers/alpha_equivalence.h         |     4 +-
 src/theory/quantifiers/ambqi_builder.cpp           |   196 +-
 src/theory/quantifiers/ambqi_builder.h             |     6 +-
 src/theory/quantifiers/anti_skolem.cpp             |     2 +-
 src/theory/quantifiers/anti_skolem.h               |     2 +-
 src/theory/quantifiers/bounded_integers.cpp        |    14 +-
 src/theory/quantifiers/bounded_integers.h          |     2 +-
 src/theory/quantifiers/candidate_generator.cpp     |     4 +-
 src/theory/quantifiers/candidate_generator.h       |     2 +-
 src/theory/quantifiers/ce_guided_instantiation.cpp |  1459 +-
 src/theory/quantifiers/ce_guided_instantiation.h   |   154 +-
 src/theory/quantifiers/ce_guided_single_inv.cpp    |     9 +-
 src/theory/quantifiers/ce_guided_single_inv.h      |     4 +-
 src/theory/quantifiers/ce_guided_single_inv_ei.cpp |     4 +-
 src/theory/quantifiers/ce_guided_single_inv_ei.h   |     4 +-
 .../quantifiers/ce_guided_single_inv_sol.cpp       |     6 +-
 src/theory/quantifiers/ce_guided_single_inv_sol.h  |     4 +-
 src/theory/quantifiers/ceg_instantiator.cpp        |    46 +-
 src/theory/quantifiers/ceg_instantiator.h          |     4 +-
 src/theory/quantifiers/ceg_t_instantiator.cpp      |     2 +-
 src/theory/quantifiers/ceg_t_instantiator.h        |     2 +-
 src/theory/quantifiers/conjecture_generator.cpp    |     5 +-
 src/theory/quantifiers/conjecture_generator.h      |     4 +-
 src/theory/quantifiers/equality_infer.cpp          |     2 +-
 src/theory/quantifiers/equality_infer.h            |     2 +-
 src/theory/quantifiers/first_order_model.cpp       |    59 +-
 src/theory/quantifiers/first_order_model.h         |    23 +-
 src/theory/quantifiers/full_model_check.cpp        |   373 +-
 src/theory/quantifiers/full_model_check.h          |     8 +-
 src/theory/quantifiers/fun_def_engine.cpp          |     4 +-
 src/theory/quantifiers/fun_def_engine.h            |     4 +-
 src/theory/quantifiers/fun_def_process.cpp         |   205 +-
 src/theory/quantifiers/fun_def_process.h           |    10 +-
 src/theory/quantifiers/inst_match.cpp              |     3 +-
 src/theory/quantifiers/inst_match.h                |     6 +-
 src/theory/quantifiers/inst_match_generator.cpp    |   296 +-
 src/theory/quantifiers/inst_match_generator.h      |    69 +-
 src/theory/quantifiers/inst_propagator.cpp         |     6 +-
 src/theory/quantifiers/inst_propagator.h           |     2 +-
 src/theory/quantifiers/inst_strategy_cbqi.cpp      |    55 +-
 src/theory/quantifiers/inst_strategy_cbqi.h        |     3 +-
 .../quantifiers/inst_strategy_e_matching.cpp       |    11 +-
 src/theory/quantifiers/inst_strategy_e_matching.h  |     2 +-
 src/theory/quantifiers/instantiation_engine.cpp    |     2 +-
 src/theory/quantifiers/instantiation_engine.h      |     2 +-
 src/theory/quantifiers/local_theory_ext.cpp        |     6 +-
 src/theory/quantifiers/local_theory_ext.h          |     2 +-
 src/theory/quantifiers/macros.cpp                  |    22 +-
 src/theory/quantifiers/macros.h                    |     2 +-
 src/theory/quantifiers/model_builder.cpp           |   298 +-
 src/theory/quantifiers/model_builder.h             |    25 +-
 src/theory/quantifiers/model_engine.cpp            |    16 +-
 src/theory/quantifiers/model_engine.h              |     2 +-
 src/theory/quantifiers/quant_conflict_find.cpp     |   105 +-
 src/theory/quantifiers/quant_conflict_find.h       |     4 +-
 src/theory/quantifiers/quant_equality_engine.cpp   |     4 +-
 src/theory/quantifiers/quant_equality_engine.h     |     4 +-
 src/theory/quantifiers/quant_split.cpp             |     2 +-
 src/theory/quantifiers/quant_split.h               |     2 +-
 src/theory/quantifiers/quant_util.cpp              |    12 +-
 src/theory/quantifiers/quant_util.h                |     5 +-
 src/theory/quantifiers/quantifiers_attributes.cpp  |     4 +-
 src/theory/quantifiers/quantifiers_attributes.h    |     4 +-
 src/theory/quantifiers/quantifiers_rewriter.cpp    |    47 +-
 src/theory/quantifiers/quantifiers_rewriter.h      |     6 +-
 src/theory/quantifiers/relevant_domain.cpp         |    77 +-
 src/theory/quantifiers/relevant_domain.h           |     5 +-
 src/theory/quantifiers/rewrite_engine.cpp          |     2 +-
 src/theory/quantifiers/rewrite_engine.h            |     2 +-
 src/theory/quantifiers/symmetry_breaking.cpp       |     4 +-
 src/theory/quantifiers/symmetry_breaking.h         |     2 +-
 src/theory/quantifiers/term_database.cpp           |   119 +-
 src/theory/quantifiers/term_database.h             |    12 +-
 src/theory/quantifiers/theory_quantifiers.cpp      |    35 +-
 src/theory/quantifiers/theory_quantifiers.h        |    10 +-
 .../quantifiers/theory_quantifiers_type_rules.h    |     4 +-
 src/theory/quantifiers/trigger.cpp                 |   163 +-
 src/theory/quantifiers/trigger.h                   |    13 +-
 src/theory/quantifiers_engine.cpp                  |   220 +-
 src/theory/quantifiers_engine.h                    |    26 +-
 src/theory/rep_set.cpp                             |     2 +-
 src/theory/rep_set.h                               |     2 +-
 src/theory/rewriter.cpp                            |     2 +-
 src/theory/rewriter.h                              |     4 +-
 src/theory/rewriter_attributes.h                   |     4 +-
 src/theory/rewriter_tables_template.h              |     2 +-
 src/theory/sep/kinds                               |     3 +-
 src/theory/sep/theory_sep.cpp                      |    38 +-
 src/theory/sep/theory_sep.h                        |    18 +-
 src/theory/sep/theory_sep_rewriter.cpp             |    14 +-
 src/theory/sep/theory_sep_rewriter.h               |    12 +-
 src/theory/sep/theory_sep_type_rules.h             |    23 +-
 src/theory/sets/kinds                              |    10 +-
 src/theory/sets/normal_form.h                      |     4 +-
 src/theory/sets/rels_utils.h                       |    12 +-
 src/theory/sets/theory_sets.cpp                    |    18 +-
 src/theory/sets/theory_sets.h                      |    10 +-
 src/theory/sets/theory_sets_private.cpp            |   360 +-
 src/theory/sets/theory_sets_private.h              |    22 +-
 src/theory/sets/theory_sets_rels.cpp               |   957 +-
 src/theory/sets/theory_sets_rels.h                 |   111 +-
 src/theory/sets/theory_sets_rewriter.cpp           |    92 +-
 src/theory/sets/theory_sets_rewriter.h             |     4 +-
 src/theory/sets/theory_sets_type_enumerator.h      |     4 +-
 src/theory/sets/theory_sets_type_rules.h           |   121 +-
 src/theory/shared_terms_database.cpp               |     2 +-
 src/theory/shared_terms_database.h                 |     2 +-
 src/theory/sort_inference.cpp                      |     4 +-
 src/theory/sort_inference.h                        |     4 +-
 src/theory/strings/regexp_operation.cpp            |     4 +-
 src/theory/strings/regexp_operation.h              |     2 +-
 src/theory/strings/theory_strings.cpp              |   144 +-
 src/theory/strings/theory_strings.h                |     5 +-
 src/theory/strings/theory_strings_preprocess.cpp   |     2 +-
 src/theory/strings/theory_strings_preprocess.h     |     2 +-
 src/theory/strings/theory_strings_rewriter.cpp     |    77 +-
 src/theory/strings/theory_strings_rewriter.h       |     2 +-
 src/theory/strings/theory_strings_type_rules.h     |     6 +-
 src/theory/strings/type_enumerator.h               |     8 +-
 src/theory/substitutions.cpp                       |     2 +-
 src/theory/substitutions.h                         |     2 +-
 src/theory/term_registration_visitor.cpp           |     2 +-
 src/theory/term_registration_visitor.h             |     4 +-
 src/theory/theory.cpp                              |   322 +-
 src/theory/theory.h                                |   338 +-
 src/theory/theory_engine.cpp                       |   158 +-
 src/theory/theory_engine.h                         |    20 +-
 src/theory/theory_model.cpp                        |   235 +-
 src/theory/theory_model.h                          |    23 +-
 src/theory/theory_registrar.h                      |     4 +-
 src/theory/theory_test_utils.h                     |     2 +-
 src/theory/theory_traits_template.h                |     4 +-
 src/theory/type_enumerator.h                       |     6 +-
 src/theory/type_enumerator_template.cpp            |     4 +-
 src/theory/uf/equality_engine.cpp                  |     2 +-
 src/theory/uf/equality_engine.h                    |     2 +-
 src/theory/uf/equality_engine_types.h              |     4 +-
 src/theory/uf/symmetry_breaker.cpp                 |     4 +-
 src/theory/uf/symmetry_breaker.h                   |     4 +-
 src/theory/uf/theory_uf.cpp                        |    37 +-
 src/theory/uf/theory_uf.h                          |     5 +-
 src/theory/uf/theory_uf_model.cpp                  |     2 +-
 src/theory/uf/theory_uf_model.h                    |     4 +-
 src/theory/uf/theory_uf_rewriter.h                 |     4 +-
 src/theory/uf/theory_uf_strong_solver.cpp          |     2 +-
 src/theory/uf/theory_uf_strong_solver.h            |     4 +-
 src/theory/uf/theory_uf_type_rules.h               |     8 +-
 src/theory/unconstrained_simplifier.cpp            |     4 +-
 src/theory/unconstrained_simplifier.h              |     4 +-
 src/theory/valuation.cpp                           |     4 +-
 src/theory/valuation.h                             |     2 +-
 src/util/Makefile.am                               |     2 +
 src/util/Makefile.in                               |    23 +-
 src/util/abstract_value.cpp                        |     4 +-
 src/util/abstract_value.h                          |     4 +-
 src/util/bin_heap.h                                |     4 +-
 src/util/bitvector.h                               |     2 +-
 src/util/bool.h                                    |     4 +-
 src/util/cache.h                                   |     4 +-
 src/util/cardinality.cpp                           |     2 +-
 src/util/cardinality.h                             |     2 +-
 src/util/channel.h                                 |     6 +-
 src/util/debug.h                                   |     4 +-
 src/util/dense_map.h                               |     4 +-
 src/util/divisible.cpp                             |     4 +-
 src/util/divisible.h                               |     4 +-
 src/util/dynamic_array.h                           |     4 +-
 src/util/floatingpoint.cpp                         |     4 +-
 src/util/floatingpoint.h                           |     4 +-
 src/util/gmp_util.h                                |     4 +-
 src/util/hash.h                                    |     4 +-
 src/util/index.h                                   |     4 +-
 src/util/integer.h.in                              |     4 +-
 src/util/integer_cln_imp.cpp                       |     4 +-
 src/util/integer_cln_imp.h                         |     2 +-
 src/util/integer_gmp_imp.cpp                       |     4 +-
 src/util/integer_gmp_imp.h                         |     2 +-
 src/util/maybe.h                                   |     4 +-
 src/util/ntuple.h                                  |     4 +-
 src/util/proof.h                                   |     4 +-
 src/util/rational.h.in                             |     4 +-
 src/util/rational_cln_imp.cpp                      |     2 +-
 src/util/rational_cln_imp.h                        |     4 +-
 src/util/rational_gmp_imp.cpp                      |     2 +-
 src/util/rational_gmp_imp.h                        |     4 +-
 src/util/regexp.cpp                                |     4 +-
 src/util/regexp.h                                  |     4 +-
 src/util/resource_manager.cpp                      |     4 +-
 src/util/resource_manager.h                        |     2 +-
 src/util/result.cpp                                |     5 +-
 src/util/result.h                                  |     2 +-
 src/util/safe_print.cpp                            |   214 +
 src/util/safe_print.h                              |    99 +
 src/util/sexpr.cpp                                 |     5 +-
 src/util/sexpr.h                                   |     2 +-
 src/util/smt2_quote_string.cpp                     |     4 +-
 src/util/smt2_quote_string.h                       |     4 +-
 src/util/statistics.cpp                            |    19 +-
 src/util/statistics.h                              |    10 +-
 src/util/statistics_registry.cpp                   |    10 +-
 src/util/statistics_registry.h                     |   145 +-
 src/util/subrange_bound.cpp                        |     2 +-
 src/util/subrange_bound.h                          |     2 +-
 src/util/tuple.h                                   |     4 +-
 src/util/unsafe_interrupt_exception.h              |     4 +-
 src/util/utility.h                                 |     4 +-
 test/Makefile.am                                   |     2 +
 test/Makefile.in                                   |     3 +
 test/regress/Makefile.in                           |     1 +
 test/regress/regress0/Makefile.am                  |     8 +-
 test/regress/regress0/Makefile.in                  |    30 +-
 test/regress/regress0/arith/Makefile.am            |     3 +-
 test/regress/regress0/arith/Makefile.in            |    11 +-
 test/regress/regress0/arith/bug547.2.smt2          |     2 +-
 test/regress/regress0/arith/bug716.0.smt2          |     3 +-
 test/regress/regress0/arith/bug716.1.cvc           |     2 +-
 test/regress/regress0/arith/div.02.smt2            |     4 +-
 test/regress/regress0/arith/div.03.smt2            |     4 +-
 test/regress/regress0/arith/div.05.smt2            |     4 +-
 test/regress/regress0/arith/div.06.smt2            |     4 +-
 test/regress/regress0/arith/div.09.smt2            |     3 +-
 test/regress/regress0/arith/integers/Makefile.in   |     1 +
 test/regress/regress0/arith/mod-simp.smt2          |    10 +
 test/regress/regress0/arith/mod.01.smt2            |     4 +-
 test/regress/regress0/arith/mod.02.smt2            |     4 +-
 test/regress/regress0/arith/mod.03.smt2            |     4 +-
 test/regress/regress0/arith/mult.01.smt2           |     4 +-
 test/regress/regress0/arith/mult.02.smt2           |     2 +-
 test/regress/regress0/arrays/Makefile.in           |     1 +
 test/regress/regress0/arrays/bool-array.smt2       |     2 -
 test/regress/regress0/aufbv/Makefile.in            |     1 +
 test/regress/regress0/auflia/Makefile.in           |     1 +
 test/regress/regress0/bug639.smt2                  |    26 +
 test/regress/regress0/bug681.smt2                  |    54 +
 test/regress/regress0/bv/Makefile.am               |     5 +-
 test/regress/regress0/bv/Makefile.in               |    27 +-
 test/regress/regress0/bv/bug733.smt2               |     8 +
 test/regress/regress0/bv/bug787.smt2               |    91 +
 test/regress/regress0/bv/bv-int-collapse2-sat.smt2 |     2 +-
 .../regress/regress0/bv/bv2nat-simp-range-sat.smt2 |     5 +
 test/regress/regress0/bv/cmu-rdk-3.smt2            |     2 +
 test/regress/regress0/bv/core/Makefile.in          |     1 +
 test/regress/regress0/datatypes/Makefile.am        |     9 +-
 test/regress/regress0/datatypes/Makefile.in        |    55 +-
 test/regress/regress0/datatypes/dt-2.6.smt2        |    15 +
 test/regress/regress0/datatypes/dt-color-2.6.smt2  |    17 +
 .../regress0/datatypes/dt-match-pat-param-2.6.smt2 |    24 +
 test/regress/regress0/datatypes/dt-param-2.6.smt2  |    37 +
 test/regress/regress0/datatypes/dt-sel-2.6.smt2    |    18 +
 test/regress/regress0/datatypes/jsat-2.6.smt2      |    28 +
 test/regress/regress0/datatypes/tuple-no-clash.cvc |    11 +
 test/regress/regress0/decision/Makefile.in         |     1 +
 test/regress/regress0/declare-fun-is-match.smt2    |     9 +
 test/regress/regress0/expect/Makefile.in           |     1 +
 test/regress/regress0/expect/scrub.01.smt.expect   |     3 +-
 test/regress/regress0/expect/scrub.02.smt          |     3 +-
 test/regress/regress0/expect/scrub.03.smt2.expect  |     3 +-
 test/regress/regress0/expect/scrub.04.smt2         |     3 +-
 test/regress/regress0/expect/scrub.06.cvc          |     6 +-
 test/regress/regress0/expect/scrub.07.sy.expect    |     5 +-
 test/regress/regress0/expect/scrub.08.sy           |     7 +-
 test/regress/regress0/expect/scrub.09.p            |     7 +-
 test/regress/regress0/fmf/Makefile.am              |     8 +-
 test/regress/regress0/fmf/Makefile.in              |    51 +-
 test/regress/regress0/fmf/alg202+1.smt2            |    17 +
 .../regress0/fmf/bug-041417-set-options.cvc        |    16 +
 test/regress/regress0/fmf/constr-ground-to.smt2    |    43 +
 .../regress0/fmf/fmf-fun-no-elim-ext-arith.smt2    |    18 +
 .../regress0/fmf/fmf-fun-no-elim-ext-arith2.smt2   |    25 +
 test/regress/regress0/fmf/quant_real_univ.cvc      |    14 +
 test/regress/regress0/lemmas/Makefile.in           |     1 +
 test/regress/regress0/nl/Makefile.am               |    64 +
 test/regress/regress0/{arith => nl}/Makefile.in    |   283 +-
 test/regress/regress0/nl/all-logic.smt2            |     8 +
 test/regress/regress0/nl/bug698.smt2               |    33 +
 test/regress/regress0/nl/coeff-sat.smt2            |    16 +
 test/regress/regress0/nl/coeff-unsat-base.smt2     |    16 +
 test/regress/regress0/nl/coeff-unsat.smt2          |    16 +
 test/regress/regress0/nl/combine.smt2              |    13 +
 test/regress/regress0/nl/disj-eval.smt2            |    14 +
 test/regress/regress0/nl/dist-big.smt2             |    16 +
 test/regress/regress0/nl/div-mod-partial.smt2      |    10 +
 .../regress0/nl/magnitude-wrong-1020-m.smt2        |    72 +
 test/regress/regress0/nl/metitarski-1025.smt2      |    30 +
 test/regress/regress0/nl/metitarski-3-4.smt2       |    29 +
 test/regress/regress0/nl/metitarski_3_4_2e.smt2    |    30 +
 test/regress/regress0/nl/mult-po.smt2              |    20 +
 test/regress/regress0/nl/nia-wrong-tl.smt2         |    47 +
 test/regress/regress0/nl/nl-help-unsat-quant.smt2  |   419 +
 test/regress/regress0/nl/nl-unk-quant.smt2         |    29 +
 test/regress/regress0/nl/ones.smt2                 |    18 +
 test/regress/regress0/nl/poly-1025.smt2            |    29 +
 test/regress/regress0/nl/quant-nl.smt2             |   857 +
 test/regress/regress0/nl/real-div-ufnra.smt2       |    13 +
 test/regress/regress0/nl/red-exp.smt2              |    11 +
 test/regress/regress0/nl/rewriting-sums.smt2       |    18 +
 test/regress/regress0/nl/simple-mono-unsat.smt2    |    18 +
 test/regress/regress0/nl/simple-mono.smt2          |    17 +
 test/regress/regress0/nl/subs0-unsat-confirm.smt2  |    18 +
 test/regress/regress0/nl/very-easy-sat.smt2        |    30 +
 test/regress/regress0/nl/very-simple-unsat.smt2    |    15 +
 test/regress/regress0/nl/zero-subset.smt2          |    15 +
 test/regress/regress0/parser/Makefile.in           |     1 +
 test/regress/regress0/precedence/Makefile.in       |     1 +
 test/regress/regress0/preprocess/Makefile.in       |     1 +
 test/regress/regress0/push-pop/Makefile.am         |     4 +-
 test/regress/regress0/push-pop/Makefile.in         |    19 +-
 test/regress/regress0/push-pop/arith/Makefile.in   |     1 +
 test/regress/regress0/push-pop/boolean/Makefile.in |     1 +
 test/regress/regress0/push-pop/bug821.smt2         |     8 +
 .../regress0/push-pop/simple_unsat_cores.smt2      |    10 +
 test/regress/regress0/quantifiers/Makefile.am      |     7 +-
 test/regress/regress0/quantifiers/Makefile.in      |    35 +-
 test/regress/regress0/quantifiers/RND-small.smt2   |     2 +-
 .../regress/regress0/quantifiers/anti-sk-simp.smt2 |     2 +-
 test/regress/regress0/quantifiers/ari056.smt2      |     2 +
 test/regress/regress0/quantifiers/bug822.smt2      |  1183 +
 .../regress0/quantifiers/cbqi-lia-dt-simp.smt2     |     2 +-
 .../quantifiers/cbqi-sdlx-fixpoint-3-dd.smt2       |    19 +
 test/regress/regress0/quantifiers/delta-simp.smt2  |     4 +-
 .../regress0/quantifiers/macro-subtype-param.smt2  |     7 +-
 .../regress0/quantifiers/macros-real-arg.smt2      |     2 +-
 test/regress/regress0/quantifiers/mix-coeff.smt2   |     4 +-
 .../regress0/quantifiers/mix-complete-strat.smt2   |     2 +-
 test/regress/regress0/quantifiers/mix-simp.smt2    |     4 +-
 .../regress/regress0/quantifiers/psyco-001-bv.smt2 |    76 +
 test/regress/regress0/quantifiers/psyco-196.smt2   |     2 +
 .../regress/regress0/quantifiers/pure_dt_cbqi.smt2 |     2 +
 test/regress/regress0/quantifiers/qbv-simp.smt2    |     9 +
 .../quantifiers/quaternion_ds1_symm_0428.fof.smt2  |     2 +-
 .../regress0/quantifiers/subtype-param-unk.smt2    |     3 +-
 .../regress0/quantifiers/subtype-param.smt2        |     2 +-
 test/regress/regress0/rels/Makefile.am             |    17 +-
 test/regress/regress0/rels/Makefile.in             |   116 +-
 test/regress/regress0/rels/atom_univ2.cvc          |    24 +
 test/regress/regress0/rels/card_transpose.cvc      |     6 +
 test/regress/regress0/rels/iden_0.cvc              |    28 +
 test/regress/regress0/rels/iden_1.cvc              |    19 +
 test/regress/regress0/rels/iden_1_1.cvc            |    22 +
 test/regress/regress0/rels/joinImg_0.cvc           |    33 +
 test/regress/regress0/rels/joinImg_0_1.cvc         |    35 +
 test/regress/regress0/rels/joinImg_0_2.cvc         |    39 +
 test/regress/regress0/rels/joinImg_1.cvc           |    20 +
 test/regress/regress0/rels/joinImg_1_1.cvc         |    21 +
 test/regress/regress0/rels/joinImg_2.cvc           |    33 +
 test/regress/regress0/rels/joinImg_2_1.cvc         |    24 +
 test/regress/regress0/rels/rel_tc_8.cvc            |    10 +
 test/regress/regress0/rels/rels-sharing-simp.cvc   |    14 +
 test/regress/regress0/rewriterules/Makefile.in     |     1 +
 test/regress/regress0/sep/Makefile.am              |     3 +-
 test/regress/regress0/sep/Makefile.in              |    11 +-
 test/regress/regress0/sep/nil-no-elim.smt2         |    11 +
 test/regress/regress0/sets/Makefile.am             |    11 +-
 test/regress/regress0/sets/Makefile.in             |    75 +-
 test/regress/regress0/sets/complement.cvc          |     3 +-
 test/regress/regress0/sets/complement2.cvc         |     3 +-
 test/regress/regress0/sets/complement3.cvc         |    15 +
 .../regress/regress0/sets/int-real-univ-unsat.smt2 |    16 +
 test/regress/regress0/sets/int-real-univ.smt2      |    16 +
 test/regress/regress0/sets/nonvar-univ.smt2        |    13 +
 test/regress/regress0/sets/pre-proc-univ.smt2      |    11 +
 test/regress/regress0/sets/sets-poly-int-real.smt2 |    17 +
 test/regress/regress0/sets/sets-poly-nonint.smt2   |    11 +
 test/regress/regress0/sets/sets-tuple-poly.cvc     |    17 +
 test/regress/regress0/sets/sharing-simp.smt2       |    15 +
 test/regress/regress0/sets/univset-simp.smt2       |     2 +
 test/regress/regress0/strings/Makefile.am          |     4 +-
 test/regress/regress0/strings/Makefile.in          |    19 +-
 test/regress/regress0/strings/bug799-min.smt2      |    18 +
 test/regress/regress0/strings/repl-empty-sem.smt2  |    11 +
 test/regress/regress0/sygus/Makefile.in            |     1 +
 test/regress/regress0/tptp/Makefile.in             |     1 +
 test/regress/regress0/uf/Makefile.in               |     1 +
 test/regress/regress0/uflia/Makefile.in            |     1 +
 test/regress/regress0/uflra/Makefile.am            |     3 +-
 test/regress/regress0/uflra/Makefile.in            |    14 +-
 test/regress/regress0/uflra/bug800.smt2            |   168 +
 test/regress/regress0/unconstrained/Makefile.in    |     1 +
 test/regress/regress1/Makefile.am                  |     2 +-
 test/regress/regress1/Makefile.in                  |     3 +-
 test/regress/regress1/aufbv/Makefile.in            |     1 +
 test/regress/regress1/auflia/Makefile.in           |     1 +
 test/regress/regress1/bug519.smt2                  |     2 +-
 test/regress/regress1/bv/Makefile.in               |     1 +
 test/regress/regress1/datatypes/Makefile.in        |     1 +
 test/regress/regress1/decision/Makefile.in         |     1 +
 test/regress/regress1/fmf/Makefile.am              |     3 +-
 test/regress/regress1/fmf/Makefile.in              |    11 +-
 .../regress1/fmf/nunchaku2309663.nun.min.smt2      |    79 +
 test/regress/regress1/lemmas/Makefile.in           |     1 +
 .../regress1/{sygus => quantifiers}/Makefile.am    |     2 +-
 .../regress1/{decision => quantifiers}/Makefile.in |    15 +-
 test/regress/regress1/quantifiers/bug802.smt2      |    12 +
 test/regress/regress1/rewriterules/Makefile.in     |     1 +
 test/regress/regress1/sep/Makefile.in              |     1 +
 test/regress/regress1/sets/Makefile.in             |     1 +
 test/regress/regress1/strings/Makefile.am          |     4 +-
 test/regress/regress1/strings/Makefile.in          |    19 +-
 test/regress/regress1/strings/cmu-prereg-fmf.smt2  |    12 +
 .../regress1/strings/cmu-repl-len-nterm.smt2       |    12 +
 test/regress/regress1/sygus/Makefile.am            |     3 +-
 test/regress/regress1/sygus/Makefile.in            |    11 +-
 test/regress/regress1/sygus/stopwatch-bt.sy        |   230 +
 test/regress/regress2/Makefile.am                  |     5 +-
 test/regress/regress2/Makefile.in                  |    11 +-
 test/regress/regress2/arith/Makefile.in            |     1 +
 test/regress/regress2/bug812.smt2                  |   117 +
 test/regress/regress3/Makefile.in                  |     1 +
 test/regress/regress4/Makefile.in                  |     1 +
 test/regress/run_regression                        |     2 +-
 test/system/CVC4JavaTest.java                      |     4 +-
 test/system/Makefile.in                            |     1 +
 test/system/boilerplate.cpp                        |     4 +-
 test/system/cvc3_george.h                          |     4 +-
 test/system/cvc3_main.cpp                          |     4 +-
 test/system/ouroborous.cpp                         |     4 +-
 test/system/smt2_compliance.cpp                    |     4 +-
 test/system/statistics.cpp                         |     4 +-
 test/system/two_smt_engines.cpp                    |     4 +-
 test/unit/Makefile.am                              |     1 -
 test/unit/Makefile.in                              |     9 +-
 test/unit/expr/expr_manager_public.cpp             |     4 +-
 test/unit/expr/expr_manager_public.h               |     4 +-
 test/unit/expr/expr_public.cpp                     |     4 +-
 test/unit/expr/expr_public.h                       |     2 +-
 test/unit/expr/type_cardinality_public.cpp         |     4 +-
 test/unit/expr/type_cardinality_public.h           |     4 +-
 test/unit/memory.h                                 |     4 +-
 test/unit/util/cardinality_public.cpp              |     4 +-
 test/unit/util/cardinality_public.h                |     4 +-
 1084 files changed, 67355 insertions(+), 53978 deletions(-)

diff --git a/AUTHORS b/AUTHORS
index d157ec9..7bd9ada 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -6,26 +6,23 @@ the copyright and licensing of CVC4.
 
 The core designers and authors of CVC4 are:
 
-  Kshitij Bansal, New York University, Google, Inc.
-  Clark Barrett, New York University, Google, Inc.
+  Kshitij Bansal, New York University, Google
+  Clark Barrett, New York University, Google, Stanford University
   Francois Bobot, The University of Iowa, Commissariat a l'Energie Atomique
   Martin Brain, University of Oxford
-  Christopher Conway, New York University, Google, Inc.
+  Christopher Conway, New York University, Google
   Morgan Deters, New York University
   Liana Hadarean, New York University, Mentor Graphics Corporation
   Dejan Jovanovic, New York University, SRI International
-  Guy Katz, New York University
-  Tim King, New York University, Universite Joseph Fourier, Google, Inc.
+  Guy Katz, New York University, Stanford University
+  Tim King, New York University, Universite Joseph Fourier, Google
   Tianyi Liang, The University of Iowa
+  Paul Meng, The University of Iowa
+  Andres Noetzli, Stanford University
   Andrew Reynolds, The University of Iowa, EPFL
   Cesare Tinelli, The University of Iowa
 
-Contributors to the CVC4 codebase additionally include:
-
-  Peter Collingbourne, the Multicore Programming Group at Imperial College
-    London (headed by Alastair Donaldson)
-  Finn Haedicke, University of Bremen, Germany
-  Google, Inc.
+Other contributors to the CVC4 codebase are listed in the THANKS file.
 
 CVC4 is the fourth in the CVC series of tools (CVC, CVC Lite, CVC3) but does
 not directly incorporate code from any previous version.  Information about
diff --git a/INSTALL b/INSTALL
index bec3936..e6ee4f9 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,4 +1,4 @@
-CVC4 release version 1.4.
+CVC4 release version 1.5.
 
 *** Quick-start instructions
 
@@ -41,7 +41,7 @@ libantlr3c.  On a 32-bit machine, or if you have difficulty building
 libantlr3c (or difficulty getting CVC4 to link against it later), you
 may need to remove the --enable-64bit part in the script.  (If you're
 curious, the manual instructions are at
-http://cvc4.cs.nyu.edu/wiki/Developer%27s_Guide#ANTLR3 .)
+http://cvc4.cs.stanford.edu/wiki/Developer%27s_Guide#ANTLR3 .)
 
 *** Building CVC4
 
@@ -201,8 +201,7 @@ In principle, since we use SWIG to generate the native Java API, we
 could support other languages as well.  However, using CVC4 from other
 languages is not supported, nor expected to work, at this time.  If
 you're interested in helping to develop, maintain, and test a language
-binding, please contact us via the users' mailing list at
-cvc-users at cs.nyu.edu.
+binding, please contact one of the project leaders.
 
 *** Building CVC4 from a repository checkout
 
@@ -217,10 +216,10 @@ The following tools and libraries are additionally required to build
 CVC4 from from a repository checkout rather than from a prepared
 source tarball.
 
-  Automake v1.11
-  Autoconf v2.61
-  Libtool v2.2
-  ANTLR3 v3.2 or v3.4
+  Automake v1.11 or later
+  Autoconf v2.61 or later
+  Libtool v2.2 or later
+  ANTLR3 v3.2 or v3.4 
 
 First, use "./autogen.sh" to create the configure script.  Then
 proceed as normal for any distribution tarball.  The parsers are
diff --git a/Makefile.am b/Makefile.am
index 55c357d..bface95 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -21,8 +21,8 @@ examples: all
 install-examples:
 	(cd examples && $(MAKE) $(AM_MAKEFLAGS) install-data)
 
-.PHONY: units systemtests regress regress0 regress1 regress2 regress3
-systemtests regress regress0 regress1 regress2 regress3: all
+.PHONY: units systemtests regress regress0 regress1 regress2 regress3 regress4
+systemtests regress regress0 regress1 regress2 regress3 regress4: all
 	+(cd test && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1
 # We descend into "src" with the "check" target here to ensure that
 # the test prerequisites are all built.
diff --git a/Makefile.in b/Makefile.in
index c51db4c..a8e9c07 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -335,6 +335,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -1330,8 +1331,8 @@ examples: all
 install-examples:
 	(cd examples && $(MAKE) $(AM_MAKEFLAGS) install-data)
 
-.PHONY: units systemtests regress regress0 regress1 regress2 regress3
-systemtests regress regress0 regress1 regress2 regress3: all
+.PHONY: units systemtests regress regress0 regress1 regress2 regress3 regress4
+systemtests regress regress0 regress1 regress2 regress3 regress4: all
 	+(cd test && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1
 # We descend into "src" with the "check" target here to ensure that
 # the test prerequisites are all built.
diff --git a/NEWS b/NEWS
index 91732d9..ff135d1 100644
--- a/NEWS
+++ b/NEWS
@@ -3,14 +3,25 @@ This file contains a summary of important user-visible changes.
 Changes since 1.4
 =================
 
+* Improved heuristics for reasoning about non-linear arithmetic.
+* Native support for syntax-guided synthesis (sygus).
+* Support for many new heuristics for reasoning with quantifiers, including
+  finite model finding.
+* Support for proofs for uninterpreted functions, arrays, bitvectors, and
+  their combinations.
+* Performance improvements to existing theories.
+* A new theory of sets with cardinality and relations.
+* A new theory of strings.
 * Support for unsat cores.
+* Support for separation logic constraints.
 * Simplification mode "incremental" no longer supported.
 * Support for array constants in constraints.
-* Syntax for array models have changed in some language front-ends.
+* Syntax for array models has changed in some language front-ends.
 * New input/output languages supported: "smt2.0" and "smtlib2.0" to
-  force SMT-LIB v2.0; "smt2.5" and "smtlib2.5" to force SMT-LIB v2.5.
+  force SMT-LIB v2.0; "smt2.5" and "smtlib2.5" to force SMT-LIB v2.5;
+  "smt2.6" and "smtlib2.6" to force SMT-LIB v2.6;
   "smt", "smtlib", "smt2", and "smtlib2" all refer to the current standard
-  version 2.0.  If an :smt-lib-version is set in the input, that overrides
+  version 2.6.  If an :smt-lib-version is set in the input, that overrides
   the command line.
 * Abstract values in SMT-LIB models are now ascribed types (with "as").
 * In SMT-LIB model output, real-sorted but integer-valued constants are
diff --git a/README b/README
index bd4f29b..da2457f 100644
--- a/README
+++ b/README
@@ -1,18 +1,15 @@
-This is CVC4 release version 1.4.  For build and installation notes,
+This is CVC4 release version 1.5.  For build and installation notes,
 please see the INSTALL file included with this distribution.
 
-This first official release of CVC4 is the result of more than three
-years of efforts by researchers at New York University and The
-University of Iowa.  The project leaders are Clark Barrett (New York
-University) and Cesare Tinelli (The University of Iowa).  For a full
-list of authors, please refer to the AUTHORS file in the source
-distribution.
+The project leaders are Clark Barrett (Stanford University) and Cesare
+Tinelli (The University of Iowa).  For a full list of authors, please
+refer to the AUTHORS file in the source distribution.
 
 CVC4 is a tool for determining the satisfiability of a first order
 formula modulo a first order theory (or a combination of such
-theories). It is the fourth in the Cooperating Validity Checker family
-of tools (CVC, CVC Lite, CVC3) but does not directly incorporate code
-from any previous version.
+theories).  It is the fourth in the Cooperating Validity Checker
+family of tools (CVC, CVC Lite, CVC3) but does not directly
+incorporate code from any previous version.
 
 CVC4 is intended to be an open and extensible SMT engine.  It can be
 used as a stand-alone tool or as a library.  It has been designed to
@@ -28,7 +25,7 @@ distribution.
 
 We recommend that you visit our CVC4 tutorials online at:
 
-  http://cvc4.cs.nyu.edu/wiki/Tutorials
+  http://cvc4.cs.stanford.edu/wiki/Tutorials
 
 for help getting started using CVC4.
 
@@ -36,23 +33,24 @@ for help getting started using CVC4.
 
 We are always happy to hear feedback from our users:
 
-* if you need help with using CVC4, please write to the
-  cvc-users at cs.nyu.edu mailing list.
+* if you need help with using CVC4, please refer to
+  http://cvc4.stanford.edu/#Technical_Support.
 
 * if you need to report a bug with CVC4, or make a feature request,
-  please visit our bugtracker at http://cvc4.cs.nyu.edu/bugs/ or write
-  to the cvc-bugs at cs.nyu.edu mailing list.  We are very grateful for
-  bug reports, as they help us improve CVC4, and patches are generally
-  reviewed and accepted quickly.
+  please visit our bugtracker at http://cvc4.cs.stanford.edu/bugs/ or
+  write to the cvc-bugs at cs.stanford.edu mailing list.  We are very
+  grateful for bug reports, as they help us improve CVC4, and patches
+  are generally reviewed and accepted quickly.
 
 * if you are using CVC4 in your work, or incorporating it into
   software of your own, we'd like to invite you to leave a description
   and link to your project/software on our "Third Party Applications"
-  page at http://cvc4.cs.nyu.edu/wiki/Public:Third_Party_Applications
+  page at
+  http://cvc4.cs.stanford.edu/wiki/Public:Third_Party_Applications
 
 * if you are interested in contributing code (for example, a new
   decision procedure implementation) to the CVC4 project, please
-  contact us at cvc4-devel at cs.nyu.edu.  We'd be happy to point you to
+  contact one of the project leaders.  We'd be happy to point you to
   some internals documentation to help you out.
 
 Thank you for using CVC4!
@@ -75,14 +73,14 @@ procedure implementations, added support for using MiniSat in the
 core, and had generally better performance.
 
 CVC4 is the new version, the fifth generation of this validity checker
-line that is now celebrating sixteen years of heritage.  It represents
-a complete re-evaluation of the core architecture to be both
-performant and to serve as a cutting-edge research vehicle for the
-next several years.  Rather than taking CVC3 and redesigning problem
-parts, we've taken a clean-room approach, starting from scratch.
-Before using any designs from CVC3, we have thoroughly scrutinized,
-vetted, and updated them.  Many parts of CVC4 bear only a superficial
-resemblance, if any, to their correspondent in CVC3.
+line that is now celebrating twenty-one years of heritage.  It
+represents a complete re-evaluation of the core architecture to be
+both performant and to serve as a cutting-edge research vehicle for
+the next several years.  Rather than taking CVC3 and redesigning
+problem parts, we've taken a clean-room approach, starting from
+scratch.  Before using any designs from CVC3, we have thoroughly
+scrutinized, vetted, and updated them.  Many parts of CVC4 bear only a
+superficial resemblance, if any, to their correspondent in CVC3.
 
 However, CVC4 is fundamentally similar to CVC3 and many other modern
 SMT solvers: it is a DPLL(T) solver, with a SAT solver at its core and
@@ -100,4 +98,5 @@ in short order.
 
 *** For more information
 
-More information about CVC4 is available at: http://cvc4.cs.nyu.edu/
+More information about CVC4 is available at:
+http://cvc4.cs.stanford.edu/
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 2d6eaea..2534903 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -1,4 +1,4 @@
-Release Notes for CVC4 1.4, July 2014
+Release Notes for CVC4 1.5, July 2017
 
 ** Getting started
 
@@ -10,14 +10,14 @@ command line.  For stricter adherence to the standard, use "--smtlib-strict"
 
 When a filename is given on the command line, the file's extension determines
 the language parser that's used (e.g., file.smt is SMT-LIB 1.2, file.smt2
-is SMT-LIB 2.0, and file.cvc is the presentation language).  To override
+is SMT-LIB 2.6, and file.cvc is the presentation language).  To override
 this, you can use the --lang option.
 
 ** Type correctness
 
 The CVC family of systems relies on Type Correctness Conditions (TCCs) when
 mixing two types that have a compatible base type.  TCCs, and the checking of
-such, are not supported by CVC4 1.4.  This is an issue when mixing integers and
+such, are not supported by CVC4 1.5.  This is an issue when mixing integers and
 reals.  A function defined only on integers can be applied to REAL (as INT is a
 subtype of REAL), and CVC4 will not complain.  It is up to the user to ensure 
 that the REAL expression must be an integer.  If the REAL expression is not
@@ -74,7 +74,7 @@ planned for future releases.
 
 ** SMT-LIB compliance
 
-Every effort has been made to make CVC4 compliant with the SMT-LIB 2.0
+Every effort has been made to make CVC4 compliant with the SMT-LIB 2.6
 standard (http://smtlib.org/).  However, when parsing SMT-LIB input,
 certain default settings don't match what is stated in the official
 standard.  To make CVC4 adhere more strictly to the standard, use the
@@ -84,7 +84,7 @@ processed.
 
 For the latest news on SMT-LIB compliance, please check:
 
-  http://cvc4.cs.nyu.edu/wiki/SMT-LIB_Compliance
+  http://cvc4.cs.stanford.edu/wiki/SMT-LIB_Compliance
 
 ** Getting statistics
 
@@ -96,10 +96,9 @@ the --stats command line option.
 CVC4 can be made to self-timeout after a given number of milliseconds.
 Use the --tlimit command line option to limit the entire run of
 CVC4, or use --tlimit-per to limit each individual query separately.
-Preprocessing time is not counted by the time limit, so for some large
-inputs which require aggressive preprocessing, you may notice that
---tlimit does not work very well.  If you suspect this might be the
-case, you can use "-vv" (double verbosity) to see what CVC4 is doing.
+Occasionally, you may encounter a problem for which --tlimit does not work very
+well.  If you suspect this might be the case, please report it as a bug.  You
+can also use "-vv" (double verbosity) to see what CVC4 is doing.
 
 Time-limited runs are not deterministic; two consecutive runs with the
 same time limit might produce different results (i.e., one may time out
@@ -118,16 +117,15 @@ heap.
 
 ** Proof support
 
-CVC4 1.4 has limited support for proofs, and they are disabled by default.
-(Run the configure script with --enable-proof to enable proofs).  Proofs
-are exported in LFSC format and are limited to the propositional backbone
-of the discovered proof (theory lemmas are stated without proof in this
-release).
+CVC4 1.5 has support for proofs when using uninterpreted functions, arrays,
+bitvectors, or their combinations, and proofs are enabled by default.
+(Run the configure script with --disable-proof to disable proofs).  Proofs
+are exported in LFSC format.
 
 ** Nonlinear arithmetic
 
-CVC4 1.4 has a state-of-the-art linear arithmetic solver.  However, there
-is extremely limited support for nonlinear arithmetic in this release.
+CVC4 1.5 has a state-of-the-art linear arithmetic solver as well as some
+heuristic support for non-linear arithmetic.
 
 ** Portfolio solving
 
@@ -147,7 +145,7 @@ datatypes. This limitation will be addressed in a future release.
 ** Questions ??
 
 CVC4 and its predecessors have an active user base.  You might want to
-subscribe to the mailing list (http://cs.nyu.edu/mailman/listinfo/cvc-users)
+subscribe to the mailing list (http://cvc4.stanford.edu/#Technical_Support)
 and post a question there.
 
 ** Reporting bugs and making feature requests
@@ -156,6 +154,6 @@ CVC4 is under active development.  Should you find a bug in CVC4's
 documentation, behavior, API, or SMT-LIB compliance, or if you have
 a feature request, please let us know on our bugtracker at
 
-  http://cvc4.cs.nyu.edu/bugs/
+  http://cvc4.cs.stanford.edu/bugs/
 
-or send an email to cvc-bugs at cims.nyu.edu.
+or send an email to cvc-bugs at cs.stanford.edu.
diff --git a/THANKS b/THANKS
index d1ef51a..09fd9d4 100644
--- a/THANKS
+++ b/THANKS
@@ -1,18 +1,34 @@
-Thanks to Peter Collingbourne (formerly of the Multicore Programming Group
-at Imperial College London, headed by Alastair Donaldson) for developing and
-submitting a number of patches in September 2012 related to SMT-LIBv2
-compliance.
+Thanks to:
 
-Thanks to Thomas Hunger for some important patches to CVC4's SWIG interfaces
-in March 2014.
+- Chad Brewbaker for fixing a memory leak in 2017.
 
-Thanks to David Cok of GrammaTech, Inc., for suggesting numerous improvements
-in CVC4's SMT-LIBv2 compliance in 2013 and 2014.
+- Adam Buchbinder of Google for submitting patches in November 2013 to fix a
+  number of issues with CVC3 (which were also applicable to CVC4's compatibility
+  interface).
 
-Thanks to Adam Buchbinder at Google for submitting patches in November 2013 to
-fix a number of issues with CVC3 (which were also applicable to CVC4's
-compatibility interface).
+- David Cok of GrammaTech, Inc., for suggesting numerous improvements in CVC4's
+  SMT-LIBv2 compliance in 2013 and 2014.
 
-Thanks to Martin Brain of the Systems Verification Group at the University of
-Oxford for submitting patches to fix certain compilation problems in November
-2013.
+- Peter Collingbourne (formerly of the Multicore Programming Group at Imperial
+  College London, headed by Alastair Donaldson) for developing and submitting a
+  number of patches in September 2012 related to SMT-LIBv2 compliance.
+
+- Finn Haedicke of University of Bremen, Germany for fixing namespace specifiers
+  in CVC4's version of minisat in 2015.
+
+- Thomas Hunger for some important patches to CVC4's SWIG interfaces in March
+  2014.
+
+- Makai Mann of Stanford University for updating the build scripts to support
+  computing coverage in 2017.
+
+- Cristian Mattarei of Stanford University for fixing an issue with parsing
+  floating point numbers in 2017.
+
+- Jordy Ruiz of University of Toulouse for fixing throw specifiers on the theory
+  output channels in 2015.
+
+- Fabian Wolff in 2016 for fixing several spelling mistakes.
+
+- Clement Pit-Claudel of MIT for improving the signal handling support for
+  Windows builds in 2017.
diff --git a/config/cryptominisat.m4 b/config/cryptominisat.m4
index f7d3a15..e35420e 100644
--- a/config/cryptominisat.m4
+++ b/config/cryptominisat.m4
@@ -37,8 +37,8 @@ elif test -n "$with_cryptominisat"; then
 
   dnl TODO FIXME:
   dnl For some reason the CVC4_TRY_CRYPTOMINISAT is not working correctly
-  CVC4_TRY_CRYPTOMINISAT_WITH([])
-  CVC4_TRY_CRYPTOMINISAT_WITH([-lm4ri])
+  CVC4_TRY_CRYPTOMINISAT_WITH([-pthread])
+  CVC4_TRY_CRYPTOMINISAT_WITH([-pthread -lm4ri])
 
   if test -z "$CRYPTOMINISAT_LIBS"; then
     AC_MSG_FAILURE([cannot link against libcryptominisat!])
@@ -48,7 +48,6 @@ elif test -n "$with_cryptominisat"; then
   fi
 
   CRYPTOMINISAT_LDFLAGS="-L$CRYPTOMINISAT_HOME/install/lib"
-  CRYPTOMINISAT_LIBS="-lcryptominisat4 -lm4ri"
 
 else
   AC_MSG_RESULT([no, user didn't request cryptominisat])
@@ -71,10 +70,9 @@ if test -z "$CRYPTOMINISAT_LIBS"; then
   LDFLAGS="-L$CRYPTOMINISAT_HOME/install/lib"
   LIBS="-lcryptominisat4 $1"
 
-
   AC_LINK_IFELSE(
-    [AC_LANG_PROGRAM([#include <cryptominisat4/cryptominisat.h>],
-      [CMSat::SATSolver test()])], [CRYPTOMINISAT_LIBS="-lcryptominisat4 $1"],
+    [AC_LANG_PROGRAM([[#include <cryptominisat4/cryptominisat.h>]],
+      [[CMSat::SATSolver test()]])], [CRYPTOMINISAT_LIBS="-lcryptominisat4 $1"],
     [CRYPTOMINISAT_LIBS=])
 
   LDFLAGS="$cvc4_save_LDFLAGS"
diff --git a/configure b/configure
index 1c13c92..6f52eea 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for cvc4 1.5-prerelease.
+# Generated by GNU Autoconf 2.69 for cvc4 1.5.
 #
 # Report bugs to <cvc-bugs at cs.nyu.edu>.
 #
@@ -558,8 +558,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='cvc4'
 PACKAGE_TARNAME='cvc4'
-PACKAGE_VERSION='1.5-prerelease'
-PACKAGE_STRING='cvc4 1.5-prerelease'
+PACKAGE_VERSION='1.5'
+PACKAGE_STRING='cvc4 1.5'
 PACKAGE_BUGREPORT='cvc-bugs at cs.nyu.edu'
 PACKAGE_URL=''
 
@@ -630,6 +630,7 @@ CVC4_TRACING_FALSE
 CVC4_TRACING_TRUE
 CVC4_DEBUG_FALSE
 CVC4_DEBUG_TRUE
+COVERAGE_ON
 COVERAGE_ENABLED_FALSE
 COVERAGE_ENABLED_TRUE
 STATIC_BINARY_FALSE
@@ -1702,7 +1703,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 cvc4 1.5-prerelease to adapt to many kinds of systems.
+\`configure' configures cvc4 1.5 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1779,7 +1780,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of cvc4 1.5-prerelease:";;
+     short | recursive ) echo "Configuration of cvc4 1.5:";;
    esac
   cat <<\_ACEOF
 
@@ -1820,7 +1821,7 @@ Optional Features:
                           build Doxygen documentation for static and private
                           member functions
   --disable-doxygen-doc   don't generate any doxygen documentation
-  --disable-doxygen-dot   don't generate graphics for doxygen documentation
+  --enable-doxygen-dot    generate graphics for doxygen documentation
   --enable-doxygen-man    generate doxygen manual pages
   --enable-doxygen-rtf    generate doxygen RTF documentation
   --enable-doxygen-xml    generate doxygen XML documentation
@@ -1829,7 +1830,7 @@ Optional Features:
                           file
   --disable-doxygen-html  don't generate doxygen plain HTML documentation
   --enable-doxygen-ps     generate doxygen PostScript documentation
-  --disable-doxygen-pdf   don't generate doxygen PDF documentation
+  --enable-doxygen-pdf    generate doxygen PDF documentation
   --disable-unit-testing  don't build support for unit testing, even if
                           available
   --enable-language-bindings=c,c++,java | all
@@ -2000,7 +2001,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-cvc4 configure 1.5-prerelease
+cvc4 configure 1.5
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2396,6 +2397,48 @@ fi
 
 } # ac_fn_cxx_try_link
 
+# ac_fn_cxx_try_run LINENO
+# ------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_cxx_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_run
+
 # ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES
 # ---------------------------------------------------------
 # Tests whether HEADER exists, giving a warning if it cannot be compiled using
@@ -2627,7 +2670,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by cvc4 $as_me 1.5-prerelease, which was
+It was created by cvc4 $as_me 1.5, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3055,8 +3098,8 @@ AM_BACKSLASH='\'
 CVC4_MAJOR=1
 CVC4_MINOR=5
 CVC4_RELEASE=0
-CVC4_EXTRAVERSION=-prerelease
-CVC4_RELEASE_STRING=1.5-prerelease
+CVC4_EXTRAVERSION=
+CVC4_RELEASE_STRING=1.5
 
 # Libtool version numbers for libraries
 # Version numbers are in the form current:revision:age
@@ -3081,13 +3124,13 @@ CVC4_RELEASE_STRING=1.5-prerelease
 
 
 
-CVC4_LIBRARY_VERSION=3:0:0
+CVC4_LIBRARY_VERSION=4:0:0
 
-CVC4_PARSER_LIBRARY_VERSION=3:0:0
+CVC4_PARSER_LIBRARY_VERSION=4:0:0
 
-CVC4_COMPAT_LIBRARY_VERSION=3:0:0
+CVC4_COMPAT_LIBRARY_VERSION=4:0:0
 
-CVC4_BINDINGS_LIBRARY_VERSION=3:0:0
+CVC4_BINDINGS_LIBRARY_VERSION=4:0:0
 
 
 # Using the AC_CANONICAL_* macros destroy the command line you get
@@ -3892,7 +3935,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='cvc4'
- VERSION='1.5-prerelease'
+ VERSION='1.5'
 
 
 # Some tools Automake needs.
@@ -17531,6 +17574,62 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
   fi
 
 
+if test $cross_compiling = "no"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C++ exceptions work" >&5
+$as_echo_n "checking whether C++ exceptions work... " >&6; }
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  if test "$cross_compiling" = yes; then :
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <exception>
+int
+main ()
+{
+
+      int result = 1;
+      try {
+        throw std::exception();
+      } catch (...) {
+        result = 0;
+      }
+      return result;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_run "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  as_fn_error $? "C++ exceptions do not work." "$LINENO" 5
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+  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'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cross compiling, cannot check whether exceptions work" >&5
+$as_echo "$as_me: WARNING: Cross compiling, cannot check whether exceptions work" >&2;}
+fi
+
 cvc4_use_gmp=2
 cvc4_use_cln=2
 
@@ -18375,6 +18474,9 @@ fi
 
 if test -z "${enable_coverage+set}"; then
   enable_coverage=no
+  # make COVERAGE_ON the empty string for makefile conditional function
+  # $(if $(COVERAGE_ON), action1, action2)
+  COVERAGE_ON=
 fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_coverage" >&5
@@ -18386,6 +18488,7 @@ if test "$enable_coverage" = yes; then
   # If the user didn't specify these, we force them here.  If the
   # user specified them in opposite phase, give warnings that they
   # shouldn't do that, or bomb out.
+  COVERAGE_ON=yes
   if test "$user_specified_enable_or_disable_shared" != yes; then
     enable_shared=no
     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: turning off shared library building due to --enable-coverage" >&5
@@ -21197,8 +21300,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
   cvc4_save_CPPFLAGS="$CPPFLAGS"
 
   LDFLAGS="-L$CRYPTOMINISAT_HOME/install/lib"
-  LIBS="-lcryptominisat4 "
-
+  LIBS="-lcryptominisat4 -pthread"
 
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -21212,7 +21314,7 @@ CMSat::SATSolver test()
 }
 _ACEOF
 if ac_fn_cxx_try_link "$LINENO"; then :
-  CRYPTOMINISAT_LIBS="-lcryptominisat4 "
+  CRYPTOMINISAT_LIBS="-lcryptominisat4 -pthread"
 else
   CRYPTOMINISAT_LIBS=
 fi
@@ -21245,8 +21347,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
   cvc4_save_CPPFLAGS="$CPPFLAGS"
 
   LDFLAGS="-L$CRYPTOMINISAT_HOME/install/lib"
-  LIBS="-lcryptominisat4 -lm4ri"
-
+  LIBS="-lcryptominisat4 -pthread -lm4ri"
 
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -21260,7 +21361,7 @@ CMSat::SATSolver test()
 }
 _ACEOF
 if ac_fn_cxx_try_link "$LINENO"; then :
-  CRYPTOMINISAT_LIBS="-lcryptominisat4 -lm4ri"
+  CRYPTOMINISAT_LIBS="-lcryptominisat4 -pthread -lm4ri"
 else
   CRYPTOMINISAT_LIBS=
 fi
@@ -21292,7 +21393,6 @@ $as_echo "$CRYPTOMINISAT_LIBS" >&6; }
   fi
 
   CRYPTOMINISAT_LDFLAGS="-L$CRYPTOMINISAT_HOME/install/lib"
-  CRYPTOMINISAT_LIBS="-lcryptominisat4 -lm4ri"
 
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, user didn't request cryptominisat" >&5
@@ -22157,7 +22257,7 @@ esac
 
 else
 
-DX_FLAG_dot=1
+DX_FLAG_dot=0
 
 
 test "$DX_FLAG_doc" = "1" || DX_FLAG_dot=0
@@ -23352,7 +23452,7 @@ esac
 
 else
 
-DX_FLAG_pdf=1
+DX_FLAG_pdf=0
 
 
 test "$DX_FLAG_doc" = "1" || DX_FLAG_pdf=0
@@ -24296,6 +24396,15 @@ case " $LIBOBJS " in
 esac
 
 
+# Check for sigaltstack (missing in emscripten and mingw)
+ac_fn_c_check_func "$LINENO" "sigaltstack" "ac_cv_func_sigaltstack"
+if test "x$ac_cv_func_sigaltstack" = xyes; then :
+
+$as_echo "#define HAVE_SIGALTSTACK 1" >>confdefs.h
+
+fi
+
+
 # Check for antlr C++ runtime (defined in config/antlr.m4)
 
 
@@ -28437,6 +28546,7 @@ else
 fi
 
 
+
  if test "$with_build" = debug; then
   CVC4_DEBUG_TRUE=
   CVC4_DEBUG_FALSE='#'
@@ -28563,7 +28673,7 @@ fi
 MAN_DATE=`date '+%B %Y'`
 
 
-ac_config_files="$ac_config_files Makefile.builds Makefile proofs/signatures/Makefile contrib/Makefile examples/Makefile examples/api/Makefile examples/api/java/Makefile examples/hashsmt/Makefile examples/nra-translate/Makefile examples/sets-translate/Makefile src/Makefile src/base/Makefile src/bindings/Makefile src/bindings/compat/Makefile src/bindings/compat/c/Makefile src/bindings/compat/java/Makefile src/compat/Makefile src/expr/Makefile src/lib/Makefile src/main/Makefile src/options [...]
+ac_config_files="$ac_config_files Makefile.builds Makefile proofs/signatures/Makefile contrib/Makefile examples/Makefile examples/api/Makefile examples/api/java/Makefile examples/hashsmt/Makefile examples/nra-translate/Makefile examples/sets-translate/Makefile src/Makefile src/base/Makefile src/bindings/Makefile src/bindings/compat/Makefile src/bindings/compat/c/Makefile src/bindings/compat/java/Makefile src/compat/Makefile src/expr/Makefile src/lib/Makefile src/main/Makefile src/options [...]
 
 
 if test $cvc4_has_threads = yes; then
@@ -29487,7 +29597,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by cvc4 $as_me 1.5-prerelease, which was
+This file was extended by cvc4 $as_me 1.5, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -29553,7 +29663,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-cvc4 config.status 1.5-prerelease
+cvc4 config.status 1.5
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -30111,6 +30221,7 @@ do
     "test/regress/regress0/expect/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/expect/Makefile" ;;
     "test/regress/regress0/fmf/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/fmf/Makefile" ;;
     "test/regress/regress0/lemmas/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/lemmas/Makefile" ;;
+    "test/regress/regress0/nl/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/nl/Makefile" ;;
     "test/regress/regress0/parser/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/parser/Makefile" ;;
     "test/regress/regress0/precedence/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/precedence/Makefile" ;;
     "test/regress/regress0/preprocess/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress0/preprocess/Makefile" ;;
@@ -30137,6 +30248,7 @@ do
     "test/regress/regress1/decision/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress1/decision/Makefile" ;;
     "test/regress/regress1/fmf/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress1/fmf/Makefile" ;;
     "test/regress/regress1/lemmas/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress1/lemmas/Makefile" ;;
+    "test/regress/regress1/quantifiers/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress1/quantifiers/Makefile" ;;
     "test/regress/regress1/rewriterules/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress1/rewriterules/Makefile" ;;
     "test/regress/regress1/sep/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress1/sep/Makefile" ;;
     "test/regress/regress1/sets/Makefile") CONFIG_FILES="$CONFIG_FILES test/regress/regress1/sets/Makefile" ;;
diff --git a/configure.ac b/configure.ac
index 0335f6e..aba9607 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,7 +4,7 @@
 m4_define(_CVC4_MAJOR,          1)       dnl version (major)
 m4_define(_CVC4_MINOR,          5)       dnl version (minor)
 m4_define(_CVC4_RELEASE,        0)       dnl version (alpha)
-m4_define(_CVC4_EXTRAVERSION,   [-prerelease])      dnl version (extra)
+m4_define(_CVC4_EXTRAVERSION,   [])      dnl version (extra)
 m4_define(_CVC4_RELEASE_STRING, _CVC4_MAJOR[.]_CVC4_MINOR[]m4_if(_CVC4_RELEASE,[0],,[.]_CVC4_RELEASE)_CVC4_EXTRAVERSION) dnl version string
 
 dnl Preprocess CL args. Defined in config/cvc4.m4
@@ -253,6 +253,27 @@ AC_PROG_INSTALL
 
 CVC4_GCC_VERSION
 
+if test $cross_compiling = "no"; then
+  AC_MSG_CHECKING([whether C++ exceptions work])
+  AC_LANG_PUSH([C++])
+  AC_RUN_IFELSE(
+    AC_LANG_PROGRAM([#include <exception>], [[
+      int result = 1;
+      try {
+        throw std::exception();
+      } catch (...) {
+        result = 0;
+      }
+      return result;
+    ]]),
+    [AC_MSG_RESULT([yes])],
+    [AC_MSG_ERROR([C++ exceptions do not work.])]
+  )
+  AC_LANG_POP([C++])
+else
+  AC_MSG_WARN([Cross compiling, cannot check whether exceptions work])
+fi
+
 cvc4_use_gmp=2
 cvc4_use_cln=2
 
@@ -699,6 +720,9 @@ AC_ARG_ENABLE([coverage],
 
 if test -z "${enable_coverage+set}"; then
   enable_coverage=no
+  # make COVERAGE_ON the empty string for makefile conditional function
+  # $(if $(COVERAGE_ON), action1, action2)
+  COVERAGE_ON=
 fi
 
 AC_MSG_RESULT([$enable_coverage])
@@ -709,6 +733,7 @@ if test "$enable_coverage" = yes; then
   # If the user didn't specify these, we force them here.  If the
   # user specified them in opposite phase, give warnings that they
   # shouldn't do that, or bomb out.
+  COVERAGE_ON=yes
   if test "$user_specified_enable_or_disable_shared" != yes; then
     enable_shared=no
     AC_MSG_WARN([turning off shared library building due to --enable-coverage])
@@ -889,9 +914,9 @@ AC_SUBST([DOXYGEN_EXTRACT_PRIVATE])
 AC_SUBST([DOXYGEN_EXTRACT_STATIC])
 
 DX_MAN_FEATURE(OFF)
-DX_PDF_FEATURE(ON)
+DX_PDF_FEATURE(OFF)
 DX_PS_FEATURE(OFF)
-DX_DOT_FEATURE(ON)
+DX_DOT_FEATURE(OFF)
 DX_INIT_DOXYGEN($PACKAGE_NAME, config/doxygen.cfg, $srcdir/doc/doxygen)
 
 AC_ARG_ENABLE([unit-testing], AS_HELP_STRING([--disable-unit-testing], [don't build support for unit testing, even if available]), , [enable_unit_testing=check])
@@ -1010,6 +1035,10 @@ AC_CHECK_FUNC([ffs], [AC_DEFINE([HAVE_FFS], [1],
 
 AC_LIBOBJ([strtok_r ffs])
 
+# Check for sigaltstack (missing in emscripten and mingw)
+AC_CHECK_FUNC([sigaltstack], [AC_DEFINE([HAVE_SIGALTSTACK], [1],
+                                        [Defined to 1 if sigaltstack() is supported by the platform.])])
+
 # Check for antlr C++ runtime (defined in config/antlr.m4)
 AC_LIB_ANTLR
 
@@ -1242,6 +1271,7 @@ AC_SUBST(BUILDING_STATIC)
 AC_SUBST(STATIC_BINARY)
 AM_CONDITIONAL([STATIC_BINARY], [test "$enable_static_binary" = yes])
 AM_CONDITIONAL([COVERAGE_ENABLED], [test "$enable_coverage" = yes])
+AC_SUBST([COVERAGE_ON])
 
 AM_CONDITIONAL([CVC4_DEBUG], [test "$with_build" = debug])
 AM_CONDITIONAL([CVC4_TRACING], [test "$enable_tracing" = yes])
diff --git a/contrib/Makefile.in b/contrib/Makefile.in
index a41372d..84d2685 100644
--- a/contrib/Makefile.in
+++ b/contrib/Makefile.in
@@ -170,6 +170,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/cvc4autoconfig.h.in b/cvc4autoconfig.h.in
index cc52b8a..67e7f3c 100644
--- a/cvc4autoconfig.h.in
+++ b/cvc4autoconfig.h.in
@@ -80,6 +80,9 @@
 /* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H
 
+/* Defined to 1 if sigaltstack() is supported by the platform. */
+#undef HAVE_SIGALTSTACK
+
 /* Define to 1 if you have the <stdint.h> header file. */
 #undef HAVE_STDINT_H
 
diff --git a/doc/SmtEngine.3cvc b/doc/SmtEngine.3cvc
index 34c37b2..fbc771e 100644
--- a/doc/SmtEngine.3cvc
+++ b/doc/SmtEngine.3cvc
@@ -1,7 +1,7 @@
 .\" Process this file with
 .\" groff -man -Tascii SmtEngine.3cvc
 .\"
-.TH SMTENGINE 3cvc "March 2017" "CVC4 release 1.5-prerelease" "CVC4 Library Interfaces"
+.TH SMTENGINE 3cvc "July 2017" "CVC4 release 1.5" "CVC4 Library Interfaces"
 .SH NAME
 SmtEngine \- the primary interface to CVC4's theorem-proving capabilities
 .SH DESCRIPTION
@@ -191,7 +191,7 @@ use the following option keys.
 (unsigned) maximum complexity of any coefficient while replaying cuts
 .TP
 .B "replay-lemma-reject-cut"
-(unsigned) maximum complexity of any coefficient while outputing replaying cut lemmas
+(unsigned) maximum complexity of any coefficient while outputting replaying cut lemmas
 .TP
 .B "replay-soi-major-threshold"
 (double) threshold for a major tolerance failure by the approximate solver
@@ -220,6 +220,35 @@ use the following option keys.
 .B "snorm-infer-eq"
 (bool) infer equalities based on Shostak normalization
 .TP
+.B "nl-ext"
+(bool) extended approach to non\-linear
+
+.TP
+.B "nl-ext-rbound"
+(bool) use resolution\-style inference for inferring new bounds
+.TP
+.B "nl-ext-tplanes"
+(bool) use non\-terminating tangent plane strategy for non\-linear
+.TP
+.B "nl-ext-ent-conf"
+(bool) check for entailed conflicts in non\-linear solver
+
+.TP
+.B "nl-ext-rewrite"
+(bool) do rewrites in non\-linear solver
+
+.TP
+.B "nl-ext-solve-subs"
+(bool) do solving for determining constant substitutions
+
+.TP
+.B "nl-ext-purify"
+(bool) purify non\-linear terms at preprocess
+
+.TP
+.B "nl-ext-split-zero"
+(bool) intial splits on zero for all variables
+.TP
 .I "ARRAYS THEORY OPTIONS"
 
 .TP
@@ -621,6 +650,12 @@ use the following option keys.
 .B "multi-trigger-priority"
 (bool) only try multi triggers if single triggers give no instantiations
 .TP
+.B "multi-trigger-cache"
+(bool) caching version of multi triggers
+.TP
+.B "multi-trigger-linear"
+(bool) implementation of multi triggers where maximum number of instantiations is linear wrt number of ground terms
+.TP
 .B "trigger-sel"
 (CVC4::theory::quantifiers::TriggerSelMode) selection mode for triggers
 .TP
@@ -645,6 +680,9 @@ use the following option keys.
 .TP
 .B "inst-when-tc-first"
 (bool) allow theory combination to happen once initially, before quantifier strategies are run
+.TP
+.B "quant-model-ee"
+(bool) use equality engine of model for last call effort
 
 .TP
 .B "inst-max-level=N"
@@ -750,6 +788,9 @@ use the following option keys.
 .B "inst-no-entail"
 (bool) do not consider instances of quantified formulas that are currently entailed
 .TP
+.B "inst-no-model-true"
+(bool) do not consider instances of quantified formulas that are currently true in model, if it is available
+.TP
 .B "inst-prop"
 (bool) internal propagation for instantiations for selecting relevant instances
 
@@ -861,8 +902,14 @@ use the following option keys.
 .B "sygus-inv-templ=MODE"
 (CVC4::theory::quantifiers::SygusInvTemplMode)  template mode for sygus invariant synthesis
 .TP
+.B "sygus-unif-csol"
+(bool)  enable approach which unifies conditional solutions
+.TP
 .B "sygus-direct-eval"
 (bool)  direct unfolding of evaluation functions
+.TP
+.B "sygus-cref-eval"
+(bool)  direct evaluation of refinement lemmas for conflict analysis
  
 .TP
 .B "cbqi"
@@ -989,6 +1036,10 @@ use the following option keys.
 (bool) standard effort checks for relations
 
 .TP
+.B "sets-ext"
+(bool) enable extended symbols such as complement and universe in theory of sets
+
+.TP
 .I "SMT LAYER OPTIONS"
 
 .TP
@@ -1037,6 +1088,9 @@ use the following option keys.
 .B "dump-unsat-cores"
 (bool) output unsat cores after every UNSAT/VALID response
 .TP
+.B "dump-unsat-cores-full"
+(bool) dump the full unsat core, including unlabeled assertions
+.TP
 .B "produce-assignments"
 (bool) support the get\-assignment command
 .TP
@@ -1077,51 +1131,40 @@ use the following option keys.
 (std::string) set the diagnostic output channel of the solver
 .TP
 .B "rewrite-step"
-(unsigned) ammount of resources spent for each rewrite step (EXPERTS only)
+(unsigned) amount of resources spent for each rewrite step (EXPERTS only)
 .TP
 .B "theory-check-step"
-(unsigned) ammount of resources spent for each theory check call (EXPERTS only)
+(unsigned) amount of resources spent for each theory check call (EXPERTS only)
 .TP
 .B "decision-step"
-(unsigned) ammount of getNext decision calls in the decision engine (EXPERTS only)
-
+(unsigned) amount of getNext decision calls in the decision engine (EXPERTS only)
 .TP
 .B "bitblast-step"
-(unsigned) ammount of resources spent for each bitblast step (EXPERTS only)
-
+(unsigned) amount of resources spent for each bitblast step (EXPERTS only)
 .TP
 .B "parse-step"
-(unsigned) ammount of resources spent for each command/expression parsing (EXPERTS only)
-
+(unsigned) amount of resources spent for each command/expression parsing (EXPERTS only)
 .TP
 .B "lemma-step"
-(unsigned) ammount of resources spent when adding lemmas (EXPERTS only)
-
+(unsigned) amount of resources spent when adding lemmas (EXPERTS only)
 .TP
 .B "restart-step"
-(unsigned) ammount of resources spent for each theory restart (EXPERTS only)
-
+(unsigned) amount of resources spent for each theory restart (EXPERTS only)
 .TP
 .B "cnf-step"
-(unsigned) ammount of resources spent for each call to cnf conversion (EXPERTS only)
-
+(unsigned) amount of resources spent for each call to cnf conversion (EXPERTS only)
 .TP
 .B "preprocess-step"
-(unsigned) ammount of resources spent for each preprocessing step in SmtEngine (EXPERTS only)
-
+(unsigned) amount of resources spent for each preprocessing step in SmtEngine (EXPERTS only)
 .TP
 .B "quantifier-step"
-(unsigned) ammount of resources spent for quantifier instantiations (EXPERTS only)
-
+(unsigned) amount of resources spent for quantifier instantiations (EXPERTS only)
 .TP
 .B "sat-conflict-step"
-(unsigned) ammount of resources spent for each sat conflict (main sat solver) (EXPERTS only)
-
+(unsigned) amount of resources spent for each sat conflict (main sat solver) (EXPERTS only)
 .TP
 .B "bv-sat-conflict-step"
-(unsigned) ammount of resources spent for each sat conflict (bitvectors) (EXPERTS only)
-
-
+(unsigned) amount of resources spent for each sat conflict (bitvectors) (EXPERTS only)
 .TP
 .B "rewrite-apply-to-const"
 (bool) eliminate function applications, rewriting e.g. f(5) to a new symbol f_5 (EXPERTS only)
@@ -1275,7 +1318,7 @@ use the following option keys.
 .SH VERSION
 This manual page refers to
 .B CVC4
-version 1.5-prerelease.
+version 1.5.
 .SH BUGS
 A Bugzilla for the CVC4 project is maintained at
 .BR http://cvc4.cs.nyu.edu/bugzilla3/ .
diff --git a/doc/cvc4.1 b/doc/cvc4.1
index 01ad569..ec5bc07 100644
--- a/doc/cvc4.1
+++ b/doc/cvc4.1
@@ -1,7 +1,7 @@
 .\" Process this file with
 .\" groff -man -Tascii cvc4.1
 .\"
-.TH CVC4 1 "March 2017" "CVC4 release 1.5-prerelease" "User Manuals"
+.TH CVC4 1 "July 2017" "CVC4 release 1.5" "User Manuals"
 .SH NAME
 cvc4, pcvc4 \- an automated theorem prover
 .SH SYNOPSIS
@@ -176,7 +176,7 @@ number of solve integer attempts to skips after a numeric failure
 .IP "\-\-replay\-reject\-cut"
 maximum complexity of any coefficient while replaying cuts
 .IP "\-\-replay\-lemma\-reject\-cut"
-maximum complexity of any coefficient while outputing replaying cut lemmas
+maximum complexity of any coefficient while outputting replaying cut lemmas
 .IP "\-\-replay\-soi\-major\-threshold"
 threshold for a major tolerance failure by the approximate solver
 .IP "\-\-replay\-soi\-major\-threshold\-pen"
@@ -195,6 +195,27 @@ apply pseudo boolean rewrites [*]
 threshold of number of pseudoboolean variables to have before doing rewrites
 .IP "\-\-snorm\-infer\-eq"
 infer equalities based on Shostak normalization [*]
+.IP "\-\-nl\-ext"
+extended approach to non\-linear [*]
+
+.IP "\-\-nl\-ext\-rbound"
+use resolution\-style inference for inferring new bounds [*]
+.IP "\-\-nl\-ext\-tplanes"
+use non\-terminating tangent plane strategy for non\-linear [*]
+.IP "\-\-nl\-ext\-ent\-conf"
+check for entailed conflicts in non\-linear solver [*]
+
+.IP "\-\-nl\-ext\-rewrite"
+do rewrites in non\-linear solver [*]
+
+.IP "\-\-nl\-ext\-solve\-subs"
+do solving for determining constant substitutions [*]
+
+.IP "\-\-nl\-ext\-purify"
+purify non\-linear terms at preprocess [*]
+
+.IP "\-\-nl\-ext\-split\-zero"
+intial splits on zero for all variables [*]
 .SH ARRAYS THEORY OPTIONS
 
 .IP "\-\-arrays\-optimize\-linear"
@@ -475,6 +496,10 @@ use triggers that do not contain all free variables [*]
 select multi triggers when single triggers exist [*]
 .IP "\-\-multi\-trigger\-priority"
 only try multi triggers if single triggers give no instantiations [*]
+.IP "\-\-multi\-trigger\-cache"
+caching version of multi triggers [*]
+.IP "\-\-multi\-trigger\-linear"
+implementation of multi triggers where maximum number of instantiations is linear wrt number of ground terms [*]
 .IP "\-\-trigger\-sel"
 selection mode for triggers
 .IP "\-\-trigger\-active\-sel"
@@ -492,6 +517,8 @@ ensure theory combination and standard quantifier effort strategies take turns
 instantiation rounds quantifiers takes (>=1) before allowing theory combination to happen
 .IP "\-\-inst\-when\-tc\-first"
 allow theory combination to happen once initially, before quantifier strategies are run [*]
+.IP "\-\-quant\-model\-ee"
+use equality engine of model for last call effort [*]
 
 .IP "\-\-inst\-max\-level=N"
 maximum inst level of terms used to instantiate quantified formulas with (\-1 == no limit, default)
@@ -563,6 +590,8 @@ consider conflicts for nested quantifiers [*]
 qcf experimental variable ordering [*]
 .IP "\-\-inst\-no\-entail"
 do not consider instances of quantified formulas that are currently entailed [*]
+.IP "\-\-inst\-no\-model\-true"
+do not consider instances of quantified formulas that are currently true in model, if it is available [*]
 .IP "\-\-inst\-prop"
 internal propagation for instantiations for selecting relevant instances [*]
 
@@ -640,8 +669,12 @@ maximum depth of terms to consider for conjectures
  
 .IP "\-\-sygus\-inv\-templ=MODE"
  template mode for sygus invariant synthesis
+.IP "\-\-sygus\-unif\-csol"
+ enable approach which unifies conditional solutions [*]
 .IP "\-\-sygus\-direct\-eval"
  direct unfolding of evaluation functions [*]
+.IP "\-\-sygus\-cref\-eval"
+ direct evaluation of refinement lemmas for conflict analysis [*]
  
 .IP "\-\-cbqi"
 turns on counterexample\-based quantifier instantiation [*]
@@ -729,6 +762,9 @@ send inferences as lemmas [*]
 .IP "\-\-sets\-rel\-eager"
 standard effort checks for relations [*]
 
+.IP "\-\-sets\-ext"
+enable extended symbols such as complement and universe in theory of sets [*]
+
 .SH SMT LAYER OPTIONS
 
 .IP "\-\-force\-logic=LOGIC"
@@ -761,6 +797,8 @@ turn on unsat core generation [*]
 after UNSAT/VALID, produce and check an unsat core (expensive) [*]
 .IP "\-\-dump\-unsat\-cores"
 output unsat cores after every UNSAT/VALID response [*]
+.IP "\-\-dump\-unsat\-cores\-full"
+dump the full unsat core, including unlabeled assertions [*]
 .IP "\-\-produce\-assignments"
 support the get\-assignment command [*]
 .IP "\-\-ite\-simp"
@@ -784,40 +822,29 @@ in models, output arrays (and in future, maybe others) using abstract values, as
 .IP "\-\-model\-u\-dt\-enum"
 in models, output uninterpreted sorts as datatype enumerations [*]
 .IP "\-\-rewrite\-step"
-ammount of resources spent for each rewrite step (EXPERTS only)
+amount of resources spent for each rewrite step (EXPERTS only)
 .IP "\-\-theory\-check\-step"
-ammount of resources spent for each theory check call (EXPERTS only)
+amount of resources spent for each theory check call (EXPERTS only)
 .IP "\-\-decision\-step"
-ammount of getNext decision calls in the decision engine (EXPERTS only)
-
+amount of getNext decision calls in the decision engine (EXPERTS only)
 .IP "\-\-bitblast\-step"
-ammount of resources spent for each bitblast step (EXPERTS only)
-
+amount of resources spent for each bitblast step (EXPERTS only)
 .IP "\-\-parse\-step"
-ammount of resources spent for each command/expression parsing (EXPERTS only)
-
+amount of resources spent for each command/expression parsing (EXPERTS only)
 .IP "\-\-lemma\-step"
-ammount of resources spent when adding lemmas (EXPERTS only)
-
+amount of resources spent when adding lemmas (EXPERTS only)
 .IP "\-\-restart\-step"
-ammount of resources spent for each theory restart (EXPERTS only)
-
+amount of resources spent for each theory restart (EXPERTS only)
 .IP "\-\-cnf\-step"
-ammount of resources spent for each call to cnf conversion (EXPERTS only)
-
+amount of resources spent for each call to cnf conversion (EXPERTS only)
 .IP "\-\-preprocess\-step"
-ammount of resources spent for each preprocessing step in SmtEngine (EXPERTS only)
-
+amount of resources spent for each preprocessing step in SmtEngine (EXPERTS only)
 .IP "\-\-quantifier\-step"
-ammount of resources spent for quantifier instantiations (EXPERTS only)
-
+amount of resources spent for quantifier instantiations (EXPERTS only)
 .IP "\-\-sat\-conflict\-step"
-ammount of resources spent for each sat conflict (main sat solver) (EXPERTS only)
-
+amount of resources spent for each sat conflict (main sat solver) (EXPERTS only)
 .IP "\-\-bv\-sat\-conflict\-step"
-ammount of resources spent for each sat conflict (bitvectors) (EXPERTS only)
-
-
+amount of resources spent for each sat conflict (bitvectors) (EXPERTS only)
 .IP "\-\-rewrite\-apply\-to\-const"
 eliminate function applications, rewriting e.g. f(5) to a new symbol f_5 (EXPERTS only) [*]
 .IP "\-\-force\-no\-limit\-cpu\-while\-dump"
@@ -976,7 +1003,7 @@ selective re-engineering, which would have ballooned in short order.
 .SH VERSION
 This manual page refers to
 .B CVC4
-version 1.5-prerelease.
+version 1.5.
 .SH BUGS
 A Bugzilla for the CVC4 project is maintained at
 .BR http://cvc4.cs.nyu.edu/bugzilla3/ .
diff --git a/doc/libcvc4.3 b/doc/libcvc4.3
index 0d1b8ce..0035ce4 100644
--- a/doc/libcvc4.3
+++ b/doc/libcvc4.3
@@ -1,7 +1,7 @@
 .\" Process this file with
 .\" groff -man -Tascii libcvc4.3
 .\"
-.TH LIBCVC4 3 "March 2017" "CVC4 release 1.5-prerelease" "CVC4 Library Interfaces"
+.TH LIBCVC4 3 "July 2017" "CVC4 release 1.5" "CVC4 Library Interfaces"
 .SH NAME
 libcvc4 \- a library interface for the CVC4 theorem prover
 .SH SYNOPSIS
diff --git a/doc/options.3cvc b/doc/options.3cvc
index 2c4bde5..1a3815a 100644
--- a/doc/options.3cvc
+++ b/doc/options.3cvc
@@ -1,7 +1,7 @@
 .\" Process this file with
 .\" groff -man -Tascii options.3cvc
 .\"
-.TH OPTIONS 3cvc "March 2017" "CVC4 release 1.5-prerelease" "CVC4 Internals Documentation"
+.TH OPTIONS 3cvc "July 2017" "CVC4 release 1.5" "CVC4 Internals Documentation"
 .SH NAME
 options \- the options infrastructure
 
@@ -287,7 +287,7 @@ maximum complexity of any coefficient while replaying cuts
 .B "lemmaRejectCutSize"
 (unsigned, default = 25500)
 .br
-maximum complexity of any coefficient while outputing replaying cut lemmas
+maximum complexity of any coefficient while outputting replaying cut lemmas
 .TP
 .B "soiApproxMajorFailure"
 (double, default = .01)
@@ -334,6 +334,51 @@ threshold of number of pseudoboolean variables to have before doing rewrites
 .br
 infer equalities based on Shostak normalization
 .TP
+.B "nlExt"
+(bool, default = true)
+.br
+extended approach to non\-linear
+
+.TP
+.B "nlExtResBound"
+(bool, default = false)
+.br
+use resolution\-style inference for inferring new bounds
+.TP
+.B "nlExtTangentPlanes"
+(bool, default = false)
+.br
+use non\-terminating tangent plane strategy for non\-linear
+.TP
+.B "nlExtEntailConflicts"
+(bool, default = false)
+.br
+check for entailed conflicts in non\-linear solver
+
+.TP
+.B "nlExtRewrites"
+(bool, default = true)
+.br
+do rewrites in non\-linear solver
+
+.TP
+.B "nlExtSolveSubs"
+(bool, default = false)
+.br
+do solving for determining constant substitutions
+
+.TP
+.B "nlExtPurify"
+(bool, default = false)
+.br
+purify non\-linear terms at preprocess
+
+.TP
+.B "nlExtSplitZero"
+(bool, default = false)
+.br
+intial splits on zero for all variables
+.TP
 .I "ARRAYS THEORY OPTIONS"
 
 .TP
@@ -1031,6 +1076,16 @@ select multi triggers when single triggers exist
 .br
 only try multi triggers if single triggers give no instantiations
 .TP
+.B "multiTriggerCache"
+(bool, default = false)
+.br
+caching version of multi triggers
+.TP
+.B "multiTriggerLinear"
+(bool, default = true)
+.br
+implementation of multi triggers where maximum number of instantiations is linear wrt number of ground terms
+.TP
 .B "triggerSelMode"
 (CVC4::theory::quantifiers::TriggerSelMode, default = CVC4::theory::quantifiers::TRIGGER_SEL_MIN)
 .br
@@ -1071,6 +1126,11 @@ instantiation rounds quantifiers takes (>=1) before allowing theory combination
 (bool, default = true)
 .br
 allow theory combination to happen once initially, before quantifier strategies are run
+.TP
+.B "quantModelEe"
+(bool, default = false)
+.br
+use equality engine of model for last call effort
 
 .TP
 .B "instMaxLevel"
@@ -1242,6 +1302,11 @@ qcf experimental variable ordering
 .br
 do not consider instances of quantified formulas that are currently entailed
 .TP
+.B "instNoModelTrue"
+(bool, default = false)
+.br
+do not consider instances of quantified formulas that are currently true in model, if it is available
+.TP
 .B "instPropagate"
 (bool, default = false)
 .br
@@ -1421,10 +1486,20 @@ maximum depth of terms to consider for conjectures
 .br
  template mode for sygus invariant synthesis
 .TP
+.B "sygusUnifCondSol"
+(bool, default = false)
+.br
+ enable approach which unifies conditional solutions
+.TP
 .B "sygusDirectEval"
 (bool, default = true)
 .br
  direct unfolding of evaluation functions
+.TP
+.B "sygusCRefEval"
+(bool, default = false)
+.br
+ direct evaluation of refinement lemmas for conflict analysis
  
 .TP
 .B "cbqi"
@@ -1623,6 +1698,12 @@ send inferences as lemmas
 standard effort checks for relations
 
 .TP
+.B "setsExt"
+(bool, default = false)
+.br
+enable extended symbols such as complement and universe in theory of sets
+
+.TP
 .I "SMT LAYER OPTIONS"
 
 .TP
@@ -1701,6 +1782,11 @@ after UNSAT/VALID, produce and check an unsat core (expensive)
 .br
 output unsat cores after every UNSAT/VALID response
 .TP
+.B "dumpUnsatCoresFull"
+(bool, default = false)
+.br
+dump the full unsat core, including unlabeled assertions
+.TP
 .B "produceAssignments"
 (bool, default = false)
 .br
@@ -1774,73 +1860,62 @@ set the diagnostic output channel of the solver
 .B "rewriteStep"
 (unsigned, default = 1)
 .br
-ammount of resources spent for each rewrite step (EXPERTS only)
+amount of resources spent for each rewrite step (EXPERTS only)
 .TP
 .B "theoryCheckStep"
 (unsigned, default = 1)
 .br
-ammount of resources spent for each theory check call (EXPERTS only)
+amount of resources spent for each theory check call (EXPERTS only)
 .TP
 .B "decisionStep"
 (unsigned, default = 1)
 .br
-ammount of getNext decision calls in the decision engine (EXPERTS only)
-
+amount of getNext decision calls in the decision engine (EXPERTS only)
 .TP
 .B "bitblastStep"
 (unsigned, default = 1)
 .br
-ammount of resources spent for each bitblast step (EXPERTS only)
-
+amount of resources spent for each bitblast step (EXPERTS only)
 .TP
 .B "parseStep"
 (unsigned, default = 1)
 .br
-ammount of resources spent for each command/expression parsing (EXPERTS only)
-
+amount of resources spent for each command/expression parsing (EXPERTS only)
 .TP
 .B "lemmaStep"
 (unsigned, default = 1)
 .br
-ammount of resources spent when adding lemmas (EXPERTS only)
-
+amount of resources spent when adding lemmas (EXPERTS only)
 .TP
 .B "restartStep"
 (unsigned, default = 1)
 .br
-ammount of resources spent for each theory restart (EXPERTS only)
-
+amount of resources spent for each theory restart (EXPERTS only)
 .TP
 .B "cnfStep"
 (unsigned, default = 1)
 .br
-ammount of resources spent for each call to cnf conversion (EXPERTS only)
-
+amount of resources spent for each call to cnf conversion (EXPERTS only)
 .TP
 .B "preprocessStep"
 (unsigned, default = 1)
 .br
-ammount of resources spent for each preprocessing step in SmtEngine (EXPERTS only)
-
+amount of resources spent for each preprocessing step in SmtEngine (EXPERTS only)
 .TP
 .B "quantifierStep"
 (unsigned, default = 1)
 .br
-ammount of resources spent for quantifier instantiations (EXPERTS only)
-
+amount of resources spent for quantifier instantiations (EXPERTS only)
 .TP
 .B "satConflictStep"
 (unsigned, default = 1)
 .br
-ammount of resources spent for each sat conflict (main sat solver) (EXPERTS only)
-
+amount of resources spent for each sat conflict (main sat solver) (EXPERTS only)
 .TP
 .B "bvSatConflictStep"
 (unsigned, default = 1)
 .br
-ammount of resources spent for each sat conflict (bitvectors) (EXPERTS only)
-
-
+amount of resources spent for each sat conflict (bitvectors) (EXPERTS only)
 .TP
 .B "rewriteApplyToConst"
 (bool, default = false)
@@ -1867,6 +1942,11 @@ Force no CPU limit when dumping models and proofs
 .br
 attempt to solve a pure integer satisfiable problem by bitblasting in sufficient bitwidth (experimental)
 .TP
+.B "solveRealAsInt"
+(bool, default = false)
+.br
+attempt to solve a pure real satisfiable problem as a integer problem (for non\-linear)
+.TP
 .I "STRINGS THEORY OPTIONS"
 
 .TP
@@ -2099,7 +2179,7 @@ group monotone sorts when enforcing fairness for finite model finding
 .SH VERSION
 This manual page refers to
 .B CVC4
-version 1.5-prerelease.
+version 1.5.
 .SH BUGS
 A Bugzilla for the CVC4 project is maintained at
 .BR http://cvc4.cs.nyu.edu/bugzilla3/ .
diff --git a/examples/Makefile.in b/examples/Makefile.in
index 44cb629..24b36ed 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -346,6 +346,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/examples/SimpleVC.java b/examples/SimpleVC.java
index a72eba9..508da18 100644
--- a/examples/SimpleVC.java
+++ b/examples/SimpleVC.java
@@ -2,9 +2,9 @@
 /*! \file SimpleVC.java
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/SimpleVCCompat.java b/examples/SimpleVCCompat.java
index b366bd3..222df31 100644
--- a/examples/SimpleVCCompat.java
+++ b/examples/SimpleVCCompat.java
@@ -2,9 +2,9 @@
 /*! \file SimpleVCCompat.java
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/api/Makefile.in b/examples/api/Makefile.in
index 02cfec6..4f46c1a 100644
--- a/examples/api/Makefile.in
+++ b/examples/api/Makefile.in
@@ -328,6 +328,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/examples/api/bitvectors.cpp b/examples/api/bitvectors.cpp
index 247131c..90b69b1 100644
--- a/examples/api/bitvectors.cpp
+++ b/examples/api/bitvectors.cpp
@@ -2,9 +2,9 @@
 /*! \file bitvectors.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Morgan Deters, Tim King
+ **   Liana Hadarean, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/api/bitvectors_and_arrays.cpp b/examples/api/bitvectors_and_arrays.cpp
index 83100a8..f3121aa 100644
--- a/examples/api/bitvectors_and_arrays.cpp
+++ b/examples/api/bitvectors_and_arrays.cpp
@@ -2,9 +2,9 @@
 /*! \file bitvectors_and_arrays.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Morgan Deters, Tim King
+ **   Liana Hadarean, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/api/combination.cpp b/examples/api/combination.cpp
index a874c44..57d65c8 100644
--- a/examples/api/combination.cpp
+++ b/examples/api/combination.cpp
@@ -2,9 +2,9 @@
 /*! \file combination.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Paul Meng, makaimann
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/api/datatypes.cpp b/examples/api/datatypes.cpp
index 14aab16..b6aebde 100644
--- a/examples/api/datatypes.cpp
+++ b/examples/api/datatypes.cpp
@@ -2,9 +2,9 @@
 /*! \file datatypes.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/api/extract.cpp b/examples/api/extract.cpp
index 98a75c8..337a785 100644
--- a/examples/api/extract.cpp
+++ b/examples/api/extract.cpp
@@ -2,9 +2,9 @@
 /*! \file extract.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Clark Barrett, Tim King
+ **   Clark Barrett, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/api/helloworld.cpp b/examples/api/helloworld.cpp
index b4ce345..6f7cd33 100644
--- a/examples/api/helloworld.cpp
+++ b/examples/api/helloworld.cpp
@@ -2,9 +2,9 @@
 /*! \file helloworld.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Kshitij Bansal
+ **   Tim King, Paul Meng, Kshitij Bansal
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/api/java/BitVectors.java b/examples/api/java/BitVectors.java
index 5def97e..da5c799 100644
--- a/examples/api/java/BitVectors.java
+++ b/examples/api/java/BitVectors.java
@@ -2,9 +2,9 @@
 /*! \file BitVectors.java
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/api/java/BitVectorsAndArrays.java b/examples/api/java/BitVectorsAndArrays.java
index 97cf7e8..c64e228 100644
--- a/examples/api/java/BitVectorsAndArrays.java
+++ b/examples/api/java/BitVectorsAndArrays.java
@@ -2,9 +2,9 @@
 /*! \file BitVectorsAndArrays.java
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/api/java/CVC4Streams.java b/examples/api/java/CVC4Streams.java
index 343a576..4a0637f 100644
--- a/examples/api/java/CVC4Streams.java
+++ b/examples/api/java/CVC4Streams.java
@@ -2,9 +2,9 @@
 /*! \file CVC4Streams.java
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/api/java/Combination.java b/examples/api/java/Combination.java
index 199e857..affdf5e 100644
--- a/examples/api/java/Combination.java
+++ b/examples/api/java/Combination.java
@@ -2,9 +2,9 @@
 /*! \file Combination.java
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/api/java/Datatypes.java b/examples/api/java/Datatypes.java
index c1ae770..d5820cd 100644
--- a/examples/api/java/Datatypes.java
+++ b/examples/api/java/Datatypes.java
@@ -2,9 +2,9 @@
 /*! \file Datatypes.java
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/api/java/HelloWorld.java b/examples/api/java/HelloWorld.java
index 5cedc63..15813fa 100644
--- a/examples/api/java/HelloWorld.java
+++ b/examples/api/java/HelloWorld.java
@@ -2,9 +2,9 @@
 /*! \file HelloWorld.java
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/api/java/LinearArith.java b/examples/api/java/LinearArith.java
index 3cb9f79..49f6ff1 100644
--- a/examples/api/java/LinearArith.java
+++ b/examples/api/java/LinearArith.java
@@ -2,9 +2,9 @@
 /*! \file LinearArith.java
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/api/java/Makefile.in b/examples/api/java/Makefile.in
index fcb97f0..e3bf9c4 100644
--- a/examples/api/java/Makefile.in
+++ b/examples/api/java/Makefile.in
@@ -211,6 +211,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/examples/api/java/PipedInput.java b/examples/api/java/PipedInput.java
index 88622aa..fc52068 100644
--- a/examples/api/java/PipedInput.java
+++ b/examples/api/java/PipedInput.java
@@ -2,9 +2,9 @@
 /*! \file PipedInput.java
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/api/java/Strings.java b/examples/api/java/Strings.java
index 4f09ca8..56d73a2 100644
--- a/examples/api/java/Strings.java
+++ b/examples/api/java/Strings.java
@@ -2,9 +2,9 @@
 /*! \file Strings.java
  ** \verbatim
  ** Top contributors (to current version):
- **   Clark Barrett, Tim King
+ **   Clark Barrett, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/api/linear_arith.cpp b/examples/api/linear_arith.cpp
index cd180f2..d039f5a 100644
--- a/examples/api/linear_arith.cpp
+++ b/examples/api/linear_arith.cpp
@@ -2,9 +2,9 @@
 /*! \file linear_arith.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Paul Meng, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/api/sets.cpp b/examples/api/sets.cpp
index bb7deea..9cdbabb 100644
--- a/examples/api/sets.cpp
+++ b/examples/api/sets.cpp
@@ -2,9 +2,9 @@
 /*! \file sets.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Kshitij Bansal, Tim King
+ **   Kshitij Bansal, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/api/strings.cpp b/examples/api/strings.cpp
index d8350d0..a6b070b 100644
--- a/examples/api/strings.cpp
+++ b/examples/api/strings.cpp
@@ -2,9 +2,9 @@
 /*! \file strings.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Clark Barrett, Tim King
+ **   Clark Barrett, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/hashsmt/Makefile.in b/examples/hashsmt/Makefile.in
index be2a41a..515395c 100644
--- a/examples/hashsmt/Makefile.in
+++ b/examples/hashsmt/Makefile.in
@@ -271,6 +271,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/examples/hashsmt/sha1.hpp b/examples/hashsmt/sha1.hpp
index 0d529b9..4bfee50 100644
--- a/examples/hashsmt/sha1.hpp
+++ b/examples/hashsmt/sha1.hpp
@@ -2,9 +2,9 @@
 /*! \file sha1.hpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Tim King
+ **   Dejan Jovanovic, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/hashsmt/sha1_collision.cpp b/examples/hashsmt/sha1_collision.cpp
index 042b626..18273b2 100644
--- a/examples/hashsmt/sha1_collision.cpp
+++ b/examples/hashsmt/sha1_collision.cpp
@@ -2,9 +2,9 @@
 /*! \file sha1_collision.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Tim King
+ **   Dejan Jovanovic, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/hashsmt/sha1_inversion.cpp b/examples/hashsmt/sha1_inversion.cpp
index 3793f5b..1a99ee4 100644
--- a/examples/hashsmt/sha1_inversion.cpp
+++ b/examples/hashsmt/sha1_inversion.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Dejan Jovanovic, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/hashsmt/word.cpp b/examples/hashsmt/word.cpp
index f470318..fe5ad73 100644
--- a/examples/hashsmt/word.cpp
+++ b/examples/hashsmt/word.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Dejan Jovanovic, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/hashsmt/word.h b/examples/hashsmt/word.h
index de6abb1..fbb91db 100644
--- a/examples/hashsmt/word.h
+++ b/examples/hashsmt/word.h
@@ -2,9 +2,9 @@
 /*! \file word.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Tim King
+ **   Dejan Jovanovic, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/nra-translate/Makefile.in b/examples/nra-translate/Makefile.in
index ba7a863..e548fe4 100644
--- a/examples/nra-translate/Makefile.in
+++ b/examples/nra-translate/Makefile.in
@@ -288,6 +288,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/examples/nra-translate/normalize.cpp b/examples/nra-translate/normalize.cpp
index c3a7184..d68aec4 100644
--- a/examples/nra-translate/normalize.cpp
+++ b/examples/nra-translate/normalize.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Dejan Jovanovic, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/nra-translate/smt2info.cpp b/examples/nra-translate/smt2info.cpp
index fe37b67..afeb6b6 100644
--- a/examples/nra-translate/smt2info.cpp
+++ b/examples/nra-translate/smt2info.cpp
@@ -2,9 +2,9 @@
 /*! \file smt2info.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Tim King, Morgan Deters
+ **   Dejan Jovanovic, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/nra-translate/smt2todreal.cpp b/examples/nra-translate/smt2todreal.cpp
index fd42486..6b85b01 100644
--- a/examples/nra-translate/smt2todreal.cpp
+++ b/examples/nra-translate/smt2todreal.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Dejan Jovanovic, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/nra-translate/smt2toisat.cpp b/examples/nra-translate/smt2toisat.cpp
index b41cd97..3d0eec1 100644
--- a/examples/nra-translate/smt2toisat.cpp
+++ b/examples/nra-translate/smt2toisat.cpp
@@ -2,9 +2,9 @@
 /*! \file smt2toisat.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Tim King, Morgan Deters
+ **   Dejan Jovanovic, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/nra-translate/smt2tomathematica.cpp b/examples/nra-translate/smt2tomathematica.cpp
index c593cf7..bd2f587 100644
--- a/examples/nra-translate/smt2tomathematica.cpp
+++ b/examples/nra-translate/smt2tomathematica.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Dejan Jovanovic, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/nra-translate/smt2toqepcad.cpp b/examples/nra-translate/smt2toqepcad.cpp
index 30b0afb..de9196d 100644
--- a/examples/nra-translate/smt2toqepcad.cpp
+++ b/examples/nra-translate/smt2toqepcad.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Dejan Jovanovic, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/nra-translate/smt2toredlog.cpp b/examples/nra-translate/smt2toredlog.cpp
index 5324141..c3a8e5f 100644
--- a/examples/nra-translate/smt2toredlog.cpp
+++ b/examples/nra-translate/smt2toredlog.cpp
@@ -2,9 +2,9 @@
 /*! \file smt2toredlog.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Tim King, Morgan Deters
+ **   Dejan Jovanovic, Tim King, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/sets-translate/Makefile.in b/examples/sets-translate/Makefile.in
index 318cc45..321d769 100644
--- a/examples/sets-translate/Makefile.in
+++ b/examples/sets-translate/Makefile.in
@@ -260,6 +260,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/examples/sets-translate/sets_translate.cpp b/examples/sets-translate/sets_translate.cpp
index 1556e98..6f1de6b 100644
--- a/examples/sets-translate/sets_translate.cpp
+++ b/examples/sets-translate/sets_translate.cpp
@@ -2,9 +2,9 @@
 /*! \file sets_translate.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Kshitij Bansal, Tim King
+ **   Kshitij Bansal, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/simple_vc_compat_c.c b/examples/simple_vc_compat_c.c
index 3d04132..5f0c183 100644
--- a/examples/simple_vc_compat_c.c
+++ b/examples/simple_vc_compat_c.c
@@ -2,9 +2,9 @@
 /*! \file simple_vc_compat_c.c
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/simple_vc_compat_cxx.cpp b/examples/simple_vc_compat_cxx.cpp
index 304f02d..8b9a314 100644
--- a/examples/simple_vc_compat_cxx.cpp
+++ b/examples/simple_vc_compat_cxx.cpp
@@ -2,9 +2,9 @@
 /*! \file simple_vc_compat_cxx.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/simple_vc_cxx.cpp b/examples/simple_vc_cxx.cpp
index fbb6a7a..6082f1c 100644
--- a/examples/simple_vc_cxx.cpp
+++ b/examples/simple_vc_cxx.cpp
@@ -2,9 +2,9 @@
 /*! \file simple_vc_cxx.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Dejan Jovanovic, Tim King
+ **   Morgan Deters, Paul Meng, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/examples/translator.cpp b/examples/translator.cpp
index 6a4a2c2..2b9c1d0 100644
--- a/examples/translator.cpp
+++ b/examples/translator.cpp
@@ -2,9 +2,9 @@
 /*! \file translator.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/library_versions b/library_versions
index a487695..0bb4c4d 100644
--- a/library_versions
+++ b/library_versions
@@ -59,3 +59,4 @@
 1\.4 libcvc4:3:0:0 libcvc4parser:3:0:0 libcvc4compat:3:0:0 libcvc4bindings:3:0:0
 1\.4\.1-prerelease libcvc4:3:0:0 libcvc4parser:3:0:0 libcvc4compat:3:0:0 libcvc4bindings:3:0:0
 1\.5-prerelease libcvc4:3:0:0 libcvc4parser:3:0:0 libcvc4compat:3:0:0 libcvc4bindings:3:0:0
+1\.5 libcvc4:4:0:0 libcvc4parser:4:0:0 libcvc4compat:4:0:0 libcvc4bindings:4:0:0
diff --git a/proofs/lfsc_checker/code.cpp b/proofs/lfsc_checker/code.cpp
index ee143a7..48ebc55 100644
--- a/proofs/lfsc_checker/code.cpp
+++ b/proofs/lfsc_checker/code.cpp
@@ -1303,7 +1303,9 @@ Expr *run_code(Expr *_e) {
       return tmp;
     }
 
+    assert(hd->getclass() == CEXPR);
     CExpr *prog = (CExpr *)hd;
+    assert(prog->kids[1]->getclass() == CEXPR);
     Expr **cur = ((CExpr *)prog->kids[1])->kids;
     vector<Expr *> old_vals;
     SymExpr *var;
@@ -1331,10 +1333,26 @@ Expr *run_code(Expr *_e) {
     else
     {
       while((var = (SymExpr *)*cur++)) {
+        // Check whether not enough arguments were supplied
+        if (i >= args.size()) {
+          for (size_t i = 0; i < args.size(); i++) {
+             args[i]->dec();
+          }
+          return NULL;
+        }
+
         old_vals.push_back(var->val);
         var->val = args[i++];
       }
 
+      // Check whether too many arguments were supplied
+      if (i < args.size()) {
+        for (size_t i = 0; i < args.size(); i++) {
+           args[i]->dec();
+        }
+        return NULL;
+      }
+
       if (dbg_prog) {
         dbg_prog_indent(cout);
         cout << "[";
@@ -1359,6 +1377,7 @@ Expr *run_code(Expr *_e) {
       cur = ((CExpr *)prog->kids[1])->kids;
       i = 0;
       while((var = (SymExpr *)*cur++)) {
+        assert(i < args.size());
         args[i]->dec();
         var->val = old_vals[i++];
       }
diff --git a/proofs/signatures/Makefile.in b/proofs/signatures/Makefile.in
index 227bb46..901add5 100644
--- a/proofs/signatures/Makefile.in
+++ b/proofs/signatures/Makefile.in
@@ -250,6 +250,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/proofs/signatures/signatures.cpp b/proofs/signatures/signatures.cpp
index a9b3a32..2934304 100644
--- a/proofs/signatures/signatures.cpp
+++ b/proofs/signatures/signatures.cpp
@@ -203,6 +203,7 @@ const char *const plf_signatures = "\
  (! x (term Bool)\n\
  (! u (th_holds (p_app x))\n\
    (th_holds (= Bool x t_true)))))\n\
+\n\
 (declare pred_eq_f\n\
  (! x (term Bool)\n\
  (! u (th_holds (not (p_app x)))\n\
@@ -236,6 +237,46 @@ const char *const plf_signatures = "\
   (! u1 (th_holds (not (p_app x1)))\n\
     (th_holds (= Bool x1 x1)))))\n\
 \n\
+(declare pred_not_iff_f\n\
+  (! x (term Bool)\n\
+  (! u (th_holds (not (iff false (p_app x))))\n\
+    (th_holds (= Bool t_true x)))))\n\
+\n\
+(declare pred_not_iff_f_2\n\
+  (! x (term Bool)\n\
+  (! u (th_holds (not (iff (p_app x) false)))\n\
+    (th_holds (= Bool x t_true)))))\n\
+\n\
+(declare pred_not_iff_t\n\
+  (! x (term Bool)\n\
+  (! u (th_holds (not (iff true (p_app x))))\n\
+    (th_holds (= Bool t_false x)))))\n\
+\n\
+(declare pred_not_iff_t_2\n\
+  (! x (term Bool)\n\
+  (! u (th_holds (not (iff (p_app x) true)))\n\
+    (th_holds (= Bool x t_false)))))\n\
+\n\
+(declare pred_iff_f\n\
+  (! x (term Bool)\n\
+  (! u (th_holds (iff false (p_app x)))\n\
+    (th_holds (= Bool t_false x)))))\n\
+\n\
+(declare pred_iff_f_2\n\
+  (! x (term Bool)\n\
+  (! u (th_holds (iff (p_app x) false))\n\
+    (th_holds (= Bool x t_false)))))\n\
+\n\
+(declare pred_iff_t\n\
+  (! x (term Bool)\n\
+  (! u (th_holds (iff true (p_app x)))\n\
+    (th_holds (= Bool t_true x)))))\n\
+\n\
+(declare pred_iff_t_2\n\
+  (! x (term Bool)\n\
+  (! u (th_holds (iff (p_app x) true))\n\
+    (th_holds (= Bool x t_true)))))\n\
+\n\
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
 ;\n\
 ; CNF Clausification\n\
@@ -1107,7 +1148,7 @@ const char *const plf_signatures = "\
 		       	(! xb bblt\n\
 		       	(! rb bblt\n\
 		       	(! xbb (bblast_term m x xb)\n\
-			(! c ( ^ (bblast_sextend xb k m) rb)\n\
+			(! c ( ^ (bblast_sextend xb k) rb)\n\
                            (bblast_term n (sign_extend n k m x) rb))))))))))\n\
 \n\
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
@@ -1359,7 +1400,7 @@ const char *const plf_signatures = "\
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\
 \n\
 ; bit blast  x = y\n\
-; for x,y of size n, it will return a conjuction (x.0 = y.0 ^ ( ... ^ (x.{n-1} = y.{n-1})))\n\
+; for x,y of size n, it will return a conjunction (x.0 = y.0 ^ ( ... ^ (x.{n-1} = y.{n-1})))\n\
 ; f is the accumulator formula that builds the equality in the right order\n\
 (program bblast_eq_rec ((x bblt) (y bblt) (f formula)) formula\n\
   (match x\n\
diff --git a/proofs/signatures/smt.plf b/proofs/signatures/smt.plf
index 38428dd..06dc161 100644
--- a/proofs/signatures/smt.plf
+++ b/proofs/signatures/smt.plf
@@ -71,6 +71,7 @@
  (! x (term Bool)
  (! u (th_holds (p_app x))
    (th_holds (= Bool x t_true)))))
+
 (declare pred_eq_f
  (! x (term Bool)
  (! u (th_holds (not (p_app x)))
@@ -104,6 +105,46 @@
   (! u1 (th_holds (not (p_app x1)))
     (th_holds (= Bool x1 x1)))))
 
+(declare pred_not_iff_f
+  (! x (term Bool)
+  (! u (th_holds (not (iff false (p_app x))))
+    (th_holds (= Bool t_true x)))))
+
+(declare pred_not_iff_f_2
+  (! x (term Bool)
+  (! u (th_holds (not (iff (p_app x) false)))
+    (th_holds (= Bool x t_true)))))
+
+(declare pred_not_iff_t
+  (! x (term Bool)
+  (! u (th_holds (not (iff true (p_app x))))
+    (th_holds (= Bool t_false x)))))
+
+(declare pred_not_iff_t_2
+  (! x (term Bool)
+  (! u (th_holds (not (iff (p_app x) true)))
+    (th_holds (= Bool x t_false)))))
+
+(declare pred_iff_f
+  (! x (term Bool)
+  (! u (th_holds (iff false (p_app x)))
+    (th_holds (= Bool t_false x)))))
+
+(declare pred_iff_f_2
+  (! x (term Bool)
+  (! u (th_holds (iff (p_app x) false))
+    (th_holds (= Bool x t_false)))))
+
+(declare pred_iff_t
+  (! x (term Bool)
+  (! u (th_holds (iff true (p_app x)))
+    (th_holds (= Bool t_true x)))))
+
+(declare pred_iff_t_2
+  (! x (term Bool)
+  (! u (th_holds (iff (p_app x) true))
+    (th_holds (= Bool x t_true)))))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;
 ; CNF Clausification
diff --git a/proofs/signatures/th_bv_bitblast.plf b/proofs/signatures/th_bv_bitblast.plf
index 2b2fe08..f01b388 100644
--- a/proofs/signatures/th_bv_bitblast.plf
+++ b/proofs/signatures/th_bv_bitblast.plf
@@ -173,7 +173,7 @@
 		       	(! xb bblt
 		       	(! rb bblt
 		       	(! xbb (bblast_term m x xb)
-			(! c ( ^ (bblast_sextend xb k m) rb)
+			(! c ( ^ (bblast_sextend xb k) rb)
                            (bblast_term n (sign_extend n k m x) rb))))))))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -425,7 +425,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 ; bit blast  x = y
-; for x,y of size n, it will return a conjuction (x.0 = y.0 ^ ( ... ^ (x.{n-1} = y.{n-1})))
+; for x,y of size n, it will return a conjunction (x.0 = y.0 ^ ( ... ^ (x.{n-1} = y.{n-1})))
 ; f is the accumulator formula that builds the equality in the right order
 (program bblast_eq_rec ((x bblt) (y bblt) (f formula)) formula
   (match x
diff --git a/src/Makefile.am b/src/Makefile.am
index c05065c..157fe33 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -34,48 +34,47 @@ libcvc4_la_SOURCES = \
 	git_versioninfo.cpp \
 	svn_versioninfo.cpp \
 	context/backtrackable.h \
-	context/context.cpp \
-	context/context.h \
-	context/context_mm.cpp \
-	context/context_mm.h \
-	context/cdo.h \
-	context/cdlist.h \
 	context/cdchunk_list.h \
-	context/cdlist_forward.h \
-	context/cdqueue.h \
-	context/cdtrail_queue.h \
-	context/cdtrail_hashmap.h \
-	context/cdtrail_hashmap_forward.h \
-	context/cdinsert_hashmap.h \
-	context/cdinsert_hashmap_forward.h \
+	context/cddense_set.h \
 	context/cdhashmap.h \
 	context/cdhashmap_forward.h \
 	context/cdhashset.h \
 	context/cdhashset_forward.h \
-	context/cdvector.h \
+	context/cdinsert_hashmap.h \
+	context/cdinsert_hashmap_forward.h \
+	context/cdlist.h \
+	context/cdlist_forward.h \
 	context/cdmaybe.h \
-	context/stacking_vector.h \
-	context/cddense_set.h \
+	context/cdo.h \
+	context/cdqueue.h \
+	context/cdtrail_hashmap.h \
+	context/cdtrail_hashmap_forward.h \
+	context/cdtrail_queue.h \
+	context/cdvector.h \
+	context/context.cpp \
+	context/context.h \
+	context/context_mm.cpp \
+	context/context_mm.h \
 	decision/decision_attributes.h \
-	decision/decision_engine.h \
 	decision/decision_engine.cpp \
+	decision/decision_engine.h \
 	decision/decision_strategy.h \
-	decision/justification_heuristic.h \
 	decision/justification_heuristic.cpp \
-	printer/printer.h \
-	printer/printer.cpp \
-	printer/dagification_visitor.h \
+	decision/justification_heuristic.h \
 	printer/dagification_visitor.cpp \
-	printer/ast/ast_printer.h \
+	printer/dagification_visitor.h \
+	printer/printer.cpp \
+	printer/printer.h \
 	printer/ast/ast_printer.cpp \
-	printer/smt1/smt1_printer.h \
+	printer/ast/ast_printer.h \
+	printer/cvc/cvc_printer.cpp \
+	printer/cvc/cvc_printer.h \
 	printer/smt1/smt1_printer.cpp \
-	printer/smt2/smt2_printer.h \
+	printer/smt1/smt1_printer.h \
 	printer/smt2/smt2_printer.cpp \
-	printer/cvc/cvc_printer.h \
-	printer/cvc/cvc_printer.cpp \
-	printer/tptp/tptp_printer.h \
+	printer/smt2/smt2_printer.h \
 	printer/tptp/tptp_printer.cpp \
+	printer/tptp/tptp_printer.h \
 	proof/arith_proof.cpp \
 	proof/arith_proof.h \
 	proof/array_proof.cpp \
@@ -85,27 +84,31 @@ libcvc4_la_SOURCES = \
 	proof/clause_id.h \
 	proof/cnf_proof.cpp \
 	proof/cnf_proof.h \
+	proof/lemma_proof.cpp \
+	proof/lemma_proof.h \
 	proof/proof.h \
 	proof/proof_manager.cpp \
 	proof/proof_manager.h \
+	proof/proof_output_channel.cpp \
+	proof/proof_output_channel.h \
 	proof/proof_utils.cpp \
 	proof/proof_utils.h \
 	proof/sat_proof.h \
 	proof/sat_proof_implementation.h \
+	proof/simplify_boolean_node.cpp \
+	proof/simplify_boolean_node.h \
 	proof/skolemization_manager.cpp \
 	proof/skolemization_manager.h \
 	proof/theory_proof.cpp \
 	proof/theory_proof.h \
-	proof/lemma_proof.cpp \
-	proof/lemma_proof.h \
 	proof/uf_proof.cpp \
 	proof/uf_proof.h \
 	proof/unsat_core.cpp \
 	proof/unsat_core.h \
-	proof/proof_output_channel.cpp \
-	proof/proof_output_channel.h \
 	prop/cnf_stream.cpp \
 	prop/cnf_stream.h \
+	prop/cryptominisat.cpp \
+	prop/cryptominisat.h \
 	prop/prop_engine.cpp \
 	prop/prop_engine.h \
 	prop/registrar.h \
@@ -113,8 +116,6 @@ libcvc4_la_SOURCES = \
 	prop/sat_solver_factory.cpp \
 	prop/sat_solver_factory.h \
 	prop/sat_solver_types.h \
-	prop/cryptominisat.h \
-	prop/cryptominisat.cpp \
 	prop/theory_proxy.cpp \
 	prop/theory_proxy.h \
 	smt/command.cpp \
@@ -123,8 +124,6 @@ libcvc4_la_SOURCES = \
 	smt/command_list.h \
 	smt/dump.cpp \
 	smt/dump.h \
-	smt/term_formula_removal.cpp \
-	smt/term_formula_removal.h \
 	smt/logic_exception.h \
 	smt/logic_request.cpp \
 	smt/logic_request.h \
@@ -139,317 +138,324 @@ libcvc4_la_SOURCES = \
 	smt/smt_engine_scope.h \
 	smt/smt_statistics_registry.cpp \
 	smt/smt_statistics_registry.h \
+	smt/term_formula_removal.cpp \
+	smt/term_formula_removal.h \
 	smt/update_ostream.h \
-	theory/logic_info.h \
+	theory/assertion.cpp \
+	theory/assertion.h \
+	theory/atom_requests.cpp \
+	theory/atom_requests.h \
+	theory/care_graph.h \
+	theory/interrupted.h \
+	theory/ite_utilities.cpp \
+	theory/ite_utilities.h \
 	theory/logic_info.cpp \
+	theory/logic_info.h \
 	theory/output_channel.h \
-	theory/interrupted.h \
-	theory/sort_inference.cpp \
-	theory/sort_inference.h \
-	theory/type_enumerator.h \
-	theory/theory_engine.h \
-	theory/theory_engine.cpp \
-	theory/theory_test_utils.h \
-	theory/theory.h \
-	theory/theory.cpp \
-	theory/theory_registrar.h \
+	theory/quantifiers_engine.cpp \
+	theory/quantifiers_engine.h \
+	theory/rep_set.cpp \
+	theory/rep_set.h \
+	theory/rewriter.cpp \
 	theory/rewriter.h \
 	theory/rewriter_attributes.h \
-	theory/rewriter.cpp \
-	theory/substitutions.h \
-	theory/substitutions.cpp \
-	theory/valuation.h \
-	theory/valuation.cpp \
-	theory/shared_terms_database.h \
 	theory/shared_terms_database.cpp \
-	theory/term_registration_visitor.h \
+	theory/shared_terms_database.h \
+	theory/sort_inference.cpp \
+	theory/sort_inference.h \
+	theory/substitutions.cpp \
+	theory/substitutions.h \
 	theory/term_registration_visitor.cpp \
-	theory/ite_utilities.h \
-	theory/ite_utilities.cpp \
-	theory/unconstrained_simplifier.h \
-	theory/unconstrained_simplifier.cpp \
-	theory/quantifiers_engine.h \
-	theory/quantifiers_engine.cpp \
-	theory/theory_model.h \
+	theory/term_registration_visitor.h \
+	theory/theory.cpp \
+	theory/theory.h \
+	theory/theory_engine.cpp \
+	theory/theory_engine.h \
 	theory/theory_model.cpp \
-	theory/rep_set.h \
-	theory/rep_set.cpp \
-	theory/atom_requests.h \
-	theory/atom_requests.cpp \
-	theory/uf/theory_uf.h \
-	theory/uf/theory_uf.cpp \
-	theory/uf/theory_uf_type_rules.h \
-	theory/uf/theory_uf_rewriter.h \
-	theory/uf/equality_engine.h \
-	theory/uf/equality_engine_types.h \
-	theory/uf/equality_engine.cpp \
-	theory/uf/symmetry_breaker.h \
-	theory/uf/symmetry_breaker.cpp \
-	theory/uf/theory_uf_strong_solver.h \
-	theory/uf/theory_uf_strong_solver.cpp \
-	theory/uf/theory_uf_model.h \
-	theory/uf/theory_uf_model.cpp \
-	theory/bv/theory_bv_utils.h \
-	theory/bv/theory_bv_utils.cpp \
-	theory/bv/type_enumerator.h \
-	theory/bv/bv_to_bool.h \
-	theory/bv/bv_to_bool.cpp \
-	theory/bv/bv_subtheory.h \
-	theory/bv/bv_subtheory_core.h \
-	theory/bv/bv_subtheory_core.cpp \
-	theory/bv/bv_subtheory_bitblast.h \
-	theory/bv/bv_subtheory_bitblast.cpp \
-	theory/bv/bv_subtheory_inequality.h \
-	theory/bv/bv_subtheory_inequality.cpp \
-	theory/bv/bv_inequality_graph.h \
-	theory/bv/bv_inequality_graph.cpp \
+	theory/theory_model.h \
+	theory/theory_registrar.h \
+	theory/theory_test_utils.h \
+	theory/type_enumerator.h \
+	theory/unconstrained_simplifier.cpp \
+	theory/unconstrained_simplifier.h \
+	theory/valuation.cpp \
+	theory/valuation.h \
+	theory/arith/approx_simplex.cpp \
+	theory/arith/approx_simplex.h \
+	theory/arith/arith_ite_utils.cpp \
+	theory/arith/arith_ite_utils.h \
+	theory/arith/arith_rewriter.cpp \
+	theory/arith/arith_rewriter.h \
+	theory/arith/arith_static_learner.cpp \
+	theory/arith/arith_static_learner.h \
+	theory/arith/arith_utilities.h \
+	theory/arith/arithvar.cpp \
+	theory/arith/arithvar.h \
+	theory/arith/attempt_solution_simplex.cpp \
+	theory/arith/attempt_solution_simplex.h \
+	theory/arith/bound_counts.h \
+	theory/arith/callbacks.cpp \
+	theory/arith/callbacks.h \
+	theory/arith/congruence_manager.cpp \
+	theory/arith/congruence_manager.h \
+	theory/arith/constraint.cpp \
+	theory/arith/constraint.h \
+	theory/arith/constraint_forward.h \
+	theory/arith/cut_log.cpp \
+	theory/arith/cut_log.h \
+	theory/arith/delta_rational.cpp \
+	theory/arith/delta_rational.h \
+	theory/arith/dio_solver.cpp \
+	theory/arith/dio_solver.h \
+	theory/arith/dual_simplex.cpp \
+	theory/arith/dual_simplex.h \
+	theory/arith/error_set.cpp \
+	theory/arith/error_set.h \
+	theory/arith/fc_simplex.cpp \
+	theory/arith/fc_simplex.h \
+	theory/arith/infer_bounds.cpp \
+	theory/arith/infer_bounds.h \
+	theory/arith/linear_equality.cpp \
+	theory/arith/linear_equality.h \
+	theory/arith/matrix.cpp \
+	theory/arith/matrix.h \
+	theory/arith/nonlinear_extension.h \
+	theory/arith/nonlinear_extension.cpp \
+	theory/arith/normal_form.cpp \
+	theory/arith/normal_form.h\
+	theory/arith/partial_model.cpp \
+	theory/arith/partial_model.h \
+	theory/arith/pseudoboolean_proc.cpp \
+	theory/arith/pseudoboolean_proc.h \
+	theory/arith/simplex.cpp \
+	theory/arith/simplex.h \
+	theory/arith/simplex_update.cpp \
+	theory/arith/simplex_update.h \
+	theory/arith/soi_simplex.cpp \
+	theory/arith/soi_simplex.h \
+	theory/arith/tableau.cpp \
+	theory/arith/tableau.h \
+	theory/arith/tableau_sizes.cpp \
+	theory/arith/tableau_sizes.h \
+	theory/arith/theory_arith.cpp \
+	theory/arith/theory_arith.h \
+	theory/arith/theory_arith_private.cpp \
+	theory/arith/theory_arith_private.h \
+	theory/arith/theory_arith_private_forward.h \
+	theory/arith/theory_arith_type_rules.h \
+	theory/arith/type_enumerator.h \
+	theory/arrays/array_info.cpp \
+	theory/arrays/array_info.h \
+	theory/arrays/array_proof_reconstruction.cpp \
+	theory/arrays/array_proof_reconstruction.h \
+	theory/arrays/static_fact_manager.cpp \
+	theory/arrays/static_fact_manager.h \
+	theory/arrays/theory_arrays.cpp \
+	theory/arrays/theory_arrays.h \
+	theory/arrays/theory_arrays_rewriter.cpp \
+	theory/arrays/theory_arrays_rewriter.h \
+	theory/arrays/theory_arrays_type_rules.h \
+	theory/arrays/type_enumerator.h \
+	theory/arrays/union_find.cpp \
+	theory/arrays/union_find.h \
+	theory/booleans/circuit_propagator.cpp \
+	theory/booleans/circuit_propagator.h \
+	theory/booleans/theory_bool.cpp \
+	theory/booleans/theory_bool.h \
+	theory/booleans/theory_bool_rewriter.cpp \
+	theory/booleans/theory_bool_rewriter.h \
+	theory/booleans/theory_bool_type_rules.h \
+	theory/booleans/type_enumerator.h \
+	theory/builtin/theory_builtin.cpp \
+	theory/builtin/theory_builtin.h \
+	theory/builtin/theory_builtin_rewriter.cpp \
+	theory/builtin/theory_builtin_rewriter.h \
+	theory/builtin/theory_builtin_type_rules.h \
+	theory/builtin/type_enumerator.h \
+	theory/bv/abstraction.cpp \
+	theory/bv/abstraction.h \
+	theory/bv/aig_bitblaster.cpp \
 	theory/bv/bitblast_strategies_template.h \
+	theory/bv/bitblast_utils.h \
 	theory/bv/bitblaster_template.h \
-	theory/bv/lazy_bitblaster.cpp \
-	theory/bv/eager_bitblaster.cpp \
-	theory/bv/aig_bitblaster.cpp \
-	theory/bv/bv_eager_solver.h \
 	theory/bv/bv_eager_solver.cpp \
-	theory/bv/slicer.h \
-	theory/bv/slicer.cpp \
-	theory/bv/theory_bv.h \
-	theory/bv/theory_bv.cpp \
-	theory/bv/theory_bv_rewrite_rules.h \
-	theory/bv/theory_bv_rewrite_rules_core.h \
-	theory/bv/theory_bv_rewrite_rules_operator_elimination.h \
+	theory/bv/bv_eager_solver.h \
+	theory/bv/bv_inequality_graph.cpp \
+	theory/bv/bv_inequality_graph.h \
+	theory/bv/bv_quick_check.cpp \
+	theory/bv/bv_quick_check.h \
+	theory/bv/bv_subtheory.h \
+	theory/bv/bv_subtheory_algebraic.cpp \
+	theory/bv/bv_subtheory_algebraic.h \
+	theory/bv/bv_subtheory_bitblast.cpp \
+	theory/bv/bv_subtheory_bitblast.h \
+	theory/bv/bv_subtheory_core.cpp \
+	theory/bv/bv_subtheory_core.h \
+	theory/bv/bv_subtheory_inequality.cpp \
+	theory/bv/bv_subtheory_inequality.h \
+	theory/bv/bv_to_bool.cpp \
+	theory/bv/bv_to_bool.h \
+	theory/bv/bvintropow2.cpp \
+	theory/bv/bvintropow2.h \
+	theory/bv/cd_set_collection.h \
+	theory/bv/eager_bitblaster.cpp \
+	theory/bv/lazy_bitblaster.cpp \
+	theory/bv/slicer.cpp \
+	theory/bv/slicer.h \
+	theory/bv/theory_bv.cpp \
+	theory/bv/theory_bv.h \
+	theory/bv/theory_bv_rewrite_rules.h \
 	theory/bv/theory_bv_rewrite_rules_constant_evaluation.h \
+	theory/bv/theory_bv_rewrite_rules_core.h \
 	theory/bv/theory_bv_rewrite_rules_normalization.h \
+	theory/bv/theory_bv_rewrite_rules_operator_elimination.h \
 	theory/bv/theory_bv_rewrite_rules_simplification.h \
-	theory/bv/theory_bv_type_rules.h \
-	theory/bv/theory_bv_rewriter.h \
 	theory/bv/theory_bv_rewriter.cpp \
-	theory/bv/cd_set_collection.h \
-	theory/bv/abstraction.h \
-	theory/bv/abstraction.cpp \
-	theory/bv/bv_quick_check.h \
-	theory/bv/bv_quick_check.cpp \
-	theory/bv/bv_subtheory_algebraic.h \
-	theory/bv/bv_subtheory_algebraic.cpp \
-	theory/bv/bitblast_utils.h \
-	theory/bv/bvintropow2.h \
-	theory/bv/bvintropow2.cpp \
-	theory/idl/idl_model.h \
-	theory/idl/idl_model.cpp \
-	theory/idl/idl_assertion.h \
+	theory/bv/theory_bv_rewriter.h \
+	theory/bv/theory_bv_type_rules.h \
+	theory/bv/theory_bv_utils.cpp \
+	theory/bv/theory_bv_utils.h \
+	theory/bv/type_enumerator.h \
+	theory/datatypes/datatypes_rewriter.h \
+	theory/datatypes/datatypes_sygus.cpp \
+	theory/datatypes/datatypes_sygus.h \
+	theory/datatypes/theory_datatypes.cpp \
+	theory/datatypes/theory_datatypes.h \
+	theory/datatypes/theory_datatypes_type_rules.h \
+	theory/datatypes/type_enumerator.cpp \
+	theory/datatypes/type_enumerator.h \
+	theory/fp/theory_fp.cpp \
+	theory/fp/theory_fp.h \
+	theory/fp/theory_fp_rewriter.cpp \
+	theory/fp/theory_fp_rewriter.h \
+	theory/fp/theory_fp_type_rules.h \
 	theory/idl/idl_assertion.cpp \
-	theory/idl/idl_assertion_db.h \
+	theory/idl/idl_assertion.h \
 	theory/idl/idl_assertion_db.cpp \
-	theory/idl/theory_idl.h \
+	theory/idl/idl_assertion_db.h \
+	theory/idl/idl_model.cpp \
+	theory/idl/idl_model.h \
 	theory/idl/theory_idl.cpp \
-	theory/builtin/theory_builtin_type_rules.h \
-	theory/builtin/type_enumerator.h \
-	theory/builtin/theory_builtin_rewriter.h \
-	theory/builtin/theory_builtin_rewriter.cpp \
-	theory/builtin/theory_builtin.h \
-	theory/builtin/theory_builtin.cpp \
-	theory/datatypes/theory_datatypes_type_rules.h \
-	theory/datatypes/type_enumerator.h \
-	theory/datatypes/type_enumerator.cpp \
-	theory/datatypes/theory_datatypes.h \
-	theory/datatypes/datatypes_rewriter.h \
-	theory/datatypes/theory_datatypes.cpp \
-	theory/datatypes/datatypes_sygus.h \
-	theory/datatypes/datatypes_sygus.cpp \
+	theory/idl/theory_idl.h \
+	theory/quantifiers/alpha_equivalence.cpp \
+	theory/quantifiers/alpha_equivalence.h \
+	theory/quantifiers/ambqi_builder.cpp \
+	theory/quantifiers/ambqi_builder.h \
+	theory/quantifiers/anti_skolem.cpp \
+	theory/quantifiers/anti_skolem.h \
+	theory/quantifiers/bounded_integers.cpp \
+	theory/quantifiers/bounded_integers.h \
+	theory/quantifiers/candidate_generator.cpp \
+	theory/quantifiers/candidate_generator.h \
+	theory/quantifiers/ce_guided_instantiation.cpp \
+	theory/quantifiers/ce_guided_instantiation.h \
+	theory/quantifiers/ce_guided_single_inv.cpp \
+	theory/quantifiers/ce_guided_single_inv.h \
+	theory/quantifiers/ce_guided_single_inv_ei.cpp \
+	theory/quantifiers/ce_guided_single_inv_ei.h \
+	theory/quantifiers/ce_guided_single_inv_sol.cpp \
+	theory/quantifiers/ce_guided_single_inv_sol.h \
+	theory/quantifiers/ceg_instantiator.cpp \
+	theory/quantifiers/ceg_instantiator.h \
+	theory/quantifiers/ceg_t_instantiator.cpp \
+	theory/quantifiers/ceg_t_instantiator.h \
+	theory/quantifiers/conjecture_generator.cpp \
+	theory/quantifiers/conjecture_generator.h \
+	theory/quantifiers/equality_infer.cpp \
+	theory/quantifiers/equality_infer.h \
+	theory/quantifiers/first_order_model.cpp \
+	theory/quantifiers/first_order_model.h \
+	theory/quantifiers/full_model_check.cpp \
+	theory/quantifiers/full_model_check.h \
+	theory/quantifiers/fun_def_engine.cpp \
+	theory/quantifiers/fun_def_engine.h \
+	theory/quantifiers/fun_def_process.cpp \
+	theory/quantifiers/fun_def_process.h \
+	theory/quantifiers/inst_match.cpp \
+	theory/quantifiers/inst_match.h \
+	theory/quantifiers/inst_match_generator.cpp \
+	theory/quantifiers/inst_match_generator.h \
+	theory/quantifiers/inst_propagator.cpp \
+	theory/quantifiers/inst_propagator.h \
+	theory/quantifiers/inst_strategy_cbqi.cpp \
+	theory/quantifiers/inst_strategy_cbqi.h \
+	theory/quantifiers/inst_strategy_e_matching.cpp \
+	theory/quantifiers/inst_strategy_e_matching.h \
+	theory/quantifiers/instantiation_engine.cpp \
+	theory/quantifiers/instantiation_engine.h \
+	theory/quantifiers/local_theory_ext.cpp \
+	theory/quantifiers/local_theory_ext.h \
+	theory/quantifiers/macros.cpp \
+	theory/quantifiers/macros.h \
+	theory/quantifiers/model_builder.cpp \
+	theory/quantifiers/model_builder.h \
+	theory/quantifiers/model_engine.cpp \
+	theory/quantifiers/model_engine.h \
+	theory/quantifiers/quant_conflict_find.cpp \
+	theory/quantifiers/quant_conflict_find.h \
+	theory/quantifiers/quant_equality_engine.cpp \
+	theory/quantifiers/quant_equality_engine.h \
+	theory/quantifiers/quant_split.cpp \
+	theory/quantifiers/quant_split.h \
+	theory/quantifiers/quant_util.cpp \
+	theory/quantifiers/quant_util.h \
+	theory/quantifiers/quantifiers_attributes.cpp \
+	theory/quantifiers/quantifiers_attributes.h \
+	theory/quantifiers/quantifiers_rewriter.cpp \
+	theory/quantifiers/quantifiers_rewriter.h \
+	theory/quantifiers/relevant_domain.cpp \
+	theory/quantifiers/relevant_domain.h \
+	theory/quantifiers/rewrite_engine.cpp \
+	theory/quantifiers/rewrite_engine.h \
+	theory/quantifiers/symmetry_breaking.cpp \
+	theory/quantifiers/symmetry_breaking.h \
+	theory/quantifiers/term_database.cpp \
+	theory/quantifiers/term_database.h \
+	theory/quantifiers/theory_quantifiers.cpp \
+	theory/quantifiers/theory_quantifiers.h \
+	theory/quantifiers/theory_quantifiers_type_rules.h \
+	theory/quantifiers/trigger.cpp \
+	theory/quantifiers/trigger.h \
+	theory/sep/theory_sep.cpp \
+	theory/sep/theory_sep.h \
+	theory/sep/theory_sep_rewriter.cpp \
+	theory/sep/theory_sep_rewriter.h \
+	theory/sep/theory_sep_type_rules.h \
 	theory/sets/normal_form.h \
+	theory/sets/rels_utils.h \
 	theory/sets/theory_sets.cpp \
 	theory/sets/theory_sets.h \
 	theory/sets/theory_sets_private.cpp \
 	theory/sets/theory_sets_private.h \
+	theory/sets/theory_sets_rels.cpp \
+	theory/sets/theory_sets_rels.h \
 	theory/sets/theory_sets_rewriter.cpp \
 	theory/sets/theory_sets_rewriter.h \
 	theory/sets/theory_sets_type_enumerator.h \
 	theory/sets/theory_sets_type_rules.h \
-	theory/sets/theory_sets_rels.cpp \
-	theory/sets/theory_sets_rels.h \
-	theory/sets/rels_utils.h \
-	theory/strings/theory_strings.h \
+	theory/strings/regexp_operation.cpp \
+	theory/strings/regexp_operation.h \
 	theory/strings/theory_strings.cpp \
-	theory/strings/theory_strings_rewriter.h \
+	theory/strings/theory_strings.h \
+	theory/strings/theory_strings_preprocess.cpp \
+	theory/strings/theory_strings_preprocess.h \
 	theory/strings/theory_strings_rewriter.cpp \
+	theory/strings/theory_strings_rewriter.h \
 	theory/strings/theory_strings_type_rules.h \
 	theory/strings/type_enumerator.h \
-	theory/strings/theory_strings_preprocess.h \
-	theory/strings/theory_strings_preprocess.cpp \
-	theory/strings/regexp_operation.cpp \
-	theory/strings/regexp_operation.h \
-	theory/arrays/theory_arrays_type_rules.h \
-	theory/arrays/type_enumerator.h \
-	theory/arrays/theory_arrays_rewriter.h \
-	theory/arrays/theory_arrays_rewriter.cpp \
-	theory/arrays/theory_arrays.h \
-	theory/arrays/theory_arrays.cpp \
-	theory/arrays/union_find.h \
-	theory/arrays/union_find.cpp \
-	theory/arrays/array_info.h \
-	theory/arrays/array_info.cpp \
-	theory/arrays/static_fact_manager.h \
-	theory/arrays/static_fact_manager.cpp \
-	theory/arrays/array_proof_reconstruction.cpp \
-	theory/arrays/array_proof_reconstruction.h \
-	theory/quantifiers/theory_quantifiers_type_rules.h \
-	theory/quantifiers/theory_quantifiers.h \
-	theory/quantifiers/quantifiers_rewriter.h \
-	theory/quantifiers/quantifiers_rewriter.cpp \
-	theory/quantifiers/theory_quantifiers.cpp \
-	theory/quantifiers/instantiation_engine.h \
-	theory/quantifiers/instantiation_engine.cpp \
-	theory/quantifiers/trigger.h \
-	theory/quantifiers/trigger.cpp \
-	theory/quantifiers/candidate_generator.h \
-	theory/quantifiers/candidate_generator.cpp \
-	theory/quantifiers/inst_match.h \
-	theory/quantifiers/inst_match.cpp \
-	theory/quantifiers/model_engine.h \
-	theory/quantifiers/model_engine.cpp \
-	theory/quantifiers/term_database.h \
-	theory/quantifiers/term_database.cpp \
-	theory/quantifiers/first_order_model.h \
-	theory/quantifiers/first_order_model.cpp \
-	theory/quantifiers/model_builder.h \
-	theory/quantifiers/model_builder.cpp \
-	theory/quantifiers/quantifiers_attributes.h \
-	theory/quantifiers/quantifiers_attributes.cpp \
-	theory/quantifiers/quant_util.h \
-	theory/quantifiers/quant_util.cpp \
-	theory/quantifiers/inst_match_generator.h \
-	theory/quantifiers/inst_match_generator.cpp \
-	theory/quantifiers/macros.h \
-	theory/quantifiers/macros.cpp \
-	theory/quantifiers/inst_strategy_e_matching.h \
-	theory/quantifiers/inst_strategy_e_matching.cpp \
-	theory/quantifiers/inst_strategy_cbqi.h \
-	theory/quantifiers/inst_strategy_cbqi.cpp \
-	theory/quantifiers/full_model_check.h \
-	theory/quantifiers/full_model_check.cpp \
-	theory/quantifiers/bounded_integers.h \
-	theory/quantifiers/bounded_integers.cpp \
-	theory/quantifiers/alpha_equivalence.h \
-	theory/quantifiers/alpha_equivalence.cpp \
-	theory/quantifiers/rewrite_engine.h \
-	theory/quantifiers/rewrite_engine.cpp \
-	theory/quantifiers/relevant_domain.h \
-	theory/quantifiers/relevant_domain.cpp \
-	theory/quantifiers/symmetry_breaking.h \
-	theory/quantifiers/symmetry_breaking.cpp \
-	theory/quantifiers/ambqi_builder.h \
-	theory/quantifiers/ambqi_builder.cpp \
-	theory/quantifiers/quant_conflict_find.h \
-	theory/quantifiers/quant_conflict_find.cpp \
-	theory/quantifiers/conjecture_generator.h \
-	theory/quantifiers/conjecture_generator.cpp \
-	theory/quantifiers/ce_guided_instantiation.h \
-	theory/quantifiers/ce_guided_instantiation.cpp \
-	theory/quantifiers/ce_guided_single_inv.h \
-	theory/quantifiers/ce_guided_single_inv.cpp \
-	theory/quantifiers/ce_guided_single_inv_sol.h \
-	theory/quantifiers/ce_guided_single_inv_sol.cpp \
-	theory/quantifiers/ce_guided_single_inv_ei.h \
-	theory/quantifiers/ce_guided_single_inv_ei.cpp \
-	theory/quantifiers/local_theory_ext.h \
-	theory/quantifiers/local_theory_ext.cpp \
-	theory/quantifiers/fun_def_process.h \
-	theory/quantifiers/fun_def_process.cpp \
-	theory/quantifiers/fun_def_engine.h \
-	theory/quantifiers/fun_def_engine.cpp \
-	theory/quantifiers/quant_equality_engine.h \
-	theory/quantifiers/quant_equality_engine.cpp \
-	theory/quantifiers/ceg_instantiator.h \
-	theory/quantifiers/ceg_instantiator.cpp \
-	theory/quantifiers/ceg_t_instantiator.h \
-	theory/quantifiers/ceg_t_instantiator.cpp \
-	theory/quantifiers/quant_split.h \
-	theory/quantifiers/quant_split.cpp \
-	theory/quantifiers/anti_skolem.h \
-	theory/quantifiers/anti_skolem.cpp \
-	theory/quantifiers/equality_infer.h \
-	theory/quantifiers/equality_infer.cpp \
-	theory/quantifiers/inst_propagator.h \
-	theory/quantifiers/inst_propagator.cpp \
-	theory/arith/theory_arith_type_rules.h \
-	theory/arith/type_enumerator.h \
-	theory/arith/arithvar.h \
-	theory/arith/arithvar.cpp \
-	theory/arith/bound_counts.h \
-	theory/arith/arith_ite_utils.h \
-	theory/arith/arith_ite_utils.cpp \
-	theory/arith/arith_rewriter.h \
-	theory/arith/arith_rewriter.cpp \
-	theory/arith/arith_static_learner.h \
-	theory/arith/arith_static_learner.cpp \
-	theory/arith/constraint_forward.h \
-	theory/arith/constraint.h \
-	theory/arith/constraint.cpp \
-	theory/arith/congruence_manager.h \
-	theory/arith/congruence_manager.cpp \
-	theory/arith/normal_form.h\
-	theory/arith/normal_form.cpp \
-	theory/arith/arith_utilities.h \
-	theory/arith/delta_rational.h \
-	theory/arith/delta_rational.cpp \
-	theory/arith/partial_model.h \
-	theory/arith/partial_model.cpp \
-	theory/arith/linear_equality.h \
-	theory/arith/linear_equality.cpp \
-	theory/arith/simplex_update.h \
-	theory/arith/simplex_update.cpp \
-	theory/arith/callbacks.h \
-	theory/arith/callbacks.cpp \
-	theory/arith/matrix.h \
-	theory/arith/matrix.cpp \
-	theory/arith/tableau.h \
-	theory/arith/tableau.cpp \
-	theory/arith/tableau_sizes.h \
-	theory/arith/tableau_sizes.cpp \
-	theory/arith/error_set.h \
-	theory/arith/error_set.cpp \
-	theory/arith/simplex.h \
-	theory/arith/simplex.cpp \
-	theory/arith/dual_simplex.h \
-	theory/arith/dual_simplex.cpp \
-	theory/arith/fc_simplex.h \
-	theory/arith/fc_simplex.cpp \
-	theory/arith/soi_simplex.h \
-	theory/arith/soi_simplex.cpp \
-	theory/arith/infer_bounds.h \
-	theory/arith/infer_bounds.cpp \
-	theory/arith/approx_simplex.h \
-	theory/arith/approx_simplex.cpp \
-	theory/arith/attempt_solution_simplex.h \
-	theory/arith/attempt_solution_simplex.cpp \
-	theory/arith/theory_arith.h \
-	theory/arith/theory_arith.cpp \
-	theory/arith/theory_arith_private_forward.h \
-	theory/arith/theory_arith_private.h \
-	theory/arith/theory_arith_private.cpp \
-	theory/arith/dio_solver.h \
-	theory/arith/dio_solver.cpp \
-	theory/arith/pseudoboolean_proc.h \
-	theory/arith/pseudoboolean_proc.cpp \
-	theory/arith/cut_log.h \
-	theory/arith/cut_log.cpp \
-	theory/booleans/type_enumerator.h \
-	theory/booleans/theory_bool.h \
-	theory/booleans/theory_bool.cpp \
-	theory/booleans/theory_bool_type_rules.h \
-	theory/booleans/theory_bool_rewriter.h \
-	theory/booleans/theory_bool_rewriter.cpp \
-	theory/booleans/circuit_propagator.h \
-	theory/booleans/circuit_propagator.cpp \
-	theory/fp/theory_fp.h \
-	theory/fp/theory_fp.cpp \
-	theory/fp/theory_fp_rewriter.h \
-	theory/fp/theory_fp_rewriter.cpp \
-	theory/fp/theory_fp_type_rules.h \
-	theory/sep/theory_sep.h \
-	theory/sep/theory_sep.cpp \
-	theory/sep/theory_sep_rewriter.h \
-	theory/sep/theory_sep_rewriter.cpp \
-	theory/sep/theory_sep_type_rules.h
+	theory/uf/equality_engine.cpp \
+	theory/uf/equality_engine.h \
+	theory/uf/equality_engine_types.h \
+	theory/uf/symmetry_breaker.cpp \
+	theory/uf/symmetry_breaker.h \
+	theory/uf/theory_uf.cpp \
+	theory/uf/theory_uf.h \
+	theory/uf/theory_uf_model.cpp \
+	theory/uf/theory_uf_model.h \
+	theory/uf/theory_uf_rewriter.h \
+	theory/uf/theory_uf_strong_solver.cpp \
+	theory/uf/theory_uf_strong_solver.h \
+	theory/uf/theory_uf_type_rules.h
 
 nodist_libcvc4_la_SOURCES = \
 	theory/rewriter_tables.h \
diff --git a/src/Makefile.in b/src/Makefile.in
index 2cedc22..927987a 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -169,121 +169,125 @@ am__dirstamp = $(am__leading_dot)dirstamp
 am_libcvc4_la_OBJECTS = git_versioninfo.lo svn_versioninfo.lo \
 	context/context.lo context/context_mm.lo \
 	decision/decision_engine.lo \
-	decision/justification_heuristic.lo printer/printer.lo \
-	printer/dagification_visitor.lo printer/ast/ast_printer.lo \
+	decision/justification_heuristic.lo \
+	printer/dagification_visitor.lo printer/printer.lo \
+	printer/ast/ast_printer.lo printer/cvc/cvc_printer.lo \
 	printer/smt1/smt1_printer.lo printer/smt2/smt2_printer.lo \
-	printer/cvc/cvc_printer.lo printer/tptp/tptp_printer.lo \
-	proof/arith_proof.lo proof/array_proof.lo \
-	proof/bitvector_proof.lo proof/cnf_proof.lo \
-	proof/proof_manager.lo proof/proof_utils.lo \
-	proof/skolemization_manager.lo proof/theory_proof.lo \
-	proof/lemma_proof.lo proof/uf_proof.lo proof/unsat_core.lo \
-	proof/proof_output_channel.lo prop/cnf_stream.lo \
-	prop/prop_engine.lo prop/sat_solver_factory.lo \
-	prop/cryptominisat.lo prop/theory_proxy.lo smt/command.lo \
-	smt/command_list.lo smt/dump.lo smt/term_formula_removal.lo \
-	smt/logic_request.lo smt/managed_ostreams.lo smt/model.lo \
-	smt/smt_engine.lo smt/smt_engine_check_proof.lo \
-	smt/smt_engine_scope.lo smt/smt_statistics_registry.lo \
-	theory/logic_info.lo theory/sort_inference.lo \
-	theory/theory_engine.lo theory/theory.lo theory/rewriter.lo \
-	theory/substitutions.lo theory/valuation.lo \
-	theory/shared_terms_database.lo \
-	theory/term_registration_visitor.lo theory/ite_utilities.lo \
-	theory/unconstrained_simplifier.lo \
-	theory/quantifiers_engine.lo theory/theory_model.lo \
-	theory/rep_set.lo theory/atom_requests.lo \
-	theory/uf/theory_uf.lo theory/uf/equality_engine.lo \
-	theory/uf/symmetry_breaker.lo \
-	theory/uf/theory_uf_strong_solver.lo \
-	theory/uf/theory_uf_model.lo theory/bv/theory_bv_utils.lo \
-	theory/bv/bv_to_bool.lo theory/bv/bv_subtheory_core.lo \
+	printer/tptp/tptp_printer.lo proof/arith_proof.lo \
+	proof/array_proof.lo proof/bitvector_proof.lo \
+	proof/cnf_proof.lo proof/lemma_proof.lo proof/proof_manager.lo \
+	proof/proof_output_channel.lo proof/proof_utils.lo \
+	proof/simplify_boolean_node.lo proof/skolemization_manager.lo \
+	proof/theory_proof.lo proof/uf_proof.lo proof/unsat_core.lo \
+	prop/cnf_stream.lo prop/cryptominisat.lo prop/prop_engine.lo \
+	prop/sat_solver_factory.lo prop/theory_proxy.lo smt/command.lo \
+	smt/command_list.lo smt/dump.lo smt/logic_request.lo \
+	smt/managed_ostreams.lo smt/model.lo smt/smt_engine.lo \
+	smt/smt_engine_check_proof.lo smt/smt_engine_scope.lo \
+	smt/smt_statistics_registry.lo smt/term_formula_removal.lo \
+	theory/assertion.lo theory/atom_requests.lo \
+	theory/ite_utilities.lo theory/logic_info.lo \
+	theory/quantifiers_engine.lo theory/rep_set.lo \
+	theory/rewriter.lo theory/shared_terms_database.lo \
+	theory/sort_inference.lo theory/substitutions.lo \
+	theory/term_registration_visitor.lo theory/theory.lo \
+	theory/theory_engine.lo theory/theory_model.lo \
+	theory/unconstrained_simplifier.lo theory/valuation.lo \
+	theory/arith/approx_simplex.lo theory/arith/arith_ite_utils.lo \
+	theory/arith/arith_rewriter.lo \
+	theory/arith/arith_static_learner.lo theory/arith/arithvar.lo \
+	theory/arith/attempt_solution_simplex.lo \
+	theory/arith/callbacks.lo theory/arith/congruence_manager.lo \
+	theory/arith/constraint.lo theory/arith/cut_log.lo \
+	theory/arith/delta_rational.lo theory/arith/dio_solver.lo \
+	theory/arith/dual_simplex.lo theory/arith/error_set.lo \
+	theory/arith/fc_simplex.lo theory/arith/infer_bounds.lo \
+	theory/arith/linear_equality.lo theory/arith/matrix.lo \
+	theory/arith/nonlinear_extension.lo \
+	theory/arith/normal_form.lo theory/arith/partial_model.lo \
+	theory/arith/pseudoboolean_proc.lo theory/arith/simplex.lo \
+	theory/arith/simplex_update.lo theory/arith/soi_simplex.lo \
+	theory/arith/tableau.lo theory/arith/tableau_sizes.lo \
+	theory/arith/theory_arith.lo \
+	theory/arith/theory_arith_private.lo \
+	theory/arrays/array_info.lo \
+	theory/arrays/array_proof_reconstruction.lo \
+	theory/arrays/static_fact_manager.lo \
+	theory/arrays/theory_arrays.lo \
+	theory/arrays/theory_arrays_rewriter.lo \
+	theory/arrays/union_find.lo \
+	theory/booleans/circuit_propagator.lo \
+	theory/booleans/theory_bool.lo \
+	theory/booleans/theory_bool_rewriter.lo \
+	theory/builtin/theory_builtin.lo \
+	theory/builtin/theory_builtin_rewriter.lo \
+	theory/bv/abstraction.lo theory/bv/aig_bitblaster.lo \
+	theory/bv/bv_eager_solver.lo theory/bv/bv_inequality_graph.lo \
+	theory/bv/bv_quick_check.lo \
+	theory/bv/bv_subtheory_algebraic.lo \
 	theory/bv/bv_subtheory_bitblast.lo \
-	theory/bv/bv_subtheory_inequality.lo \
-	theory/bv/bv_inequality_graph.lo theory/bv/lazy_bitblaster.lo \
-	theory/bv/eager_bitblaster.lo theory/bv/aig_bitblaster.lo \
-	theory/bv/bv_eager_solver.lo theory/bv/slicer.lo \
+	theory/bv/bv_subtheory_core.lo \
+	theory/bv/bv_subtheory_inequality.lo theory/bv/bv_to_bool.lo \
+	theory/bv/bvintropow2.lo theory/bv/eager_bitblaster.lo \
+	theory/bv/lazy_bitblaster.lo theory/bv/slicer.lo \
 	theory/bv/theory_bv.lo theory/bv/theory_bv_rewriter.lo \
-	theory/bv/abstraction.lo theory/bv/bv_quick_check.lo \
-	theory/bv/bv_subtheory_algebraic.lo theory/bv/bvintropow2.lo \
-	theory/idl/idl_model.lo theory/idl/idl_assertion.lo \
-	theory/idl/idl_assertion_db.lo theory/idl/theory_idl.lo \
-	theory/builtin/theory_builtin_rewriter.lo \
-	theory/builtin/theory_builtin.lo \
-	theory/datatypes/type_enumerator.lo \
+	theory/bv/theory_bv_utils.lo \
+	theory/datatypes/datatypes_sygus.lo \
 	theory/datatypes/theory_datatypes.lo \
-	theory/datatypes/datatypes_sygus.lo theory/sets/theory_sets.lo \
-	theory/sets/theory_sets_private.lo \
-	theory/sets/theory_sets_rewriter.lo \
-	theory/sets/theory_sets_rels.lo \
-	theory/strings/theory_strings.lo \
-	theory/strings/theory_strings_rewriter.lo \
-	theory/strings/theory_strings_preprocess.lo \
-	theory/strings/regexp_operation.lo \
-	theory/arrays/theory_arrays_rewriter.lo \
-	theory/arrays/theory_arrays.lo theory/arrays/union_find.lo \
-	theory/arrays/array_info.lo \
-	theory/arrays/static_fact_manager.lo \
-	theory/arrays/array_proof_reconstruction.lo \
-	theory/quantifiers/quantifiers_rewriter.lo \
-	theory/quantifiers/theory_quantifiers.lo \
-	theory/quantifiers/instantiation_engine.lo \
-	theory/quantifiers/trigger.lo \
-	theory/quantifiers/candidate_generator.lo \
-	theory/quantifiers/inst_match.lo \
-	theory/quantifiers/model_engine.lo \
-	theory/quantifiers/term_database.lo \
-	theory/quantifiers/first_order_model.lo \
-	theory/quantifiers/model_builder.lo \
-	theory/quantifiers/quantifiers_attributes.lo \
-	theory/quantifiers/quant_util.lo \
-	theory/quantifiers/inst_match_generator.lo \
-	theory/quantifiers/macros.lo \
-	theory/quantifiers/inst_strategy_e_matching.lo \
-	theory/quantifiers/inst_strategy_cbqi.lo \
-	theory/quantifiers/full_model_check.lo \
-	theory/quantifiers/bounded_integers.lo \
+	theory/datatypes/type_enumerator.lo theory/fp/theory_fp.lo \
+	theory/fp/theory_fp_rewriter.lo theory/idl/idl_assertion.lo \
+	theory/idl/idl_assertion_db.lo theory/idl/idl_model.lo \
+	theory/idl/theory_idl.lo \
 	theory/quantifiers/alpha_equivalence.lo \
-	theory/quantifiers/rewrite_engine.lo \
-	theory/quantifiers/relevant_domain.lo \
-	theory/quantifiers/symmetry_breaking.lo \
 	theory/quantifiers/ambqi_builder.lo \
-	theory/quantifiers/quant_conflict_find.lo \
-	theory/quantifiers/conjecture_generator.lo \
+	theory/quantifiers/anti_skolem.lo \
+	theory/quantifiers/bounded_integers.lo \
+	theory/quantifiers/candidate_generator.lo \
 	theory/quantifiers/ce_guided_instantiation.lo \
 	theory/quantifiers/ce_guided_single_inv.lo \
-	theory/quantifiers/ce_guided_single_inv_sol.lo \
 	theory/quantifiers/ce_guided_single_inv_ei.lo \
-	theory/quantifiers/local_theory_ext.lo \
-	theory/quantifiers/fun_def_process.lo \
-	theory/quantifiers/fun_def_engine.lo \
-	theory/quantifiers/quant_equality_engine.lo \
+	theory/quantifiers/ce_guided_single_inv_sol.lo \
 	theory/quantifiers/ceg_instantiator.lo \
 	theory/quantifiers/ceg_t_instantiator.lo \
-	theory/quantifiers/quant_split.lo \
-	theory/quantifiers/anti_skolem.lo \
+	theory/quantifiers/conjecture_generator.lo \
 	theory/quantifiers/equality_infer.lo \
-	theory/quantifiers/inst_propagator.lo theory/arith/arithvar.lo \
-	theory/arith/arith_ite_utils.lo theory/arith/arith_rewriter.lo \
-	theory/arith/arith_static_learner.lo \
-	theory/arith/constraint.lo theory/arith/congruence_manager.lo \
-	theory/arith/normal_form.lo theory/arith/delta_rational.lo \
-	theory/arith/partial_model.lo theory/arith/linear_equality.lo \
-	theory/arith/simplex_update.lo theory/arith/callbacks.lo \
-	theory/arith/matrix.lo theory/arith/tableau.lo \
-	theory/arith/tableau_sizes.lo theory/arith/error_set.lo \
-	theory/arith/simplex.lo theory/arith/dual_simplex.lo \
-	theory/arith/fc_simplex.lo theory/arith/soi_simplex.lo \
-	theory/arith/infer_bounds.lo theory/arith/approx_simplex.lo \
-	theory/arith/attempt_solution_simplex.lo \
-	theory/arith/theory_arith.lo \
-	theory/arith/theory_arith_private.lo \
-	theory/arith/dio_solver.lo theory/arith/pseudoboolean_proc.lo \
-	theory/arith/cut_log.lo theory/booleans/theory_bool.lo \
-	theory/booleans/theory_bool_rewriter.lo \
-	theory/booleans/circuit_propagator.lo theory/fp/theory_fp.lo \
-	theory/fp/theory_fp_rewriter.lo theory/sep/theory_sep.lo \
-	theory/sep/theory_sep_rewriter.lo
+	theory/quantifiers/first_order_model.lo \
+	theory/quantifiers/full_model_check.lo \
+	theory/quantifiers/fun_def_engine.lo \
+	theory/quantifiers/fun_def_process.lo \
+	theory/quantifiers/inst_match.lo \
+	theory/quantifiers/inst_match_generator.lo \
+	theory/quantifiers/inst_propagator.lo \
+	theory/quantifiers/inst_strategy_cbqi.lo \
+	theory/quantifiers/inst_strategy_e_matching.lo \
+	theory/quantifiers/instantiation_engine.lo \
+	theory/quantifiers/local_theory_ext.lo \
+	theory/quantifiers/macros.lo \
+	theory/quantifiers/model_builder.lo \
+	theory/quantifiers/model_engine.lo \
+	theory/quantifiers/quant_conflict_find.lo \
+	theory/quantifiers/quant_equality_engine.lo \
+	theory/quantifiers/quant_split.lo \
+	theory/quantifiers/quant_util.lo \
+	theory/quantifiers/quantifiers_attributes.lo \
+	theory/quantifiers/quantifiers_rewriter.lo \
+	theory/quantifiers/relevant_domain.lo \
+	theory/quantifiers/rewrite_engine.lo \
+	theory/quantifiers/symmetry_breaking.lo \
+	theory/quantifiers/term_database.lo \
+	theory/quantifiers/theory_quantifiers.lo \
+	theory/quantifiers/trigger.lo theory/sep/theory_sep.lo \
+	theory/sep/theory_sep_rewriter.lo theory/sets/theory_sets.lo \
+	theory/sets/theory_sets_private.lo \
+	theory/sets/theory_sets_rels.lo \
+	theory/sets/theory_sets_rewriter.lo \
+	theory/strings/regexp_operation.lo \
+	theory/strings/theory_strings.lo \
+	theory/strings/theory_strings_preprocess.lo \
+	theory/strings/theory_strings_rewriter.lo \
+	theory/uf/equality_engine.lo theory/uf/symmetry_breaker.lo \
+	theory/uf/theory_uf.lo theory/uf/theory_uf_model.lo \
+	theory/uf/theory_uf_strong_solver.lo
 nodist_libcvc4_la_OBJECTS = theory/type_enumerator.lo
 libcvc4_la_OBJECTS = $(am_libcvc4_la_OBJECTS) \
 	$(nodist_libcvc4_la_OBJECTS)
@@ -452,6 +456,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -701,48 +706,47 @@ libcvc4_la_SOURCES = \
 	git_versioninfo.cpp \
 	svn_versioninfo.cpp \
 	context/backtrackable.h \
-	context/context.cpp \
-	context/context.h \
-	context/context_mm.cpp \
-	context/context_mm.h \
-	context/cdo.h \
-	context/cdlist.h \
 	context/cdchunk_list.h \
-	context/cdlist_forward.h \
-	context/cdqueue.h \
-	context/cdtrail_queue.h \
-	context/cdtrail_hashmap.h \
-	context/cdtrail_hashmap_forward.h \
-	context/cdinsert_hashmap.h \
-	context/cdinsert_hashmap_forward.h \
+	context/cddense_set.h \
 	context/cdhashmap.h \
 	context/cdhashmap_forward.h \
 	context/cdhashset.h \
 	context/cdhashset_forward.h \
-	context/cdvector.h \
+	context/cdinsert_hashmap.h \
+	context/cdinsert_hashmap_forward.h \
+	context/cdlist.h \
+	context/cdlist_forward.h \
 	context/cdmaybe.h \
-	context/stacking_vector.h \
-	context/cddense_set.h \
+	context/cdo.h \
+	context/cdqueue.h \
+	context/cdtrail_hashmap.h \
+	context/cdtrail_hashmap_forward.h \
+	context/cdtrail_queue.h \
+	context/cdvector.h \
+	context/context.cpp \
+	context/context.h \
+	context/context_mm.cpp \
+	context/context_mm.h \
 	decision/decision_attributes.h \
-	decision/decision_engine.h \
 	decision/decision_engine.cpp \
+	decision/decision_engine.h \
 	decision/decision_strategy.h \
-	decision/justification_heuristic.h \
 	decision/justification_heuristic.cpp \
-	printer/printer.h \
-	printer/printer.cpp \
-	printer/dagification_visitor.h \
+	decision/justification_heuristic.h \
 	printer/dagification_visitor.cpp \
-	printer/ast/ast_printer.h \
+	printer/dagification_visitor.h \
+	printer/printer.cpp \
+	printer/printer.h \
 	printer/ast/ast_printer.cpp \
-	printer/smt1/smt1_printer.h \
+	printer/ast/ast_printer.h \
+	printer/cvc/cvc_printer.cpp \
+	printer/cvc/cvc_printer.h \
 	printer/smt1/smt1_printer.cpp \
-	printer/smt2/smt2_printer.h \
+	printer/smt1/smt1_printer.h \
 	printer/smt2/smt2_printer.cpp \
-	printer/cvc/cvc_printer.h \
-	printer/cvc/cvc_printer.cpp \
-	printer/tptp/tptp_printer.h \
+	printer/smt2/smt2_printer.h \
 	printer/tptp/tptp_printer.cpp \
+	printer/tptp/tptp_printer.h \
 	proof/arith_proof.cpp \
 	proof/arith_proof.h \
 	proof/array_proof.cpp \
@@ -752,27 +756,31 @@ libcvc4_la_SOURCES = \
 	proof/clause_id.h \
 	proof/cnf_proof.cpp \
 	proof/cnf_proof.h \
+	proof/lemma_proof.cpp \
+	proof/lemma_proof.h \
 	proof/proof.h \
 	proof/proof_manager.cpp \
 	proof/proof_manager.h \
+	proof/proof_output_channel.cpp \
+	proof/proof_output_channel.h \
 	proof/proof_utils.cpp \
 	proof/proof_utils.h \
 	proof/sat_proof.h \
 	proof/sat_proof_implementation.h \
+	proof/simplify_boolean_node.cpp \
+	proof/simplify_boolean_node.h \
 	proof/skolemization_manager.cpp \
 	proof/skolemization_manager.h \
 	proof/theory_proof.cpp \
 	proof/theory_proof.h \
-	proof/lemma_proof.cpp \
-	proof/lemma_proof.h \
 	proof/uf_proof.cpp \
 	proof/uf_proof.h \
 	proof/unsat_core.cpp \
 	proof/unsat_core.h \
-	proof/proof_output_channel.cpp \
-	proof/proof_output_channel.h \
 	prop/cnf_stream.cpp \
 	prop/cnf_stream.h \
+	prop/cryptominisat.cpp \
+	prop/cryptominisat.h \
 	prop/prop_engine.cpp \
 	prop/prop_engine.h \
 	prop/registrar.h \
@@ -780,8 +788,6 @@ libcvc4_la_SOURCES = \
 	prop/sat_solver_factory.cpp \
 	prop/sat_solver_factory.h \
 	prop/sat_solver_types.h \
-	prop/cryptominisat.h \
-	prop/cryptominisat.cpp \
 	prop/theory_proxy.cpp \
 	prop/theory_proxy.h \
 	smt/command.cpp \
@@ -790,8 +796,6 @@ libcvc4_la_SOURCES = \
 	smt/command_list.h \
 	smt/dump.cpp \
 	smt/dump.h \
-	smt/term_formula_removal.cpp \
-	smt/term_formula_removal.h \
 	smt/logic_exception.h \
 	smt/logic_request.cpp \
 	smt/logic_request.h \
@@ -806,317 +810,324 @@ libcvc4_la_SOURCES = \
 	smt/smt_engine_scope.h \
 	smt/smt_statistics_registry.cpp \
 	smt/smt_statistics_registry.h \
+	smt/term_formula_removal.cpp \
+	smt/term_formula_removal.h \
 	smt/update_ostream.h \
-	theory/logic_info.h \
+	theory/assertion.cpp \
+	theory/assertion.h \
+	theory/atom_requests.cpp \
+	theory/atom_requests.h \
+	theory/care_graph.h \
+	theory/interrupted.h \
+	theory/ite_utilities.cpp \
+	theory/ite_utilities.h \
 	theory/logic_info.cpp \
+	theory/logic_info.h \
 	theory/output_channel.h \
-	theory/interrupted.h \
-	theory/sort_inference.cpp \
-	theory/sort_inference.h \
-	theory/type_enumerator.h \
-	theory/theory_engine.h \
-	theory/theory_engine.cpp \
-	theory/theory_test_utils.h \
-	theory/theory.h \
-	theory/theory.cpp \
-	theory/theory_registrar.h \
+	theory/quantifiers_engine.cpp \
+	theory/quantifiers_engine.h \
+	theory/rep_set.cpp \
+	theory/rep_set.h \
+	theory/rewriter.cpp \
 	theory/rewriter.h \
 	theory/rewriter_attributes.h \
-	theory/rewriter.cpp \
-	theory/substitutions.h \
-	theory/substitutions.cpp \
-	theory/valuation.h \
-	theory/valuation.cpp \
-	theory/shared_terms_database.h \
 	theory/shared_terms_database.cpp \
-	theory/term_registration_visitor.h \
+	theory/shared_terms_database.h \
+	theory/sort_inference.cpp \
+	theory/sort_inference.h \
+	theory/substitutions.cpp \
+	theory/substitutions.h \
 	theory/term_registration_visitor.cpp \
-	theory/ite_utilities.h \
-	theory/ite_utilities.cpp \
-	theory/unconstrained_simplifier.h \
-	theory/unconstrained_simplifier.cpp \
-	theory/quantifiers_engine.h \
-	theory/quantifiers_engine.cpp \
-	theory/theory_model.h \
+	theory/term_registration_visitor.h \
+	theory/theory.cpp \
+	theory/theory.h \
+	theory/theory_engine.cpp \
+	theory/theory_engine.h \
 	theory/theory_model.cpp \
-	theory/rep_set.h \
-	theory/rep_set.cpp \
-	theory/atom_requests.h \
-	theory/atom_requests.cpp \
-	theory/uf/theory_uf.h \
-	theory/uf/theory_uf.cpp \
-	theory/uf/theory_uf_type_rules.h \
-	theory/uf/theory_uf_rewriter.h \
-	theory/uf/equality_engine.h \
-	theory/uf/equality_engine_types.h \
-	theory/uf/equality_engine.cpp \
-	theory/uf/symmetry_breaker.h \
-	theory/uf/symmetry_breaker.cpp \
-	theory/uf/theory_uf_strong_solver.h \
-	theory/uf/theory_uf_strong_solver.cpp \
-	theory/uf/theory_uf_model.h \
-	theory/uf/theory_uf_model.cpp \
-	theory/bv/theory_bv_utils.h \
-	theory/bv/theory_bv_utils.cpp \
-	theory/bv/type_enumerator.h \
-	theory/bv/bv_to_bool.h \
-	theory/bv/bv_to_bool.cpp \
-	theory/bv/bv_subtheory.h \
-	theory/bv/bv_subtheory_core.h \
-	theory/bv/bv_subtheory_core.cpp \
-	theory/bv/bv_subtheory_bitblast.h \
-	theory/bv/bv_subtheory_bitblast.cpp \
-	theory/bv/bv_subtheory_inequality.h \
-	theory/bv/bv_subtheory_inequality.cpp \
-	theory/bv/bv_inequality_graph.h \
-	theory/bv/bv_inequality_graph.cpp \
-	theory/bv/bitblast_strategies_template.h \
-	theory/bv/bitblaster_template.h \
-	theory/bv/lazy_bitblaster.cpp \
-	theory/bv/eager_bitblaster.cpp \
-	theory/bv/aig_bitblaster.cpp \
-	theory/bv/bv_eager_solver.h \
-	theory/bv/bv_eager_solver.cpp \
-	theory/bv/slicer.h \
-	theory/bv/slicer.cpp \
-	theory/bv/theory_bv.h \
-	theory/bv/theory_bv.cpp \
-	theory/bv/theory_bv_rewrite_rules.h \
-	theory/bv/theory_bv_rewrite_rules_core.h \
-	theory/bv/theory_bv_rewrite_rules_operator_elimination.h \
-	theory/bv/theory_bv_rewrite_rules_constant_evaluation.h \
-	theory/bv/theory_bv_rewrite_rules_normalization.h \
-	theory/bv/theory_bv_rewrite_rules_simplification.h \
-	theory/bv/theory_bv_type_rules.h \
-	theory/bv/theory_bv_rewriter.h \
-	theory/bv/theory_bv_rewriter.cpp \
-	theory/bv/cd_set_collection.h \
-	theory/bv/abstraction.h \
+	theory/theory_model.h \
+	theory/theory_registrar.h \
+	theory/theory_test_utils.h \
+	theory/type_enumerator.h \
+	theory/unconstrained_simplifier.cpp \
+	theory/unconstrained_simplifier.h \
+	theory/valuation.cpp \
+	theory/valuation.h \
+	theory/arith/approx_simplex.cpp \
+	theory/arith/approx_simplex.h \
+	theory/arith/arith_ite_utils.cpp \
+	theory/arith/arith_ite_utils.h \
+	theory/arith/arith_rewriter.cpp \
+	theory/arith/arith_rewriter.h \
+	theory/arith/arith_static_learner.cpp \
+	theory/arith/arith_static_learner.h \
+	theory/arith/arith_utilities.h \
+	theory/arith/arithvar.cpp \
+	theory/arith/arithvar.h \
+	theory/arith/attempt_solution_simplex.cpp \
+	theory/arith/attempt_solution_simplex.h \
+	theory/arith/bound_counts.h \
+	theory/arith/callbacks.cpp \
+	theory/arith/callbacks.h \
+	theory/arith/congruence_manager.cpp \
+	theory/arith/congruence_manager.h \
+	theory/arith/constraint.cpp \
+	theory/arith/constraint.h \
+	theory/arith/constraint_forward.h \
+	theory/arith/cut_log.cpp \
+	theory/arith/cut_log.h \
+	theory/arith/delta_rational.cpp \
+	theory/arith/delta_rational.h \
+	theory/arith/dio_solver.cpp \
+	theory/arith/dio_solver.h \
+	theory/arith/dual_simplex.cpp \
+	theory/arith/dual_simplex.h \
+	theory/arith/error_set.cpp \
+	theory/arith/error_set.h \
+	theory/arith/fc_simplex.cpp \
+	theory/arith/fc_simplex.h \
+	theory/arith/infer_bounds.cpp \
+	theory/arith/infer_bounds.h \
+	theory/arith/linear_equality.cpp \
+	theory/arith/linear_equality.h \
+	theory/arith/matrix.cpp \
+	theory/arith/matrix.h \
+	theory/arith/nonlinear_extension.h \
+	theory/arith/nonlinear_extension.cpp \
+	theory/arith/normal_form.cpp \
+	theory/arith/normal_form.h\
+	theory/arith/partial_model.cpp \
+	theory/arith/partial_model.h \
+	theory/arith/pseudoboolean_proc.cpp \
+	theory/arith/pseudoboolean_proc.h \
+	theory/arith/simplex.cpp \
+	theory/arith/simplex.h \
+	theory/arith/simplex_update.cpp \
+	theory/arith/simplex_update.h \
+	theory/arith/soi_simplex.cpp \
+	theory/arith/soi_simplex.h \
+	theory/arith/tableau.cpp \
+	theory/arith/tableau.h \
+	theory/arith/tableau_sizes.cpp \
+	theory/arith/tableau_sizes.h \
+	theory/arith/theory_arith.cpp \
+	theory/arith/theory_arith.h \
+	theory/arith/theory_arith_private.cpp \
+	theory/arith/theory_arith_private.h \
+	theory/arith/theory_arith_private_forward.h \
+	theory/arith/theory_arith_type_rules.h \
+	theory/arith/type_enumerator.h \
+	theory/arrays/array_info.cpp \
+	theory/arrays/array_info.h \
+	theory/arrays/array_proof_reconstruction.cpp \
+	theory/arrays/array_proof_reconstruction.h \
+	theory/arrays/static_fact_manager.cpp \
+	theory/arrays/static_fact_manager.h \
+	theory/arrays/theory_arrays.cpp \
+	theory/arrays/theory_arrays.h \
+	theory/arrays/theory_arrays_rewriter.cpp \
+	theory/arrays/theory_arrays_rewriter.h \
+	theory/arrays/theory_arrays_type_rules.h \
+	theory/arrays/type_enumerator.h \
+	theory/arrays/union_find.cpp \
+	theory/arrays/union_find.h \
+	theory/booleans/circuit_propagator.cpp \
+	theory/booleans/circuit_propagator.h \
+	theory/booleans/theory_bool.cpp \
+	theory/booleans/theory_bool.h \
+	theory/booleans/theory_bool_rewriter.cpp \
+	theory/booleans/theory_bool_rewriter.h \
+	theory/booleans/theory_bool_type_rules.h \
+	theory/booleans/type_enumerator.h \
+	theory/builtin/theory_builtin.cpp \
+	theory/builtin/theory_builtin.h \
+	theory/builtin/theory_builtin_rewriter.cpp \
+	theory/builtin/theory_builtin_rewriter.h \
+	theory/builtin/theory_builtin_type_rules.h \
+	theory/builtin/type_enumerator.h \
 	theory/bv/abstraction.cpp \
-	theory/bv/bv_quick_check.h \
+	theory/bv/abstraction.h \
+	theory/bv/aig_bitblaster.cpp \
+	theory/bv/bitblast_strategies_template.h \
+	theory/bv/bitblast_utils.h \
+	theory/bv/bitblaster_template.h \
+	theory/bv/bv_eager_solver.cpp \
+	theory/bv/bv_eager_solver.h \
+	theory/bv/bv_inequality_graph.cpp \
+	theory/bv/bv_inequality_graph.h \
 	theory/bv/bv_quick_check.cpp \
-	theory/bv/bv_subtheory_algebraic.h \
+	theory/bv/bv_quick_check.h \
+	theory/bv/bv_subtheory.h \
 	theory/bv/bv_subtheory_algebraic.cpp \
-	theory/bv/bitblast_utils.h \
-	theory/bv/bvintropow2.h \
+	theory/bv/bv_subtheory_algebraic.h \
+	theory/bv/bv_subtheory_bitblast.cpp \
+	theory/bv/bv_subtheory_bitblast.h \
+	theory/bv/bv_subtheory_core.cpp \
+	theory/bv/bv_subtheory_core.h \
+	theory/bv/bv_subtheory_inequality.cpp \
+	theory/bv/bv_subtheory_inequality.h \
+	theory/bv/bv_to_bool.cpp \
+	theory/bv/bv_to_bool.h \
 	theory/bv/bvintropow2.cpp \
-	theory/idl/idl_model.h \
-	theory/idl/idl_model.cpp \
-	theory/idl/idl_assertion.h \
+	theory/bv/bvintropow2.h \
+	theory/bv/cd_set_collection.h \
+	theory/bv/eager_bitblaster.cpp \
+	theory/bv/lazy_bitblaster.cpp \
+	theory/bv/slicer.cpp \
+	theory/bv/slicer.h \
+	theory/bv/theory_bv.cpp \
+	theory/bv/theory_bv.h \
+	theory/bv/theory_bv_rewrite_rules.h \
+	theory/bv/theory_bv_rewrite_rules_constant_evaluation.h \
+	theory/bv/theory_bv_rewrite_rules_core.h \
+	theory/bv/theory_bv_rewrite_rules_normalization.h \
+	theory/bv/theory_bv_rewrite_rules_operator_elimination.h \
+	theory/bv/theory_bv_rewrite_rules_simplification.h \
+	theory/bv/theory_bv_rewriter.cpp \
+	theory/bv/theory_bv_rewriter.h \
+	theory/bv/theory_bv_type_rules.h \
+	theory/bv/theory_bv_utils.cpp \
+	theory/bv/theory_bv_utils.h \
+	theory/bv/type_enumerator.h \
+	theory/datatypes/datatypes_rewriter.h \
+	theory/datatypes/datatypes_sygus.cpp \
+	theory/datatypes/datatypes_sygus.h \
+	theory/datatypes/theory_datatypes.cpp \
+	theory/datatypes/theory_datatypes.h \
+	theory/datatypes/theory_datatypes_type_rules.h \
+	theory/datatypes/type_enumerator.cpp \
+	theory/datatypes/type_enumerator.h \
+	theory/fp/theory_fp.cpp \
+	theory/fp/theory_fp.h \
+	theory/fp/theory_fp_rewriter.cpp \
+	theory/fp/theory_fp_rewriter.h \
+	theory/fp/theory_fp_type_rules.h \
 	theory/idl/idl_assertion.cpp \
-	theory/idl/idl_assertion_db.h \
+	theory/idl/idl_assertion.h \
 	theory/idl/idl_assertion_db.cpp \
-	theory/idl/theory_idl.h \
+	theory/idl/idl_assertion_db.h \
+	theory/idl/idl_model.cpp \
+	theory/idl/idl_model.h \
 	theory/idl/theory_idl.cpp \
-	theory/builtin/theory_builtin_type_rules.h \
-	theory/builtin/type_enumerator.h \
-	theory/builtin/theory_builtin_rewriter.h \
-	theory/builtin/theory_builtin_rewriter.cpp \
-	theory/builtin/theory_builtin.h \
-	theory/builtin/theory_builtin.cpp \
-	theory/datatypes/theory_datatypes_type_rules.h \
-	theory/datatypes/type_enumerator.h \
-	theory/datatypes/type_enumerator.cpp \
-	theory/datatypes/theory_datatypes.h \
-	theory/datatypes/datatypes_rewriter.h \
-	theory/datatypes/theory_datatypes.cpp \
-	theory/datatypes/datatypes_sygus.h \
-	theory/datatypes/datatypes_sygus.cpp \
+	theory/idl/theory_idl.h \
+	theory/quantifiers/alpha_equivalence.cpp \
+	theory/quantifiers/alpha_equivalence.h \
+	theory/quantifiers/ambqi_builder.cpp \
+	theory/quantifiers/ambqi_builder.h \
+	theory/quantifiers/anti_skolem.cpp \
+	theory/quantifiers/anti_skolem.h \
+	theory/quantifiers/bounded_integers.cpp \
+	theory/quantifiers/bounded_integers.h \
+	theory/quantifiers/candidate_generator.cpp \
+	theory/quantifiers/candidate_generator.h \
+	theory/quantifiers/ce_guided_instantiation.cpp \
+	theory/quantifiers/ce_guided_instantiation.h \
+	theory/quantifiers/ce_guided_single_inv.cpp \
+	theory/quantifiers/ce_guided_single_inv.h \
+	theory/quantifiers/ce_guided_single_inv_ei.cpp \
+	theory/quantifiers/ce_guided_single_inv_ei.h \
+	theory/quantifiers/ce_guided_single_inv_sol.cpp \
+	theory/quantifiers/ce_guided_single_inv_sol.h \
+	theory/quantifiers/ceg_instantiator.cpp \
+	theory/quantifiers/ceg_instantiator.h \
+	theory/quantifiers/ceg_t_instantiator.cpp \
+	theory/quantifiers/ceg_t_instantiator.h \
+	theory/quantifiers/conjecture_generator.cpp \
+	theory/quantifiers/conjecture_generator.h \
+	theory/quantifiers/equality_infer.cpp \
+	theory/quantifiers/equality_infer.h \
+	theory/quantifiers/first_order_model.cpp \
+	theory/quantifiers/first_order_model.h \
+	theory/quantifiers/full_model_check.cpp \
+	theory/quantifiers/full_model_check.h \
+	theory/quantifiers/fun_def_engine.cpp \
+	theory/quantifiers/fun_def_engine.h \
+	theory/quantifiers/fun_def_process.cpp \
+	theory/quantifiers/fun_def_process.h \
+	theory/quantifiers/inst_match.cpp \
+	theory/quantifiers/inst_match.h \
+	theory/quantifiers/inst_match_generator.cpp \
+	theory/quantifiers/inst_match_generator.h \
+	theory/quantifiers/inst_propagator.cpp \
+	theory/quantifiers/inst_propagator.h \
+	theory/quantifiers/inst_strategy_cbqi.cpp \
+	theory/quantifiers/inst_strategy_cbqi.h \
+	theory/quantifiers/inst_strategy_e_matching.cpp \
+	theory/quantifiers/inst_strategy_e_matching.h \
+	theory/quantifiers/instantiation_engine.cpp \
+	theory/quantifiers/instantiation_engine.h \
+	theory/quantifiers/local_theory_ext.cpp \
+	theory/quantifiers/local_theory_ext.h \
+	theory/quantifiers/macros.cpp \
+	theory/quantifiers/macros.h \
+	theory/quantifiers/model_builder.cpp \
+	theory/quantifiers/model_builder.h \
+	theory/quantifiers/model_engine.cpp \
+	theory/quantifiers/model_engine.h \
+	theory/quantifiers/quant_conflict_find.cpp \
+	theory/quantifiers/quant_conflict_find.h \
+	theory/quantifiers/quant_equality_engine.cpp \
+	theory/quantifiers/quant_equality_engine.h \
+	theory/quantifiers/quant_split.cpp \
+	theory/quantifiers/quant_split.h \
+	theory/quantifiers/quant_util.cpp \
+	theory/quantifiers/quant_util.h \
+	theory/quantifiers/quantifiers_attributes.cpp \
+	theory/quantifiers/quantifiers_attributes.h \
+	theory/quantifiers/quantifiers_rewriter.cpp \
+	theory/quantifiers/quantifiers_rewriter.h \
+	theory/quantifiers/relevant_domain.cpp \
+	theory/quantifiers/relevant_domain.h \
+	theory/quantifiers/rewrite_engine.cpp \
+	theory/quantifiers/rewrite_engine.h \
+	theory/quantifiers/symmetry_breaking.cpp \
+	theory/quantifiers/symmetry_breaking.h \
+	theory/quantifiers/term_database.cpp \
+	theory/quantifiers/term_database.h \
+	theory/quantifiers/theory_quantifiers.cpp \
+	theory/quantifiers/theory_quantifiers.h \
+	theory/quantifiers/theory_quantifiers_type_rules.h \
+	theory/quantifiers/trigger.cpp \
+	theory/quantifiers/trigger.h \
+	theory/sep/theory_sep.cpp \
+	theory/sep/theory_sep.h \
+	theory/sep/theory_sep_rewriter.cpp \
+	theory/sep/theory_sep_rewriter.h \
+	theory/sep/theory_sep_type_rules.h \
 	theory/sets/normal_form.h \
+	theory/sets/rels_utils.h \
 	theory/sets/theory_sets.cpp \
 	theory/sets/theory_sets.h \
 	theory/sets/theory_sets_private.cpp \
 	theory/sets/theory_sets_private.h \
+	theory/sets/theory_sets_rels.cpp \
+	theory/sets/theory_sets_rels.h \
 	theory/sets/theory_sets_rewriter.cpp \
 	theory/sets/theory_sets_rewriter.h \
 	theory/sets/theory_sets_type_enumerator.h \
 	theory/sets/theory_sets_type_rules.h \
-	theory/sets/theory_sets_rels.cpp \
-	theory/sets/theory_sets_rels.h \
-	theory/sets/rels_utils.h \
-	theory/strings/theory_strings.h \
+	theory/strings/regexp_operation.cpp \
+	theory/strings/regexp_operation.h \
 	theory/strings/theory_strings.cpp \
-	theory/strings/theory_strings_rewriter.h \
+	theory/strings/theory_strings.h \
+	theory/strings/theory_strings_preprocess.cpp \
+	theory/strings/theory_strings_preprocess.h \
 	theory/strings/theory_strings_rewriter.cpp \
+	theory/strings/theory_strings_rewriter.h \
 	theory/strings/theory_strings_type_rules.h \
 	theory/strings/type_enumerator.h \
-	theory/strings/theory_strings_preprocess.h \
-	theory/strings/theory_strings_preprocess.cpp \
-	theory/strings/regexp_operation.cpp \
-	theory/strings/regexp_operation.h \
-	theory/arrays/theory_arrays_type_rules.h \
-	theory/arrays/type_enumerator.h \
-	theory/arrays/theory_arrays_rewriter.h \
-	theory/arrays/theory_arrays_rewriter.cpp \
-	theory/arrays/theory_arrays.h \
-	theory/arrays/theory_arrays.cpp \
-	theory/arrays/union_find.h \
-	theory/arrays/union_find.cpp \
-	theory/arrays/array_info.h \
-	theory/arrays/array_info.cpp \
-	theory/arrays/static_fact_manager.h \
-	theory/arrays/static_fact_manager.cpp \
-	theory/arrays/array_proof_reconstruction.cpp \
-	theory/arrays/array_proof_reconstruction.h \
-	theory/quantifiers/theory_quantifiers_type_rules.h \
-	theory/quantifiers/theory_quantifiers.h \
-	theory/quantifiers/quantifiers_rewriter.h \
-	theory/quantifiers/quantifiers_rewriter.cpp \
-	theory/quantifiers/theory_quantifiers.cpp \
-	theory/quantifiers/instantiation_engine.h \
-	theory/quantifiers/instantiation_engine.cpp \
-	theory/quantifiers/trigger.h \
-	theory/quantifiers/trigger.cpp \
-	theory/quantifiers/candidate_generator.h \
-	theory/quantifiers/candidate_generator.cpp \
-	theory/quantifiers/inst_match.h \
-	theory/quantifiers/inst_match.cpp \
-	theory/quantifiers/model_engine.h \
-	theory/quantifiers/model_engine.cpp \
-	theory/quantifiers/term_database.h \
-	theory/quantifiers/term_database.cpp \
-	theory/quantifiers/first_order_model.h \
-	theory/quantifiers/first_order_model.cpp \
-	theory/quantifiers/model_builder.h \
-	theory/quantifiers/model_builder.cpp \
-	theory/quantifiers/quantifiers_attributes.h \
-	theory/quantifiers/quantifiers_attributes.cpp \
-	theory/quantifiers/quant_util.h \
-	theory/quantifiers/quant_util.cpp \
-	theory/quantifiers/inst_match_generator.h \
-	theory/quantifiers/inst_match_generator.cpp \
-	theory/quantifiers/macros.h \
-	theory/quantifiers/macros.cpp \
-	theory/quantifiers/inst_strategy_e_matching.h \
-	theory/quantifiers/inst_strategy_e_matching.cpp \
-	theory/quantifiers/inst_strategy_cbqi.h \
-	theory/quantifiers/inst_strategy_cbqi.cpp \
-	theory/quantifiers/full_model_check.h \
-	theory/quantifiers/full_model_check.cpp \
-	theory/quantifiers/bounded_integers.h \
-	theory/quantifiers/bounded_integers.cpp \
-	theory/quantifiers/alpha_equivalence.h \
-	theory/quantifiers/alpha_equivalence.cpp \
-	theory/quantifiers/rewrite_engine.h \
-	theory/quantifiers/rewrite_engine.cpp \
-	theory/quantifiers/relevant_domain.h \
-	theory/quantifiers/relevant_domain.cpp \
-	theory/quantifiers/symmetry_breaking.h \
-	theory/quantifiers/symmetry_breaking.cpp \
-	theory/quantifiers/ambqi_builder.h \
-	theory/quantifiers/ambqi_builder.cpp \
-	theory/quantifiers/quant_conflict_find.h \
-	theory/quantifiers/quant_conflict_find.cpp \
-	theory/quantifiers/conjecture_generator.h \
-	theory/quantifiers/conjecture_generator.cpp \
-	theory/quantifiers/ce_guided_instantiation.h \
-	theory/quantifiers/ce_guided_instantiation.cpp \
-	theory/quantifiers/ce_guided_single_inv.h \
-	theory/quantifiers/ce_guided_single_inv.cpp \
-	theory/quantifiers/ce_guided_single_inv_sol.h \
-	theory/quantifiers/ce_guided_single_inv_sol.cpp \
-	theory/quantifiers/ce_guided_single_inv_ei.h \
-	theory/quantifiers/ce_guided_single_inv_ei.cpp \
-	theory/quantifiers/local_theory_ext.h \
-	theory/quantifiers/local_theory_ext.cpp \
-	theory/quantifiers/fun_def_process.h \
-	theory/quantifiers/fun_def_process.cpp \
-	theory/quantifiers/fun_def_engine.h \
-	theory/quantifiers/fun_def_engine.cpp \
-	theory/quantifiers/quant_equality_engine.h \
-	theory/quantifiers/quant_equality_engine.cpp \
-	theory/quantifiers/ceg_instantiator.h \
-	theory/quantifiers/ceg_instantiator.cpp \
-	theory/quantifiers/ceg_t_instantiator.h \
-	theory/quantifiers/ceg_t_instantiator.cpp \
-	theory/quantifiers/quant_split.h \
-	theory/quantifiers/quant_split.cpp \
-	theory/quantifiers/anti_skolem.h \
-	theory/quantifiers/anti_skolem.cpp \
-	theory/quantifiers/equality_infer.h \
-	theory/quantifiers/equality_infer.cpp \
-	theory/quantifiers/inst_propagator.h \
-	theory/quantifiers/inst_propagator.cpp \
-	theory/arith/theory_arith_type_rules.h \
-	theory/arith/type_enumerator.h \
-	theory/arith/arithvar.h \
-	theory/arith/arithvar.cpp \
-	theory/arith/bound_counts.h \
-	theory/arith/arith_ite_utils.h \
-	theory/arith/arith_ite_utils.cpp \
-	theory/arith/arith_rewriter.h \
-	theory/arith/arith_rewriter.cpp \
-	theory/arith/arith_static_learner.h \
-	theory/arith/arith_static_learner.cpp \
-	theory/arith/constraint_forward.h \
-	theory/arith/constraint.h \
-	theory/arith/constraint.cpp \
-	theory/arith/congruence_manager.h \
-	theory/arith/congruence_manager.cpp \
-	theory/arith/normal_form.h\
-	theory/arith/normal_form.cpp \
-	theory/arith/arith_utilities.h \
-	theory/arith/delta_rational.h \
-	theory/arith/delta_rational.cpp \
-	theory/arith/partial_model.h \
-	theory/arith/partial_model.cpp \
-	theory/arith/linear_equality.h \
-	theory/arith/linear_equality.cpp \
-	theory/arith/simplex_update.h \
-	theory/arith/simplex_update.cpp \
-	theory/arith/callbacks.h \
-	theory/arith/callbacks.cpp \
-	theory/arith/matrix.h \
-	theory/arith/matrix.cpp \
-	theory/arith/tableau.h \
-	theory/arith/tableau.cpp \
-	theory/arith/tableau_sizes.h \
-	theory/arith/tableau_sizes.cpp \
-	theory/arith/error_set.h \
-	theory/arith/error_set.cpp \
-	theory/arith/simplex.h \
-	theory/arith/simplex.cpp \
-	theory/arith/dual_simplex.h \
-	theory/arith/dual_simplex.cpp \
-	theory/arith/fc_simplex.h \
-	theory/arith/fc_simplex.cpp \
-	theory/arith/soi_simplex.h \
-	theory/arith/soi_simplex.cpp \
-	theory/arith/infer_bounds.h \
-	theory/arith/infer_bounds.cpp \
-	theory/arith/approx_simplex.h \
-	theory/arith/approx_simplex.cpp \
-	theory/arith/attempt_solution_simplex.h \
-	theory/arith/attempt_solution_simplex.cpp \
-	theory/arith/theory_arith.h \
-	theory/arith/theory_arith.cpp \
-	theory/arith/theory_arith_private_forward.h \
-	theory/arith/theory_arith_private.h \
-	theory/arith/theory_arith_private.cpp \
-	theory/arith/dio_solver.h \
-	theory/arith/dio_solver.cpp \
-	theory/arith/pseudoboolean_proc.h \
-	theory/arith/pseudoboolean_proc.cpp \
-	theory/arith/cut_log.h \
-	theory/arith/cut_log.cpp \
-	theory/booleans/type_enumerator.h \
-	theory/booleans/theory_bool.h \
-	theory/booleans/theory_bool.cpp \
-	theory/booleans/theory_bool_type_rules.h \
-	theory/booleans/theory_bool_rewriter.h \
-	theory/booleans/theory_bool_rewriter.cpp \
-	theory/booleans/circuit_propagator.h \
-	theory/booleans/circuit_propagator.cpp \
-	theory/fp/theory_fp.h \
-	theory/fp/theory_fp.cpp \
-	theory/fp/theory_fp_rewriter.h \
-	theory/fp/theory_fp_rewriter.cpp \
-	theory/fp/theory_fp_type_rules.h \
-	theory/sep/theory_sep.h \
-	theory/sep/theory_sep.cpp \
-	theory/sep/theory_sep_rewriter.h \
-	theory/sep/theory_sep_rewriter.cpp \
-	theory/sep/theory_sep_type_rules.h
+	theory/uf/equality_engine.cpp \
+	theory/uf/equality_engine.h \
+	theory/uf/equality_engine_types.h \
+	theory/uf/symmetry_breaker.cpp \
+	theory/uf/symmetry_breaker.h \
+	theory/uf/theory_uf.cpp \
+	theory/uf/theory_uf.h \
+	theory/uf/theory_uf_model.cpp \
+	theory/uf/theory_uf_model.h \
+	theory/uf/theory_uf_rewriter.h \
+	theory/uf/theory_uf_strong_solver.cpp \
+	theory/uf/theory_uf_strong_solver.h \
+	theory/uf/theory_uf_type_rules.h
 
 nodist_libcvc4_la_SOURCES = \
 	theory/rewriter_tables.h \
@@ -1281,10 +1292,10 @@ printer/$(am__dirstamp):
 printer/$(DEPDIR)/$(am__dirstamp):
 	@$(MKDIR_P) printer/$(DEPDIR)
 	@: > printer/$(DEPDIR)/$(am__dirstamp)
-printer/printer.lo: printer/$(am__dirstamp) \
-	printer/$(DEPDIR)/$(am__dirstamp)
 printer/dagification_visitor.lo: printer/$(am__dirstamp) \
 	printer/$(DEPDIR)/$(am__dirstamp)
+printer/printer.lo: printer/$(am__dirstamp) \
+	printer/$(DEPDIR)/$(am__dirstamp)
 printer/ast/$(am__dirstamp):
 	@$(MKDIR_P) printer/ast
 	@: > printer/ast/$(am__dirstamp)
@@ -1293,6 +1304,14 @@ printer/ast/$(DEPDIR)/$(am__dirstamp):
 	@: > printer/ast/$(DEPDIR)/$(am__dirstamp)
 printer/ast/ast_printer.lo: printer/ast/$(am__dirstamp) \
 	printer/ast/$(DEPDIR)/$(am__dirstamp)
+printer/cvc/$(am__dirstamp):
+	@$(MKDIR_P) printer/cvc
+	@: > printer/cvc/$(am__dirstamp)
+printer/cvc/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) printer/cvc/$(DEPDIR)
+	@: > printer/cvc/$(DEPDIR)/$(am__dirstamp)
+printer/cvc/cvc_printer.lo: printer/cvc/$(am__dirstamp) \
+	printer/cvc/$(DEPDIR)/$(am__dirstamp)
 printer/smt1/$(am__dirstamp):
 	@$(MKDIR_P) printer/smt1
 	@: > printer/smt1/$(am__dirstamp)
@@ -1309,14 +1328,6 @@ printer/smt2/$(DEPDIR)/$(am__dirstamp):
 	@: > printer/smt2/$(DEPDIR)/$(am__dirstamp)
 printer/smt2/smt2_printer.lo: printer/smt2/$(am__dirstamp) \
 	printer/smt2/$(DEPDIR)/$(am__dirstamp)
-printer/cvc/$(am__dirstamp):
-	@$(MKDIR_P) printer/cvc
-	@: > printer/cvc/$(am__dirstamp)
-printer/cvc/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) printer/cvc/$(DEPDIR)
-	@: > printer/cvc/$(DEPDIR)/$(am__dirstamp)
-printer/cvc/cvc_printer.lo: printer/cvc/$(am__dirstamp) \
-	printer/cvc/$(DEPDIR)/$(am__dirstamp)
 printer/tptp/$(am__dirstamp):
 	@$(MKDIR_P) printer/tptp
 	@: > printer/tptp/$(am__dirstamp)
@@ -1339,22 +1350,24 @@ proof/bitvector_proof.lo: proof/$(am__dirstamp) \
 	proof/$(DEPDIR)/$(am__dirstamp)
 proof/cnf_proof.lo: proof/$(am__dirstamp) \
 	proof/$(DEPDIR)/$(am__dirstamp)
+proof/lemma_proof.lo: proof/$(am__dirstamp) \
+	proof/$(DEPDIR)/$(am__dirstamp)
 proof/proof_manager.lo: proof/$(am__dirstamp) \
 	proof/$(DEPDIR)/$(am__dirstamp)
+proof/proof_output_channel.lo: proof/$(am__dirstamp) \
+	proof/$(DEPDIR)/$(am__dirstamp)
 proof/proof_utils.lo: proof/$(am__dirstamp) \
 	proof/$(DEPDIR)/$(am__dirstamp)
+proof/simplify_boolean_node.lo: proof/$(am__dirstamp) \
+	proof/$(DEPDIR)/$(am__dirstamp)
 proof/skolemization_manager.lo: proof/$(am__dirstamp) \
 	proof/$(DEPDIR)/$(am__dirstamp)
 proof/theory_proof.lo: proof/$(am__dirstamp) \
 	proof/$(DEPDIR)/$(am__dirstamp)
-proof/lemma_proof.lo: proof/$(am__dirstamp) \
-	proof/$(DEPDIR)/$(am__dirstamp)
 proof/uf_proof.lo: proof/$(am__dirstamp) \
 	proof/$(DEPDIR)/$(am__dirstamp)
 proof/unsat_core.lo: proof/$(am__dirstamp) \
 	proof/$(DEPDIR)/$(am__dirstamp)
-proof/proof_output_channel.lo: proof/$(am__dirstamp) \
-	proof/$(DEPDIR)/$(am__dirstamp)
 prop/$(am__dirstamp):
 	@$(MKDIR_P) prop
 	@: > prop/$(am__dirstamp)
@@ -1363,12 +1376,12 @@ prop/$(DEPDIR)/$(am__dirstamp):
 	@: > prop/$(DEPDIR)/$(am__dirstamp)
 prop/cnf_stream.lo: prop/$(am__dirstamp) \
 	prop/$(DEPDIR)/$(am__dirstamp)
+prop/cryptominisat.lo: prop/$(am__dirstamp) \
+	prop/$(DEPDIR)/$(am__dirstamp)
 prop/prop_engine.lo: prop/$(am__dirstamp) \
 	prop/$(DEPDIR)/$(am__dirstamp)
 prop/sat_solver_factory.lo: prop/$(am__dirstamp) \
 	prop/$(DEPDIR)/$(am__dirstamp)
-prop/cryptominisat.lo: prop/$(am__dirstamp) \
-	prop/$(DEPDIR)/$(am__dirstamp)
 prop/theory_proxy.lo: prop/$(am__dirstamp) \
 	prop/$(DEPDIR)/$(am__dirstamp)
 smt/$(am__dirstamp):
@@ -1380,8 +1393,6 @@ smt/$(DEPDIR)/$(am__dirstamp):
 smt/command.lo: smt/$(am__dirstamp) smt/$(DEPDIR)/$(am__dirstamp)
 smt/command_list.lo: smt/$(am__dirstamp) smt/$(DEPDIR)/$(am__dirstamp)
 smt/dump.lo: smt/$(am__dirstamp) smt/$(DEPDIR)/$(am__dirstamp)
-smt/term_formula_removal.lo: smt/$(am__dirstamp) \
-	smt/$(DEPDIR)/$(am__dirstamp)
 smt/logic_request.lo: smt/$(am__dirstamp) \
 	smt/$(DEPDIR)/$(am__dirstamp)
 smt/managed_ostreams.lo: smt/$(am__dirstamp) \
@@ -1394,83 +1405,187 @@ smt/smt_engine_scope.lo: smt/$(am__dirstamp) \
 	smt/$(DEPDIR)/$(am__dirstamp)
 smt/smt_statistics_registry.lo: smt/$(am__dirstamp) \
 	smt/$(DEPDIR)/$(am__dirstamp)
+smt/term_formula_removal.lo: smt/$(am__dirstamp) \
+	smt/$(DEPDIR)/$(am__dirstamp)
 theory/$(am__dirstamp):
 	@$(MKDIR_P) theory
 	@: > theory/$(am__dirstamp)
 theory/$(DEPDIR)/$(am__dirstamp):
 	@$(MKDIR_P) theory/$(DEPDIR)
 	@: > theory/$(DEPDIR)/$(am__dirstamp)
-theory/logic_info.lo: theory/$(am__dirstamp) \
+theory/assertion.lo: theory/$(am__dirstamp) \
 	theory/$(DEPDIR)/$(am__dirstamp)
-theory/sort_inference.lo: theory/$(am__dirstamp) \
+theory/atom_requests.lo: theory/$(am__dirstamp) \
 	theory/$(DEPDIR)/$(am__dirstamp)
-theory/theory_engine.lo: theory/$(am__dirstamp) \
+theory/ite_utilities.lo: theory/$(am__dirstamp) \
 	theory/$(DEPDIR)/$(am__dirstamp)
-theory/theory.lo: theory/$(am__dirstamp) \
+theory/logic_info.lo: theory/$(am__dirstamp) \
+	theory/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers_engine.lo: theory/$(am__dirstamp) \
+	theory/$(DEPDIR)/$(am__dirstamp)
+theory/rep_set.lo: theory/$(am__dirstamp) \
 	theory/$(DEPDIR)/$(am__dirstamp)
 theory/rewriter.lo: theory/$(am__dirstamp) \
 	theory/$(DEPDIR)/$(am__dirstamp)
-theory/substitutions.lo: theory/$(am__dirstamp) \
+theory/shared_terms_database.lo: theory/$(am__dirstamp) \
 	theory/$(DEPDIR)/$(am__dirstamp)
-theory/valuation.lo: theory/$(am__dirstamp) \
+theory/sort_inference.lo: theory/$(am__dirstamp) \
 	theory/$(DEPDIR)/$(am__dirstamp)
-theory/shared_terms_database.lo: theory/$(am__dirstamp) \
+theory/substitutions.lo: theory/$(am__dirstamp) \
 	theory/$(DEPDIR)/$(am__dirstamp)
 theory/term_registration_visitor.lo: theory/$(am__dirstamp) \
 	theory/$(DEPDIR)/$(am__dirstamp)
-theory/ite_utilities.lo: theory/$(am__dirstamp) \
-	theory/$(DEPDIR)/$(am__dirstamp)
-theory/unconstrained_simplifier.lo: theory/$(am__dirstamp) \
+theory/theory.lo: theory/$(am__dirstamp) \
 	theory/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers_engine.lo: theory/$(am__dirstamp) \
+theory/theory_engine.lo: theory/$(am__dirstamp) \
 	theory/$(DEPDIR)/$(am__dirstamp)
 theory/theory_model.lo: theory/$(am__dirstamp) \
 	theory/$(DEPDIR)/$(am__dirstamp)
-theory/rep_set.lo: theory/$(am__dirstamp) \
+theory/unconstrained_simplifier.lo: theory/$(am__dirstamp) \
 	theory/$(DEPDIR)/$(am__dirstamp)
-theory/atom_requests.lo: theory/$(am__dirstamp) \
+theory/valuation.lo: theory/$(am__dirstamp) \
 	theory/$(DEPDIR)/$(am__dirstamp)
-theory/uf/$(am__dirstamp):
-	@$(MKDIR_P) theory/uf
-	@: > theory/uf/$(am__dirstamp)
-theory/uf/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) theory/uf/$(DEPDIR)
-	@: > theory/uf/$(DEPDIR)/$(am__dirstamp)
-theory/uf/theory_uf.lo: theory/uf/$(am__dirstamp) \
-	theory/uf/$(DEPDIR)/$(am__dirstamp)
-theory/uf/equality_engine.lo: theory/uf/$(am__dirstamp) \
-	theory/uf/$(DEPDIR)/$(am__dirstamp)
-theory/uf/symmetry_breaker.lo: theory/uf/$(am__dirstamp) \
-	theory/uf/$(DEPDIR)/$(am__dirstamp)
-theory/uf/theory_uf_strong_solver.lo: theory/uf/$(am__dirstamp) \
-	theory/uf/$(DEPDIR)/$(am__dirstamp)
-theory/uf/theory_uf_model.lo: theory/uf/$(am__dirstamp) \
-	theory/uf/$(DEPDIR)/$(am__dirstamp)
+theory/arith/$(am__dirstamp):
+	@$(MKDIR_P) theory/arith
+	@: > theory/arith/$(am__dirstamp)
+theory/arith/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/arith/$(DEPDIR)
+	@: > theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/approx_simplex.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/arith_ite_utils.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/arith_rewriter.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/arith_static_learner.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/arithvar.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/attempt_solution_simplex.lo:  \
+	theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/callbacks.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/congruence_manager.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/constraint.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/cut_log.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/delta_rational.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/dio_solver.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/dual_simplex.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/error_set.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/fc_simplex.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/infer_bounds.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/linear_equality.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/matrix.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/nonlinear_extension.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/normal_form.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/partial_model.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/pseudoboolean_proc.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/simplex.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/simplex_update.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/soi_simplex.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/tableau.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/tableau_sizes.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/theory_arith.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arith/theory_arith_private.lo: theory/arith/$(am__dirstamp) \
+	theory/arith/$(DEPDIR)/$(am__dirstamp)
+theory/arrays/$(am__dirstamp):
+	@$(MKDIR_P) theory/arrays
+	@: > theory/arrays/$(am__dirstamp)
+theory/arrays/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/arrays/$(DEPDIR)
+	@: > theory/arrays/$(DEPDIR)/$(am__dirstamp)
+theory/arrays/array_info.lo: theory/arrays/$(am__dirstamp) \
+	theory/arrays/$(DEPDIR)/$(am__dirstamp)
+theory/arrays/array_proof_reconstruction.lo:  \
+	theory/arrays/$(am__dirstamp) \
+	theory/arrays/$(DEPDIR)/$(am__dirstamp)
+theory/arrays/static_fact_manager.lo: theory/arrays/$(am__dirstamp) \
+	theory/arrays/$(DEPDIR)/$(am__dirstamp)
+theory/arrays/theory_arrays.lo: theory/arrays/$(am__dirstamp) \
+	theory/arrays/$(DEPDIR)/$(am__dirstamp)
+theory/arrays/theory_arrays_rewriter.lo:  \
+	theory/arrays/$(am__dirstamp) \
+	theory/arrays/$(DEPDIR)/$(am__dirstamp)
+theory/arrays/union_find.lo: theory/arrays/$(am__dirstamp) \
+	theory/arrays/$(DEPDIR)/$(am__dirstamp)
+theory/booleans/$(am__dirstamp):
+	@$(MKDIR_P) theory/booleans
+	@: > theory/booleans/$(am__dirstamp)
+theory/booleans/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/booleans/$(DEPDIR)
+	@: > theory/booleans/$(DEPDIR)/$(am__dirstamp)
+theory/booleans/circuit_propagator.lo:  \
+	theory/booleans/$(am__dirstamp) \
+	theory/booleans/$(DEPDIR)/$(am__dirstamp)
+theory/booleans/theory_bool.lo: theory/booleans/$(am__dirstamp) \
+	theory/booleans/$(DEPDIR)/$(am__dirstamp)
+theory/booleans/theory_bool_rewriter.lo:  \
+	theory/booleans/$(am__dirstamp) \
+	theory/booleans/$(DEPDIR)/$(am__dirstamp)
+theory/builtin/$(am__dirstamp):
+	@$(MKDIR_P) theory/builtin
+	@: > theory/builtin/$(am__dirstamp)
+theory/builtin/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/builtin/$(DEPDIR)
+	@: > theory/builtin/$(DEPDIR)/$(am__dirstamp)
+theory/builtin/theory_builtin.lo: theory/builtin/$(am__dirstamp) \
+	theory/builtin/$(DEPDIR)/$(am__dirstamp)
+theory/builtin/theory_builtin_rewriter.lo:  \
+	theory/builtin/$(am__dirstamp) \
+	theory/builtin/$(DEPDIR)/$(am__dirstamp)
 theory/bv/$(am__dirstamp):
 	@$(MKDIR_P) theory/bv
 	@: > theory/bv/$(am__dirstamp)
 theory/bv/$(DEPDIR)/$(am__dirstamp):
 	@$(MKDIR_P) theory/bv/$(DEPDIR)
 	@: > theory/bv/$(DEPDIR)/$(am__dirstamp)
-theory/bv/theory_bv_utils.lo: theory/bv/$(am__dirstamp) \
+theory/bv/abstraction.lo: theory/bv/$(am__dirstamp) \
 	theory/bv/$(DEPDIR)/$(am__dirstamp)
-theory/bv/bv_to_bool.lo: theory/bv/$(am__dirstamp) \
+theory/bv/aig_bitblaster.lo: theory/bv/$(am__dirstamp) \
 	theory/bv/$(DEPDIR)/$(am__dirstamp)
-theory/bv/bv_subtheory_core.lo: theory/bv/$(am__dirstamp) \
+theory/bv/bv_eager_solver.lo: theory/bv/$(am__dirstamp) \
+	theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/bv/bv_inequality_graph.lo: theory/bv/$(am__dirstamp) \
+	theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/bv/bv_quick_check.lo: theory/bv/$(am__dirstamp) \
+	theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/bv/bv_subtheory_algebraic.lo: theory/bv/$(am__dirstamp) \
 	theory/bv/$(DEPDIR)/$(am__dirstamp)
 theory/bv/bv_subtheory_bitblast.lo: theory/bv/$(am__dirstamp) \
 	theory/bv/$(DEPDIR)/$(am__dirstamp)
+theory/bv/bv_subtheory_core.lo: theory/bv/$(am__dirstamp) \
+	theory/bv/$(DEPDIR)/$(am__dirstamp)
 theory/bv/bv_subtheory_inequality.lo: theory/bv/$(am__dirstamp) \
 	theory/bv/$(DEPDIR)/$(am__dirstamp)
-theory/bv/bv_inequality_graph.lo: theory/bv/$(am__dirstamp) \
+theory/bv/bv_to_bool.lo: theory/bv/$(am__dirstamp) \
 	theory/bv/$(DEPDIR)/$(am__dirstamp)
-theory/bv/lazy_bitblaster.lo: theory/bv/$(am__dirstamp) \
+theory/bv/bvintropow2.lo: theory/bv/$(am__dirstamp) \
 	theory/bv/$(DEPDIR)/$(am__dirstamp)
 theory/bv/eager_bitblaster.lo: theory/bv/$(am__dirstamp) \
 	theory/bv/$(DEPDIR)/$(am__dirstamp)
-theory/bv/aig_bitblaster.lo: theory/bv/$(am__dirstamp) \
-	theory/bv/$(DEPDIR)/$(am__dirstamp)
-theory/bv/bv_eager_solver.lo: theory/bv/$(am__dirstamp) \
+theory/bv/lazy_bitblaster.lo: theory/bv/$(am__dirstamp) \
 	theory/bv/$(DEPDIR)/$(am__dirstamp)
 theory/bv/slicer.lo: theory/bv/$(am__dirstamp) \
 	theory/bv/$(DEPDIR)/$(am__dirstamp)
@@ -1478,306 +1593,162 @@ theory/bv/theory_bv.lo: theory/bv/$(am__dirstamp) \
 	theory/bv/$(DEPDIR)/$(am__dirstamp)
 theory/bv/theory_bv_rewriter.lo: theory/bv/$(am__dirstamp) \
 	theory/bv/$(DEPDIR)/$(am__dirstamp)
-theory/bv/abstraction.lo: theory/bv/$(am__dirstamp) \
-	theory/bv/$(DEPDIR)/$(am__dirstamp)
-theory/bv/bv_quick_check.lo: theory/bv/$(am__dirstamp) \
-	theory/bv/$(DEPDIR)/$(am__dirstamp)
-theory/bv/bv_subtheory_algebraic.lo: theory/bv/$(am__dirstamp) \
-	theory/bv/$(DEPDIR)/$(am__dirstamp)
-theory/bv/bvintropow2.lo: theory/bv/$(am__dirstamp) \
+theory/bv/theory_bv_utils.lo: theory/bv/$(am__dirstamp) \
 	theory/bv/$(DEPDIR)/$(am__dirstamp)
-theory/idl/$(am__dirstamp):
-	@$(MKDIR_P) theory/idl
-	@: > theory/idl/$(am__dirstamp)
-theory/idl/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) theory/idl/$(DEPDIR)
-	@: > theory/idl/$(DEPDIR)/$(am__dirstamp)
-theory/idl/idl_model.lo: theory/idl/$(am__dirstamp) \
-	theory/idl/$(DEPDIR)/$(am__dirstamp)
-theory/idl/idl_assertion.lo: theory/idl/$(am__dirstamp) \
-	theory/idl/$(DEPDIR)/$(am__dirstamp)
-theory/idl/idl_assertion_db.lo: theory/idl/$(am__dirstamp) \
-	theory/idl/$(DEPDIR)/$(am__dirstamp)
-theory/idl/theory_idl.lo: theory/idl/$(am__dirstamp) \
-	theory/idl/$(DEPDIR)/$(am__dirstamp)
-theory/builtin/$(am__dirstamp):
-	@$(MKDIR_P) theory/builtin
-	@: > theory/builtin/$(am__dirstamp)
-theory/builtin/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) theory/builtin/$(DEPDIR)
-	@: > theory/builtin/$(DEPDIR)/$(am__dirstamp)
-theory/builtin/theory_builtin_rewriter.lo:  \
-	theory/builtin/$(am__dirstamp) \
-	theory/builtin/$(DEPDIR)/$(am__dirstamp)
-theory/builtin/theory_builtin.lo: theory/builtin/$(am__dirstamp) \
-	theory/builtin/$(DEPDIR)/$(am__dirstamp)
-theory/datatypes/$(am__dirstamp):
-	@$(MKDIR_P) theory/datatypes
-	@: > theory/datatypes/$(am__dirstamp)
-theory/datatypes/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) theory/datatypes/$(DEPDIR)
-	@: > theory/datatypes/$(DEPDIR)/$(am__dirstamp)
-theory/datatypes/type_enumerator.lo: theory/datatypes/$(am__dirstamp) \
-	theory/datatypes/$(DEPDIR)/$(am__dirstamp)
-theory/datatypes/theory_datatypes.lo:  \
-	theory/datatypes/$(am__dirstamp) \
-	theory/datatypes/$(DEPDIR)/$(am__dirstamp)
-theory/datatypes/datatypes_sygus.lo: theory/datatypes/$(am__dirstamp) \
-	theory/datatypes/$(DEPDIR)/$(am__dirstamp)
-theory/sets/$(am__dirstamp):
-	@$(MKDIR_P) theory/sets
-	@: > theory/sets/$(am__dirstamp)
-theory/sets/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) theory/sets/$(DEPDIR)
-	@: > theory/sets/$(DEPDIR)/$(am__dirstamp)
-theory/sets/theory_sets.lo: theory/sets/$(am__dirstamp) \
-	theory/sets/$(DEPDIR)/$(am__dirstamp)
-theory/sets/theory_sets_private.lo: theory/sets/$(am__dirstamp) \
-	theory/sets/$(DEPDIR)/$(am__dirstamp)
-theory/sets/theory_sets_rewriter.lo: theory/sets/$(am__dirstamp) \
-	theory/sets/$(DEPDIR)/$(am__dirstamp)
-theory/sets/theory_sets_rels.lo: theory/sets/$(am__dirstamp) \
-	theory/sets/$(DEPDIR)/$(am__dirstamp)
-theory/strings/$(am__dirstamp):
-	@$(MKDIR_P) theory/strings
-	@: > theory/strings/$(am__dirstamp)
-theory/strings/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) theory/strings/$(DEPDIR)
-	@: > theory/strings/$(DEPDIR)/$(am__dirstamp)
-theory/strings/theory_strings.lo: theory/strings/$(am__dirstamp) \
-	theory/strings/$(DEPDIR)/$(am__dirstamp)
-theory/strings/theory_strings_rewriter.lo:  \
-	theory/strings/$(am__dirstamp) \
-	theory/strings/$(DEPDIR)/$(am__dirstamp)
-theory/strings/theory_strings_preprocess.lo:  \
-	theory/strings/$(am__dirstamp) \
-	theory/strings/$(DEPDIR)/$(am__dirstamp)
-theory/strings/regexp_operation.lo: theory/strings/$(am__dirstamp) \
-	theory/strings/$(DEPDIR)/$(am__dirstamp)
-theory/arrays/$(am__dirstamp):
-	@$(MKDIR_P) theory/arrays
-	@: > theory/arrays/$(am__dirstamp)
-theory/arrays/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) theory/arrays/$(DEPDIR)
-	@: > theory/arrays/$(DEPDIR)/$(am__dirstamp)
-theory/arrays/theory_arrays_rewriter.lo:  \
-	theory/arrays/$(am__dirstamp) \
-	theory/arrays/$(DEPDIR)/$(am__dirstamp)
-theory/arrays/theory_arrays.lo: theory/arrays/$(am__dirstamp) \
-	theory/arrays/$(DEPDIR)/$(am__dirstamp)
-theory/arrays/union_find.lo: theory/arrays/$(am__dirstamp) \
-	theory/arrays/$(DEPDIR)/$(am__dirstamp)
-theory/arrays/array_info.lo: theory/arrays/$(am__dirstamp) \
-	theory/arrays/$(DEPDIR)/$(am__dirstamp)
-theory/arrays/static_fact_manager.lo: theory/arrays/$(am__dirstamp) \
-	theory/arrays/$(DEPDIR)/$(am__dirstamp)
-theory/arrays/array_proof_reconstruction.lo:  \
-	theory/arrays/$(am__dirstamp) \
-	theory/arrays/$(DEPDIR)/$(am__dirstamp)
+theory/datatypes/$(am__dirstamp):
+	@$(MKDIR_P) theory/datatypes
+	@: > theory/datatypes/$(am__dirstamp)
+theory/datatypes/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/datatypes/$(DEPDIR)
+	@: > theory/datatypes/$(DEPDIR)/$(am__dirstamp)
+theory/datatypes/datatypes_sygus.lo: theory/datatypes/$(am__dirstamp) \
+	theory/datatypes/$(DEPDIR)/$(am__dirstamp)
+theory/datatypes/theory_datatypes.lo:  \
+	theory/datatypes/$(am__dirstamp) \
+	theory/datatypes/$(DEPDIR)/$(am__dirstamp)
+theory/datatypes/type_enumerator.lo: theory/datatypes/$(am__dirstamp) \
+	theory/datatypes/$(DEPDIR)/$(am__dirstamp)
+theory/fp/$(am__dirstamp):
+	@$(MKDIR_P) theory/fp
+	@: > theory/fp/$(am__dirstamp)
+theory/fp/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/fp/$(DEPDIR)
+	@: > theory/fp/$(DEPDIR)/$(am__dirstamp)
+theory/fp/theory_fp.lo: theory/fp/$(am__dirstamp) \
+	theory/fp/$(DEPDIR)/$(am__dirstamp)
+theory/fp/theory_fp_rewriter.lo: theory/fp/$(am__dirstamp) \
+	theory/fp/$(DEPDIR)/$(am__dirstamp)
+theory/idl/$(am__dirstamp):
+	@$(MKDIR_P) theory/idl
+	@: > theory/idl/$(am__dirstamp)
+theory/idl/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/idl/$(DEPDIR)
+	@: > theory/idl/$(DEPDIR)/$(am__dirstamp)
+theory/idl/idl_assertion.lo: theory/idl/$(am__dirstamp) \
+	theory/idl/$(DEPDIR)/$(am__dirstamp)
+theory/idl/idl_assertion_db.lo: theory/idl/$(am__dirstamp) \
+	theory/idl/$(DEPDIR)/$(am__dirstamp)
+theory/idl/idl_model.lo: theory/idl/$(am__dirstamp) \
+	theory/idl/$(DEPDIR)/$(am__dirstamp)
+theory/idl/theory_idl.lo: theory/idl/$(am__dirstamp) \
+	theory/idl/$(DEPDIR)/$(am__dirstamp)
 theory/quantifiers/$(am__dirstamp):
 	@$(MKDIR_P) theory/quantifiers
 	@: > theory/quantifiers/$(am__dirstamp)
 theory/quantifiers/$(DEPDIR)/$(am__dirstamp):
 	@$(MKDIR_P) theory/quantifiers/$(DEPDIR)
 	@: > theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/quantifiers_rewriter.lo:  \
+theory/quantifiers/alpha_equivalence.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/theory_quantifiers.lo:  \
+theory/quantifiers/ambqi_builder.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/instantiation_engine.lo:  \
-	theory/quantifiers/$(am__dirstamp) \
+theory/quantifiers/anti_skolem.lo: theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/trigger.lo: theory/quantifiers/$(am__dirstamp) \
+theory/quantifiers/bounded_integers.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
 theory/quantifiers/candidate_generator.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/inst_match.lo: theory/quantifiers/$(am__dirstamp) \
-	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/model_engine.lo:  \
+theory/quantifiers/ce_guided_instantiation.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/term_database.lo:  \
+theory/quantifiers/ce_guided_single_inv.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/first_order_model.lo:  \
+theory/quantifiers/ce_guided_single_inv_ei.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/model_builder.lo:  \
+theory/quantifiers/ce_guided_single_inv_sol.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/quantifiers_attributes.lo:  \
+theory/quantifiers/ceg_instantiator.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/quant_util.lo: theory/quantifiers/$(am__dirstamp) \
-	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/inst_match_generator.lo:  \
+theory/quantifiers/ceg_t_instantiator.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/macros.lo: theory/quantifiers/$(am__dirstamp) \
+theory/quantifiers/conjecture_generator.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/inst_strategy_e_matching.lo:  \
+theory/quantifiers/equality_infer.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/inst_strategy_cbqi.lo:  \
+theory/quantifiers/first_order_model.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
 theory/quantifiers/full_model_check.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/bounded_integers.lo:  \
+theory/quantifiers/fun_def_engine.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/alpha_equivalence.lo:  \
+theory/quantifiers/fun_def_process.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/rewrite_engine.lo:  \
-	theory/quantifiers/$(am__dirstamp) \
+theory/quantifiers/inst_match.lo: theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/relevant_domain.lo:  \
+theory/quantifiers/inst_match_generator.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/symmetry_breaking.lo:  \
+theory/quantifiers/inst_propagator.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/ambqi_builder.lo:  \
+theory/quantifiers/inst_strategy_cbqi.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/quant_conflict_find.lo:  \
+theory/quantifiers/inst_strategy_e_matching.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/conjecture_generator.lo:  \
+theory/quantifiers/instantiation_engine.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/ce_guided_instantiation.lo:  \
+theory/quantifiers/local_theory_ext.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/ce_guided_single_inv.lo:  \
-	theory/quantifiers/$(am__dirstamp) \
+theory/quantifiers/macros.lo: theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/ce_guided_single_inv_sol.lo:  \
+theory/quantifiers/model_builder.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/ce_guided_single_inv_ei.lo:  \
+theory/quantifiers/model_engine.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/local_theory_ext.lo:  \
+theory/quantifiers/quant_conflict_find.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/fun_def_process.lo:  \
+theory/quantifiers/quant_equality_engine.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/fun_def_engine.lo:  \
-	theory/quantifiers/$(am__dirstamp) \
+theory/quantifiers/quant_split.lo: theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/quant_equality_engine.lo:  \
+theory/quantifiers/quant_util.lo: theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/quantifiers_attributes.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/ceg_instantiator.lo:  \
+theory/quantifiers/quantifiers_rewriter.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/ceg_t_instantiator.lo:  \
+theory/quantifiers/relevant_domain.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/quant_split.lo: theory/quantifiers/$(am__dirstamp) \
+theory/quantifiers/rewrite_engine.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/anti_skolem.lo: theory/quantifiers/$(am__dirstamp) \
+theory/quantifiers/symmetry_breaking.lo:  \
+	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/equality_infer.lo:  \
+theory/quantifiers/term_database.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/quantifiers/inst_propagator.lo:  \
+theory/quantifiers/theory_quantifiers.lo:  \
 	theory/quantifiers/$(am__dirstamp) \
 	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
-theory/arith/$(am__dirstamp):
-	@$(MKDIR_P) theory/arith
-	@: > theory/arith/$(am__dirstamp)
-theory/arith/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) theory/arith/$(DEPDIR)
-	@: > theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/arithvar.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/arith_ite_utils.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/arith_rewriter.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/arith_static_learner.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/constraint.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/congruence_manager.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/normal_form.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/delta_rational.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/partial_model.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/linear_equality.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/simplex_update.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/callbacks.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/matrix.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/tableau.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/tableau_sizes.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/error_set.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/simplex.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/dual_simplex.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/fc_simplex.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/soi_simplex.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/infer_bounds.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/approx_simplex.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/attempt_solution_simplex.lo:  \
-	theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/theory_arith.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/theory_arith_private.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/dio_solver.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/pseudoboolean_proc.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/arith/cut_log.lo: theory/arith/$(am__dirstamp) \
-	theory/arith/$(DEPDIR)/$(am__dirstamp)
-theory/booleans/$(am__dirstamp):
-	@$(MKDIR_P) theory/booleans
-	@: > theory/booleans/$(am__dirstamp)
-theory/booleans/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) theory/booleans/$(DEPDIR)
-	@: > theory/booleans/$(DEPDIR)/$(am__dirstamp)
-theory/booleans/theory_bool.lo: theory/booleans/$(am__dirstamp) \
-	theory/booleans/$(DEPDIR)/$(am__dirstamp)
-theory/booleans/theory_bool_rewriter.lo:  \
-	theory/booleans/$(am__dirstamp) \
-	theory/booleans/$(DEPDIR)/$(am__dirstamp)
-theory/booleans/circuit_propagator.lo:  \
-	theory/booleans/$(am__dirstamp) \
-	theory/booleans/$(DEPDIR)/$(am__dirstamp)
-theory/fp/$(am__dirstamp):
-	@$(MKDIR_P) theory/fp
-	@: > theory/fp/$(am__dirstamp)
-theory/fp/$(DEPDIR)/$(am__dirstamp):
-	@$(MKDIR_P) theory/fp/$(DEPDIR)
-	@: > theory/fp/$(DEPDIR)/$(am__dirstamp)
-theory/fp/theory_fp.lo: theory/fp/$(am__dirstamp) \
-	theory/fp/$(DEPDIR)/$(am__dirstamp)
-theory/fp/theory_fp_rewriter.lo: theory/fp/$(am__dirstamp) \
-	theory/fp/$(DEPDIR)/$(am__dirstamp)
+theory/quantifiers/trigger.lo: theory/quantifiers/$(am__dirstamp) \
+	theory/quantifiers/$(DEPDIR)/$(am__dirstamp)
 theory/sep/$(am__dirstamp):
 	@$(MKDIR_P) theory/sep
 	@: > theory/sep/$(am__dirstamp)
@@ -1788,6 +1759,52 @@ theory/sep/theory_sep.lo: theory/sep/$(am__dirstamp) \
 	theory/sep/$(DEPDIR)/$(am__dirstamp)
 theory/sep/theory_sep_rewriter.lo: theory/sep/$(am__dirstamp) \
 	theory/sep/$(DEPDIR)/$(am__dirstamp)
+theory/sets/$(am__dirstamp):
+	@$(MKDIR_P) theory/sets
+	@: > theory/sets/$(am__dirstamp)
+theory/sets/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/sets/$(DEPDIR)
+	@: > theory/sets/$(DEPDIR)/$(am__dirstamp)
+theory/sets/theory_sets.lo: theory/sets/$(am__dirstamp) \
+	theory/sets/$(DEPDIR)/$(am__dirstamp)
+theory/sets/theory_sets_private.lo: theory/sets/$(am__dirstamp) \
+	theory/sets/$(DEPDIR)/$(am__dirstamp)
+theory/sets/theory_sets_rels.lo: theory/sets/$(am__dirstamp) \
+	theory/sets/$(DEPDIR)/$(am__dirstamp)
+theory/sets/theory_sets_rewriter.lo: theory/sets/$(am__dirstamp) \
+	theory/sets/$(DEPDIR)/$(am__dirstamp)
+theory/strings/$(am__dirstamp):
+	@$(MKDIR_P) theory/strings
+	@: > theory/strings/$(am__dirstamp)
+theory/strings/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/strings/$(DEPDIR)
+	@: > theory/strings/$(DEPDIR)/$(am__dirstamp)
+theory/strings/regexp_operation.lo: theory/strings/$(am__dirstamp) \
+	theory/strings/$(DEPDIR)/$(am__dirstamp)
+theory/strings/theory_strings.lo: theory/strings/$(am__dirstamp) \
+	theory/strings/$(DEPDIR)/$(am__dirstamp)
+theory/strings/theory_strings_preprocess.lo:  \
+	theory/strings/$(am__dirstamp) \
+	theory/strings/$(DEPDIR)/$(am__dirstamp)
+theory/strings/theory_strings_rewriter.lo:  \
+	theory/strings/$(am__dirstamp) \
+	theory/strings/$(DEPDIR)/$(am__dirstamp)
+theory/uf/$(am__dirstamp):
+	@$(MKDIR_P) theory/uf
+	@: > theory/uf/$(am__dirstamp)
+theory/uf/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) theory/uf/$(DEPDIR)
+	@: > theory/uf/$(DEPDIR)/$(am__dirstamp)
+theory/uf/equality_engine.lo: theory/uf/$(am__dirstamp) \
+	theory/uf/$(DEPDIR)/$(am__dirstamp)
+theory/uf/symmetry_breaker.lo: theory/uf/$(am__dirstamp) \
+	theory/uf/$(DEPDIR)/$(am__dirstamp)
+theory/uf/theory_uf.lo: theory/uf/$(am__dirstamp) \
+	theory/uf/$(DEPDIR)/$(am__dirstamp)
+theory/uf/theory_uf_model.lo: theory/uf/$(am__dirstamp) \
+	theory/uf/$(DEPDIR)/$(am__dirstamp)
+theory/uf/theory_uf_strong_solver.lo: theory/uf/$(am__dirstamp) \
+	theory/uf/$(DEPDIR)/$(am__dirstamp)
 theory/type_enumerator.lo: theory/$(am__dirstamp) \
 	theory/$(DEPDIR)/$(am__dirstamp)
 
@@ -1872,6 +1889,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at proof/$(DEPDIR)/proof_manager.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at proof/$(DEPDIR)/proof_output_channel.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at proof/$(DEPDIR)/proof_utils.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at proof/$(DEPDIR)/simplify_boolean_node.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at proof/$(DEPDIR)/skolemization_manager.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at proof/$(DEPDIR)/theory_proof.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at proof/$(DEPDIR)/uf_proof.Plo at am__quote@
@@ -1892,6 +1910,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at smt/$(DEPDIR)/smt_engine_scope.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at smt/$(DEPDIR)/smt_statistics_registry.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at smt/$(DEPDIR)/term_formula_removal.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/$(DEPDIR)/assertion.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at theory/$(DEPDIR)/atom_requests.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at theory/$(DEPDIR)/ite_utilities.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at theory/$(DEPDIR)/logic_info.Plo at am__quote@
@@ -1926,6 +1945,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/infer_bounds.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/linear_equality.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/matrix.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/nonlinear_extension.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/normal_form.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/partial_model.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at theory/arith/$(DEPDIR)/pseudoboolean_proc.Plo at am__quote@
diff --git a/src/base/Makefile.in b/src/base/Makefile.in
index 3f7dfa7..ebd87d5 100644
--- a/src/base/Makefile.in
+++ b/src/base/Makefile.in
@@ -239,6 +239,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/src/base/configuration.cpp b/src/base/configuration.cpp
index db19469..90e5609 100644
--- a/src/base/configuration.cpp
+++ b/src/base/configuration.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Francois Bobot, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/base/configuration.h b/src/base/configuration.h
index 5d49917..9a6abdb 100644
--- a/src/base/configuration.h
+++ b/src/base/configuration.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Tim King, Francois Bobot
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/base/configuration_private.h b/src/base/configuration_private.h
index f0ef1a7..f989e40 100644
--- a/src/base/configuration_private.h
+++ b/src/base/configuration_private.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Christopher L. Conway, ACSYS
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -149,8 +149,9 @@ This is CVC4 version " CVC4_RELEASE_STRING ) + \
     )) + "\n\
 compiled with " + ::CVC4::Configuration::getCompiler() + "\n\
 on " + ::CVC4::Configuration::getCompiledDateTime() + "\n\n\
-Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014\n\
-  New York University and The University of Iowa\n\n" + \
+Copyright (c) 2009-2017\n\
+by the authors and their institutional affiliations listed at \n\
+http:\/\/cvc4.cs.stanford.edu/authors\n\n" + \
     ( IS_GPL_BUILD ? "\
 This build of CVC4 uses GPLed libraries, and is thus covered by the GNU\n\
 General Public License (GPL) version 3.  Versions of CVC4 are available\n\
diff --git a/src/base/cvc4_assert.cpp b/src/base/cvc4_assert.cpp
index 9d578dc..c122667 100644
--- a/src/base/cvc4_assert.cpp
+++ b/src/base/cvc4_assert.cpp
@@ -2,9 +2,9 @@
 /*! \file cvc4_assert.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/base/cvc4_assert.h b/src/base/cvc4_assert.h
index de55733..d4942f4 100644
--- a/src/base/cvc4_assert.h
+++ b/src/base/cvc4_assert.h
@@ -2,9 +2,9 @@
 /*! \file cvc4_assert.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/base/exception.cpp b/src/base/exception.cpp
index 4f62f68..7df0507 100644
--- a/src/base/exception.cpp
+++ b/src/base/exception.cpp
@@ -2,9 +2,9 @@
 /*! \file exception.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/base/exception.h b/src/base/exception.h
index 8f3016e..1ce2ae7 100644
--- a/src/base/exception.h
+++ b/src/base/exception.h
@@ -2,9 +2,9 @@
 /*! \file exception.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/base/listener.cpp b/src/base/listener.cpp
index 1f7c615..c636305 100644
--- a/src/base/listener.cpp
+++ b/src/base/listener.cpp
@@ -2,9 +2,9 @@
 /*! \file listener.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/base/listener.h b/src/base/listener.h
index 724935a..208dcd1 100644
--- a/src/base/listener.h
+++ b/src/base/listener.h
@@ -2,9 +2,9 @@
 /*! \file listener.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/base/modal_exception.h b/src/base/modal_exception.h
index c662da2..fc1b8ac 100644
--- a/src/base/modal_exception.h
+++ b/src/base/modal_exception.h
@@ -2,9 +2,9 @@
 /*! \file modal_exception.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/base/output.cpp b/src/base/output.cpp
index 1d45257..b89e5cf 100644
--- a/src/base/output.cpp
+++ b/src/base/output.cpp
@@ -2,9 +2,9 @@
 /*! \file output.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/base/output.h b/src/base/output.h
index 30b5c8e..cdc0ac2 100644
--- a/src/base/output.h
+++ b/src/base/output.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Tim King, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/base/ptr_closer.h b/src/base/ptr_closer.h
index 9c40eee..cd0c707 100644
--- a/src/base/ptr_closer.h
+++ b/src/base/ptr_closer.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/base/tls.h.in b/src/base/tls.h.in
index a61eb79..c66aef7 100644
--- a/src/base/tls.h.in
+++ b/src/base/tls.h.in
@@ -2,9 +2,9 @@
 /*! \file tls.h.in
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, ACSYS, Tim King
+ **   Morgan Deters, ACSYS, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/bindings/Makefile.in b/src/bindings/Makefile.in
index 5298326..9ae1556 100644
--- a/src/bindings/Makefile.in
+++ b/src/bindings/Makefile.in
@@ -430,6 +430,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/src/bindings/compat/Makefile.in b/src/bindings/compat/Makefile.in
index 3c0b714..3ac1ac2 100644
--- a/src/bindings/compat/Makefile.in
+++ b/src/bindings/compat/Makefile.in
@@ -230,6 +230,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/src/bindings/compat/c/Makefile.in b/src/bindings/compat/c/Makefile.in
index 700518d..aea1f1b 100644
--- a/src/bindings/compat/c/Makefile.in
+++ b/src/bindings/compat/c/Makefile.in
@@ -274,6 +274,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/src/bindings/compat/java/Makefile.in b/src/bindings/compat/java/Makefile.in
index 11b4306..37fd235 100644
--- a/src/bindings/compat/java/Makefile.in
+++ b/src/bindings/compat/java/Makefile.in
@@ -284,6 +284,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/src/bindings/java_iterator_adapter.h b/src/bindings/java_iterator_adapter.h
index 2688f95..79cb8a7 100644
--- a/src/bindings/java_iterator_adapter.h
+++ b/src/bindings/java_iterator_adapter.h
@@ -2,9 +2,9 @@
 /*! \file java_iterator_adapter.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/bindings/java_stream_adapters.h b/src/bindings/java_stream_adapters.h
index 12f8713..4d78d86 100644
--- a/src/bindings/java_stream_adapters.h
+++ b/src/bindings/java_stream_adapters.h
@@ -2,9 +2,9 @@
 /*! \file java_stream_adapters.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/bindings/swig.h b/src/bindings/swig.h
index 7d8f749..f73ddd9 100644
--- a/src/bindings/swig.h
+++ b/src/bindings/swig.h
@@ -2,9 +2,9 @@
 /*! \file swig.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/compat/Makefile.in b/src/compat/Makefile.in
index 8de2c1e..213d8d3 100644
--- a/src/compat/Makefile.in
+++ b/src/compat/Makefile.in
@@ -276,6 +276,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/src/compat/cvc3_compat.cpp b/src/compat/cvc3_compat.cpp
index 4f4101d..1226d4d 100644
--- a/src/compat/cvc3_compat.cpp
+++ b/src/compat/cvc3_compat.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Tim King, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/compat/cvc3_compat.h b/src/compat/cvc3_compat.h
index d516709..be0dc33 100644
--- a/src/compat/cvc3_compat.h
+++ b/src/compat/cvc3_compat.h
@@ -2,9 +2,9 @@
 /*! \file cvc3_compat.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Francois Bobot
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/backtrackable.h b/src/context/backtrackable.h
index 131fabd..f91a203 100644
--- a/src/context/backtrackable.h
+++ b/src/context/backtrackable.h
@@ -2,9 +2,9 @@
 /*! \file backtrackable.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/cdchunk_list.h b/src/context/cdchunk_list.h
index e75f4de..d13c6ab 100644
--- a/src/context/cdchunk_list.h
+++ b/src/context/cdchunk_list.h
@@ -2,9 +2,9 @@
 /*! \file cdchunk_list.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Clark Barrett
+ **   Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/cddense_set.h b/src/context/cddense_set.h
index edc5ea5..547747b 100644
--- a/src/context/cddense_set.h
+++ b/src/context/cddense_set.h
@@ -2,9 +2,9 @@
 /*! \file cddense_set.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/cdhashmap.h b/src/context/cdhashmap.h
index 0a6c400..86a7cb1 100644
--- a/src/context/cdhashmap.h
+++ b/src/context/cdhashmap.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Dejan Jovanovic, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/cdhashmap_forward.h b/src/context/cdhashmap_forward.h
index b8a361d..e099f61 100644
--- a/src/context/cdhashmap_forward.h
+++ b/src/context/cdhashmap_forward.h
@@ -2,9 +2,9 @@
 /*! \file cdhashmap_forward.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Dejan Jovanovic
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/cdhashset.h b/src/context/cdhashset.h
index 8c450f1..dd71370 100644
--- a/src/context/cdhashset.h
+++ b/src/context/cdhashset.h
@@ -2,9 +2,9 @@
 /*! \file cdhashset.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Kshitij Bansal
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/cdhashset_forward.h b/src/context/cdhashset_forward.h
index 06ea9c4..ed665ce 100644
--- a/src/context/cdhashset_forward.h
+++ b/src/context/cdhashset_forward.h
@@ -2,9 +2,9 @@
 /*! \file cdhashset_forward.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Dejan Jovanovic
+ **   Morgan Deters, Paul Meng, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/cdinsert_hashmap.h b/src/context/cdinsert_hashmap.h
index e901e94..f53d60c 100644
--- a/src/context/cdinsert_hashmap.h
+++ b/src/context/cdinsert_hashmap.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/cdinsert_hashmap_forward.h b/src/context/cdinsert_hashmap_forward.h
index 5bc6e8f..05501f1 100644
--- a/src/context/cdinsert_hashmap_forward.h
+++ b/src/context/cdinsert_hashmap_forward.h
@@ -2,9 +2,9 @@
 /*! \file cdinsert_hashmap_forward.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/cdlist.h b/src/context/cdlist.h
index 47667cc..7cee41b 100644
--- a/src/context/cdlist.h
+++ b/src/context/cdlist.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Tim King, Francois Bobot
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/cdlist_forward.h b/src/context/cdlist_forward.h
index 101117c..49a0773 100644
--- a/src/context/cdlist_forward.h
+++ b/src/context/cdlist_forward.h
@@ -2,9 +2,9 @@
 /*! \file cdlist_forward.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/cdmaybe.h b/src/context/cdmaybe.h
index 458a124..3263c61 100644
--- a/src/context/cdmaybe.h
+++ b/src/context/cdmaybe.h
@@ -2,9 +2,9 @@
 /*! \file cdmaybe.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/cdo.h b/src/context/cdo.h
index 2146518..3142fe8 100644
--- a/src/context/cdo.h
+++ b/src/context/cdo.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Tim King, Francois Bobot
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/cdqueue.h b/src/context/cdqueue.h
index 5aa890d..1df985b 100644
--- a/src/context/cdqueue.h
+++ b/src/context/cdqueue.h
@@ -2,9 +2,9 @@
 /*! \file cdqueue.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Francois Bobot, Morgan Deters
+ **   Tim King, Paul Meng, Francois Bobot
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/cdtrail_hashmap.h b/src/context/cdtrail_hashmap.h
index 90816d5..9f364ea 100644
--- a/src/context/cdtrail_hashmap.h
+++ b/src/context/cdtrail_hashmap.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/cdtrail_hashmap_forward.h b/src/context/cdtrail_hashmap_forward.h
index 926c858..b2beb83 100644
--- a/src/context/cdtrail_hashmap_forward.h
+++ b/src/context/cdtrail_hashmap_forward.h
@@ -2,9 +2,9 @@
 /*! \file cdtrail_hashmap_forward.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/cdtrail_queue.h b/src/context/cdtrail_queue.h
index 825557f..d709ccb 100644
--- a/src/context/cdtrail_queue.h
+++ b/src/context/cdtrail_queue.h
@@ -2,9 +2,9 @@
 /*! \file cdtrail_queue.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/cdvector.h b/src/context/cdvector.h
index 2449d78..2ff745b 100644
--- a/src/context/cdvector.h
+++ b/src/context/cdvector.h
@@ -2,9 +2,9 @@
 /*! \file cdvector.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/context.cpp b/src/context/context.cpp
index 8f151ad..2b781b9 100644
--- a/src/context/context.cpp
+++ b/src/context/context.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Clark Barrett, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/context.h b/src/context/context.h
index f7707bd..9b3f57a 100644
--- a/src/context/context.h
+++ b/src/context/context.h
@@ -2,9 +2,9 @@
 /*! \file context.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Clark Barrett, Dejan Jovanovic
+ **   Morgan Deters, Clark Barrett, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/context_mm.cpp b/src/context/context_mm.cpp
index ac7d7f8..f0f6ebc 100644
--- a/src/context/context_mm.cpp
+++ b/src/context/context_mm.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Clark Barrett, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/context_mm.h b/src/context/context_mm.h
index 673fb90..974135e 100644
--- a/src/context/context_mm.h
+++ b/src/context/context_mm.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Clark Barrett, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/context/stacking_vector.h b/src/context/stacking_vector.h
deleted file mode 100644
index 4b482c9..0000000
--- a/src/context/stacking_vector.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/*********************                                                        */
-/*! \file stacking_vector.h
- ** \verbatim
- ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Dejan Jovanovic
- ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
- ** in the top-level source directory) and their institutional affiliations.
- ** All rights reserved.  See the file COPYING in the top-level source
- ** directory for licensing information.\endverbatim
- **
- ** \brief Backtrackable vector using an undo stack
- **
- ** Backtrackable vector using an undo stack rather than storing items in
- ** a CDVector<>.
- **/
-
-#include "cvc4_private.h"
-
-#ifndef __CVC4__CONTEXT__STACKING_VECTOR_H
-#define __CVC4__CONTEXT__STACKING_VECTOR_H
-
-#include <utility>
-#include <vector>
-
-#include "context/cdo.h"
-
-namespace CVC4 {
-namespace context {
-
-template <class T>
-class StackingVector : context::ContextNotifyObj {
-  /** Our underlying map type. */
-  typedef std::vector<T> VectorType;
-
-  /** Our map of indices to their values. */
-  VectorType d_map;
-
-  /** Our undo stack for changes made to d_map. */
-  std::vector<std::pair<size_t, T> > d_trace;
-
-  /** Our current offset in the d_trace stack (context-dependent). */
-  context::CDO<size_t> d_offset;
-
-public:
-  typedef typename VectorType::const_iterator const_iterator;
-
-  StackingVector(context::Context* ctxt) :
-    context::ContextNotifyObj(ctxt),
-    d_offset(ctxt, 0) {
-  }
-
-  ~StackingVector() { }
-
-  /**
-   * Return a value from the vector.  If n is not a key in
-   * the map, this function returns a default-constructed T.
-   */
-  T operator[](size_t n) const {
-    return n < d_map.size() ? d_map[n] : T();
-  }
-  //T& operator[](ArgType n) { return d_map[n]; }// not permitted--bypasses set() logic
-
-  /**
-   * Set the value in the key-value map for Node n to newValue.
-   */
-  void set(size_t n, const T& newValue);
-
-  /**
-   * Return the current size of the vector.  Note that once a certain
-   * size is achieved, the size never goes down again, although the
-   * elements off the old end of the vector will be replaced with
-   * default-constructed T values.
-   */
-  size_t size() const {
-    return d_map.size();
-  }
-
-  /**
-   * Called by the Context when a pop occurs.  Cancels everything to the
-   * current context level.  Overrides ContextNotifyObj::notify().
-   */
-  void contextNotifyPop();
-
-};/* class StackingVector<> */
-
-template <class T>
-void StackingVector<T>::set(size_t n, const T& newValue) {
-  Trace("sv") << "SV setting " << n << " : " << newValue << " @ " << d_trace.size() << std::endl;
-  if(n >= d_map.size()) {
-    d_map.resize(n + 1);
-  }
-  T& ref = d_map[n];
-  d_trace.push_back(std::make_pair(n, T(ref)));
-  d_offset = d_trace.size();
-  ref = newValue;
-}
-
-template <class T>
-void StackingVector<T>::contextNotifyPop() {
-  Trace("sv") << "SV cancelling : " << d_offset << " < " << d_trace.size() << " ?" << std::endl;
-  while(d_offset < d_trace.size()) {
-    std::pair<size_t, T> p = d_trace.back();
-    Trace("sv") << "SV cancelling: " << p.first << " back to " << p.second << std::endl;
-    d_map[p.first] = p.second;
-    d_trace.pop_back();
-  }
-  Trace("sv") << "SV cancelling finished." << std::endl;
-}
-
-}/* CVC4::context namespace */
-}/* CVC4 namespace */
-
-#endif /*__CVC4__CONTEXT__STACKING_VECTOR_H */
diff --git a/src/decision/decision_attributes.h b/src/decision/decision_attributes.h
index cc2c766..9774ced 100644
--- a/src/decision/decision_attributes.h
+++ b/src/decision/decision_attributes.h
@@ -2,9 +2,9 @@
 /*! \file decision_attributes.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Kshitij Bansal, Tim King, Morgan Deters
+ **   Kshitij Bansal, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/decision/decision_engine.cpp b/src/decision/decision_engine.cpp
index 71e4f4e..909f2f3 100644
--- a/src/decision/decision_engine.cpp
+++ b/src/decision/decision_engine.cpp
@@ -2,9 +2,9 @@
 /*! \file decision_engine.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Kshitij Bansal, Tim King, Morgan Deters
+ **   Kshitij Bansal, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/decision/decision_engine.h b/src/decision/decision_engine.h
index 66293d7..3d906d8 100644
--- a/src/decision/decision_engine.h
+++ b/src/decision/decision_engine.h
@@ -2,9 +2,9 @@
 /*! \file decision_engine.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Kshitij Bansal, Tim King, Morgan Deters
+ **   Kshitij Bansal, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/decision/decision_strategy.h b/src/decision/decision_strategy.h
index 5c3b01b..25334b7 100644
--- a/src/decision/decision_strategy.h
+++ b/src/decision/decision_strategy.h
@@ -2,9 +2,9 @@
 /*! \file decision_strategy.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Kshitij Bansal, Morgan Deters, Tim King
+ **   Kshitij Bansal, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/decision/justification_heuristic.cpp b/src/decision/justification_heuristic.cpp
index ded2cad..d0d2b39 100644
--- a/src/decision/justification_heuristic.cpp
+++ b/src/decision/justification_heuristic.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Kshitij Bansal, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/decision/justification_heuristic.h b/src/decision/justification_heuristic.h
index c03bba0..4c60f94 100644
--- a/src/decision/justification_heuristic.h
+++ b/src/decision/justification_heuristic.h
@@ -2,9 +2,9 @@
 /*! \file justification_heuristic.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Kshitij Bansal, Tim King, Morgan Deters
+ **   Kshitij Bansal, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/Makefile.am b/src/expr/Makefile.am
index c04de44..e45c765 100644
--- a/src/expr/Makefile.am
+++ b/src/expr/Makefile.am
@@ -1,6 +1,17 @@
+# if coverage is enabled:
+# COVERAGE_ON = yes from configure.ac
+# Using an inline conditional function to choose between absolute and
+# relative paths for options files
+# lcov does not support relative paths and src/options and src/expr
+# in particular were breaking it
+# Building with coverage will cause portability issues in some cases
+
+VPATH = $(if $(COVERAGE_ON), $(realpath @srcdir@), @srcdir@)
+
 AM_CPPFLAGS = \
 	-D__BUILDING_CVC4LIB \
-	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..
+	$(if $(COVERAGE_ON), -I at abs_builddir@/.. -I at abs_srcdir@/../include -I at abs_srcdir@/.., \
+	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..)
 AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
 
 noinst_LTLIBRARIES = libexpr.la
@@ -121,13 +132,13 @@ CLEANFILES = \
 $(top_builddir)/src/expr/.subdirs: $(top_srcdir)/src/Makefile.theories  @top_srcdir@/src/mksubdirs
 	$(AM_V_at)test -d $(top_builddir)/src/expr || mkdir $(top_builddir)/src/expr
 	$(AM_V_at)chmod +x @top_srcdir@/src/mksubdirs
-	$(AM_V_at)( @top_srcdir@/src/mksubdirs "$(top_srcdir)" ) > $(top_builddir)/src/expr/.subdirs.tmp
+	$(AM_V_at)( @top_srcdir@/src/mksubdirs $(if $(COVERAGE_ON), "$(abs_top_srcdir)", "$(top_srcdir)")) > $(top_builddir)/src/expr/.subdirs.tmp
 	@if ! diff -q $(top_builddir)/src/expr/.subdirs $(top_builddir)/src/expr/.subdirs.tmp &>/dev/null; then \
 		echo "  GEN   " $@; \
 		$(am__mv) $(top_builddir)/src/expr/.subdirs.tmp $(top_builddir)/src/expr/.subdirs; \
 	fi
 
-kind.h: kind_template.h mkkind @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+kind.h: kind_template.h mkkind @top_builddir@/src/expr/.subdirs $(if $(COVERAGE_ON), @abs_top_srcdir@, @top_srcdir@)/src/theory/*/kinds
 	$(AM_V_at)chmod +x @srcdir@/mkkind
 	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
 	$(AM_V_GEN)(@srcdir@/mkkind \
@@ -135,7 +146,7 @@ kind.h: kind_template.h mkkind @top_builddir@/src/expr/.subdirs @top_srcdir@/src
 		`cat @top_builddir@/src/expr/.subdirs` \
 	> $@) || (rm -f $@ && exit 1)
 
-metakind.h: metakind_template.h mkmetakind @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+metakind.h: metakind_template.h mkmetakind @top_builddir@/src/expr/.subdirs $(if $(COVERAGE_ON), @abs_top_srcdir@, @top_srcdir@)/src/theory/*/kinds
 	$(AM_V_at)chmod +x @srcdir@/mkmetakind
 	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
 	$(AM_V_GEN)(@srcdir@/mkmetakind \
@@ -143,7 +154,7 @@ metakind.h: metakind_template.h mkmetakind @top_builddir@/src/expr/.subdirs @top
 		`cat @top_builddir@/src/expr/.subdirs` \
 	> $@) || (rm -f $@ && exit 1)
 
-type_properties.h: type_properties_template.h mkkind @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+type_properties.h: type_properties_template.h mkkind @top_builddir@/src/expr/.subdirs $(if $(COVERAGE_ON), @abs_top_srcdir@, @top_srcdir@)/src/theory/*/kinds
 	$(AM_V_at)chmod +x @srcdir@/mkkind
 	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
 	$(AM_V_GEN)(@srcdir@/mkkind \
@@ -151,7 +162,7 @@ type_properties.h: type_properties_template.h mkkind @top_builddir@/src/expr/.su
 		`cat @top_builddir@/src/expr/.subdirs` \
 	> $@) || (rm -f $@ && exit 1)
 
-expr.h: expr_template.h mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+expr.h: expr_template.h mkexpr @top_builddir@/src/expr/.subdirs $(if $(COVERAGE_ON), @abs_top_srcdir@, @top_srcdir@)/src/theory/*/kinds
 	$(AM_V_at)chmod +x @srcdir@/mkexpr
 	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
 	$(AM_V_GEN)(@srcdir@/mkexpr \
@@ -159,7 +170,7 @@ expr.h: expr_template.h mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src
 		`cat @top_builddir@/src/expr/.subdirs` \
 	> $@) || (rm -f $@ && exit 1)
 
-expr.cpp: expr_template.cpp mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+expr.cpp: expr_template.cpp mkexpr @top_builddir@/src/expr/.subdirs $(if $(COVERAGE_ON), @abs_top_srcdir@, @top_srcdir@)/src/theory/*/kinds
 	$(AM_V_at)chmod +x @srcdir@/mkexpr
 	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
 	$(AM_V_GEN)(@srcdir@/mkexpr \
@@ -167,7 +178,7 @@ expr.cpp: expr_template.cpp mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@
 		`cat @top_builddir@/src/expr/.subdirs` \
 	> $@) || (rm -f $@ && exit 1)
 
-expr_manager.h: expr_manager_template.h mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+expr_manager.h: expr_manager_template.h mkexpr @top_builddir@/src/expr/.subdirs $(if $(COVERAGE_ON), @abs_top_srcdir@, @top_srcdir@)/src/theory/*/kinds
 	$(AM_V_at)chmod +x @srcdir@/mkexpr
 	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
 	$(AM_V_GEN)(@srcdir@/mkexpr \
@@ -175,7 +186,7 @@ expr_manager.h: expr_manager_template.h mkexpr @top_builddir@/src/expr/.subdirs
 		`cat @top_builddir@/src/expr/.subdirs` \
 	> $@) || (rm -f $@ && exit 1)
 
-expr_manager.cpp: expr_manager_template.cpp mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+expr_manager.cpp: expr_manager_template.cpp mkexpr @top_builddir@/src/expr/.subdirs $(if $(COVERAGE_ON), @abs_top_srcdir@, @top_srcdir@)/src/theory/*/kinds
 	$(AM_V_at)chmod +x @srcdir@/mkexpr
 	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
 	$(AM_V_GEN)(@srcdir@/mkexpr \
@@ -183,7 +194,7 @@ expr_manager.cpp: expr_manager_template.cpp mkexpr @top_builddir@/src/expr/.subd
 		`cat @top_builddir@/src/expr/.subdirs` \
 	> $@) || (rm -f $@ && exit 1)
 
-type_checker.cpp: type_checker_template.cpp mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+type_checker.cpp: type_checker_template.cpp mkexpr @top_builddir@/src/expr/.subdirs $(if $(COVERAGE_ON), @abs_top_srcdir@, @top_srcdir@)/src/theory/*/kinds
 	$(AM_V_at)chmod +x @srcdir@/mkexpr
 	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
 	$(AM_V_GEN)(@srcdir@/mkexpr \
diff --git a/src/expr/Makefile.in b/src/expr/Makefile.in
index d2b68d9..1dab9cb 100644
--- a/src/expr/Makefile.in
+++ b/src/expr/Makefile.in
@@ -14,7 +14,14 @@
 
 @SET_MAKE@
 
-VPATH = @srcdir@
+# if coverage is enabled:
+# COVERAGE_ON = yes from configure.ac
+# Using an inline conditional function to choose between absolute and
+# relative paths for options files
+# lcov does not support relative paths and src/options and src/expr
+# in particular were breaking it
+# Building with coverage will cause portability issues in some cases
+
 am__is_gnu_make = { \
   if test -z '$(MAKELEVEL)'; then \
     false; \
@@ -208,6 +215,7 @@ ETAGS = etags
 CTAGS = ctags
 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+VPATH = $(if $(COVERAGE_ON), $(realpath @srcdir@), @srcdir@)
 ABC_HOME = @ABC_HOME@
 ABC_LDFLAGS = @ABC_LDFLAGS@
 ABC_LIBS = @ABC_LIBS@
@@ -243,6 +251,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -461,7 +470,8 @@ top_srcdir = @top_srcdir@
 zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
 AM_CPPFLAGS = \
 	-D__BUILDING_CVC4LIB \
-	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..
+	$(if $(COVERAGE_ON), -I at abs_builddir@/.. -I at abs_srcdir@/../include -I at abs_srcdir@/.., \
+	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..)
 
 AM_CXXFLAGS = -Wall -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
 noinst_LTLIBRARIES = libexpr.la
@@ -898,13 +908,13 @@ uninstall-am:
 $(top_builddir)/src/expr/.subdirs: $(top_srcdir)/src/Makefile.theories  @top_srcdir@/src/mksubdirs
 	$(AM_V_at)test -d $(top_builddir)/src/expr || mkdir $(top_builddir)/src/expr
 	$(AM_V_at)chmod +x @top_srcdir@/src/mksubdirs
-	$(AM_V_at)( @top_srcdir@/src/mksubdirs "$(top_srcdir)" ) > $(top_builddir)/src/expr/.subdirs.tmp
+	$(AM_V_at)( @top_srcdir@/src/mksubdirs $(if $(COVERAGE_ON), "$(abs_top_srcdir)", "$(top_srcdir)")) > $(top_builddir)/src/expr/.subdirs.tmp
 	@if ! diff -q $(top_builddir)/src/expr/.subdirs $(top_builddir)/src/expr/.subdirs.tmp &>/dev/null; then \
 		echo "  GEN   " $@; \
 		$(am__mv) $(top_builddir)/src/expr/.subdirs.tmp $(top_builddir)/src/expr/.subdirs; \
 	fi
 
-kind.h: kind_template.h mkkind @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+kind.h: kind_template.h mkkind @top_builddir@/src/expr/.subdirs $(if $(COVERAGE_ON), @abs_top_srcdir@, @top_srcdir@)/src/theory/*/kinds
 	$(AM_V_at)chmod +x @srcdir@/mkkind
 	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
 	$(AM_V_GEN)(@srcdir@/mkkind \
@@ -912,7 +922,7 @@ kind.h: kind_template.h mkkind @top_builddir@/src/expr/.subdirs @top_srcdir@/src
 		`cat @top_builddir@/src/expr/.subdirs` \
 	> $@) || (rm -f $@ && exit 1)
 
-metakind.h: metakind_template.h mkmetakind @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+metakind.h: metakind_template.h mkmetakind @top_builddir@/src/expr/.subdirs $(if $(COVERAGE_ON), @abs_top_srcdir@, @top_srcdir@)/src/theory/*/kinds
 	$(AM_V_at)chmod +x @srcdir@/mkmetakind
 	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
 	$(AM_V_GEN)(@srcdir@/mkmetakind \
@@ -920,7 +930,7 @@ metakind.h: metakind_template.h mkmetakind @top_builddir@/src/expr/.subdirs @top
 		`cat @top_builddir@/src/expr/.subdirs` \
 	> $@) || (rm -f $@ && exit 1)
 
-type_properties.h: type_properties_template.h mkkind @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+type_properties.h: type_properties_template.h mkkind @top_builddir@/src/expr/.subdirs $(if $(COVERAGE_ON), @abs_top_srcdir@, @top_srcdir@)/src/theory/*/kinds
 	$(AM_V_at)chmod +x @srcdir@/mkkind
 	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
 	$(AM_V_GEN)(@srcdir@/mkkind \
@@ -928,7 +938,7 @@ type_properties.h: type_properties_template.h mkkind @top_builddir@/src/expr/.su
 		`cat @top_builddir@/src/expr/.subdirs` \
 	> $@) || (rm -f $@ && exit 1)
 
-expr.h: expr_template.h mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+expr.h: expr_template.h mkexpr @top_builddir@/src/expr/.subdirs $(if $(COVERAGE_ON), @abs_top_srcdir@, @top_srcdir@)/src/theory/*/kinds
 	$(AM_V_at)chmod +x @srcdir@/mkexpr
 	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
 	$(AM_V_GEN)(@srcdir@/mkexpr \
@@ -936,7 +946,7 @@ expr.h: expr_template.h mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src
 		`cat @top_builddir@/src/expr/.subdirs` \
 	> $@) || (rm -f $@ && exit 1)
 
-expr.cpp: expr_template.cpp mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+expr.cpp: expr_template.cpp mkexpr @top_builddir@/src/expr/.subdirs $(if $(COVERAGE_ON), @abs_top_srcdir@, @top_srcdir@)/src/theory/*/kinds
 	$(AM_V_at)chmod +x @srcdir@/mkexpr
 	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
 	$(AM_V_GEN)(@srcdir@/mkexpr \
@@ -944,7 +954,7 @@ expr.cpp: expr_template.cpp mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@
 		`cat @top_builddir@/src/expr/.subdirs` \
 	> $@) || (rm -f $@ && exit 1)
 
-expr_manager.h: expr_manager_template.h mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+expr_manager.h: expr_manager_template.h mkexpr @top_builddir@/src/expr/.subdirs $(if $(COVERAGE_ON), @abs_top_srcdir@, @top_srcdir@)/src/theory/*/kinds
 	$(AM_V_at)chmod +x @srcdir@/mkexpr
 	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
 	$(AM_V_GEN)(@srcdir@/mkexpr \
@@ -952,7 +962,7 @@ expr_manager.h: expr_manager_template.h mkexpr @top_builddir@/src/expr/.subdirs
 		`cat @top_builddir@/src/expr/.subdirs` \
 	> $@) || (rm -f $@ && exit 1)
 
-expr_manager.cpp: expr_manager_template.cpp mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+expr_manager.cpp: expr_manager_template.cpp mkexpr @top_builddir@/src/expr/.subdirs $(if $(COVERAGE_ON), @abs_top_srcdir@, @top_srcdir@)/src/theory/*/kinds
 	$(AM_V_at)chmod +x @srcdir@/mkexpr
 	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
 	$(AM_V_GEN)(@srcdir@/mkexpr \
@@ -960,7 +970,7 @@ expr_manager.cpp: expr_manager_template.cpp mkexpr @top_builddir@/src/expr/.subd
 		`cat @top_builddir@/src/expr/.subdirs` \
 	> $@) || (rm -f $@ && exit 1)
 
-type_checker.cpp: type_checker_template.cpp mkexpr @top_builddir@/src/expr/.subdirs @top_srcdir@/src/theory/*/kinds
+type_checker.cpp: type_checker_template.cpp mkexpr @top_builddir@/src/expr/.subdirs $(if $(COVERAGE_ON), @abs_top_srcdir@, @top_srcdir@)/src/theory/*/kinds
 	$(AM_V_at)chmod +x @srcdir@/mkexpr
 	$(AM_V_at)$(am__mv) $@ $@~ 2>/dev/null || true
 	$(AM_V_GEN)(@srcdir@/mkexpr \
diff --git a/src/expr/array.h b/src/expr/array.h
index cf050e0..98abfca 100644
--- a/src/expr/array.h
+++ b/src/expr/array.h
@@ -2,9 +2,9 @@
 /*! \file array.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/array_store_all.cpp b/src/expr/array_store_all.cpp
index 05710a6..4bad04f 100644
--- a/src/expr/array_store_all.cpp
+++ b/src/expr/array_store_all.cpp
@@ -2,9 +2,9 @@
 /*! \file array_store_all.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/array_store_all.h b/src/expr/array_store_all.h
index 0a9c834..c8474df 100644
--- a/src/expr/array_store_all.h
+++ b/src/expr/array_store_all.h
@@ -2,9 +2,9 @@
 /*! \file array_store_all.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/ascription_type.h b/src/expr/ascription_type.h
index 46d2871..ce6401c 100644
--- a/src/expr/ascription_type.h
+++ b/src/expr/ascription_type.h
@@ -2,9 +2,9 @@
 /*! \file ascription_type.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/attribute.cpp b/src/expr/attribute.cpp
index 3cf2429..2f93873 100644
--- a/src/expr/attribute.cpp
+++ b/src/expr/attribute.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Morgan Deters, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/attribute.h b/src/expr/attribute.h
index 13bedea..b5897ac 100644
--- a/src/expr/attribute.h
+++ b/src/expr/attribute.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Tim King, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/attribute_internals.h b/src/expr/attribute_internals.h
index 60d2069..8617399 100644
--- a/src/expr/attribute_internals.h
+++ b/src/expr/attribute_internals.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Tim King, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/attribute_unique_id.h b/src/expr/attribute_unique_id.h
index 4875bdf..3c09ba4 100644
--- a/src/expr/attribute_unique_id.h
+++ b/src/expr/attribute_unique_id.h
@@ -2,9 +2,9 @@
 /*! \file attribute_unique_id.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/chain.h b/src/expr/chain.h
index 703aa76..7558359 100644
--- a/src/expr/chain.h
+++ b/src/expr/chain.h
@@ -2,9 +2,9 @@
 /*! \file chain.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/convenience_node_builders.h b/src/expr/convenience_node_builders.h
index 611a88e..48f45e6 100644
--- a/src/expr/convenience_node_builders.h
+++ b/src/expr/convenience_node_builders.h
@@ -2,9 +2,9 @@
 /*! \file convenience_node_builders.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/datatype.cpp b/src/expr/datatype.cpp
index 02edab5..39bdddb 100644
--- a/src/expr/datatype.cpp
+++ b/src/expr/datatype.cpp
@@ -2,9 +2,9 @@
 /*! \file datatype.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Andrew Reynolds, Tim King
+ **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -145,6 +145,23 @@ void Datatype::resolve(ExprManager* em,
     }
     d_record = new Record(fields);
   }
+  
+  //make the sygus evaluation function
+  if( isSygus() ){
+    PrettyCheckArgument(d_params.empty(), this, "sygus types cannot be parametric");
+    NodeManager* nm = NodeManager::fromExprManager(em);
+    std::string name = "eval_" + getName();
+    std::vector<TypeNode> evalType;
+    evalType.push_back(TypeNode::fromType(d_self));
+    if( !d_sygus_bvl.isNull() ){
+      for(size_t j = 0; j < d_sygus_bvl.getNumChildren(); ++j) {
+        evalType.push_back(TypeNode::fromType(d_sygus_bvl[j].getType()));
+      }
+    }
+    evalType.push_back(TypeNode::fromType(d_sygus_type));
+    TypeNode eval_func_type = nm->mkFunctionType(evalType);
+    d_sygus_eval = nm->mkSkolem(name, eval_func_type, "sygus evaluation function").toExpr();    
+  }  
 }
 
 void Datatype::addConstructor(const DatatypeConstructor& c) {
@@ -156,7 +173,7 @@ void Datatype::addConstructor(const DatatypeConstructor& c) {
 
 void Datatype::setSygus( Type st, Expr bvl, bool allow_const, bool allow_all ){
   PrettyCheckArgument(!d_resolved, this,
-                "cannot set sygus type to a finalized Datatype");
+                      "cannot set sygus type to a finalized Datatype");        
   d_sygus_type = st;
   d_sygus_bvl = bvl;
   d_sygus_allow_const = allow_const || allow_all;
@@ -394,8 +411,7 @@ bool Datatype::computeWellFounded( std::vector< Type >& processing ) const throw
 Expr Datatype::mkGroundTerm( Type t ) const throw(IllegalArgumentException) {
   PrettyCheckArgument(isResolved(), this, "this datatype is not yet resolved");
   ExprManagerScope ems(d_self);
-
-
+  Debug("datatypes") << "mkGroundTerm of type " << t << std::endl;
   // is this already in the cache ?
   std::map< Type, Expr >::iterator it = d_ground_term.find( t );
   if( it != d_ground_term.end() ){
@@ -437,8 +453,8 @@ Expr getSubtermWithType( Expr e, Type t, bool isTop ){
 }
 
 Expr Datatype::computeGroundTerm( Type t, std::vector< Type >& processing ) const throw(IllegalArgumentException) {
-  if( std::find( processing.begin(), processing.end(), d_self )==processing.end() ){
-    processing.push_back( d_self );
+  if( std::find( processing.begin(), processing.end(), t )==processing.end() ){
+    processing.push_back( t );
     for( unsigned r=0; r<2; r++ ){
       for(const_iterator i = begin(), i_end = end(); i != i_end; ++i) {
         //do nullary constructors first
@@ -462,7 +478,7 @@ Expr Datatype::computeGroundTerm( Type t, std::vector< Type >& processing ) cons
     }
     processing.pop_back();
   }else{
-    Debug("datatypes") << "...already processing " << t << std::endl;
+    Debug("datatypes") << "...already processing " << t << " " << d_self << std::endl;
   }
   return Expr();
 }
@@ -585,7 +601,11 @@ bool Datatype::getSygusAllowConst() const {
 }
 
 bool Datatype::getSygusAllowAll() const {
-  return d_sygus_allow_const;
+  return d_sygus_allow_all;
+}
+
+Expr Datatype::getSygusEvaluationFunc() const {
+  return d_sygus_eval;
 }
 
 bool Datatype::involvesExternalType() const{
diff --git a/src/expr/datatype.h b/src/expr/datatype.h
index 5a09730..456e70f 100644
--- a/src/expr/datatype.h
+++ b/src/expr/datatype.h
@@ -2,9 +2,9 @@
 /*! \file datatype.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Andrew Reynolds, Tim King
+ **   Morgan Deters, Andrew Reynolds, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -491,6 +491,7 @@ private:
   Expr d_sygus_bvl;
   bool d_sygus_allow_const;
   bool d_sygus_allow_all;
+  Expr d_sygus_eval;
 
   // "mutable" because computing the cardinality can be expensive,
   // and so it's computed just once, on demand---this is the cache
@@ -744,6 +745,8 @@ public:
   bool getSygusAllowConst() const;
   /** does it allow constants */
   bool getSygusAllowAll() const;
+  /** get the evaluation function for this datatype for the deep embedding */
+  Expr getSygusEvaluationFunc() const;
 
   /**
    * Get whether this datatype involves an external type.  If so,
diff --git a/src/expr/emptyset.cpp b/src/expr/emptyset.cpp
index 23e6df7..42560fa 100644
--- a/src/expr/emptyset.cpp
+++ b/src/expr/emptyset.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Kshitij Bansal, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/emptyset.h b/src/expr/emptyset.h
index a606951..8cb2bbf 100644
--- a/src/expr/emptyset.h
+++ b/src/expr/emptyset.h
@@ -2,9 +2,9 @@
 /*! \file emptyset.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Kshitij Bansal, Morgan Deters
+ **   Kshitij Bansal, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/expr_iomanip.cpp b/src/expr/expr_iomanip.cpp
index 1d6df2a..abb401e 100644
--- a/src/expr/expr_iomanip.cpp
+++ b/src/expr/expr_iomanip.cpp
@@ -2,9 +2,9 @@
 /*! \file expr_iomanip.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/expr_iomanip.h b/src/expr/expr_iomanip.h
index 94e2b46..0213552 100644
--- a/src/expr/expr_iomanip.h
+++ b/src/expr/expr_iomanip.h
@@ -2,9 +2,9 @@
 /*! \file expr_iomanip.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/expr_manager_scope.h b/src/expr/expr_manager_scope.h
index cd4c274..58a8612 100644
--- a/src/expr/expr_manager_scope.h
+++ b/src/expr/expr_manager_scope.h
@@ -2,9 +2,9 @@
 /*! \file expr_manager_scope.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Tim King
+ **   Dejan Jovanovic, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/expr_manager_template.cpp b/src/expr/expr_manager_template.cpp
index 470a6ee..735d531 100644
--- a/src/expr/expr_manager_template.cpp
+++ b/src/expr/expr_manager_template.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Tim King, Christopher L. Conway
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -946,9 +946,9 @@ Expr ExprManager::mkBoundVar(Type type) {
   return Expr(this, d_nodeManager->mkBoundVarPtr(*type.d_typeNode));
 }
 
-Expr ExprManager::mkUniqueVar(Type type, Kind k){
+Expr ExprManager::mkNullaryOperator(Type type, Kind k){
   NodeManagerScope nms(d_nodeManager);
-  Node n = d_nodeManager->mkUniqueVar(*type.d_typeNode, k); 
+  Node n = d_nodeManager->mkNullaryOperator(*type.d_typeNode, k); 
   return n.toExpr();
 }
 
@@ -1039,6 +1039,10 @@ SExpr ExprManager::getStatistic(const std::string& name) const throw() {
   return d_nodeManager->getStatisticsRegistry()->getStatistic(name);
 }
 
+void ExprManager::safeFlushStatistics(int fd) const {
+  d_nodeManager->getStatisticsRegistry()->safeFlushInformation(fd);
+}
+
 namespace expr {
 
 Node exportInternal(TNode n, ExprManager* from, ExprManager* to, ExprManagerMapCollection& vmap);
diff --git a/src/expr/expr_manager_template.h b/src/expr/expr_manager_template.h
index ed9247e..07dc88f 100644
--- a/src/expr/expr_manager_template.h
+++ b/src/expr/expr_manager_template.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Dejan Jovanovic, Christopher L. Conway
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -545,11 +545,11 @@ public:
    * @param type the type for the new bound variable
    */
   Expr mkBoundVar(Type type);
-  
+
   /**
    * Create unique variable of type 
    */
-  Expr mkUniqueVar( Type type, Kind k);
+  Expr mkNullaryOperator( Type type, Kind k);
 
   /** Get a reference to the statistics registry for this ExprManager */
   Statistics getStatistics() const throw();
@@ -557,6 +557,12 @@ public:
   /** Get a reference to the statistics registry for this ExprManager */
   SExpr getStatistic(const std::string& name) const throw();
 
+  /**
+   * Flushes statistics for this ExprManager to a file descriptor. Safe to use
+   * in a signal handler.
+   */
+  void safeFlushStatistics(int fd) const;
+
   /** Export an expr to a different ExprManager */
   //static Expr exportExpr(const Expr& e, ExprManager* em);
   /** Export a type to a different ExprManager */
diff --git a/src/expr/expr_stream.h b/src/expr/expr_stream.h
index d3dbd29..5a17711 100644
--- a/src/expr/expr_stream.h
+++ b/src/expr/expr_stream.h
@@ -2,9 +2,9 @@
 /*! \file expr_stream.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/expr_template.cpp b/src/expr/expr_template.cpp
index dad437b..cee1547 100644
--- a/src/expr/expr_template.cpp
+++ b/src/expr/expr_template.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Kshitij Bansal, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -82,16 +82,22 @@ Expr TypeCheckingException::getExpression() const throw() {
 Expr::Expr() :
   d_node(new Node),
   d_exprManager(NULL) {
+  // We do not need to wrap this in an ExprManagerScope as `new Node` is backed
+  // by NodeValue::null which is a static outside of a NodeManager.
 }
 
 Expr::Expr(ExprManager* em, Node* node) :
   d_node(node),
   d_exprManager(em) {
+  // We do not need to wrap this in an ExprManagerScope as this only initializes
+  // pointers
 }
 
 Expr::Expr(const Expr& e) :
-  d_node(new Node(*e.d_node)),
+  d_node(NULL),
   d_exprManager(e.d_exprManager) {
+  ExprManagerScope ems(*this);
+  d_node = new Node(*e.d_node);
 }
 
 Expr::~Expr() {
@@ -131,7 +137,12 @@ public:
         return to->mkConst(::CVC4::EmptySet(type));
       }
       return exportConstant(n, NodeManager::fromExprManager(to), vmap);
-    } else if(n.isVar()) {
+    } else if(n.getMetaKind() == metakind::NULLARY_OPERATOR ){
+      Expr from_e(from, new Node(n));
+      Type type = from->exportType(from_e.getType(), to, vmap);
+      NodeManagerScope nullScope(NULL);
+      return to->mkNullaryOperator(type, n.getKind()); // FIXME thread safety
+    } else if(n.getMetaKind() == metakind::VARIABLE) {
       Expr from_e(from, new Node(n));
       Expr& to_e = vmap.d_typeMap[from_e];
       if(! to_e.isNull()) {
diff --git a/src/expr/expr_template.h b/src/expr/expr_template.h
index 5c3f89e..57b4ff9 100644
--- a/src/expr/expr_template.h
+++ b/src/expr/expr_template.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Dejan Jovanovic, Christopher L. Conway
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/kind_map.h b/src/expr/kind_map.h
index 6858f8a..a7ee732 100644
--- a/src/expr/kind_map.h
+++ b/src/expr/kind_map.h
@@ -2,9 +2,9 @@
 /*! \file kind_map.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Tim King
+ **   Dejan Jovanovic, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/kind_template.h b/src/expr/kind_template.h
index 440d6b5..d8c96ff 100644
--- a/src/expr/kind_template.h
+++ b/src/expr/kind_template.h
@@ -2,9 +2,9 @@
 /*! \file kind_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Dejan Jovanovic, Tim King
+ **   Morgan Deters, Dejan Jovanovic, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/matcher.h b/src/expr/matcher.h
index 308ad06..5c5adb6 100644
--- a/src/expr/matcher.h
+++ b/src/expr/matcher.h
@@ -2,9 +2,9 @@
 /*! \file matcher.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Andrew Reynolds, Tim King
+ **   Morgan Deters, Andrew Reynolds, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/metakind_template.h b/src/expr/metakind_template.h
index 1c03cf4..b2e88c1 100644
--- a/src/expr/metakind_template.h
+++ b/src/expr/metakind_template.h
@@ -2,9 +2,9 @@
 /*! \file metakind_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -98,7 +98,8 @@ enum MetaKind_t {
   VARIABLE, /**< special node kinds: no operator */
   OPERATOR, /**< operators that get "inlined" */
   PARAMETERIZED, /**< parameterized ops (like APPLYs) that carry extra data */
-  CONSTANT /**< constants */
+  CONSTANT, /**< constants */
+  NULLARY_OPERATOR /**< nullary operator */
 };/* enum MetaKind_t */
 
 }/* CVC4::kind::metakind namespace */
@@ -338,7 +339,7 @@ ${metakind_operatorKinds}
 
 }/* CVC4::kind namespace */
 
-#line 342 "${template}"
+#line 343 "${template}"
 
 namespace theory {
 
diff --git a/src/expr/mkexpr b/src/expr/mkexpr
index 4717b61..60ee758 100755
--- a/src/expr/mkexpr
+++ b/src/expr/mkexpr
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
 #
 # mkexpr
 # Morgan Deters <mdeters at cs.nyu.edu> for CVC4
@@ -248,6 +248,12 @@ template <> $2 const & Expr::getConst() const {
   case $1: return to->mkConst(n.getConst< $2 >());"
 }
 
+function nullaryoperator {
+  # nullaryoperator K ["comment"]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
 function check_theory_seen {
   if $seen_endtheory; then
     echo "$kf:$lineno: error: command after \"endtheory\" declaration (endtheory has to be last)" >&2
diff --git a/src/expr/mkkind b/src/expr/mkkind
index d54aa3a..2b1901f 100755
--- a/src/expr/mkkind
+++ b/src/expr/mkkind
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
 #
 # mkkind
 # Morgan Deters <mdeters at cs.nyu.edu> for CVC4
@@ -239,6 +239,15 @@ function constant {
   register_kind "$1" 0 "$5"
 }
 
+function nullaryoperator {
+  # nullaryoperator K ["comment"]
+
+  lineno=${BASH_LINENO[0]}
+
+  check_theory_seen
+  register_kind "$1" 0 "$2"
+}
+
 function register_sort {
   id=$1
   cardinality=$2
diff --git a/src/expr/mkmetakind b/src/expr/mkmetakind
index 5f003dc..19e6e22 100755
--- a/src/expr/mkmetakind
+++ b/src/expr/mkmetakind
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
 #
 # mkmetakind
 # Morgan Deters <mdeters at cs.nyu.edu> for CVC4
@@ -302,6 +302,15 @@ struct ConstantMapReverse< ::CVC4::kind::$1 > {
 "
 }
 
+function nullaryoperator {
+  # nullaryoperator K ["comment"]
+
+  lineno=${BASH_LINENO[0]}
+
+  check_theory_seen
+  register_metakind NULLARY_OPERATOR "$1" 0
+}
+
 function registerOperatorToKind {
   operatorKind=$1
   applyKind=$2
diff --git a/src/expr/node.cpp b/src/expr/node.cpp
index 793b6af..262085a 100644
--- a/src/expr/node.cpp
+++ b/src/expr/node.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Tim King, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/node.h b/src/expr/node.h
index 6dbb5aa..69bb98f 100644
--- a/src/expr/node.h
+++ b/src/expr/node.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Dejan Jovanovic, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -457,14 +457,21 @@ public:
   bool isConst() const;
 
   /**
-   * Returns true if this node represents a constant
-   * @return true if const
+   * Returns true if this node represents a variable
    */
   inline bool isVar() const {
     assertTNodeNotExpired();
     return getMetaKind() == kind::metakind::VARIABLE;
   }
-
+  
+  /**
+   * Returns true if this node represents a nullary operator
+   */
+  inline bool isNullaryOp() const {
+    assertTNodeNotExpired();
+    return getMetaKind() == kind::metakind::NULLARY_OPERATOR;
+  }
+  
   inline bool isClosure() const {
     assertTNodeNotExpired();
     return getKind() == kind::LAMBDA ||
@@ -1253,6 +1260,9 @@ NodeTemplate<true> NodeTemplate<ref_count>::getOperator() const {
   case kind::metakind::CONSTANT:
     IllegalArgument(*this, "getOperator() called on Node with CONSTANT-kinded kind");
 
+  case kind::metakind::NULLARY_OPERATOR:
+    IllegalArgument(*this, "getOperator() called on Node with NULLARY_OPERATOR-kinded kind");
+
   default:
     Unhandled(mk);
   }
diff --git a/src/expr/node_builder.h b/src/expr/node_builder.h
index d92524a..8d8fba4 100644
--- a/src/expr/node_builder.h
+++ b/src/expr/node_builder.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Dejan Jovanovic, Christopher L. Conway
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -933,7 +933,7 @@ expr::NodeValue* NodeBuilder<nchild_thresh>::constructNV() {
   // file comments at the top of this file.
 
   // Case 0: If a VARIABLE
-  if(getMetaKind() == kind::metakind::VARIABLE) {
+  if(getMetaKind() == kind::metakind::VARIABLE || getMetaKind() == kind::metakind::NULLARY_OPERATOR) {
     /* 0. If a VARIABLE, treat similarly to 1(b), except that we know
      * there are no children (no reference counts to reason about),
      * and we don't keep VARIABLE-kinded Nodes in the NodeManager
@@ -1123,7 +1123,7 @@ expr::NodeValue* NodeBuilder<nchild_thresh>::constructNV() const {
   // file comments at the top of this file.
 
   // Case 0: If a VARIABLE
-  if(getMetaKind() == kind::metakind::VARIABLE) {
+  if(getMetaKind() == kind::metakind::VARIABLE || getMetaKind() == kind::metakind::NULLARY_OPERATOR) {
     /* 0. If a VARIABLE, treat similarly to 1(b), except that we know
      * there are no children (no reference counts to reason about),
      * and we don't keep VARIABLE-kinded Nodes in the NodeManager
@@ -1336,6 +1336,7 @@ inline void NodeBuilder<nchild_thresh>::maybeCheckType(const TNode n) const
   if( d_nm->getOptions()[options::earlyTypeChecking] ) {
     kind::MetaKind mk = n.getMetaKind();
     if( mk != kind::metakind::VARIABLE
+        && mk != kind::metakind::NULLARY_OPERATOR
         && mk != kind::metakind::CONSTANT ) {
       d_nm->getType(n, true);
     }
diff --git a/src/expr/node_manager.cpp b/src/expr/node_manager.cpp
index ebf78f5..b746e0d 100644
--- a/src/expr/node_manager.cpp
+++ b/src/expr/node_manager.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Tim King, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -315,7 +315,7 @@ void NodeManager::reclaimZombies() {
 
       // remove from the pool
       kind::MetaKind mk = nv->getMetaKind();
-      if(mk != kind::metakind::VARIABLE) {
+      if(mk != kind::metakind::VARIABLE && mk != kind::metakind::NULLARY_OPERATOR) {
         poolRemove(nv);
       }
 
@@ -412,8 +412,9 @@ TypeNode NodeManager::getType(TNode n, bool check)
   bool hasType = getAttribute(n, TypeAttr(), typeNode);
   bool needsCheck = check && !getAttribute(n, TypeCheckedAttr());
 
-  Debug("getType") << "getting type for " << n << endl;
 
+  Debug("getType") << this << " getting type for " << &n << " " << n << ", check=" << check << ", needsCheck = " << needsCheck << ", hasType = " << hasType << endl;
+  
   if(needsCheck && !(*d_options)[options::earlyTypeChecking]) {
     /* Iterate and compute the children bottom up. This avoids stack
        overflows in computeType() when the Node graph is really deep,
@@ -437,6 +438,7 @@ TypeNode NodeManager::getType(TNode n, bool check)
       }
 
       if( readyToCompute ) {
+        Assert( check || m.getMetaKind()!=kind::metakind::NULLARY_OPERATOR );
         /* All the children have types, time to compute */
         typeNode = TypeChecker::computeType(this, m, check);
         worklist.pop();
@@ -448,6 +450,7 @@ TypeNode NodeManager::getType(TNode n, bool check)
   } else if( !hasType || needsCheck ) {
     /* We can compute the type top-down, without worrying about
        deep recursion. */
+    Assert( check || n.getMetaKind()!=kind::metakind::NULLARY_OPERATOR );
     typeNode = TypeChecker::computeType(this, n, check);
   }
 
@@ -456,7 +459,7 @@ TypeNode NodeManager::getType(TNode n, bool check)
   /* The check should have happened, if we asked for it. */
   Assert( !check || getAttribute(n, TypeCheckedAttr()) );
 
-  Debug("getType") << "type of " << n << " is " << typeNode << endl;
+  Debug("getType") << "type of " << &n << " " <<  n << " is " << typeNode << endl;
   return typeNode;
 }
 
@@ -787,14 +790,14 @@ Node NodeManager::mkBooleanTermVariable() {
   return n;
 }
 
-Node NodeManager::mkUniqueVar(const TypeNode& type, Kind k) {
+Node NodeManager::mkNullaryOperator(const TypeNode& type, Kind k) {
   std::map< TypeNode, Node >::iterator it = d_unique_vars[k].find( type );
   if( it==d_unique_vars[k].end() ){
-    Node n = NodeBuilder<0>(this, k);
-    n.setAttribute(TypeAttr(), type);
-    n.setAttribute(TypeCheckedAttr(), true);
+    Node n = NodeBuilder<0>(this, k).constructNode();
+    setAttribute(n, TypeAttr(), type);
+    //setAttribute(n, TypeCheckedAttr(), true);
     d_unique_vars[k][type] = n;
-    Assert( n.getMetaKind() == kind::metakind::VARIABLE );
+    Assert( n.getMetaKind() == kind::metakind::NULLARY_OPERATOR );
     return n;
   }else{
     return it->second;
diff --git a/src/expr/node_manager.h b/src/expr/node_manager.h
index d2b45a6..1d11508 100644
--- a/src/expr/node_manager.h
+++ b/src/expr/node_manager.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Christopher L. Conway, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -536,7 +536,7 @@ public:
   Node mkAbstractValue(const TypeNode& type);
   
   /** make unique (per Type,Kind) variable. */
-  Node mkUniqueVar(const TypeNode& type, Kind k);
+  Node mkNullaryOperator(const TypeNode& type, Kind k);
 
   /**
    * Create a constant of type T.  It will have the appropriate
@@ -1240,6 +1240,7 @@ inline bool NodeManager::hasOperator(Kind k) {
 
   case kind::metakind::INVALID:
   case kind::metakind::VARIABLE:
+  case kind::metakind::NULLARY_OPERATOR:
     return false;
 
   case kind::metakind::OPERATOR:
diff --git a/src/expr/node_manager_attributes.h b/src/expr/node_manager_attributes.h
index 20e1c6c..06cdd25 100644
--- a/src/expr/node_manager_attributes.h
+++ b/src/expr/node_manager_attributes.h
@@ -2,9 +2,9 @@
 /*! \file node_manager_attributes.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/node_manager_listeners.cpp b/src/expr/node_manager_listeners.cpp
index 3915aa9..4724e5d 100644
--- a/src/expr/node_manager_listeners.cpp
+++ b/src/expr/node_manager_listeners.cpp
@@ -2,9 +2,9 @@
 /*! \file node_manager_listeners.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/node_manager_listeners.h b/src/expr/node_manager_listeners.h
index caff3a5..bdfe5a4 100644
--- a/src/expr/node_manager_listeners.h
+++ b/src/expr/node_manager_listeners.h
@@ -2,9 +2,9 @@
 /*! \file node_manager_listeners.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/node_self_iterator.h b/src/expr/node_self_iterator.h
index 9d37f6e..8cccd9b 100644
--- a/src/expr/node_self_iterator.h
+++ b/src/expr/node_self_iterator.h
@@ -2,9 +2,9 @@
 /*! \file node_self_iterator.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/node_value.cpp b/src/expr/node_value.cpp
index 40649ef..3dd1fe8 100644
--- a/src/expr/node_value.cpp
+++ b/src/expr/node_value.cpp
@@ -2,9 +2,9 @@
 /*! \file node_value.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Clark Barrett
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -60,7 +60,7 @@ void NodeValue::printAst(std::ostream& out, int ind) const {
   indent(out, ind);
   out << '(';
   out << getKind();
-  if (getMetaKind() == kind::metakind::VARIABLE) {
+  if (getMetaKind() == kind::metakind::VARIABLE || getMetaKind() == kind::metakind::NULLARY_OPERATOR ) {
     out << ' ' << getId();
   } else if (getMetaKind() == kind::metakind::CONSTANT) {
     out << ' ';
diff --git a/src/expr/node_value.h b/src/expr/node_value.h
index 79ce8cb..5debfa8 100644
--- a/src/expr/node_value.h
+++ b/src/expr/node_value.h
@@ -2,9 +2,9 @@
 /*! \file node_value.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Dejan Jovanovic, Tim King
+ **   Morgan Deters, Tim King, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/pickle_data.cpp b/src/expr/pickle_data.cpp
index 2050d2d..00143d7 100644
--- a/src/expr/pickle_data.cpp
+++ b/src/expr/pickle_data.cpp
@@ -2,9 +2,9 @@
 /*! \file pickle_data.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/pickle_data.h b/src/expr/pickle_data.h
index 6c28371..ff355de 100644
--- a/src/expr/pickle_data.h
+++ b/src/expr/pickle_data.h
@@ -2,9 +2,9 @@
 /*! \file pickle_data.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/pickler.cpp b/src/expr/pickler.cpp
index ab8037a..c4bb633 100644
--- a/src/expr/pickler.cpp
+++ b/src/expr/pickler.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Kshitij Bansal, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/pickler.h b/src/expr/pickler.h
index abd9277..f9a3d07 100644
--- a/src/expr/pickler.h
+++ b/src/expr/pickler.h
@@ -2,9 +2,9 @@
 /*! \file pickler.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Kshitij Bansal
+ **   Morgan Deters, Paul Meng, Kshitij Bansal
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/predicate.cpp b/src/expr/predicate.cpp
index 52b5801..eaf5871 100644
--- a/src/expr/predicate.cpp
+++ b/src/expr/predicate.cpp
@@ -2,9 +2,9 @@
 /*! \file predicate.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/predicate.h b/src/expr/predicate.h
index a7003fb..99e589f 100644
--- a/src/expr/predicate.h
+++ b/src/expr/predicate.h
@@ -2,9 +2,9 @@
 /*! \file predicate.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/record.cpp b/src/expr/record.cpp
index 0d2fd65..4b2d50e 100644
--- a/src/expr/record.cpp
+++ b/src/expr/record.cpp
@@ -2,9 +2,9 @@
 /*! \file record.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/record.h b/src/expr/record.h
index 84feb7e..6857561 100644
--- a/src/expr/record.h
+++ b/src/expr/record.h
@@ -2,9 +2,9 @@
 /*! \file record.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/symbol_table.cpp b/src/expr/symbol_table.cpp
index 185006e..864ade4 100644
--- a/src/expr/symbol_table.cpp
+++ b/src/expr/symbol_table.cpp
@@ -2,9 +2,9 @@
 /*! \file symbol_table.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Christopher L. Conway, Tim King
+ **   Morgan Deters, Christopher L. Conway, Francois Bobot
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/symbol_table.h b/src/expr/symbol_table.h
index efd0f1a..cefa65d 100644
--- a/src/expr/symbol_table.h
+++ b/src/expr/symbol_table.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Christopher L. Conway, Francois Bobot
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/type.cpp b/src/expr/type.cpp
index 5f62317..bb3ce0f 100644
--- a/src/expr/type.cpp
+++ b/src/expr/type.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Dejan Jovanovic, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -37,24 +37,25 @@ Type Type::makeType(const TypeNode& typeNode) const {
   return Type(d_nodeManager, new TypeNode(typeNode));
 }
 
-Type::Type(NodeManager* nm, TypeNode* node) :
-  d_typeNode(node),
-  d_nodeManager(nm) {
+Type::Type(NodeManager* nm, TypeNode* node)
+    : d_typeNode(node), d_nodeManager(nm) {
+  // This does not require a NodeManagerScope as this is restricted to be an
+  // internal only pointer initialization call.
 }
 
-Type::~Type() {
-  NodeManagerScope nms(d_nodeManager);
-  delete d_typeNode;
+Type::Type() : d_typeNode(new TypeNode), d_nodeManager(NULL) {
+  // This does not require a NodeManagerScope as `new TypeNode` is backed by a
+  // static expr::NodeValue::null().
 }
 
-Type::Type() :
-  d_typeNode(new TypeNode),
-  d_nodeManager(NULL) {
+Type::Type(const Type& t) : d_typeNode(NULL), d_nodeManager(t.d_nodeManager) {
+  NodeManagerScope nms(d_nodeManager);
+  d_typeNode = new TypeNode(*t.d_typeNode);
 }
 
-Type::Type(const Type& t) :
-  d_typeNode(new TypeNode(*t.d_typeNode)),
-  d_nodeManager(t.d_nodeManager) {
+Type::~Type() {
+  NodeManagerScope nms(d_nodeManager);
+  delete d_typeNode;
 }
 
 bool Type::isNull() const {
diff --git a/src/expr/type.h b/src/expr/type.h
index 43cb3ff..04b2907 100644
--- a/src/expr/type.h
+++ b/src/expr/type.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Dejan Jovanovic, Martin Brain
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/type_checker.h b/src/expr/type_checker.h
index 3df73b2..df8b6a8 100644
--- a/src/expr/type_checker.h
+++ b/src/expr/type_checker.h
@@ -2,9 +2,9 @@
 /*! \file type_checker.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/type_checker_template.cpp b/src/expr/type_checker_template.cpp
index 8ed894a..476510a 100644
--- a/src/expr/type_checker_template.cpp
+++ b/src/expr/type_checker_template.cpp
@@ -2,9 +2,9 @@
 /*! \file type_checker_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -61,7 +61,7 @@ ${typerules}
 bool TypeChecker::computeIsConst(NodeManager* nodeManager, TNode n)
   throw (AssertionException) {
 
-  Assert(n.getMetaKind() == kind::metakind::OPERATOR || n.getMetaKind() == kind::metakind::PARAMETERIZED);
+  Assert(n.getMetaKind() == kind::metakind::OPERATOR || n.getMetaKind() == kind::metakind::PARAMETERIZED || n.getMetaKind() == kind::metakind::NULLARY_OPERATOR);
 
   switch(n.getKind()) {
 ${construles}
@@ -78,7 +78,7 @@ ${construles}
 bool TypeChecker::neverIsConst(NodeManager* nodeManager, TNode n)
   throw (AssertionException) {
 
-  Assert(n.getMetaKind() == kind::metakind::OPERATOR || n.getMetaKind() == kind::metakind::PARAMETERIZED);
+  Assert(n.getMetaKind() == kind::metakind::OPERATOR || n.getMetaKind() == kind::metakind::PARAMETERIZED || n.getMetaKind() == kind::metakind::NULLARY_OPERATOR);
 
   switch(n.getKind()) {
 ${neverconstrules}
diff --git a/src/expr/type_node.cpp b/src/expr/type_node.cpp
index f11aa01..6e16ee9 100644
--- a/src/expr/type_node.cpp
+++ b/src/expr/type_node.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Andrew Reynolds, Kshitij Bansal
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -539,6 +539,46 @@ TypeNode TypeNode::leastCommonPredicateSubtype(TypeNode t0, TypeNode t1){
   }
 }
 
+
+Node TypeNode::getEnsureTypeCondition( Node n, TypeNode tn ) {
+  TypeNode ntn = n.getType();
+  Assert( ntn.isComparableTo( tn ) );
+  if( !ntn.isSubtypeOf( tn ) ){
+    if( tn.isInteger() ){
+      if( tn.isSubtypeOf( ntn ) ){
+        return NodeManager::currentNM()->mkNode( kind::IS_INTEGER, n );
+      }
+    }else if( tn.isDatatype() && ntn.isDatatype() ){
+      if( tn.isTuple() && ntn.isTuple() ){
+        const Datatype& dt1 = tn.getDatatype();
+        const Datatype& dt2 = ntn.getDatatype();
+        if( dt1[0].getNumArgs()==dt2[0].getNumArgs() ){
+          std::vector< Node > conds;
+          for( unsigned i=0; i<dt2[0].getNumArgs(); i++ ){
+            Node s = NodeManager::currentNM()->mkNode( kind::APPLY_SELECTOR_TOTAL, Node::fromExpr( dt2[0][i].getSelector() ), n );
+            Node etc = getEnsureTypeCondition( s, TypeNode::fromType( dt1[0][i].getRangeType() ) );
+            if( etc.isNull() ){
+              return Node::null();
+            }else{
+              conds.push_back( etc );
+            }
+          }
+          if( conds.empty() ){
+            return NodeManager::currentNM()->mkConst( true );
+          }else if( conds.size()==1 ){
+            return conds[0];
+          }else{
+            return NodeManager::currentNM()->mkNode( kind::AND, conds );
+          }
+        }
+      }
+    }
+    return Node::null();
+  }else{
+    return NodeManager::currentNM()->mkConst( true );
+  }
+}
+
 /** Is this a sort kind */
 bool TypeNode::isSort() const {
   return ( getKind() == kind::SORT_TYPE && !hasAttribute(expr::SortArityAttr()) ) ||
diff --git a/src/expr/type_node.h b/src/expr/type_node.h
index 0abbc9a..1a8bb14 100644
--- a/src/expr/type_node.h
+++ b/src/expr/type_node.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Dejan Jovanovic, Martin Brain
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -651,6 +651,10 @@ public:
   static TypeNode leastCommonTypeNode(TypeNode t0, TypeNode t1);
   static TypeNode mostCommonTypeNode(TypeNode t0, TypeNode t1);
 
+  /** get ensure type condition 
+   *  Return value is a condition that implies that n has type tn.
+  */
+  static Node getEnsureTypeCondition( Node n, TypeNode tn );
 private:
   static TypeNode commonTypeNode(TypeNode t0, TypeNode t1, bool isLeast);
 
diff --git a/src/expr/type_properties_template.h b/src/expr/type_properties_template.h
index 4874a84..ce2d9d4 100644
--- a/src/expr/type_properties_template.h
+++ b/src/expr/type_properties_template.h
@@ -2,9 +2,9 @@
 /*! \file type_properties_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/uninterpreted_constant.cpp b/src/expr/uninterpreted_constant.cpp
index c88c3b5..c823529 100644
--- a/src/expr/uninterpreted_constant.cpp
+++ b/src/expr/uninterpreted_constant.cpp
@@ -2,9 +2,9 @@
 /*! \file uninterpreted_constant.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/uninterpreted_constant.h b/src/expr/uninterpreted_constant.h
index 7d7a375..06747e1 100644
--- a/src/expr/uninterpreted_constant.h
+++ b/src/expr/uninterpreted_constant.h
@@ -2,9 +2,9 @@
 /*! \file uninterpreted_constant.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/expr/variable_type_map.h b/src/expr/variable_type_map.h
index 00d2c3e..739a8d4 100644
--- a/src/expr/variable_type_map.h
+++ b/src/expr/variable_type_map.h
@@ -2,9 +2,9 @@
 /*! \file variable_type_map.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/git_versioninfo.cpp b/src/git_versioninfo.cpp
index 84ac8d3..53efacc 100644
--- a/src/git_versioninfo.cpp
+++ b/src/git_versioninfo.cpp
@@ -1,5 +1,5 @@
 #include "base/configuration.h"
-const bool ::CVC4::Configuration::IS_GIT_BUILD = false;
-const char* const ::CVC4::Configuration::GIT_BRANCH_NAME = "unknown";
-const char* const ::CVC4::Configuration::GIT_COMMIT = "unknown";
-const bool ::CVC4::Configuration::GIT_HAS_MODIFICATIONS = false;
+const bool ::CVC4::Configuration::IS_GIT_BUILD = true;
+const char* const ::CVC4::Configuration::GIT_BRANCH_NAME = "master";
+const char* const ::CVC4::Configuration::GIT_COMMIT = "a9cfc20aecda286c3cd645d98226678f56baccc1";
+const bool ::CVC4::Configuration::GIT_HAS_MODIFICATIONS = true;
diff --git a/src/include/cvc4.h b/src/include/cvc4.h
index 6e6204c..d505a19 100644
--- a/src/include/cvc4.h
+++ b/src/include/cvc4.h
@@ -2,9 +2,9 @@
 /*! \file cvc4.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/include/cvc4_private.h b/src/include/cvc4_private.h
index 56be6ff..2d73c12 100644
--- a/src/include/cvc4_private.h
+++ b/src/include/cvc4_private.h
@@ -2,9 +2,9 @@
 /*! \file cvc4_private.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/include/cvc4_private_library.h b/src/include/cvc4_private_library.h
index c536d05..3542114 100644
--- a/src/include/cvc4_private_library.h
+++ b/src/include/cvc4_private_library.h
@@ -2,9 +2,9 @@
 /*! \file cvc4_private_library.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/include/cvc4_public.h b/src/include/cvc4_public.h
index 1308b3d..7b88a26 100644
--- a/src/include/cvc4_public.h
+++ b/src/include/cvc4_public.h
@@ -2,9 +2,9 @@
 /*! \file cvc4_public.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/include/cvc4parser_private.h b/src/include/cvc4parser_private.h
index 366877c..c441f77 100644
--- a/src/include/cvc4parser_private.h
+++ b/src/include/cvc4parser_private.h
@@ -2,9 +2,9 @@
 /*! \file cvc4parser_private.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/include/cvc4parser_public.h b/src/include/cvc4parser_public.h
index ccbd090..b7548a5 100644
--- a/src/include/cvc4parser_public.h
+++ b/src/include/cvc4parser_public.h
@@ -2,9 +2,9 @@
 /*! \file cvc4parser_public.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/lib/Makefile.in b/src/lib/Makefile.in
index f6051ad..7a91b5e 100644
--- a/src/lib/Makefile.in
+++ b/src/lib/Makefile.in
@@ -202,6 +202,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/src/lib/clock_gettime.c b/src/lib/clock_gettime.c
index 9bd4eaf..ec54911 100644
--- a/src/lib/clock_gettime.c
+++ b/src/lib/clock_gettime.c
@@ -2,9 +2,9 @@
 /*! \file clock_gettime.c
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/lib/clock_gettime.h b/src/lib/clock_gettime.h
index 74c9f50..249ea27 100644
--- a/src/lib/clock_gettime.h
+++ b/src/lib/clock_gettime.h
@@ -2,9 +2,9 @@
 /*! \file clock_gettime.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/lib/ffs.c b/src/lib/ffs.c
index d42f9da..54ee7cd 100644
--- a/src/lib/ffs.c
+++ b/src/lib/ffs.c
@@ -2,9 +2,9 @@
 /*! \file ffs.c
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Andres Noetzli
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/lib/ffs.h b/src/lib/ffs.h
index 878c8f7..adb5725 100644
--- a/src/lib/ffs.h
+++ b/src/lib/ffs.h
@@ -2,9 +2,9 @@
 /*! \file ffs.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/lib/replacements.h b/src/lib/replacements.h
index d2f7d9f..ecd4391 100644
--- a/src/lib/replacements.h
+++ b/src/lib/replacements.h
@@ -2,9 +2,9 @@
 /*! \file replacements.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/lib/strtok_r.c b/src/lib/strtok_r.c
index 9173596..02526cb 100644
--- a/src/lib/strtok_r.c
+++ b/src/lib/strtok_r.c
@@ -2,9 +2,9 @@
 /*! \file strtok_r.c
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/lib/strtok_r.h b/src/lib/strtok_r.h
index e3803b0..50d8808 100644
--- a/src/lib/strtok_r.h
+++ b/src/lib/strtok_r.h
@@ -2,9 +2,9 @@
 /*! \file strtok_r.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/main/Makefile.in b/src/main/Makefile.in
index 2e9e757..8b65d0a 100644
--- a/src/main/Makefile.in
+++ b/src/main/Makefile.in
@@ -275,6 +275,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/src/main/command_executor.cpp b/src/main/command_executor.cpp
index ebb57da..796557b 100644
--- a/src/main/command_executor.cpp
+++ b/src/main/command_executor.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Kshitij Bansal, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/main/command_executor.h b/src/main/command_executor.h
index 4018aed..0ace140 100644
--- a/src/main/command_executor.h
+++ b/src/main/command_executor.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Kshitij Bansal, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -69,6 +69,15 @@ public:
     d_stats.flushInformation(out);
   }
 
+  /**
+   * Flushes statistics to a file descriptor. Safe to use in a signal handler.
+   */
+  void safeFlushStatistics(int fd) const {
+    d_exprMgr.safeFlushStatistics(fd);
+    d_smtEngine->safeFlushStatistics(fd);
+    d_stats.safeFlushInformation(fd);
+  }
+
   static void printStatsFilterZeros(std::ostream& out,
                                     const std::string& statsString);
 
diff --git a/src/main/command_executor_portfolio.cpp b/src/main/command_executor_portfolio.cpp
index bd8b6a9..25b160d 100644
--- a/src/main/command_executor_portfolio.cpp
+++ b/src/main/command_executor_portfolio.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Kshitij Bansal, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/main/command_executor_portfolio.h b/src/main/command_executor_portfolio.h
index be980a0..d045ab7 100644
--- a/src/main/command_executor_portfolio.h
+++ b/src/main/command_executor_portfolio.h
@@ -2,9 +2,9 @@
 /*! \file command_executor_portfolio.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Kshitij Bansal, Morgan Deters, Tim King
+ **   Kshitij Bansal, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/main/driver_unified.cpp b/src/main/driver_unified.cpp
index efa4f5b..8b79e04 100644
--- a/src/main/driver_unified.cpp
+++ b/src/main/driver_unified.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Tim King, Liana Hadarean
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -61,7 +61,7 @@ namespace CVC4 {
     const char *progPath;
 
     /** Just the basename component of argv[0] */
-    const char *progName;
+    const std::string *progName;
 
     /** A pointer to the CommandExecutor (the signal handlers need it) */
     CVC4::main::CommandExecutor* pExecutor = NULL;
@@ -112,7 +112,8 @@ int runCvc4(int argc, char* argv[], Options& opts) {
   }
 # endif
 
-  progName = opts.getBinaryName().c_str();
+  string progNameStr = opts.getBinaryName();
+  progName = &progNameStr;
 
   if( opts.getHelp() ) {
     printUsage(opts, true);
@@ -146,14 +147,20 @@ int runCvc4(int argc, char* argv[], Options& opts) {
   }
 
   // Auto-detect input language by filename extension
-  const char* filename = inputFromStdin ? "<stdin>" : filenames[0].c_str();
+  std::string filenameStr("<stdin>");
+  if (!inputFromStdin) {
+    // Use swap to avoid copying the string
+    // TODO: use std::move() when switching to c++11
+    filenameStr.swap(filenames[0]);
+  }
+  const char* filename = filenameStr.c_str();
 
   if(opts.getInputLanguage() == language::input::LANG_AUTO) {
     if( inputFromStdin ) {
       // We can't do any fancy detection on stdin
       opts.setInputLanguage(language::input::LANG_CVC4);
     } else {
-      unsigned len = strlen(filename);
+      unsigned len = filenameStr.size();
       if(len >= 5 && !strcmp(".smt2", filename + len - 5)) {
         opts.setInputLanguage(language::input::LANG_SMTLIB_V2_5);
       } else if(len >= 4 && !strcmp(".smt", filename + len - 4)) {
@@ -264,7 +271,7 @@ int runCvc4(int argc, char* argv[], Options& opts) {
                                     pTotalTime);
 
     // Filename statistics
-    ReferenceStat< const char* > s_statFilename("filename", filename);
+    ReferenceStat<std::string> s_statFilename("filename", filenameStr);
     RegisterStatistic statFilenameReg(&pExecutor->getStatisticsRegistry(),
                                       &s_statFilename);
 
diff --git a/src/main/interactive_shell.cpp b/src/main/interactive_shell.cpp
index 3343736..0fa026f 100644
--- a/src/main/interactive_shell.cpp
+++ b/src/main/interactive_shell.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Christopher L. Conway, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -104,7 +104,7 @@ InteractiveShell::InteractiveShell(ExprManager& exprManager,
   }
 
 #if HAVE_LIBREADLINE
-  if(d_in == cin) {
+  if(&d_in == &cin) {
     ::rl_readline_name = const_cast<char*>("CVC4");
 #if READLINE_COMPENTRY_FUNC_RETURNS_CHARP
     ::rl_completion_entry_function = commandGenerator;
@@ -127,6 +127,7 @@ InteractiveShell::InteractiveShell(ExprManager& exprManager,
       break;
     case output::LANG_SMTLIB_V2_0:
     case output::LANG_SMTLIB_V2_5:
+    case output::LANG_SMTLIB_V2_6:
       d_historyFilename = string(getenv("HOME")) + "/.cvc4_history_smtlib2";
       commandsBegin = smt2_commands;
       commandsEnd = smt2_commands + sizeof(smt2_commands) / sizeof(*smt2_commands);
@@ -332,7 +333,8 @@ restart:
     goto restart;
   } catch(ParserException& pe) {
     if(d_options.getOutputLanguage() == output::LANG_SMTLIB_V2_0 ||
-       d_options.getOutputLanguage() == output::LANG_SMTLIB_V2_5) {
+       d_options.getOutputLanguage() == output::LANG_SMTLIB_V2_5 ||
+       d_options.getOutputLanguage() == output::LANG_SMTLIB_V2_6) {
       d_out << "(error \"" << pe << "\")" << endl;
     } else {
       d_out << pe << endl;
diff --git a/src/main/interactive_shell.h b/src/main/interactive_shell.h
index 18e42f1..a3834a1 100644
--- a/src/main/interactive_shell.h
+++ b/src/main/interactive_shell.h
@@ -2,9 +2,9 @@
 /*! \file interactive_shell.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Christopher L. Conway, Tim King
+ **   Morgan Deters, Christopher L. Conway, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/main/main.cpp b/src/main/main.cpp
index 7b6b9ad..758d10a 100644
--- a/src/main/main.cpp
+++ b/src/main/main.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Tim King, Christopher L. Conway
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -65,7 +65,8 @@ int main(int argc, char* argv[]) {
     *opts.getOut() << "unknown" << endl;
 #endif
     if(opts.getOutputLanguage() == output::LANG_SMTLIB_V2_0 ||
-       opts.getOutputLanguage() == output::LANG_SMTLIB_V2_5) {
+       opts.getOutputLanguage() == output::LANG_SMTLIB_V2_5 ||
+       opts.getOutputLanguage() == output::LANG_SMTLIB_V2_6) {
       *opts.getOut() << "(error \"" << e << "\")" << endl;
     } else {
       *opts.getErr() << "CVC4 Error:" << endl << e << endl;
diff --git a/src/main/main.h b/src/main/main.h
index 8277d36..dcb5c2a 100644
--- a/src/main/main.h
+++ b/src/main/main.h
@@ -2,9 +2,9 @@
 /*! \file main.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -38,7 +38,7 @@ class CommandExecutor;
 extern const char* progPath;
 
 /** Just the basename component of argv[0] */
-extern const char* progName;
+extern const std::string* progName;
 
 /** A reference for use by the signal handlers to print statistics */
 extern CVC4::main::CommandExecutor* pExecutor;
diff --git a/src/main/portfolio.cpp b/src/main/portfolio.cpp
index 1e1b41b..ddff466 100644
--- a/src/main/portfolio.cpp
+++ b/src/main/portfolio.cpp
@@ -2,9 +2,9 @@
 /*! \file portfolio.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Kshitij Bansal, Tim King
+ **   Morgan Deters, Kshitij Bansal, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/main/portfolio.h b/src/main/portfolio.h
index b96efda..a370c01 100644
--- a/src/main/portfolio.h
+++ b/src/main/portfolio.h
@@ -2,9 +2,9 @@
 /*! \file portfolio.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Kshitij Bansal
+ **   Morgan Deters, Paul Meng, Kshitij Bansal
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/main/portfolio_util.cpp b/src/main/portfolio_util.cpp
index 8e38eb5..372fe78 100644
--- a/src/main/portfolio_util.cpp
+++ b/src/main/portfolio_util.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Kshitij Bansal
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/main/portfolio_util.h b/src/main/portfolio_util.h
index 32cc045..5ed9a36 100644
--- a/src/main/portfolio_util.h
+++ b/src/main/portfolio_util.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Kshitij Bansal, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/main/util.cpp b/src/main/util.cpp
index e14b508..e086288 100644
--- a/src/main/util.cpp
+++ b/src/main/util.cpp
@@ -2,9 +2,9 @@
 /*! \file util.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Kshitij Bansal
+ **   Morgan Deters, Andres Noetzli, Clément Pit-Claudel
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -12,13 +12,17 @@
  ** \brief Utilities for the main driver.
  **
  ** Utilities for the main driver.
+ **
+ ** It is important to only call async-signal-safe functions from signal
+ ** handlers. See: http://man7.org/linux/man-pages/man7/signal-safety.7.html for
+ ** a list of async-signal-safe POSIX.1 functions.
  **/
 
+#include <string.h>
+#include <cerrno>
 #include <cstdio>
 #include <cstdlib>
-#include <cerrno>
 #include <exception>
-#include <string.h>
 
 #ifndef __WIN32__
 
@@ -35,6 +39,7 @@
 #include "main/main.h"
 #include "options/options.h"
 #include "smt/smt_engine.h"
+#include "util/safe_print.h"
 #include "util/statistics.h"
 
 using CVC4::Exception;
@@ -50,103 +55,127 @@ namespace main {
  */
 bool segvSpin = false;
 
+void print_statistics() {
+  if (pOptions != NULL && pOptions->getStatistics() && pExecutor != NULL) {
+    if (pTotalTime != NULL && pTotalTime->running()) {
+      pTotalTime->stop();
+    }
+    pExecutor->safeFlushStatistics(STDERR_FILENO);
+  }
+}
+
 #ifndef __WIN32__
 
+#ifdef HAVE_SIGALTSTACK
 size_t cvc4StackSize;
 void* cvc4StackBase;
+#endif /* HAVE_SIGALTSTACK */
 
 /** Handler for SIGXCPU, i.e., timeout. */
 void timeout_handler(int sig, siginfo_t* info, void*) {
-  fprintf(stderr, "CVC4 interrupted by timeout.\n");
-  if(pOptions->getStatistics() && pExecutor != NULL) {
-    pTotalTime->stop();
-    pExecutor->flushStatistics(cerr);
-  }
+  safe_print(STDERR_FILENO, "CVC4 interrupted by timeout.\n");
+  print_statistics();
   abort();
 }
 
 /** Handler for SIGINT, i.e., when the user hits control C. */
 void sigint_handler(int sig, siginfo_t* info, void*) {
-  fprintf(stderr, "CVC4 interrupted by user.\n");
-  if(pOptions->getStatistics() && pExecutor != NULL) {
-    pTotalTime->stop();
-    pExecutor->flushStatistics(cerr);
-  }
+  safe_print(STDERR_FILENO, "CVC4 interrupted by user.\n");
+  print_statistics();
   abort();
 }
 
+#ifdef HAVE_SIGALTSTACK
 /** Handler for SIGSEGV (segfault). */
 void segv_handler(int sig, siginfo_t* info, void* c) {
   uintptr_t extent = reinterpret_cast<uintptr_t>(cvc4StackBase) - cvc4StackSize;
   uintptr_t addr = reinterpret_cast<uintptr_t>(info->si_addr);
 #ifdef CVC4_DEBUG
-  fprintf(stderr, "CVC4 suffered a segfault in DEBUG mode.\n");
-  cerr << "Offending address is " << info->si_addr << endl;
+  safe_print(STDERR_FILENO, "CVC4 suffered a segfault in DEBUG mode.\n");
+  safe_print(STDERR_FILENO, "Offending address is ");
+  safe_print(STDERR_FILENO, info->si_addr);
+  safe_print(STDERR_FILENO, "\n");
   //cerr << "base is " << (void*)cvc4StackBase << endl;
   //cerr << "size is " << cvc4StackSize << endl;
   //cerr << "extent is " << (void*)extent << endl;
   if(addr >= extent && addr <= extent + 10*1024) {
-    cerr << "Looks like this is likely due to stack overflow." << endl
-         << "You might consider increasing the limit with `ulimit -s' or equivalent." << endl;
+    safe_print(STDERR_FILENO,
+               "Looks like this is likely due to stack overflow.\n");
+    safe_print(STDERR_FILENO,
+               "You might consider increasing the limit with `ulimit -s' or "
+               "equivalent.\n");
   } else if(addr < 10*1024) {
-    cerr << "Looks like a NULL pointer was dereferenced." << endl;
+    safe_print(STDERR_FILENO, "Looks like a NULL pointer was dereferenced.\n");
   }
 
   if(!segvSpin) {
-    if(pOptions->getStatistics() && pExecutor != NULL) {
-      pTotalTime->stop();
-      pExecutor->flushStatistics(cerr);
-    }
+    print_statistics();
     abort();
   } else {
-    fprintf(stderr, "Spinning so that a debugger can be connected.\n");
-    cerr << "Try:  gdb " << progName << " " << getpid() << endl
-         << " or:  gdb --pid=" << getpid() << " " << progName << endl;
+    safe_print(STDERR_FILENO,
+               "Spinning so that a debugger can be connected.\n");
+    safe_print(STDERR_FILENO, "Try:  gdb ");
+    safe_print(STDERR_FILENO, *progName);
+    safe_print(STDERR_FILENO, " ");
+    safe_print<int64_t>(STDERR_FILENO, getpid());
+    safe_print(STDERR_FILENO, "\n");
+    safe_print(STDERR_FILENO, " or:  gdb --pid=");
+    safe_print<int64_t>(STDERR_FILENO, getpid());
+    safe_print(STDERR_FILENO, " ");
+    safe_print(STDERR_FILENO, *progName);
+    safe_print(STDERR_FILENO, "\n");
     for(;;) {
       sleep(60);
     }
   }
 #else /* CVC4_DEBUG */
-  fprintf(stderr, "CVC4 suffered a segfault.\n");
-  cerr << "Offending address is " << info->si_addr << endl;
+  safe_print(STDERR_FILENO, "CVC4 suffered a segfault.\n");
+  safe_print(STDERR_FILENO, "Offending address is ");
+  safe_print(STDERR_FILENO, info->si_addr);
+  safe_print(STDERR_FILENO, "\n");
   if(addr >= extent && addr <= extent + 10*1024) {
-    cerr << "Looks like this is likely due to stack overflow." << endl
-         << "You might consider increasing the limit with `ulimit -s' or equivalent." << endl;
+    safe_print(STDERR_FILENO,
+               "Looks like this is likely due to stack overflow.\n");
+    safe_print(STDERR_FILENO,
+               "You might consider increasing the limit with `ulimit -s' or "
+               "equivalent.\n");
   } else if(addr < 10*1024) {
-    cerr << "Looks like a NULL pointer was dereferenced." << endl;
-  }
-  if(pOptions->getStatistics() && pExecutor != NULL) {
-    pTotalTime->stop();
-    pExecutor->flushStatistics(cerr);
+    safe_print(STDERR_FILENO, "Looks like a NULL pointer was dereferenced.\n");
   }
+  print_statistics();
   abort();
 #endif /* CVC4_DEBUG */
 }
+#endif /* HAVE_SIGALTSTACK */
 
 /** Handler for SIGILL (illegal instruction). */
 void ill_handler(int sig, siginfo_t* info, void*) {
 #ifdef CVC4_DEBUG
-  fprintf(stderr, "CVC4 executed an illegal instruction in DEBUG mode.\n");
+  safe_print(STDERR_FILENO,
+             "CVC4 executed an illegal instruction in DEBUG mode.\n");
   if(!segvSpin) {
-    if(pOptions->getStatistics() && pExecutor != NULL) {
-      pTotalTime->stop();
-      pExecutor->flushStatistics(cerr);
-    }
+    print_statistics();
     abort();
   } else {
-    fprintf(stderr, "Spinning so that a debugger can be connected.\n");
-    fprintf(stderr, "Try:  gdb %s %u\n", progName, getpid());
-    fprintf(stderr, " or:  gdb --pid=%u %s\n", getpid(), progName);
+    safe_print(STDERR_FILENO,
+               "Spinning so that a debugger can be connected.\n");
+    safe_print(STDERR_FILENO, "Try:  gdb ");
+    safe_print(STDERR_FILENO, *progName);
+    safe_print(STDERR_FILENO, " ");
+    safe_print<int64_t>(STDERR_FILENO, getpid());
+    safe_print(STDERR_FILENO, "\n");
+    safe_print(STDERR_FILENO, " or:  gdb --pid=");
+    safe_print<int64_t>(STDERR_FILENO, getpid());
+    safe_print(STDERR_FILENO, " ");
+    safe_print(STDERR_FILENO, *progName);
+    safe_print(STDERR_FILENO, "\n");
     for(;;) {
       sleep(60);
     }
   }
 #else /* CVC4_DEBUG */
-  fprintf(stderr, "CVC4 executed an illegal instruction.\n");
-  if(pOptions->getStatistics() && pExecutor != NULL) {
-    pTotalTime->stop();
-    pExecutor->flushStatistics(cerr);
-  }
+  safe_print(STDERR_FILENO, "CVC4 executed an illegal instruction.\n");
+  print_statistics();
   abort();
 #endif /* CVC4_DEBUG */
 }
@@ -157,39 +186,46 @@ static terminate_handler default_terminator;
 
 void cvc4unexpected() {
 #if defined(CVC4_DEBUG) && !defined(__WIN32__)
-  fprintf(stderr, "\n"
-          "CVC4 threw an \"unexpected\" exception (one that wasn't properly "
-          "specified\nin the throws() specifier for the throwing function)."
-          "\n\n");
+  safe_print(STDERR_FILENO,
+             "\n"
+             "CVC4 threw an \"unexpected\" exception (one that wasn't properly "
+             "specified\nin the throws() specifier for the throwing function)."
+             "\n\n");
 
   const char* lastContents = LastExceptionBuffer::currentContents();
 
   if(lastContents == NULL) {
-    fprintf(stderr,
-            "The exception is unknown (maybe it's not a CVC4::Exception).\n\n");
+    safe_print(
+        STDERR_FILENO,
+        "The exception is unknown (maybe it's not a CVC4::Exception).\n\n");
   } else {
-    fprintf(stderr, "The exception is:\n%s\n\n", lastContents);
+    safe_print(STDERR_FILENO, "The exception is:\n");
+    safe_print(STDERR_FILENO, lastContents);
+    safe_print(STDERR_FILENO, "\n\n");
   }
   if(!segvSpin) {
-    if(pOptions->getStatistics() && pExecutor != NULL) {
-      pTotalTime->stop();
-      pExecutor->flushStatistics(cerr);
-    }
+    print_statistics();
     set_terminate(default_terminator);
   } else {
-    fprintf(stderr, "Spinning so that a debugger can be connected.\n");
-    fprintf(stderr, "Try:  gdb %s %u\n", progName, getpid());
-    fprintf(stderr, " or:  gdb --pid=%u %s\n", getpid(), progName);
+    safe_print(STDERR_FILENO,
+               "Spinning so that a debugger can be connected.\n");
+    safe_print(STDERR_FILENO, "Try:  gdb ");
+    safe_print(STDERR_FILENO, *progName);
+    safe_print(STDERR_FILENO, " ");
+    safe_print<int64_t>(STDERR_FILENO, getpid());
+    safe_print(STDERR_FILENO, "\n");
+    safe_print(STDERR_FILENO, " or:  gdb --pid=");
+    safe_print<int64_t>(STDERR_FILENO, getpid());
+    safe_print(STDERR_FILENO, " ");
+    safe_print(STDERR_FILENO, *progName);
+    safe_print(STDERR_FILENO, "\n");
     for(;;) {
       sleep(60);
     }
   }
 #else /* CVC4_DEBUG */
-  fprintf(stderr, "CVC4 threw an \"unexpected\" exception.\n");
-  if(pOptions->getStatistics() && pExecutor != NULL) {
-    pTotalTime->stop();
-    pExecutor->flushStatistics(cerr);
-  }
+  safe_print(STDERR_FILENO, "CVC4 threw an \"unexpected\" exception.\n");
+  print_statistics();
   set_terminate(default_terminator);
 #endif /* CVC4_DEBUG */
 }
@@ -198,26 +234,21 @@ void cvc4terminate() {
   set_terminate(default_terminator);
 #ifdef CVC4_DEBUG
   LastExceptionBuffer* current = LastExceptionBuffer::getCurrent();
-   LastExceptionBuffer::setCurrent(NULL);
+  LastExceptionBuffer::setCurrent(NULL);
   delete current;
 
-  fprintf(stderr, "\n"
-          "CVC4 was terminated by the C++ runtime.\n"
-          "Perhaps an exception was thrown during stack unwinding.  "
-          "(Don't do that.)\n");
-  if(pOptions->getStatistics() && pExecutor != NULL) {
-    pTotalTime->stop();
-    pExecutor->flushStatistics(cerr);
-  }
+  safe_print(STDERR_FILENO,
+             "\n"
+             "CVC4 was terminated by the C++ runtime.\n"
+             "Perhaps an exception was thrown during stack unwinding.  "
+             "(Don't do that.)\n");
+  print_statistics();
   default_terminator();
 #else /* CVC4_DEBUG */
-  fprintf(stderr,
-          "CVC4 was terminated by the C++ runtime.\n"
-          "Perhaps an exception was thrown during stack unwinding.\n");
-  if(pOptions->getStatistics() && pExecutor != NULL) {
-    pTotalTime->stop();
-    pExecutor->flushStatistics(cerr);
-  }
+  safe_print(STDERR_FILENO,
+             "CVC4 was terminated by the C++ runtime.\n"
+             "Perhaps an exception was thrown during stack unwinding.\n");
+  print_statistics();
   default_terminator();
 #endif /* CVC4_DEBUG */
 }
@@ -229,16 +260,6 @@ void cvc4_init() throw(Exception) {
 #endif
 
 #ifndef __WIN32__
-  stack_t ss;
-  ss.ss_sp = malloc(SIGSTKSZ);
-  if(ss.ss_sp == NULL) {
-    throw Exception("Can't malloc() space for a signal stack");
-  }
-  ss.ss_size = SIGSTKSZ;
-  ss.ss_flags = 0;
-  if(sigaltstack(&ss, NULL) == -1) {
-    throw Exception(string("sigaltstack() failure: ") + strerror(errno));
-  }
   struct rlimit limit;
   if(getrlimit(RLIMIT_STACK, &limit)) {
     throw Exception(string("getrlimit() failure: ") + strerror(errno));
@@ -252,8 +273,6 @@ void cvc4_init() throw(Exception) {
       throw Exception(string("getrlimit() failure: ") + strerror(errno));
     }
   }
-  cvc4StackSize = limit.rlim_cur;
-  cvc4StackBase = ss.ss_sp;
 
   struct sigaction act1;
   act1.sa_sigaction = sigint_handler;
@@ -272,20 +291,36 @@ void cvc4_init() throw(Exception) {
   }
 
   struct sigaction act3;
-  act3.sa_sigaction = segv_handler;
-  act3.sa_flags = SA_SIGINFO | SA_ONSTACK;
+  act3.sa_sigaction = ill_handler;
+  act3.sa_flags = SA_SIGINFO;
   sigemptyset(&act3.sa_mask);
-  if(sigaction(SIGSEGV, &act3, NULL)) {
-    throw Exception(string("sigaction(SIGSEGV) failure: ") + strerror(errno));
+  if(sigaction(SIGILL, &act3, NULL)) {
+    throw Exception(string("sigaction(SIGILL) failure: ") + strerror(errno));
   }
 
+#ifdef HAVE_SIGALTSTACK
+  stack_t ss;
+  ss.ss_sp = (char*) malloc(SIGSTKSZ);
+  if(ss.ss_sp == NULL) {
+    throw Exception("Can't malloc() space for a signal stack");
+  }
+  ss.ss_size = SIGSTKSZ;
+  ss.ss_flags = 0;
+  if(sigaltstack(&ss, NULL) == -1) {
+    throw Exception(string("sigaltstack() failure: ") + strerror(errno));
+  }
+
+  cvc4StackSize = limit.rlim_cur;
+  cvc4StackBase = ss.ss_sp;
+
   struct sigaction act4;
   act4.sa_sigaction = segv_handler;
-  act4.sa_flags = SA_SIGINFO;
+  act4.sa_flags = SA_SIGINFO | SA_ONSTACK;
   sigemptyset(&act4.sa_mask);
-  if(sigaction(SIGILL, &act4, NULL)) {
-    throw Exception(string("sigaction(SIGILL) failure: ") + strerror(errno));
+  if(sigaction(SIGSEGV, &act4, NULL)) {
+    throw Exception(string("sigaction(SIGSEGV) failure: ") + strerror(errno));
   }
+#endif /* HAVE_SIGALTSTACK */
 
 #endif /* __WIN32__ */
 
@@ -295,9 +330,11 @@ void cvc4_init() throw(Exception) {
 
 void cvc4_shutdown() throw () {
 #ifndef __WIN32__
+#ifdef HAVE_SIGALTSTACK
   free(cvc4StackBase);
   cvc4StackBase = NULL;
   cvc4StackSize = 0;
+#endif /* HAVE_SIGALTSTACK */
 #endif /* __WIN32__ */
 }
 
diff --git a/src/options/Makefile.am b/src/options/Makefile.am
index 31330a9..5a9fa54 100644
--- a/src/options/Makefile.am
+++ b/src/options/Makefile.am
@@ -12,6 +12,16 @@
 #   This stage also waits for X_options.h as otherwise it cannot compile.
 #
 
+# if coverage is enabled:
+# COVERAGE_ON = yes from configure.ac
+# Using an inline conditional function to choose between absolute and
+# relative paths for options files
+# lcov does not support relative paths and src/options and src/expr
+# in particular were breaking it
+# Building with coverage will cause portability issues in some cases
+
+VPATH = $(if $(COVERAGE_ON), $(realpath @srcdir@), @srcdir@)
+
 OPTIONS_SRC_FILES = \
 	arith_options \
 	arrays_options \
@@ -200,7 +210,8 @@ DOCUMENTATION_TEMPLATE_SEDS = \
 
 AM_CPPFLAGS = \
 	-D__BUILDING_CVC4LIB \
-	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..
+	$(if $(COVERAGE_ON), -I at abs_builddir@/.. -I at abs_srcdir@/../include -I at abs_srcdir@/.., \
+	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..)
 AM_CXXFLAGS = -Wall $(FLAG_VISIBILITY_HIDDEN)
 
 noinst_LTLIBRARIES = liboptions.la
@@ -308,7 +319,7 @@ arith_options arrays_options base_options booleans_options builtin_options bv_op
 # Make is happier being listed explictly. Not sure why.
 arith_options.tmp arrays_options.tmp base_options.tmp booleans_options.tmp builtin_options.tmp bv_options.tmp datatypes_options.tmp decision_options.tmp expr_options.tmp fp_options.tmp idl_options.tmp main_options.tmp parser_options.tmp printer_options.tmp proof_options.tmp prop_options.tmp quantifiers_options.tmp sep_options.tmp sets_options.tmp smt_options.tmp strings_options.tmp theory_options.tmp uf_options.tmp:
 	echo "$@" "$(@:.tmp=)"
-	$(AM_V_GEN)(cp "@srcdir@/$(@:.tmp=)" "$@" || true)
+	$(AM_V_GEN)(cp $(if $(COVERAGE_ON), "@abs_srcdir@/$(@:.tmp=)", "@srcdir@/$(@:.tmp=)") "$@" || true)
 #TIM:
 #The (... || true) here is to make distcheck not fail.
 
@@ -322,7 +333,7 @@ arith_options.tmp arrays_options.tmp base_options.tmp booleans_options.tmp built
 # However, we use the original file in src to generate the file.
 %_options.sed: %_options.options mkoptions
 	$(AM_V_at)chmod +x @srcdir@/mkoptions
-	$(AM_V_GEN)(@srcdir@/mkoptions module-sed "@srcdir@/$(@:.sed=)" ) > "$@"
+	$(AM_V_GEN)(@srcdir@/mkoptions module-sed $(if $(COVERAGE_ON), "@abs_srcdir@/$(@:.sed=)", "@srcdir@/$(@:.sed=)")) > "$@"
 
 
 $(CPP_TEMPLATE_SEDS): %.sed : % mkoptions
@@ -345,7 +356,7 @@ $(DOCUMENTATION_TEMPLATE_SEDS): %.sed : % mkoptions
 #	echo $(OPTIONS_HEADS)
 	$(AM_V_at)chmod +x @srcdir@/mkoptions
 	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
-		@srcdir@/base_options_template.h \
+		$(if $(COVERAGE_ON), @abs_srcdir@, @srcdir@)/base_options_template.h \
 		base_options_template.h.sed \
 		"$<" \
 	) > "$@"
@@ -362,7 +373,7 @@ summary.sed : mkoptions $(OPTIONS_OPTIONS_FILES)
 options_holder.h : options_holder_template.h options_holder_template.h.sed summary.sed mkoptions $(OPTIONS_HEADS)
 	$(AM_V_at)chmod +x @srcdir@/mkoptions
 	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
-		@srcdir@/options_holder_template.h \
+		$(if $(COVERAGE_ON), @abs_srcdir@, @srcdir@)/options_holder_template.h \
 		@builddir@/options_holder_template.h.sed \
 		summary.sed \
 	) > "$@"
@@ -371,7 +382,7 @@ options_holder.h : options_holder_template.h options_holder_template.h.sed summa
 %_options.cpp: %_options.sed %_options.h mkoptions options_holder.h base_options_template.cpp base_options_template.cpp.sed
 	$(AM_V_at)chmod +x @srcdir@/mkoptions
 	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
-		@srcdir@/base_options_template.cpp \
+		$(if $(COVERAGE_ON), @abs_srcdir@, @srcdir@)/base_options_template.cpp \
 		base_options_template.cpp.sed \
 		"$<" \
 	) > "$@"
@@ -383,7 +394,7 @@ options_holder.h : options_holder_template.h options_holder_template.h.sed summa
 options.cpp : options_template.cpp options_template.cpp.sed mkoptions summary.sed $(OPTIONS_HEADS) options_holder.h
 	$(AM_V_at)chmod +x @srcdir@/mkoptions
 	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
-		@srcdir@/options_template.cpp \
+		$(if $(COVERAGE_ON), @abs_srcdir@, @srcdir@)/options_template.cpp \
 		@builddir@/options_template.cpp.sed \
 		summary.sed \
 	) > "$@"
@@ -393,7 +404,7 @@ options.cpp : options_template.cpp options_template.cpp.sed mkoptions summary.se
 options_get_option.cpp : options_get_option_template.cpp options_get_option_template.cpp.sed mkoptions summary.sed $(OPTIONS_HEADS)
 	$(AM_V_at)chmod +x @srcdir@/mkoptions
 	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
-		@srcdir@/options_get_option_template.cpp \
+		$(if $(COVERAGE_ON), @abs_srcdir@, @srcdir@)/options_get_option_template.cpp \
 		@builddir@/options_get_option_template.cpp.sed \
 		summary.sed \
 	) > "$@"
@@ -401,7 +412,7 @@ options_get_option.cpp : options_get_option_template.cpp options_get_option_temp
 options_set_option.cpp : options_set_option_template.cpp options_set_option_template.cpp.sed mkoptions summary.sed $(OPTIONS_HEADS)
 	$(AM_V_at)chmod +x @srcdir@/mkoptions
 	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
-		@srcdir@/options_set_option_template.cpp \
+		$(if $(COVERAGE_ON), @abs_srcdir@, @srcdir@)/options_set_option_template.cpp \
 		@builddir@/options_set_option_template.cpp.sed \
 		summary.sed \
 	) > "$@"
diff --git a/src/options/Makefile.in b/src/options/Makefile.in
index 7d47b09..2e108bb 100644
--- a/src/options/Makefile.in
+++ b/src/options/Makefile.in
@@ -28,7 +28,14 @@
 #   This stage also waits for X_options.h as otherwise it cannot compile.
 #
 
-VPATH = @srcdir@
+# if coverage is enabled:
+# COVERAGE_ON = yes from configure.ac
+# Using an inline conditional function to choose between absolute and
+# relative paths for options files
+# lcov does not support relative paths and src/options and src/expr
+# in particular were breaking it
+# Building with coverage will cause portability issues in some cases
+
 am__is_gnu_make = { \
   if test -z '$(MAKELEVEL)'; then \
     false; \
@@ -234,6 +241,7 @@ ETAGS = etags
 CTAGS = ctags
 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+VPATH = $(if $(COVERAGE_ON), $(realpath @srcdir@), @srcdir@)
 ABC_HOME = @ABC_HOME@
 ABC_LDFLAGS = @ABC_LDFLAGS@
 ABC_LIBS = @ABC_LIBS@
@@ -269,6 +277,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -671,7 +680,8 @@ DOCUMENTATION_TEMPLATE_SEDS = \
 
 AM_CPPFLAGS = \
 	-D__BUILDING_CVC4LIB \
-	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..
+	$(if $(COVERAGE_ON), -I at abs_builddir@/.. -I at abs_srcdir@/../include -I at abs_srcdir@/.., \
+	-I at builddir@/.. -I at srcdir@/../include -I at srcdir@/..)
 
 AM_CXXFLAGS = -Wall $(FLAG_VISIBILITY_HIDDEN)
 noinst_LTLIBRARIES = liboptions.la
@@ -1108,7 +1118,7 @@ arith_options arrays_options base_options booleans_options builtin_options bv_op
 # Make is happier being listed explictly. Not sure why.
 arith_options.tmp arrays_options.tmp base_options.tmp booleans_options.tmp builtin_options.tmp bv_options.tmp datatypes_options.tmp decision_options.tmp expr_options.tmp fp_options.tmp idl_options.tmp main_options.tmp parser_options.tmp printer_options.tmp proof_options.tmp prop_options.tmp quantifiers_options.tmp sep_options.tmp sets_options.tmp smt_options.tmp strings_options.tmp theory_options.tmp uf_options.tmp:
 	echo "$@" "$(@:.tmp=)"
-	$(AM_V_GEN)(cp "@srcdir@/$(@:.tmp=)" "$@" || true)
+	$(AM_V_GEN)(cp $(if $(COVERAGE_ON), "@abs_srcdir@/$(@:.tmp=)", "@srcdir@/$(@:.tmp=)") "$@" || true)
 #TIM:
 #The (... || true) here is to make distcheck not fail.
 
@@ -1121,7 +1131,7 @@ arith_options.tmp arrays_options.tmp base_options.tmp booleans_options.tmp built
 # However, we use the original file in src to generate the file.
 %_options.sed: %_options.options mkoptions
 	$(AM_V_at)chmod +x @srcdir@/mkoptions
-	$(AM_V_GEN)(@srcdir@/mkoptions module-sed "@srcdir@/$(@:.sed=)" ) > "$@"
+	$(AM_V_GEN)(@srcdir@/mkoptions module-sed $(if $(COVERAGE_ON), "@abs_srcdir@/$(@:.sed=)", "@srcdir@/$(@:.sed=)")) > "$@"
 
 $(CPP_TEMPLATE_SEDS): %.sed : % mkoptions
 #	echo "template seds"
@@ -1143,7 +1153,7 @@ $(DOCUMENTATION_TEMPLATE_SEDS): %.sed : % mkoptions
 #	echo $(OPTIONS_HEADS)
 	$(AM_V_at)chmod +x @srcdir@/mkoptions
 	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
-		@srcdir@/base_options_template.h \
+		$(if $(COVERAGE_ON), @abs_srcdir@, @srcdir@)/base_options_template.h \
 		base_options_template.h.sed \
 		"$<" \
 	) > "$@"
@@ -1158,7 +1168,7 @@ summary.sed : mkoptions $(OPTIONS_OPTIONS_FILES)
 options_holder.h : options_holder_template.h options_holder_template.h.sed summary.sed mkoptions $(OPTIONS_HEADS)
 	$(AM_V_at)chmod +x @srcdir@/mkoptions
 	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
-		@srcdir@/options_holder_template.h \
+		$(if $(COVERAGE_ON), @abs_srcdir@, @srcdir@)/options_holder_template.h \
 		@builddir@/options_holder_template.h.sed \
 		summary.sed \
 	) > "$@"
@@ -1167,7 +1177,7 @@ options_holder.h : options_holder_template.h options_holder_template.h.sed summa
 %_options.cpp: %_options.sed %_options.h mkoptions options_holder.h base_options_template.cpp base_options_template.cpp.sed
 	$(AM_V_at)chmod +x @srcdir@/mkoptions
 	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
-		@srcdir@/base_options_template.cpp \
+		$(if $(COVERAGE_ON), @abs_srcdir@, @srcdir@)/base_options_template.cpp \
 		base_options_template.cpp.sed \
 		"$<" \
 	) > "$@"
@@ -1176,7 +1186,7 @@ options_holder.h : options_holder_template.h options_holder_template.h.sed summa
 options.cpp : options_template.cpp options_template.cpp.sed mkoptions summary.sed $(OPTIONS_HEADS) options_holder.h
 	$(AM_V_at)chmod +x @srcdir@/mkoptions
 	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
-		@srcdir@/options_template.cpp \
+		$(if $(COVERAGE_ON), @abs_srcdir@, @srcdir@)/options_template.cpp \
 		@builddir@/options_template.cpp.sed \
 		summary.sed \
 	) > "$@"
@@ -1185,7 +1195,7 @@ options.cpp : options_template.cpp options_template.cpp.sed mkoptions summary.se
 options_get_option.cpp : options_get_option_template.cpp options_get_option_template.cpp.sed mkoptions summary.sed $(OPTIONS_HEADS)
 	$(AM_V_at)chmod +x @srcdir@/mkoptions
 	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
-		@srcdir@/options_get_option_template.cpp \
+		$(if $(COVERAGE_ON), @abs_srcdir@, @srcdir@)/options_get_option_template.cpp \
 		@builddir@/options_get_option_template.cpp.sed \
 		summary.sed \
 	) > "$@"
@@ -1193,7 +1203,7 @@ options_get_option.cpp : options_get_option_template.cpp options_get_option_temp
 options_set_option.cpp : options_set_option_template.cpp options_set_option_template.cpp.sed mkoptions summary.sed $(OPTIONS_HEADS)
 	$(AM_V_at)chmod +x @srcdir@/mkoptions
 	$(AM_V_GEN)(@srcdir@/mkoptions apply-sed-files-to-template \
-		@srcdir@/options_set_option_template.cpp \
+		$(if $(COVERAGE_ON), @abs_srcdir@, @srcdir@)/options_set_option_template.cpp \
 		@builddir@/options_set_option_template.cpp.sed \
 		summary.sed \
 	) > "$@"
diff --git a/src/options/argument_extender.h b/src/options/argument_extender.h
index 6be41fe..eea8eca 100644
--- a/src/options/argument_extender.h
+++ b/src/options/argument_extender.h
@@ -2,9 +2,9 @@
 /*! \file argument_extender.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/argument_extender_implementation.cpp b/src/options/argument_extender_implementation.cpp
index 0c23434..9c38b34 100644
--- a/src/options/argument_extender_implementation.cpp
+++ b/src/options/argument_extender_implementation.cpp
@@ -2,9 +2,9 @@
 /*! \file argument_extender_implementation.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/argument_extender_implementation.h b/src/options/argument_extender_implementation.h
index e948132..859a88b 100644
--- a/src/options/argument_extender_implementation.h
+++ b/src/options/argument_extender_implementation.h
@@ -2,9 +2,9 @@
 /*! \file argument_extender_implementation.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/arith_heuristic_pivot_rule.cpp b/src/options/arith_heuristic_pivot_rule.cpp
index 15c340a..b07b400 100644
--- a/src/options/arith_heuristic_pivot_rule.cpp
+++ b/src/options/arith_heuristic_pivot_rule.cpp
@@ -2,9 +2,9 @@
 /*! \file arith_heuristic_pivot_rule.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/arith_heuristic_pivot_rule.h b/src/options/arith_heuristic_pivot_rule.h
index 9048cb9..ebfbf5e 100644
--- a/src/options/arith_heuristic_pivot_rule.h
+++ b/src/options/arith_heuristic_pivot_rule.h
@@ -2,9 +2,9 @@
 /*! \file arith_heuristic_pivot_rule.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/arith_options b/src/options/arith_options
index f38e377..32310a4 100644
--- a/src/options/arith_options
+++ b/src/options/arith_options
@@ -135,7 +135,7 @@ option replayRejectCutSize --replay-reject-cut unsigned :default 25500
  maximum complexity of any coefficient while replaying cuts
 
 option lemmaRejectCutSize --replay-lemma-reject-cut unsigned :default 25500
- maximum complexity of any coefficient while outputing replaying cut lemmas
+ maximum complexity of any coefficient while outputting replaying cut lemmas
 
 option soiApproxMajorFailure --replay-soi-major-threshold double :default .01
  threshold for a major tolerance failure by the approximate solver
@@ -165,4 +165,28 @@ option pbRewriteThreshold --pb-rewrite-threshold int :default 256
 option sNormInferEq --snorm-infer-eq bool :default false
  infer equalities based on Shostak normalization
 
+option nlExt --nl-ext bool :default true
+ extended approach to non-linear
+ 
+option nlExtResBound --nl-ext-rbound bool :default false
+ use resolution-style inference for inferring new bounds
+
+option nlExtTangentPlanes --nl-ext-tplanes bool :default false
+ use non-terminating tangent plane strategy for non-linear
+
+option nlExtEntailConflicts --nl-ext-ent-conf bool :default false
+ check for entailed conflicts in non-linear solver
+ 
+option nlExtRewrites --nl-ext-rewrite bool :default true
+ do rewrites in non-linear solver
+ 
+option nlExtSolveSubs --nl-ext-solve-subs bool :default false
+ do solving for determining constant substitutions
+ 
+option nlExtPurify --nl-ext-purify bool :default false
+ purify non-linear terms at preprocess
+ 
+option nlExtSplitZero --nl-ext-split-zero bool :default false
+ intial splits on zero for all variables
+
 endmodule
diff --git a/src/options/arith_options.cpp b/src/options/arith_options.cpp
index 681391b..7d98d6a 100644
--- a/src/options/arith_options.cpp
+++ b/src/options/arith_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -19,324 +19,372 @@
 namespace CVC4 {
 
 
-#line 8 "../../../../../src/options/arith_options"
+#line 8 "../../../src/options/arith_options"
 template <> const options::arithUnateLemmaMode__option_t::type& Options::operator[](options::arithUnateLemmaMode__option_t) const { return d_holder->arithUnateLemmaMode; }
-#line 8 "../../../../../src/options/arith_options"
+#line 8 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithUnateLemmaMode__option_t) const { return d_holder->arithUnateLemmaMode__setByUser__; }
-#line 11 "../../../../../src/options/arith_options"
+#line 11 "../../../src/options/arith_options"
 template <> const options::arithPropagationMode__option_t::type& Options::operator[](options::arithPropagationMode__option_t) const { return d_holder->arithPropagationMode; }
-#line 11 "../../../../../src/options/arith_options"
+#line 11 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithPropagationMode__option_t) const { return d_holder->arithPropagationMode__setByUser__; }
-#line 18 "../../../../../src/options/arith_options"
+#line 18 "../../../src/options/arith_options"
 template <> void Options::set(options::arithHeuristicPivots__option_t, const options::arithHeuristicPivots__option_t::type& x) { d_holder->arithHeuristicPivots = x; }
-#line 18 "../../../../../src/options/arith_options"
+#line 18 "../../../src/options/arith_options"
 template <> const options::arithHeuristicPivots__option_t::type& Options::operator[](options::arithHeuristicPivots__option_t) const { return d_holder->arithHeuristicPivots; }
-#line 18 "../../../../../src/options/arith_options"
+#line 18 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithHeuristicPivots__option_t) const { return d_holder->arithHeuristicPivots__setByUser__; }
-#line 25 "../../../../../src/options/arith_options"
+#line 25 "../../../src/options/arith_options"
 template <> void Options::set(options::arithStandardCheckVarOrderPivots__option_t, const options::arithStandardCheckVarOrderPivots__option_t::type& x) { d_holder->arithStandardCheckVarOrderPivots = x; }
-#line 25 "../../../../../src/options/arith_options"
+#line 25 "../../../src/options/arith_options"
 template <> const options::arithStandardCheckVarOrderPivots__option_t::type& Options::operator[](options::arithStandardCheckVarOrderPivots__option_t) const { return d_holder->arithStandardCheckVarOrderPivots; }
-#line 25 "../../../../../src/options/arith_options"
+#line 25 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithStandardCheckVarOrderPivots__option_t) const { return d_holder->arithStandardCheckVarOrderPivots__setByUser__; }
-#line 28 "../../../../../src/options/arith_options"
+#line 28 "../../../src/options/arith_options"
 template <> const options::arithErrorSelectionRule__option_t::type& Options::operator[](options::arithErrorSelectionRule__option_t) const { return d_holder->arithErrorSelectionRule; }
-#line 28 "../../../../../src/options/arith_options"
+#line 28 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithErrorSelectionRule__option_t) const { return d_holder->arithErrorSelectionRule__setByUser__; }
-#line 32 "../../../../../src/options/arith_options"
+#line 32 "../../../src/options/arith_options"
 template <> const options::arithSimplexCheckPeriod__option_t::type& Options::operator[](options::arithSimplexCheckPeriod__option_t) const { return d_holder->arithSimplexCheckPeriod; }
-#line 32 "../../../../../src/options/arith_options"
+#line 32 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithSimplexCheckPeriod__option_t) const { return d_holder->arithSimplexCheckPeriod__setByUser__; }
-#line 39 "../../../../../src/options/arith_options"
+#line 39 "../../../src/options/arith_options"
 template <> void Options::set(options::arithPivotThreshold__option_t, const options::arithPivotThreshold__option_t::type& x) { d_holder->arithPivotThreshold = x; }
-#line 39 "../../../../../src/options/arith_options"
+#line 39 "../../../src/options/arith_options"
 template <> const options::arithPivotThreshold__option_t::type& Options::operator[](options::arithPivotThreshold__option_t) const { return d_holder->arithPivotThreshold; }
-#line 39 "../../../../../src/options/arith_options"
+#line 39 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithPivotThreshold__option_t) const { return d_holder->arithPivotThreshold__setByUser__; }
-#line 42 "../../../../../src/options/arith_options"
+#line 42 "../../../src/options/arith_options"
 template <> const options::arithPropagateMaxLength__option_t::type& Options::operator[](options::arithPropagateMaxLength__option_t) const { return d_holder->arithPropagateMaxLength; }
-#line 42 "../../../../../src/options/arith_options"
+#line 42 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithPropagateMaxLength__option_t) const { return d_holder->arithPropagateMaxLength__setByUser__; }
-#line 45 "../../../../../src/options/arith_options"
+#line 45 "../../../src/options/arith_options"
 template <> const options::arithDioSolver__option_t::type& Options::operator[](options::arithDioSolver__option_t) const { return d_holder->arithDioSolver; }
-#line 45 "../../../../../src/options/arith_options"
+#line 45 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithDioSolver__option_t) const { return d_holder->arithDioSolver__setByUser__; }
-#line 51 "../../../../../src/options/arith_options"
+#line 51 "../../../src/options/arith_options"
 template <> void Options::set(options::arithRewriteEq__option_t, const options::arithRewriteEq__option_t::type& x) { d_holder->arithRewriteEq = x; }
-#line 51 "../../../../../src/options/arith_options"
+#line 51 "../../../src/options/arith_options"
 template <> const options::arithRewriteEq__option_t::type& Options::operator[](options::arithRewriteEq__option_t) const { return d_holder->arithRewriteEq; }
-#line 51 "../../../../../src/options/arith_options"
+#line 51 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithRewriteEq__option_t) const { return d_holder->arithRewriteEq__setByUser__; }
-#line 56 "../../../../../src/options/arith_options"
+#line 56 "../../../src/options/arith_options"
 template <> const options::arithMLTrick__option_t::type& Options::operator[](options::arithMLTrick__option_t) const { return d_holder->arithMLTrick; }
-#line 56 "../../../../../src/options/arith_options"
+#line 56 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithMLTrick__option_t) const { return d_holder->arithMLTrick__setByUser__; }
-#line 60 "../../../../../src/options/arith_options"
+#line 60 "../../../src/options/arith_options"
 template <> const options::arithMLTrickSubstitutions__option_t::type& Options::operator[](options::arithMLTrickSubstitutions__option_t) const { return d_holder->arithMLTrickSubstitutions; }
-#line 60 "../../../../../src/options/arith_options"
+#line 60 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithMLTrickSubstitutions__option_t) const { return d_holder->arithMLTrickSubstitutions__setByUser__; }
-#line 63 "../../../../../src/options/arith_options"
+#line 63 "../../../src/options/arith_options"
 template <> void Options::set(options::doCutAllBounded__option_t, const options::doCutAllBounded__option_t::type& x) { d_holder->doCutAllBounded = x; }
-#line 63 "../../../../../src/options/arith_options"
+#line 63 "../../../src/options/arith_options"
 template <> const options::doCutAllBounded__option_t::type& Options::operator[](options::doCutAllBounded__option_t) const { return d_holder->doCutAllBounded; }
-#line 63 "../../../../../src/options/arith_options"
+#line 63 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::doCutAllBounded__option_t) const { return d_holder->doCutAllBounded__setByUser__; }
-#line 67 "../../../../../src/options/arith_options"
+#line 67 "../../../src/options/arith_options"
 template <> const options::maxCutsInContext__option_t::type& Options::operator[](options::maxCutsInContext__option_t) const { return d_holder->maxCutsInContext; }
-#line 67 "../../../../../src/options/arith_options"
+#line 67 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::maxCutsInContext__option_t) const { return d_holder->maxCutsInContext__setByUser__; }
-#line 70 "../../../../../src/options/arith_options"
+#line 70 "../../../src/options/arith_options"
 template <> const options::revertArithModels__option_t::type& Options::operator[](options::revertArithModels__option_t) const { return d_holder->revertArithModels; }
-#line 70 "../../../../../src/options/arith_options"
+#line 70 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::revertArithModels__option_t) const { return d_holder->revertArithModels__setByUser__; }
-#line 73 "../../../../../src/options/arith_options"
+#line 73 "../../../src/options/arith_options"
 template <> void Options::set(options::havePenalties__option_t, const options::havePenalties__option_t::type& x) { d_holder->havePenalties = x; }
-#line 73 "../../../../../src/options/arith_options"
+#line 73 "../../../src/options/arith_options"
 template <> const options::havePenalties__option_t::type& Options::operator[](options::havePenalties__option_t) const { return d_holder->havePenalties; }
-#line 73 "../../../../../src/options/arith_options"
+#line 73 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::havePenalties__option_t) const { return d_holder->havePenalties__setByUser__; }
-#line 77 "../../../../../src/options/arith_options"
+#line 77 "../../../src/options/arith_options"
 template <> void Options::set(options::useFC__option_t, const options::useFC__option_t::type& x) { d_holder->useFC = x; }
-#line 77 "../../../../../src/options/arith_options"
+#line 77 "../../../src/options/arith_options"
 template <> const options::useFC__option_t::type& Options::operator[](options::useFC__option_t) const { return d_holder->useFC; }
-#line 77 "../../../../../src/options/arith_options"
+#line 77 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::useFC__option_t) const { return d_holder->useFC__setByUser__; }
-#line 80 "../../../../../src/options/arith_options"
+#line 80 "../../../src/options/arith_options"
 template <> void Options::set(options::useSOI__option_t, const options::useSOI__option_t::type& x) { d_holder->useSOI = x; }
-#line 80 "../../../../../src/options/arith_options"
+#line 80 "../../../src/options/arith_options"
 template <> const options::useSOI__option_t::type& Options::operator[](options::useSOI__option_t) const { return d_holder->useSOI; }
-#line 80 "../../../../../src/options/arith_options"
+#line 80 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::useSOI__option_t) const { return d_holder->useSOI__setByUser__; }
-#line 83 "../../../../../src/options/arith_options"
+#line 83 "../../../src/options/arith_options"
 template <> void Options::set(options::restrictedPivots__option_t, const options::restrictedPivots__option_t::type& x) { d_holder->restrictedPivots = x; }
-#line 83 "../../../../../src/options/arith_options"
+#line 83 "../../../src/options/arith_options"
 template <> const options::restrictedPivots__option_t::type& Options::operator[](options::restrictedPivots__option_t) const { return d_holder->restrictedPivots; }
-#line 83 "../../../../../src/options/arith_options"
+#line 83 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::restrictedPivots__option_t) const { return d_holder->restrictedPivots__setByUser__; }
-#line 86 "../../../../../src/options/arith_options"
+#line 86 "../../../src/options/arith_options"
 template <> void Options::set(options::collectPivots__option_t, const options::collectPivots__option_t::type& x) { d_holder->collectPivots = x; }
-#line 86 "../../../../../src/options/arith_options"
+#line 86 "../../../src/options/arith_options"
 template <> const options::collectPivots__option_t::type& Options::operator[](options::collectPivots__option_t) const { return d_holder->collectPivots; }
-#line 86 "../../../../../src/options/arith_options"
+#line 86 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::collectPivots__option_t) const { return d_holder->collectPivots__setByUser__; }
-#line 89 "../../../../../src/options/arith_options"
+#line 89 "../../../src/options/arith_options"
 template <> void Options::set(options::useApprox__option_t, const options::useApprox__option_t::type& x) { d_holder->useApprox = x; }
-#line 89 "../../../../../src/options/arith_options"
+#line 89 "../../../src/options/arith_options"
 template <> const options::useApprox__option_t::type& Options::operator[](options::useApprox__option_t) const { return d_holder->useApprox; }
-#line 89 "../../../../../src/options/arith_options"
+#line 89 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::useApprox__option_t) const { return d_holder->useApprox__setByUser__; }
-#line 92 "../../../../../src/options/arith_options"
+#line 92 "../../../src/options/arith_options"
 template <> void Options::set(options::maxApproxDepth__option_t, const options::maxApproxDepth__option_t::type& x) { d_holder->maxApproxDepth = x; }
-#line 92 "../../../../../src/options/arith_options"
+#line 92 "../../../src/options/arith_options"
 template <> const options::maxApproxDepth__option_t::type& Options::operator[](options::maxApproxDepth__option_t) const { return d_holder->maxApproxDepth; }
-#line 92 "../../../../../src/options/arith_options"
+#line 92 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::maxApproxDepth__option_t) const { return d_holder->maxApproxDepth__setByUser__; }
-#line 95 "../../../../../src/options/arith_options"
+#line 95 "../../../src/options/arith_options"
 template <> void Options::set(options::exportDioDecompositions__option_t, const options::exportDioDecompositions__option_t::type& x) { d_holder->exportDioDecompositions = x; }
-#line 95 "../../../../../src/options/arith_options"
+#line 95 "../../../src/options/arith_options"
 template <> const options::exportDioDecompositions__option_t::type& Options::operator[](options::exportDioDecompositions__option_t) const { return d_holder->exportDioDecompositions; }
-#line 95 "../../../../../src/options/arith_options"
+#line 95 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::exportDioDecompositions__option_t) const { return d_holder->exportDioDecompositions__setByUser__; }
-#line 98 "../../../../../src/options/arith_options"
+#line 98 "../../../src/options/arith_options"
 template <> void Options::set(options::newProp__option_t, const options::newProp__option_t::type& x) { d_holder->newProp = x; }
-#line 98 "../../../../../src/options/arith_options"
+#line 98 "../../../src/options/arith_options"
 template <> const options::newProp__option_t::type& Options::operator[](options::newProp__option_t) const { return d_holder->newProp; }
-#line 98 "../../../../../src/options/arith_options"
+#line 98 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::newProp__option_t) const { return d_holder->newProp__setByUser__; }
-#line 101 "../../../../../src/options/arith_options"
+#line 101 "../../../src/options/arith_options"
 template <> void Options::set(options::arithPropAsLemmaLength__option_t, const options::arithPropAsLemmaLength__option_t::type& x) { d_holder->arithPropAsLemmaLength = x; }
-#line 101 "../../../../../src/options/arith_options"
+#line 101 "../../../src/options/arith_options"
 template <> const options::arithPropAsLemmaLength__option_t::type& Options::operator[](options::arithPropAsLemmaLength__option_t) const { return d_holder->arithPropAsLemmaLength; }
-#line 101 "../../../../../src/options/arith_options"
+#line 101 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithPropAsLemmaLength__option_t) const { return d_holder->arithPropAsLemmaLength__setByUser__; }
-#line 104 "../../../../../src/options/arith_options"
+#line 104 "../../../src/options/arith_options"
 template <> void Options::set(options::soiQuickExplain__option_t, const options::soiQuickExplain__option_t::type& x) { d_holder->soiQuickExplain = x; }
-#line 104 "../../../../../src/options/arith_options"
+#line 104 "../../../src/options/arith_options"
 template <> const options::soiQuickExplain__option_t::type& Options::operator[](options::soiQuickExplain__option_t) const { return d_holder->soiQuickExplain; }
-#line 104 "../../../../../src/options/arith_options"
+#line 104 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::soiQuickExplain__option_t) const { return d_holder->soiQuickExplain__setByUser__; }
-#line 107 "../../../../../src/options/arith_options"
+#line 107 "../../../src/options/arith_options"
 template <> void Options::set(options::rewriteDivk__option_t, const options::rewriteDivk__option_t::type& x) { d_holder->rewriteDivk = x; }
-#line 107 "../../../../../src/options/arith_options"
+#line 107 "../../../src/options/arith_options"
 template <> const options::rewriteDivk__option_t::type& Options::operator[](options::rewriteDivk__option_t) const { return d_holder->rewriteDivk; }
-#line 107 "../../../../../src/options/arith_options"
+#line 107 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::rewriteDivk__option_t) const { return d_holder->rewriteDivk__setByUser__; }
-#line 110 "../../../../../src/options/arith_options"
+#line 110 "../../../src/options/arith_options"
 template <> const options::trySolveIntStandardEffort__option_t::type& Options::operator[](options::trySolveIntStandardEffort__option_t) const { return d_holder->trySolveIntStandardEffort; }
-#line 110 "../../../../../src/options/arith_options"
+#line 110 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::trySolveIntStandardEffort__option_t) const { return d_holder->trySolveIntStandardEffort__setByUser__; }
-#line 113 "../../../../../src/options/arith_options"
+#line 113 "../../../src/options/arith_options"
 template <> const options::replayFailureLemma__option_t::type& Options::operator[](options::replayFailureLemma__option_t) const { return d_holder->replayFailureLemma; }
-#line 113 "../../../../../src/options/arith_options"
+#line 113 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::replayFailureLemma__option_t) const { return d_holder->replayFailureLemma__setByUser__; }
-#line 116 "../../../../../src/options/arith_options"
+#line 116 "../../../src/options/arith_options"
 template <> const options::dioSolverTurns__option_t::type& Options::operator[](options::dioSolverTurns__option_t) const { return d_holder->dioSolverTurns; }
-#line 116 "../../../../../src/options/arith_options"
+#line 116 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::dioSolverTurns__option_t) const { return d_holder->dioSolverTurns__setByUser__; }
-#line 119 "../../../../../src/options/arith_options"
+#line 119 "../../../src/options/arith_options"
 template <> const options::rrTurns__option_t::type& Options::operator[](options::rrTurns__option_t) const { return d_holder->rrTurns; }
-#line 119 "../../../../../src/options/arith_options"
+#line 119 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::rrTurns__option_t) const { return d_holder->rrTurns__setByUser__; }
-#line 122 "../../../../../src/options/arith_options"
+#line 122 "../../../src/options/arith_options"
 template <> const options::dioRepeat__option_t::type& Options::operator[](options::dioRepeat__option_t) const { return d_holder->dioRepeat; }
-#line 122 "../../../../../src/options/arith_options"
+#line 122 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::dioRepeat__option_t) const { return d_holder->dioRepeat__setByUser__; }
-#line 125 "../../../../../src/options/arith_options"
+#line 125 "../../../src/options/arith_options"
 template <> const options::replayEarlyCloseDepths__option_t::type& Options::operator[](options::replayEarlyCloseDepths__option_t) const { return d_holder->replayEarlyCloseDepths; }
-#line 125 "../../../../../src/options/arith_options"
+#line 125 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::replayEarlyCloseDepths__option_t) const { return d_holder->replayEarlyCloseDepths__setByUser__; }
-#line 128 "../../../../../src/options/arith_options"
+#line 128 "../../../src/options/arith_options"
 template <> const options::replayFailurePenalty__option_t::type& Options::operator[](options::replayFailurePenalty__option_t) const { return d_holder->replayFailurePenalty; }
-#line 128 "../../../../../src/options/arith_options"
+#line 128 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::replayFailurePenalty__option_t) const { return d_holder->replayFailurePenalty__setByUser__; }
-#line 131 "../../../../../src/options/arith_options"
+#line 131 "../../../src/options/arith_options"
 template <> const options::replayNumericFailurePenalty__option_t::type& Options::operator[](options::replayNumericFailurePenalty__option_t) const { return d_holder->replayNumericFailurePenalty; }
-#line 131 "../../../../../src/options/arith_options"
+#line 131 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::replayNumericFailurePenalty__option_t) const { return d_holder->replayNumericFailurePenalty__setByUser__; }
-#line 134 "../../../../../src/options/arith_options"
+#line 134 "../../../src/options/arith_options"
 template <> const options::replayRejectCutSize__option_t::type& Options::operator[](options::replayRejectCutSize__option_t) const { return d_holder->replayRejectCutSize; }
-#line 134 "../../../../../src/options/arith_options"
+#line 134 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::replayRejectCutSize__option_t) const { return d_holder->replayRejectCutSize__setByUser__; }
-#line 137 "../../../../../src/options/arith_options"
+#line 137 "../../../src/options/arith_options"
 template <> const options::lemmaRejectCutSize__option_t::type& Options::operator[](options::lemmaRejectCutSize__option_t) const { return d_holder->lemmaRejectCutSize; }
-#line 137 "../../../../../src/options/arith_options"
+#line 137 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::lemmaRejectCutSize__option_t) const { return d_holder->lemmaRejectCutSize__setByUser__; }
-#line 140 "../../../../../src/options/arith_options"
+#line 140 "../../../src/options/arith_options"
 template <> const options::soiApproxMajorFailure__option_t::type& Options::operator[](options::soiApproxMajorFailure__option_t) const { return d_holder->soiApproxMajorFailure; }
-#line 140 "../../../../../src/options/arith_options"
+#line 140 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::soiApproxMajorFailure__option_t) const { return d_holder->soiApproxMajorFailure__setByUser__; }
-#line 143 "../../../../../src/options/arith_options"
+#line 143 "../../../src/options/arith_options"
 template <> const options::soiApproxMajorFailurePen__option_t::type& Options::operator[](options::soiApproxMajorFailurePen__option_t) const { return d_holder->soiApproxMajorFailurePen; }
-#line 143 "../../../../../src/options/arith_options"
+#line 143 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::soiApproxMajorFailurePen__option_t) const { return d_holder->soiApproxMajorFailurePen__setByUser__; }
-#line 146 "../../../../../src/options/arith_options"
+#line 146 "../../../src/options/arith_options"
 template <> const options::soiApproxMinorFailure__option_t::type& Options::operator[](options::soiApproxMinorFailure__option_t) const { return d_holder->soiApproxMinorFailure; }
-#line 146 "../../../../../src/options/arith_options"
+#line 146 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::soiApproxMinorFailure__option_t) const { return d_holder->soiApproxMinorFailure__setByUser__; }
-#line 149 "../../../../../src/options/arith_options"
+#line 149 "../../../src/options/arith_options"
 template <> const options::soiApproxMinorFailurePen__option_t::type& Options::operator[](options::soiApproxMinorFailurePen__option_t) const { return d_holder->soiApproxMinorFailurePen; }
-#line 149 "../../../../../src/options/arith_options"
+#line 149 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::soiApproxMinorFailurePen__option_t) const { return d_holder->soiApproxMinorFailurePen__setByUser__; }
-#line 152 "../../../../../src/options/arith_options"
+#line 152 "../../../src/options/arith_options"
 template <> const options::ppAssertMaxSubSize__option_t::type& Options::operator[](options::ppAssertMaxSubSize__option_t) const { return d_holder->ppAssertMaxSubSize; }
-#line 152 "../../../../../src/options/arith_options"
+#line 152 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::ppAssertMaxSubSize__option_t) const { return d_holder->ppAssertMaxSubSize__setByUser__; }
-#line 155 "../../../../../src/options/arith_options"
+#line 155 "../../../src/options/arith_options"
 template <> const options::maxReplayTree__option_t::type& Options::operator[](options::maxReplayTree__option_t) const { return d_holder->maxReplayTree; }
-#line 155 "../../../../../src/options/arith_options"
+#line 155 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::maxReplayTree__option_t) const { return d_holder->maxReplayTree__setByUser__; }
-#line 159 "../../../../../src/options/arith_options"
+#line 159 "../../../src/options/arith_options"
 template <> const options::pbRewrites__option_t::type& Options::operator[](options::pbRewrites__option_t) const { return d_holder->pbRewrites; }
-#line 159 "../../../../../src/options/arith_options"
+#line 159 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::pbRewrites__option_t) const { return d_holder->pbRewrites__setByUser__; }
-#line 162 "../../../../../src/options/arith_options"
+#line 162 "../../../src/options/arith_options"
 template <> const options::pbRewriteThreshold__option_t::type& Options::operator[](options::pbRewriteThreshold__option_t) const { return d_holder->pbRewriteThreshold; }
-#line 162 "../../../../../src/options/arith_options"
+#line 162 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::pbRewriteThreshold__option_t) const { return d_holder->pbRewriteThreshold__setByUser__; }
-#line 165 "../../../../../src/options/arith_options"
+#line 165 "../../../src/options/arith_options"
 template <> const options::sNormInferEq__option_t::type& Options::operator[](options::sNormInferEq__option_t) const { return d_holder->sNormInferEq; }
-#line 165 "../../../../../src/options/arith_options"
+#line 165 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::sNormInferEq__option_t) const { return d_holder->sNormInferEq__setByUser__; }
+#line 168 "../../../src/options/arith_options"
+template <> const options::nlExt__option_t::type& Options::operator[](options::nlExt__option_t) const { return d_holder->nlExt; }
+#line 168 "../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::nlExt__option_t) const { return d_holder->nlExt__setByUser__; }
+#line 171 "../../../src/options/arith_options"
+template <> const options::nlExtResBound__option_t::type& Options::operator[](options::nlExtResBound__option_t) const { return d_holder->nlExtResBound; }
+#line 171 "../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::nlExtResBound__option_t) const { return d_holder->nlExtResBound__setByUser__; }
+#line 174 "../../../src/options/arith_options"
+template <> const options::nlExtTangentPlanes__option_t::type& Options::operator[](options::nlExtTangentPlanes__option_t) const { return d_holder->nlExtTangentPlanes; }
+#line 174 "../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::nlExtTangentPlanes__option_t) const { return d_holder->nlExtTangentPlanes__setByUser__; }
+#line 177 "../../../src/options/arith_options"
+template <> const options::nlExtEntailConflicts__option_t::type& Options::operator[](options::nlExtEntailConflicts__option_t) const { return d_holder->nlExtEntailConflicts; }
+#line 177 "../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::nlExtEntailConflicts__option_t) const { return d_holder->nlExtEntailConflicts__setByUser__; }
+#line 180 "../../../src/options/arith_options"
+template <> const options::nlExtRewrites__option_t::type& Options::operator[](options::nlExtRewrites__option_t) const { return d_holder->nlExtRewrites; }
+#line 180 "../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::nlExtRewrites__option_t) const { return d_holder->nlExtRewrites__setByUser__; }
+#line 183 "../../../src/options/arith_options"
+template <> const options::nlExtSolveSubs__option_t::type& Options::operator[](options::nlExtSolveSubs__option_t) const { return d_holder->nlExtSolveSubs; }
+#line 183 "../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::nlExtSolveSubs__option_t) const { return d_holder->nlExtSolveSubs__setByUser__; }
+#line 186 "../../../src/options/arith_options"
+template <> const options::nlExtPurify__option_t::type& Options::operator[](options::nlExtPurify__option_t) const { return d_holder->nlExtPurify; }
+#line 186 "../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::nlExtPurify__option_t) const { return d_holder->nlExtPurify__setByUser__; }
+#line 189 "../../../src/options/arith_options"
+template <> const options::nlExtSplitZero__option_t::type& Options::operator[](options::nlExtSplitZero__option_t) const { return d_holder->nlExtSplitZero; }
+#line 189 "../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::nlExtSplitZero__option_t) const { return d_holder->nlExtSplitZero__setByUser__; }
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/arith_options"
+#line 8 "../../../src/options/arith_options"
 struct arithUnateLemmaMode__option_t arithUnateLemmaMode;
-#line 11 "../../../../../src/options/arith_options"
+#line 11 "../../../src/options/arith_options"
 struct arithPropagationMode__option_t arithPropagationMode;
-#line 18 "../../../../../src/options/arith_options"
+#line 18 "../../../src/options/arith_options"
 struct arithHeuristicPivots__option_t arithHeuristicPivots;
-#line 25 "../../../../../src/options/arith_options"
+#line 25 "../../../src/options/arith_options"
 struct arithStandardCheckVarOrderPivots__option_t arithStandardCheckVarOrderPivots;
-#line 28 "../../../../../src/options/arith_options"
+#line 28 "../../../src/options/arith_options"
 struct arithErrorSelectionRule__option_t arithErrorSelectionRule;
-#line 32 "../../../../../src/options/arith_options"
+#line 32 "../../../src/options/arith_options"
 struct arithSimplexCheckPeriod__option_t arithSimplexCheckPeriod;
-#line 39 "../../../../../src/options/arith_options"
+#line 39 "../../../src/options/arith_options"
 struct arithPivotThreshold__option_t arithPivotThreshold;
-#line 42 "../../../../../src/options/arith_options"
+#line 42 "../../../src/options/arith_options"
 struct arithPropagateMaxLength__option_t arithPropagateMaxLength;
-#line 45 "../../../../../src/options/arith_options"
+#line 45 "../../../src/options/arith_options"
 struct arithDioSolver__option_t arithDioSolver;
-#line 51 "../../../../../src/options/arith_options"
+#line 51 "../../../src/options/arith_options"
 struct arithRewriteEq__option_t arithRewriteEq;
-#line 56 "../../../../../src/options/arith_options"
+#line 56 "../../../src/options/arith_options"
 struct arithMLTrick__option_t arithMLTrick;
-#line 60 "../../../../../src/options/arith_options"
+#line 60 "../../../src/options/arith_options"
 struct arithMLTrickSubstitutions__option_t arithMLTrickSubstitutions;
-#line 63 "../../../../../src/options/arith_options"
+#line 63 "../../../src/options/arith_options"
 struct doCutAllBounded__option_t doCutAllBounded;
-#line 67 "../../../../../src/options/arith_options"
+#line 67 "../../../src/options/arith_options"
 struct maxCutsInContext__option_t maxCutsInContext;
-#line 70 "../../../../../src/options/arith_options"
+#line 70 "../../../src/options/arith_options"
 struct revertArithModels__option_t revertArithModels;
-#line 73 "../../../../../src/options/arith_options"
+#line 73 "../../../src/options/arith_options"
 struct havePenalties__option_t havePenalties;
-#line 77 "../../../../../src/options/arith_options"
+#line 77 "../../../src/options/arith_options"
 struct useFC__option_t useFC;
-#line 80 "../../../../../src/options/arith_options"
+#line 80 "../../../src/options/arith_options"
 struct useSOI__option_t useSOI;
-#line 83 "../../../../../src/options/arith_options"
+#line 83 "../../../src/options/arith_options"
 struct restrictedPivots__option_t restrictedPivots;
-#line 86 "../../../../../src/options/arith_options"
+#line 86 "../../../src/options/arith_options"
 struct collectPivots__option_t collectPivots;
-#line 89 "../../../../../src/options/arith_options"
+#line 89 "../../../src/options/arith_options"
 struct useApprox__option_t useApprox;
-#line 92 "../../../../../src/options/arith_options"
+#line 92 "../../../src/options/arith_options"
 struct maxApproxDepth__option_t maxApproxDepth;
-#line 95 "../../../../../src/options/arith_options"
+#line 95 "../../../src/options/arith_options"
 struct exportDioDecompositions__option_t exportDioDecompositions;
-#line 98 "../../../../../src/options/arith_options"
+#line 98 "../../../src/options/arith_options"
 struct newProp__option_t newProp;
-#line 101 "../../../../../src/options/arith_options"
+#line 101 "../../../src/options/arith_options"
 struct arithPropAsLemmaLength__option_t arithPropAsLemmaLength;
-#line 104 "../../../../../src/options/arith_options"
+#line 104 "../../../src/options/arith_options"
 struct soiQuickExplain__option_t soiQuickExplain;
-#line 107 "../../../../../src/options/arith_options"
+#line 107 "../../../src/options/arith_options"
 struct rewriteDivk__option_t rewriteDivk;
-#line 110 "../../../../../src/options/arith_options"
+#line 110 "../../../src/options/arith_options"
 struct trySolveIntStandardEffort__option_t trySolveIntStandardEffort;
-#line 113 "../../../../../src/options/arith_options"
+#line 113 "../../../src/options/arith_options"
 struct replayFailureLemma__option_t replayFailureLemma;
-#line 116 "../../../../../src/options/arith_options"
+#line 116 "../../../src/options/arith_options"
 struct dioSolverTurns__option_t dioSolverTurns;
-#line 119 "../../../../../src/options/arith_options"
+#line 119 "../../../src/options/arith_options"
 struct rrTurns__option_t rrTurns;
-#line 122 "../../../../../src/options/arith_options"
+#line 122 "../../../src/options/arith_options"
 struct dioRepeat__option_t dioRepeat;
-#line 125 "../../../../../src/options/arith_options"
+#line 125 "../../../src/options/arith_options"
 struct replayEarlyCloseDepths__option_t replayEarlyCloseDepths;
-#line 128 "../../../../../src/options/arith_options"
+#line 128 "../../../src/options/arith_options"
 struct replayFailurePenalty__option_t replayFailurePenalty;
-#line 131 "../../../../../src/options/arith_options"
+#line 131 "../../../src/options/arith_options"
 struct replayNumericFailurePenalty__option_t replayNumericFailurePenalty;
-#line 134 "../../../../../src/options/arith_options"
+#line 134 "../../../src/options/arith_options"
 struct replayRejectCutSize__option_t replayRejectCutSize;
-#line 137 "../../../../../src/options/arith_options"
+#line 137 "../../../src/options/arith_options"
 struct lemmaRejectCutSize__option_t lemmaRejectCutSize;
-#line 140 "../../../../../src/options/arith_options"
+#line 140 "../../../src/options/arith_options"
 struct soiApproxMajorFailure__option_t soiApproxMajorFailure;
-#line 143 "../../../../../src/options/arith_options"
+#line 143 "../../../src/options/arith_options"
 struct soiApproxMajorFailurePen__option_t soiApproxMajorFailurePen;
-#line 146 "../../../../../src/options/arith_options"
+#line 146 "../../../src/options/arith_options"
 struct soiApproxMinorFailure__option_t soiApproxMinorFailure;
-#line 149 "../../../../../src/options/arith_options"
+#line 149 "../../../src/options/arith_options"
 struct soiApproxMinorFailurePen__option_t soiApproxMinorFailurePen;
-#line 152 "../../../../../src/options/arith_options"
+#line 152 "../../../src/options/arith_options"
 struct ppAssertMaxSubSize__option_t ppAssertMaxSubSize;
-#line 155 "../../../../../src/options/arith_options"
+#line 155 "../../../src/options/arith_options"
 struct maxReplayTree__option_t maxReplayTree;
-#line 159 "../../../../../src/options/arith_options"
+#line 159 "../../../src/options/arith_options"
 struct pbRewrites__option_t pbRewrites;
-#line 162 "../../../../../src/options/arith_options"
+#line 162 "../../../src/options/arith_options"
 struct pbRewriteThreshold__option_t pbRewriteThreshold;
-#line 165 "../../../../../src/options/arith_options"
+#line 165 "../../../src/options/arith_options"
 struct sNormInferEq__option_t sNormInferEq;
+#line 168 "../../../src/options/arith_options"
+struct nlExt__option_t nlExt;
+#line 171 "../../../src/options/arith_options"
+struct nlExtResBound__option_t nlExtResBound;
+#line 174 "../../../src/options/arith_options"
+struct nlExtTangentPlanes__option_t nlExtTangentPlanes;
+#line 177 "../../../src/options/arith_options"
+struct nlExtEntailConflicts__option_t nlExtEntailConflicts;
+#line 180 "../../../src/options/arith_options"
+struct nlExtRewrites__option_t nlExtRewrites;
+#line 183 "../../../src/options/arith_options"
+struct nlExtSolveSubs__option_t nlExtSolveSubs;
+#line 186 "../../../src/options/arith_options"
+struct nlExtPurify__option_t nlExtPurify;
+#line 189 "../../../src/options/arith_options"
+struct nlExtSplitZero__option_t nlExtSplitZero;
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/arith_options.h b/src/options/arith_options.h
index b1de166..30d56b2 100644
--- a/src/options/arith_options.h
+++ b/src/options/arith_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -21,14 +21,14 @@
 
 #include "options/options.h"
 
-#line 8 "../../../../../src/options/arith_options"
+#line 8 "../../../src/options/arith_options"
 #include "options/arith_unate_lemma_mode.h"
-#line 11 "../../../../../src/options/arith_options"
+#line 11 "../../../src/options/arith_options"
 #include "options/arith_propagation_mode.h"
-#line 28 "../../../../../src/options/arith_options"
+#line 28 "../../../src/options/arith_options"
 #include "options/arith_heuristic_pivot_rule.h"
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__ARITH__FOR_OPTION_HOLDER \
   arithUnateLemmaMode__option_t::type arithUnateLemmaMode; \
@@ -122,694 +122,814 @@
   pbRewriteThreshold__option_t::type pbRewriteThreshold; \
   bool pbRewriteThreshold__setByUser__; \
   sNormInferEq__option_t::type sNormInferEq; \
-  bool sNormInferEq__setByUser__;
-
-#line 30 "../../../../../src/options/base_options_template.h"
+  bool sNormInferEq__setByUser__; \
+  nlExt__option_t::type nlExt; \
+  bool nlExt__setByUser__; \
+  nlExtResBound__option_t::type nlExtResBound; \
+  bool nlExtResBound__setByUser__; \
+  nlExtTangentPlanes__option_t::type nlExtTangentPlanes; \
+  bool nlExtTangentPlanes__setByUser__; \
+  nlExtEntailConflicts__option_t::type nlExtEntailConflicts; \
+  bool nlExtEntailConflicts__setByUser__; \
+  nlExtRewrites__option_t::type nlExtRewrites; \
+  bool nlExtRewrites__setByUser__; \
+  nlExtSolveSubs__option_t::type nlExtSolveSubs; \
+  bool nlExtSolveSubs__setByUser__; \
+  nlExtPurify__option_t::type nlExtPurify; \
+  bool nlExtPurify__setByUser__; \
+  nlExtSplitZero__option_t::type nlExtSplitZero; \
+  bool nlExtSplitZero__setByUser__;
+
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/arith_options"
+#line 8 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC arithUnateLemmaMode__option_t { typedef ArithUnateLemmaMode type; type operator()() const; bool wasSetByUser() const; } arithUnateLemmaMode CVC4_PUBLIC;
-#line 11 "../../../../../src/options/arith_options"
+#line 11 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC arithPropagationMode__option_t { typedef ArithPropagationMode type; type operator()() const; bool wasSetByUser() const; } arithPropagationMode CVC4_PUBLIC;
-#line 18 "../../../../../src/options/arith_options"
+#line 18 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC arithHeuristicPivots__option_t { typedef int16_t type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arithHeuristicPivots CVC4_PUBLIC;
-#line 25 "../../../../../src/options/arith_options"
+#line 25 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC arithStandardCheckVarOrderPivots__option_t { typedef int16_t type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arithStandardCheckVarOrderPivots CVC4_PUBLIC;
-#line 28 "../../../../../src/options/arith_options"
+#line 28 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC arithErrorSelectionRule__option_t { typedef ErrorSelectionRule type; type operator()() const; bool wasSetByUser() const; } arithErrorSelectionRule CVC4_PUBLIC;
-#line 32 "../../../../../src/options/arith_options"
+#line 32 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC arithSimplexCheckPeriod__option_t { typedef uint16_t type; type operator()() const; bool wasSetByUser() const; } arithSimplexCheckPeriod CVC4_PUBLIC;
-#line 39 "../../../../../src/options/arith_options"
+#line 39 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC arithPivotThreshold__option_t { typedef uint16_t type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arithPivotThreshold CVC4_PUBLIC;
-#line 42 "../../../../../src/options/arith_options"
+#line 42 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC arithPropagateMaxLength__option_t { typedef uint16_t type; type operator()() const; bool wasSetByUser() const; } arithPropagateMaxLength CVC4_PUBLIC;
-#line 45 "../../../../../src/options/arith_options"
+#line 45 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC arithDioSolver__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } arithDioSolver CVC4_PUBLIC;
-#line 51 "../../../../../src/options/arith_options"
+#line 51 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC arithRewriteEq__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arithRewriteEq CVC4_PUBLIC;
-#line 56 "../../../../../src/options/arith_options"
+#line 56 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC arithMLTrick__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } arithMLTrick CVC4_PUBLIC;
-#line 60 "../../../../../src/options/arith_options"
+#line 60 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC arithMLTrickSubstitutions__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } arithMLTrickSubstitutions CVC4_PUBLIC;
-#line 63 "../../../../../src/options/arith_options"
+#line 63 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC doCutAllBounded__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } doCutAllBounded CVC4_PUBLIC;
-#line 67 "../../../../../src/options/arith_options"
+#line 67 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC maxCutsInContext__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } maxCutsInContext CVC4_PUBLIC;
-#line 70 "../../../../../src/options/arith_options"
+#line 70 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC revertArithModels__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } revertArithModels CVC4_PUBLIC;
-#line 73 "../../../../../src/options/arith_options"
+#line 73 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC havePenalties__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } havePenalties CVC4_PUBLIC;
-#line 77 "../../../../../src/options/arith_options"
+#line 77 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC useFC__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } useFC CVC4_PUBLIC;
-#line 80 "../../../../../src/options/arith_options"
+#line 80 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC useSOI__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } useSOI CVC4_PUBLIC;
-#line 83 "../../../../../src/options/arith_options"
+#line 83 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC restrictedPivots__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } restrictedPivots CVC4_PUBLIC;
-#line 86 "../../../../../src/options/arith_options"
+#line 86 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC collectPivots__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } collectPivots CVC4_PUBLIC;
-#line 89 "../../../../../src/options/arith_options"
+#line 89 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC useApprox__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } useApprox CVC4_PUBLIC;
-#line 92 "../../../../../src/options/arith_options"
+#line 92 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC maxApproxDepth__option_t { typedef int16_t type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } maxApproxDepth CVC4_PUBLIC;
-#line 95 "../../../../../src/options/arith_options"
+#line 95 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC exportDioDecompositions__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } exportDioDecompositions CVC4_PUBLIC;
-#line 98 "../../../../../src/options/arith_options"
+#line 98 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC newProp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } newProp CVC4_PUBLIC;
-#line 101 "../../../../../src/options/arith_options"
+#line 101 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC arithPropAsLemmaLength__option_t { typedef uint16_t type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arithPropAsLemmaLength CVC4_PUBLIC;
-#line 104 "../../../../../src/options/arith_options"
+#line 104 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC soiQuickExplain__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } soiQuickExplain CVC4_PUBLIC;
-#line 107 "../../../../../src/options/arith_options"
+#line 107 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC rewriteDivk__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } rewriteDivk CVC4_PUBLIC;
-#line 110 "../../../../../src/options/arith_options"
+#line 110 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC trySolveIntStandardEffort__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } trySolveIntStandardEffort CVC4_PUBLIC;
-#line 113 "../../../../../src/options/arith_options"
+#line 113 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC replayFailureLemma__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } replayFailureLemma CVC4_PUBLIC;
-#line 116 "../../../../../src/options/arith_options"
+#line 116 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC dioSolverTurns__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } dioSolverTurns CVC4_PUBLIC;
-#line 119 "../../../../../src/options/arith_options"
+#line 119 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC rrTurns__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } rrTurns CVC4_PUBLIC;
-#line 122 "../../../../../src/options/arith_options"
+#line 122 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC dioRepeat__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dioRepeat CVC4_PUBLIC;
-#line 125 "../../../../../src/options/arith_options"
+#line 125 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC replayEarlyCloseDepths__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } replayEarlyCloseDepths CVC4_PUBLIC;
-#line 128 "../../../../../src/options/arith_options"
+#line 128 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC replayFailurePenalty__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } replayFailurePenalty CVC4_PUBLIC;
-#line 131 "../../../../../src/options/arith_options"
+#line 131 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC replayNumericFailurePenalty__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } replayNumericFailurePenalty CVC4_PUBLIC;
-#line 134 "../../../../../src/options/arith_options"
+#line 134 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC replayRejectCutSize__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } replayRejectCutSize CVC4_PUBLIC;
-#line 137 "../../../../../src/options/arith_options"
+#line 137 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC lemmaRejectCutSize__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } lemmaRejectCutSize CVC4_PUBLIC;
-#line 140 "../../../../../src/options/arith_options"
+#line 140 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC soiApproxMajorFailure__option_t { typedef double type; type operator()() const; bool wasSetByUser() const; } soiApproxMajorFailure CVC4_PUBLIC;
-#line 143 "../../../../../src/options/arith_options"
+#line 143 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC soiApproxMajorFailurePen__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } soiApproxMajorFailurePen CVC4_PUBLIC;
-#line 146 "../../../../../src/options/arith_options"
+#line 146 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC soiApproxMinorFailure__option_t { typedef double type; type operator()() const; bool wasSetByUser() const; } soiApproxMinorFailure CVC4_PUBLIC;
-#line 149 "../../../../../src/options/arith_options"
+#line 149 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC soiApproxMinorFailurePen__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } soiApproxMinorFailurePen CVC4_PUBLIC;
-#line 152 "../../../../../src/options/arith_options"
+#line 152 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC ppAssertMaxSubSize__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } ppAssertMaxSubSize CVC4_PUBLIC;
-#line 155 "../../../../../src/options/arith_options"
+#line 155 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC maxReplayTree__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } maxReplayTree CVC4_PUBLIC;
-#line 159 "../../../../../src/options/arith_options"
+#line 159 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC pbRewrites__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } pbRewrites CVC4_PUBLIC;
-#line 162 "../../../../../src/options/arith_options"
+#line 162 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC pbRewriteThreshold__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } pbRewriteThreshold CVC4_PUBLIC;
-#line 165 "../../../../../src/options/arith_options"
+#line 165 "../../../src/options/arith_options"
 extern struct CVC4_PUBLIC sNormInferEq__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sNormInferEq CVC4_PUBLIC;
-
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 168 "../../../src/options/arith_options"
+extern struct CVC4_PUBLIC nlExt__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } nlExt CVC4_PUBLIC;
+#line 171 "../../../src/options/arith_options"
+extern struct CVC4_PUBLIC nlExtResBound__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } nlExtResBound CVC4_PUBLIC;
+#line 174 "../../../src/options/arith_options"
+extern struct CVC4_PUBLIC nlExtTangentPlanes__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } nlExtTangentPlanes CVC4_PUBLIC;
+#line 177 "../../../src/options/arith_options"
+extern struct CVC4_PUBLIC nlExtEntailConflicts__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } nlExtEntailConflicts CVC4_PUBLIC;
+#line 180 "../../../src/options/arith_options"
+extern struct CVC4_PUBLIC nlExtRewrites__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } nlExtRewrites CVC4_PUBLIC;
+#line 183 "../../../src/options/arith_options"
+extern struct CVC4_PUBLIC nlExtSolveSubs__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } nlExtSolveSubs CVC4_PUBLIC;
+#line 186 "../../../src/options/arith_options"
+extern struct CVC4_PUBLIC nlExtPurify__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } nlExtPurify CVC4_PUBLIC;
+#line 189 "../../../src/options/arith_options"
+extern struct CVC4_PUBLIC nlExtSplitZero__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } nlExtSplitZero CVC4_PUBLIC;
+
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
-#line 8 "../../../../../src/options/arith_options"
+#line 8 "../../../src/options/arith_options"
 template <> const options::arithUnateLemmaMode__option_t::type& Options::operator[](options::arithUnateLemmaMode__option_t) const;
-#line 8 "../../../../../src/options/arith_options"
+#line 8 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithUnateLemmaMode__option_t) const;
-#line 8 "../../../../../src/options/arith_options"
+#line 8 "../../../src/options/arith_options"
 template <> void Options::assign(options::arithUnateLemmaMode__option_t, std::string option, std::string value);
-#line 11 "../../../../../src/options/arith_options"
+#line 11 "../../../src/options/arith_options"
 template <> const options::arithPropagationMode__option_t::type& Options::operator[](options::arithPropagationMode__option_t) const;
-#line 11 "../../../../../src/options/arith_options"
+#line 11 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithPropagationMode__option_t) const;
-#line 11 "../../../../../src/options/arith_options"
+#line 11 "../../../src/options/arith_options"
 template <> void Options::assign(options::arithPropagationMode__option_t, std::string option, std::string value);
-#line 18 "../../../../../src/options/arith_options"
+#line 18 "../../../src/options/arith_options"
 template <> void Options::set(options::arithHeuristicPivots__option_t, const options::arithHeuristicPivots__option_t::type& x);
-#line 18 "../../../../../src/options/arith_options"
+#line 18 "../../../src/options/arith_options"
 template <> const options::arithHeuristicPivots__option_t::type& Options::operator[](options::arithHeuristicPivots__option_t) const;
-#line 18 "../../../../../src/options/arith_options"
+#line 18 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithHeuristicPivots__option_t) const;
-#line 18 "../../../../../src/options/arith_options"
+#line 18 "../../../src/options/arith_options"
 template <> void Options::assign(options::arithHeuristicPivots__option_t, std::string option, std::string value);
-#line 25 "../../../../../src/options/arith_options"
+#line 25 "../../../src/options/arith_options"
 template <> void Options::set(options::arithStandardCheckVarOrderPivots__option_t, const options::arithStandardCheckVarOrderPivots__option_t::type& x);
-#line 25 "../../../../../src/options/arith_options"
+#line 25 "../../../src/options/arith_options"
 template <> const options::arithStandardCheckVarOrderPivots__option_t::type& Options::operator[](options::arithStandardCheckVarOrderPivots__option_t) const;
-#line 25 "../../../../../src/options/arith_options"
+#line 25 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithStandardCheckVarOrderPivots__option_t) const;
-#line 25 "../../../../../src/options/arith_options"
+#line 25 "../../../src/options/arith_options"
 template <> void Options::assign(options::arithStandardCheckVarOrderPivots__option_t, std::string option, std::string value);
-#line 28 "../../../../../src/options/arith_options"
+#line 28 "../../../src/options/arith_options"
 template <> const options::arithErrorSelectionRule__option_t::type& Options::operator[](options::arithErrorSelectionRule__option_t) const;
-#line 28 "../../../../../src/options/arith_options"
+#line 28 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithErrorSelectionRule__option_t) const;
-#line 28 "../../../../../src/options/arith_options"
+#line 28 "../../../src/options/arith_options"
 template <> void Options::assign(options::arithErrorSelectionRule__option_t, std::string option, std::string value);
-#line 32 "../../../../../src/options/arith_options"
+#line 32 "../../../src/options/arith_options"
 template <> const options::arithSimplexCheckPeriod__option_t::type& Options::operator[](options::arithSimplexCheckPeriod__option_t) const;
-#line 32 "../../../../../src/options/arith_options"
+#line 32 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithSimplexCheckPeriod__option_t) const;
-#line 32 "../../../../../src/options/arith_options"
+#line 32 "../../../src/options/arith_options"
 template <> void Options::assign(options::arithSimplexCheckPeriod__option_t, std::string option, std::string value);
-#line 39 "../../../../../src/options/arith_options"
+#line 39 "../../../src/options/arith_options"
 template <> void Options::set(options::arithPivotThreshold__option_t, const options::arithPivotThreshold__option_t::type& x);
-#line 39 "../../../../../src/options/arith_options"
+#line 39 "../../../src/options/arith_options"
 template <> const options::arithPivotThreshold__option_t::type& Options::operator[](options::arithPivotThreshold__option_t) const;
-#line 39 "../../../../../src/options/arith_options"
+#line 39 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithPivotThreshold__option_t) const;
-#line 39 "../../../../../src/options/arith_options"
+#line 39 "../../../src/options/arith_options"
 template <> void Options::assign(options::arithPivotThreshold__option_t, std::string option, std::string value);
-#line 42 "../../../../../src/options/arith_options"
+#line 42 "../../../src/options/arith_options"
 template <> const options::arithPropagateMaxLength__option_t::type& Options::operator[](options::arithPropagateMaxLength__option_t) const;
-#line 42 "../../../../../src/options/arith_options"
+#line 42 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithPropagateMaxLength__option_t) const;
-#line 42 "../../../../../src/options/arith_options"
+#line 42 "../../../src/options/arith_options"
 template <> void Options::assign(options::arithPropagateMaxLength__option_t, std::string option, std::string value);
-#line 45 "../../../../../src/options/arith_options"
+#line 45 "../../../src/options/arith_options"
 template <> const options::arithDioSolver__option_t::type& Options::operator[](options::arithDioSolver__option_t) const;
-#line 45 "../../../../../src/options/arith_options"
+#line 45 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithDioSolver__option_t) const;
-#line 45 "../../../../../src/options/arith_options"
+#line 45 "../../../src/options/arith_options"
 template <> void Options::assignBool(options::arithDioSolver__option_t, std::string option, bool value);
-#line 51 "../../../../../src/options/arith_options"
+#line 51 "../../../src/options/arith_options"
 template <> void Options::set(options::arithRewriteEq__option_t, const options::arithRewriteEq__option_t::type& x);
-#line 51 "../../../../../src/options/arith_options"
+#line 51 "../../../src/options/arith_options"
 template <> const options::arithRewriteEq__option_t::type& Options::operator[](options::arithRewriteEq__option_t) const;
-#line 51 "../../../../../src/options/arith_options"
+#line 51 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithRewriteEq__option_t) const;
-#line 51 "../../../../../src/options/arith_options"
+#line 51 "../../../src/options/arith_options"
 template <> void Options::assignBool(options::arithRewriteEq__option_t, std::string option, bool value);
-#line 56 "../../../../../src/options/arith_options"
+#line 56 "../../../src/options/arith_options"
 template <> const options::arithMLTrick__option_t::type& Options::operator[](options::arithMLTrick__option_t) const;
-#line 56 "../../../../../src/options/arith_options"
+#line 56 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithMLTrick__option_t) const;
-#line 56 "../../../../../src/options/arith_options"
+#line 56 "../../../src/options/arith_options"
 template <> void Options::assignBool(options::arithMLTrick__option_t, std::string option, bool value);
-#line 60 "../../../../../src/options/arith_options"
+#line 60 "../../../src/options/arith_options"
 template <> const options::arithMLTrickSubstitutions__option_t::type& Options::operator[](options::arithMLTrickSubstitutions__option_t) const;
-#line 60 "../../../../../src/options/arith_options"
+#line 60 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithMLTrickSubstitutions__option_t) const;
-#line 60 "../../../../../src/options/arith_options"
+#line 60 "../../../src/options/arith_options"
 template <> void Options::assign(options::arithMLTrickSubstitutions__option_t, std::string option, std::string value);
-#line 63 "../../../../../src/options/arith_options"
+#line 63 "../../../src/options/arith_options"
 template <> void Options::set(options::doCutAllBounded__option_t, const options::doCutAllBounded__option_t::type& x);
-#line 63 "../../../../../src/options/arith_options"
+#line 63 "../../../src/options/arith_options"
 template <> const options::doCutAllBounded__option_t::type& Options::operator[](options::doCutAllBounded__option_t) const;
-#line 63 "../../../../../src/options/arith_options"
+#line 63 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::doCutAllBounded__option_t) const;
-#line 63 "../../../../../src/options/arith_options"
+#line 63 "../../../src/options/arith_options"
 template <> void Options::assignBool(options::doCutAllBounded__option_t, std::string option, bool value);
-#line 67 "../../../../../src/options/arith_options"
+#line 67 "../../../src/options/arith_options"
 template <> const options::maxCutsInContext__option_t::type& Options::operator[](options::maxCutsInContext__option_t) const;
-#line 67 "../../../../../src/options/arith_options"
+#line 67 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::maxCutsInContext__option_t) const;
-#line 67 "../../../../../src/options/arith_options"
+#line 67 "../../../src/options/arith_options"
 template <> void Options::assign(options::maxCutsInContext__option_t, std::string option, std::string value);
-#line 70 "../../../../../src/options/arith_options"
+#line 70 "../../../src/options/arith_options"
 template <> const options::revertArithModels__option_t::type& Options::operator[](options::revertArithModels__option_t) const;
-#line 70 "../../../../../src/options/arith_options"
+#line 70 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::revertArithModels__option_t) const;
-#line 70 "../../../../../src/options/arith_options"
+#line 70 "../../../src/options/arith_options"
 template <> void Options::assignBool(options::revertArithModels__option_t, std::string option, bool value);
-#line 73 "../../../../../src/options/arith_options"
+#line 73 "../../../src/options/arith_options"
 template <> void Options::set(options::havePenalties__option_t, const options::havePenalties__option_t::type& x);
-#line 73 "../../../../../src/options/arith_options"
+#line 73 "../../../src/options/arith_options"
 template <> const options::havePenalties__option_t::type& Options::operator[](options::havePenalties__option_t) const;
-#line 73 "../../../../../src/options/arith_options"
+#line 73 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::havePenalties__option_t) const;
-#line 73 "../../../../../src/options/arith_options"
+#line 73 "../../../src/options/arith_options"
 template <> void Options::assignBool(options::havePenalties__option_t, std::string option, bool value);
-#line 77 "../../../../../src/options/arith_options"
+#line 77 "../../../src/options/arith_options"
 template <> void Options::set(options::useFC__option_t, const options::useFC__option_t::type& x);
-#line 77 "../../../../../src/options/arith_options"
+#line 77 "../../../src/options/arith_options"
 template <> const options::useFC__option_t::type& Options::operator[](options::useFC__option_t) const;
-#line 77 "../../../../../src/options/arith_options"
+#line 77 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::useFC__option_t) const;
-#line 77 "../../../../../src/options/arith_options"
+#line 77 "../../../src/options/arith_options"
 template <> void Options::assignBool(options::useFC__option_t, std::string option, bool value);
-#line 80 "../../../../../src/options/arith_options"
+#line 80 "../../../src/options/arith_options"
 template <> void Options::set(options::useSOI__option_t, const options::useSOI__option_t::type& x);
-#line 80 "../../../../../src/options/arith_options"
+#line 80 "../../../src/options/arith_options"
 template <> const options::useSOI__option_t::type& Options::operator[](options::useSOI__option_t) const;
-#line 80 "../../../../../src/options/arith_options"
+#line 80 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::useSOI__option_t) const;
-#line 80 "../../../../../src/options/arith_options"
+#line 80 "../../../src/options/arith_options"
 template <> void Options::assignBool(options::useSOI__option_t, std::string option, bool value);
-#line 83 "../../../../../src/options/arith_options"
+#line 83 "../../../src/options/arith_options"
 template <> void Options::set(options::restrictedPivots__option_t, const options::restrictedPivots__option_t::type& x);
-#line 83 "../../../../../src/options/arith_options"
+#line 83 "../../../src/options/arith_options"
 template <> const options::restrictedPivots__option_t::type& Options::operator[](options::restrictedPivots__option_t) const;
-#line 83 "../../../../../src/options/arith_options"
+#line 83 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::restrictedPivots__option_t) const;
-#line 83 "../../../../../src/options/arith_options"
+#line 83 "../../../src/options/arith_options"
 template <> void Options::assignBool(options::restrictedPivots__option_t, std::string option, bool value);
-#line 86 "../../../../../src/options/arith_options"
+#line 86 "../../../src/options/arith_options"
 template <> void Options::set(options::collectPivots__option_t, const options::collectPivots__option_t::type& x);
-#line 86 "../../../../../src/options/arith_options"
+#line 86 "../../../src/options/arith_options"
 template <> const options::collectPivots__option_t::type& Options::operator[](options::collectPivots__option_t) const;
-#line 86 "../../../../../src/options/arith_options"
+#line 86 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::collectPivots__option_t) const;
-#line 86 "../../../../../src/options/arith_options"
+#line 86 "../../../src/options/arith_options"
 template <> void Options::assignBool(options::collectPivots__option_t, std::string option, bool value);
-#line 89 "../../../../../src/options/arith_options"
+#line 89 "../../../src/options/arith_options"
 template <> void Options::set(options::useApprox__option_t, const options::useApprox__option_t::type& x);
-#line 89 "../../../../../src/options/arith_options"
+#line 89 "../../../src/options/arith_options"
 template <> const options::useApprox__option_t::type& Options::operator[](options::useApprox__option_t) const;
-#line 89 "../../../../../src/options/arith_options"
+#line 89 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::useApprox__option_t) const;
-#line 89 "../../../../../src/options/arith_options"
+#line 89 "../../../src/options/arith_options"
 template <> void Options::assignBool(options::useApprox__option_t, std::string option, bool value);
-#line 92 "../../../../../src/options/arith_options"
+#line 92 "../../../src/options/arith_options"
 template <> void Options::set(options::maxApproxDepth__option_t, const options::maxApproxDepth__option_t::type& x);
-#line 92 "../../../../../src/options/arith_options"
+#line 92 "../../../src/options/arith_options"
 template <> const options::maxApproxDepth__option_t::type& Options::operator[](options::maxApproxDepth__option_t) const;
-#line 92 "../../../../../src/options/arith_options"
+#line 92 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::maxApproxDepth__option_t) const;
-#line 92 "../../../../../src/options/arith_options"
+#line 92 "../../../src/options/arith_options"
 template <> void Options::assign(options::maxApproxDepth__option_t, std::string option, std::string value);
-#line 95 "../../../../../src/options/arith_options"
+#line 95 "../../../src/options/arith_options"
 template <> void Options::set(options::exportDioDecompositions__option_t, const options::exportDioDecompositions__option_t::type& x);
-#line 95 "../../../../../src/options/arith_options"
+#line 95 "../../../src/options/arith_options"
 template <> const options::exportDioDecompositions__option_t::type& Options::operator[](options::exportDioDecompositions__option_t) const;
-#line 95 "../../../../../src/options/arith_options"
+#line 95 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::exportDioDecompositions__option_t) const;
-#line 95 "../../../../../src/options/arith_options"
+#line 95 "../../../src/options/arith_options"
 template <> void Options::assignBool(options::exportDioDecompositions__option_t, std::string option, bool value);
-#line 98 "../../../../../src/options/arith_options"
+#line 98 "../../../src/options/arith_options"
 template <> void Options::set(options::newProp__option_t, const options::newProp__option_t::type& x);
-#line 98 "../../../../../src/options/arith_options"
+#line 98 "../../../src/options/arith_options"
 template <> const options::newProp__option_t::type& Options::operator[](options::newProp__option_t) const;
-#line 98 "../../../../../src/options/arith_options"
+#line 98 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::newProp__option_t) const;
-#line 98 "../../../../../src/options/arith_options"
+#line 98 "../../../src/options/arith_options"
 template <> void Options::assignBool(options::newProp__option_t, std::string option, bool value);
-#line 101 "../../../../../src/options/arith_options"
+#line 101 "../../../src/options/arith_options"
 template <> void Options::set(options::arithPropAsLemmaLength__option_t, const options::arithPropAsLemmaLength__option_t::type& x);
-#line 101 "../../../../../src/options/arith_options"
+#line 101 "../../../src/options/arith_options"
 template <> const options::arithPropAsLemmaLength__option_t::type& Options::operator[](options::arithPropAsLemmaLength__option_t) const;
-#line 101 "../../../../../src/options/arith_options"
+#line 101 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::arithPropAsLemmaLength__option_t) const;
-#line 101 "../../../../../src/options/arith_options"
+#line 101 "../../../src/options/arith_options"
 template <> void Options::assign(options::arithPropAsLemmaLength__option_t, std::string option, std::string value);
-#line 104 "../../../../../src/options/arith_options"
+#line 104 "../../../src/options/arith_options"
 template <> void Options::set(options::soiQuickExplain__option_t, const options::soiQuickExplain__option_t::type& x);
-#line 104 "../../../../../src/options/arith_options"
+#line 104 "../../../src/options/arith_options"
 template <> const options::soiQuickExplain__option_t::type& Options::operator[](options::soiQuickExplain__option_t) const;
-#line 104 "../../../../../src/options/arith_options"
+#line 104 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::soiQuickExplain__option_t) const;
-#line 104 "../../../../../src/options/arith_options"
+#line 104 "../../../src/options/arith_options"
 template <> void Options::assignBool(options::soiQuickExplain__option_t, std::string option, bool value);
-#line 107 "../../../../../src/options/arith_options"
+#line 107 "../../../src/options/arith_options"
 template <> void Options::set(options::rewriteDivk__option_t, const options::rewriteDivk__option_t::type& x);
-#line 107 "../../../../../src/options/arith_options"
+#line 107 "../../../src/options/arith_options"
 template <> const options::rewriteDivk__option_t::type& Options::operator[](options::rewriteDivk__option_t) const;
-#line 107 "../../../../../src/options/arith_options"
+#line 107 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::rewriteDivk__option_t) const;
-#line 107 "../../../../../src/options/arith_options"
+#line 107 "../../../src/options/arith_options"
 template <> void Options::assignBool(options::rewriteDivk__option_t, std::string option, bool value);
-#line 110 "../../../../../src/options/arith_options"
+#line 110 "../../../src/options/arith_options"
 template <> const options::trySolveIntStandardEffort__option_t::type& Options::operator[](options::trySolveIntStandardEffort__option_t) const;
-#line 110 "../../../../../src/options/arith_options"
+#line 110 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::trySolveIntStandardEffort__option_t) const;
-#line 110 "../../../../../src/options/arith_options"
+#line 110 "../../../src/options/arith_options"
 template <> void Options::assignBool(options::trySolveIntStandardEffort__option_t, std::string option, bool value);
-#line 113 "../../../../../src/options/arith_options"
+#line 113 "../../../src/options/arith_options"
 template <> const options::replayFailureLemma__option_t::type& Options::operator[](options::replayFailureLemma__option_t) const;
-#line 113 "../../../../../src/options/arith_options"
+#line 113 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::replayFailureLemma__option_t) const;
-#line 113 "../../../../../src/options/arith_options"
+#line 113 "../../../src/options/arith_options"
 template <> void Options::assignBool(options::replayFailureLemma__option_t, std::string option, bool value);
-#line 116 "../../../../../src/options/arith_options"
+#line 116 "../../../src/options/arith_options"
 template <> const options::dioSolverTurns__option_t::type& Options::operator[](options::dioSolverTurns__option_t) const;
-#line 116 "../../../../../src/options/arith_options"
+#line 116 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::dioSolverTurns__option_t) const;
-#line 116 "../../../../../src/options/arith_options"
+#line 116 "../../../src/options/arith_options"
 template <> void Options::assign(options::dioSolverTurns__option_t, std::string option, std::string value);
-#line 119 "../../../../../src/options/arith_options"
+#line 119 "../../../src/options/arith_options"
 template <> const options::rrTurns__option_t::type& Options::operator[](options::rrTurns__option_t) const;
-#line 119 "../../../../../src/options/arith_options"
+#line 119 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::rrTurns__option_t) const;
-#line 119 "../../../../../src/options/arith_options"
+#line 119 "../../../src/options/arith_options"
 template <> void Options::assign(options::rrTurns__option_t, std::string option, std::string value);
-#line 122 "../../../../../src/options/arith_options"
+#line 122 "../../../src/options/arith_options"
 template <> const options::dioRepeat__option_t::type& Options::operator[](options::dioRepeat__option_t) const;
-#line 122 "../../../../../src/options/arith_options"
+#line 122 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::dioRepeat__option_t) const;
-#line 122 "../../../../../src/options/arith_options"
+#line 122 "../../../src/options/arith_options"
 template <> void Options::assignBool(options::dioRepeat__option_t, std::string option, bool value);
-#line 125 "../../../../../src/options/arith_options"
+#line 125 "../../../src/options/arith_options"
 template <> const options::replayEarlyCloseDepths__option_t::type& Options::operator[](options::replayEarlyCloseDepths__option_t) const;
-#line 125 "../../../../../src/options/arith_options"
+#line 125 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::replayEarlyCloseDepths__option_t) const;
-#line 125 "../../../../../src/options/arith_options"
+#line 125 "../../../src/options/arith_options"
 template <> void Options::assign(options::replayEarlyCloseDepths__option_t, std::string option, std::string value);
-#line 128 "../../../../../src/options/arith_options"
+#line 128 "../../../src/options/arith_options"
 template <> const options::replayFailurePenalty__option_t::type& Options::operator[](options::replayFailurePenalty__option_t) const;
-#line 128 "../../../../../src/options/arith_options"
+#line 128 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::replayFailurePenalty__option_t) const;
-#line 128 "../../../../../src/options/arith_options"
+#line 128 "../../../src/options/arith_options"
 template <> void Options::assign(options::replayFailurePenalty__option_t, std::string option, std::string value);
-#line 131 "../../../../../src/options/arith_options"
+#line 131 "../../../src/options/arith_options"
 template <> const options::replayNumericFailurePenalty__option_t::type& Options::operator[](options::replayNumericFailurePenalty__option_t) const;
-#line 131 "../../../../../src/options/arith_options"
+#line 131 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::replayNumericFailurePenalty__option_t) const;
-#line 131 "../../../../../src/options/arith_options"
+#line 131 "../../../src/options/arith_options"
 template <> void Options::assign(options::replayNumericFailurePenalty__option_t, std::string option, std::string value);
-#line 134 "../../../../../src/options/arith_options"
+#line 134 "../../../src/options/arith_options"
 template <> const options::replayRejectCutSize__option_t::type& Options::operator[](options::replayRejectCutSize__option_t) const;
-#line 134 "../../../../../src/options/arith_options"
+#line 134 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::replayRejectCutSize__option_t) const;
-#line 134 "../../../../../src/options/arith_options"
+#line 134 "../../../src/options/arith_options"
 template <> void Options::assign(options::replayRejectCutSize__option_t, std::string option, std::string value);
-#line 137 "../../../../../src/options/arith_options"
+#line 137 "../../../src/options/arith_options"
 template <> const options::lemmaRejectCutSize__option_t::type& Options::operator[](options::lemmaRejectCutSize__option_t) const;
-#line 137 "../../../../../src/options/arith_options"
+#line 137 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::lemmaRejectCutSize__option_t) const;
-#line 137 "../../../../../src/options/arith_options"
+#line 137 "../../../src/options/arith_options"
 template <> void Options::assign(options::lemmaRejectCutSize__option_t, std::string option, std::string value);
-#line 140 "../../../../../src/options/arith_options"
+#line 140 "../../../src/options/arith_options"
 template <> const options::soiApproxMajorFailure__option_t::type& Options::operator[](options::soiApproxMajorFailure__option_t) const;
-#line 140 "../../../../../src/options/arith_options"
+#line 140 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::soiApproxMajorFailure__option_t) const;
-#line 140 "../../../../../src/options/arith_options"
+#line 140 "../../../src/options/arith_options"
 template <> void Options::assign(options::soiApproxMajorFailure__option_t, std::string option, std::string value);
-#line 143 "../../../../../src/options/arith_options"
+#line 143 "../../../src/options/arith_options"
 template <> const options::soiApproxMajorFailurePen__option_t::type& Options::operator[](options::soiApproxMajorFailurePen__option_t) const;
-#line 143 "../../../../../src/options/arith_options"
+#line 143 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::soiApproxMajorFailurePen__option_t) const;
-#line 143 "../../../../../src/options/arith_options"
+#line 143 "../../../src/options/arith_options"
 template <> void Options::assign(options::soiApproxMajorFailurePen__option_t, std::string option, std::string value);
-#line 146 "../../../../../src/options/arith_options"
+#line 146 "../../../src/options/arith_options"
 template <> const options::soiApproxMinorFailure__option_t::type& Options::operator[](options::soiApproxMinorFailure__option_t) const;
-#line 146 "../../../../../src/options/arith_options"
+#line 146 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::soiApproxMinorFailure__option_t) const;
-#line 146 "../../../../../src/options/arith_options"
+#line 146 "../../../src/options/arith_options"
 template <> void Options::assign(options::soiApproxMinorFailure__option_t, std::string option, std::string value);
-#line 149 "../../../../../src/options/arith_options"
+#line 149 "../../../src/options/arith_options"
 template <> const options::soiApproxMinorFailurePen__option_t::type& Options::operator[](options::soiApproxMinorFailurePen__option_t) const;
-#line 149 "../../../../../src/options/arith_options"
+#line 149 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::soiApproxMinorFailurePen__option_t) const;
-#line 149 "../../../../../src/options/arith_options"
+#line 149 "../../../src/options/arith_options"
 template <> void Options::assign(options::soiApproxMinorFailurePen__option_t, std::string option, std::string value);
-#line 152 "../../../../../src/options/arith_options"
+#line 152 "../../../src/options/arith_options"
 template <> const options::ppAssertMaxSubSize__option_t::type& Options::operator[](options::ppAssertMaxSubSize__option_t) const;
-#line 152 "../../../../../src/options/arith_options"
+#line 152 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::ppAssertMaxSubSize__option_t) const;
-#line 152 "../../../../../src/options/arith_options"
+#line 152 "../../../src/options/arith_options"
 template <> void Options::assign(options::ppAssertMaxSubSize__option_t, std::string option, std::string value);
-#line 155 "../../../../../src/options/arith_options"
+#line 155 "../../../src/options/arith_options"
 template <> const options::maxReplayTree__option_t::type& Options::operator[](options::maxReplayTree__option_t) const;
-#line 155 "../../../../../src/options/arith_options"
+#line 155 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::maxReplayTree__option_t) const;
-#line 155 "../../../../../src/options/arith_options"
+#line 155 "../../../src/options/arith_options"
 template <> void Options::assign(options::maxReplayTree__option_t, std::string option, std::string value);
-#line 159 "../../../../../src/options/arith_options"
+#line 159 "../../../src/options/arith_options"
 template <> const options::pbRewrites__option_t::type& Options::operator[](options::pbRewrites__option_t) const;
-#line 159 "../../../../../src/options/arith_options"
+#line 159 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::pbRewrites__option_t) const;
-#line 159 "../../../../../src/options/arith_options"
+#line 159 "../../../src/options/arith_options"
 template <> void Options::assignBool(options::pbRewrites__option_t, std::string option, bool value);
-#line 162 "../../../../../src/options/arith_options"
+#line 162 "../../../src/options/arith_options"
 template <> const options::pbRewriteThreshold__option_t::type& Options::operator[](options::pbRewriteThreshold__option_t) const;
-#line 162 "../../../../../src/options/arith_options"
+#line 162 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::pbRewriteThreshold__option_t) const;
-#line 162 "../../../../../src/options/arith_options"
+#line 162 "../../../src/options/arith_options"
 template <> void Options::assign(options::pbRewriteThreshold__option_t, std::string option, std::string value);
-#line 165 "../../../../../src/options/arith_options"
+#line 165 "../../../src/options/arith_options"
 template <> const options::sNormInferEq__option_t::type& Options::operator[](options::sNormInferEq__option_t) const;
-#line 165 "../../../../../src/options/arith_options"
+#line 165 "../../../src/options/arith_options"
 template <> bool Options::wasSetByUser(options::sNormInferEq__option_t) const;
-#line 165 "../../../../../src/options/arith_options"
+#line 165 "../../../src/options/arith_options"
 template <> void Options::assignBool(options::sNormInferEq__option_t, std::string option, bool value);
-
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 168 "../../../src/options/arith_options"
+template <> const options::nlExt__option_t::type& Options::operator[](options::nlExt__option_t) const;
+#line 168 "../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::nlExt__option_t) const;
+#line 168 "../../../src/options/arith_options"
+template <> void Options::assignBool(options::nlExt__option_t, std::string option, bool value);
+#line 171 "../../../src/options/arith_options"
+template <> const options::nlExtResBound__option_t::type& Options::operator[](options::nlExtResBound__option_t) const;
+#line 171 "../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::nlExtResBound__option_t) const;
+#line 171 "../../../src/options/arith_options"
+template <> void Options::assignBool(options::nlExtResBound__option_t, std::string option, bool value);
+#line 174 "../../../src/options/arith_options"
+template <> const options::nlExtTangentPlanes__option_t::type& Options::operator[](options::nlExtTangentPlanes__option_t) const;
+#line 174 "../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::nlExtTangentPlanes__option_t) const;
+#line 174 "../../../src/options/arith_options"
+template <> void Options::assignBool(options::nlExtTangentPlanes__option_t, std::string option, bool value);
+#line 177 "../../../src/options/arith_options"
+template <> const options::nlExtEntailConflicts__option_t::type& Options::operator[](options::nlExtEntailConflicts__option_t) const;
+#line 177 "../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::nlExtEntailConflicts__option_t) const;
+#line 177 "../../../src/options/arith_options"
+template <> void Options::assignBool(options::nlExtEntailConflicts__option_t, std::string option, bool value);
+#line 180 "../../../src/options/arith_options"
+template <> const options::nlExtRewrites__option_t::type& Options::operator[](options::nlExtRewrites__option_t) const;
+#line 180 "../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::nlExtRewrites__option_t) const;
+#line 180 "../../../src/options/arith_options"
+template <> void Options::assignBool(options::nlExtRewrites__option_t, std::string option, bool value);
+#line 183 "../../../src/options/arith_options"
+template <> const options::nlExtSolveSubs__option_t::type& Options::operator[](options::nlExtSolveSubs__option_t) const;
+#line 183 "../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::nlExtSolveSubs__option_t) const;
+#line 183 "../../../src/options/arith_options"
+template <> void Options::assignBool(options::nlExtSolveSubs__option_t, std::string option, bool value);
+#line 186 "../../../src/options/arith_options"
+template <> const options::nlExtPurify__option_t::type& Options::operator[](options::nlExtPurify__option_t) const;
+#line 186 "../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::nlExtPurify__option_t) const;
+#line 186 "../../../src/options/arith_options"
+template <> void Options::assignBool(options::nlExtPurify__option_t, std::string option, bool value);
+#line 189 "../../../src/options/arith_options"
+template <> const options::nlExtSplitZero__option_t::type& Options::operator[](options::nlExtSplitZero__option_t) const;
+#line 189 "../../../src/options/arith_options"
+template <> bool Options::wasSetByUser(options::nlExtSplitZero__option_t) const;
+#line 189 "../../../src/options/arith_options"
+template <> void Options::assignBool(options::nlExtSplitZero__option_t, std::string option, bool value);
+
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/arith_options"
+#line 8 "../../../src/options/arith_options"
 inline arithUnateLemmaMode__option_t::type arithUnateLemmaMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 8 "../../../../../src/options/arith_options"
+#line 8 "../../../src/options/arith_options"
 inline bool arithUnateLemmaMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 11 "../../../../../src/options/arith_options"
+#line 11 "../../../src/options/arith_options"
 inline arithPropagationMode__option_t::type arithPropagationMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 11 "../../../../../src/options/arith_options"
+#line 11 "../../../src/options/arith_options"
 inline bool arithPropagationMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 18 "../../../../../src/options/arith_options"
+#line 18 "../../../src/options/arith_options"
 inline arithHeuristicPivots__option_t::type arithHeuristicPivots__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 18 "../../../../../src/options/arith_options"
+#line 18 "../../../src/options/arith_options"
 inline bool arithHeuristicPivots__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 18 "../../../../../src/options/arith_options"
+#line 18 "../../../src/options/arith_options"
 inline void arithHeuristicPivots__option_t::set(const arithHeuristicPivots__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 25 "../../../../../src/options/arith_options"
+#line 25 "../../../src/options/arith_options"
 inline arithStandardCheckVarOrderPivots__option_t::type arithStandardCheckVarOrderPivots__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 25 "../../../../../src/options/arith_options"
+#line 25 "../../../src/options/arith_options"
 inline bool arithStandardCheckVarOrderPivots__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 25 "../../../../../src/options/arith_options"
+#line 25 "../../../src/options/arith_options"
 inline void arithStandardCheckVarOrderPivots__option_t::set(const arithStandardCheckVarOrderPivots__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 28 "../../../../../src/options/arith_options"
+#line 28 "../../../src/options/arith_options"
 inline arithErrorSelectionRule__option_t::type arithErrorSelectionRule__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 28 "../../../../../src/options/arith_options"
+#line 28 "../../../src/options/arith_options"
 inline bool arithErrorSelectionRule__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 32 "../../../../../src/options/arith_options"
+#line 32 "../../../src/options/arith_options"
 inline arithSimplexCheckPeriod__option_t::type arithSimplexCheckPeriod__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 32 "../../../../../src/options/arith_options"
+#line 32 "../../../src/options/arith_options"
 inline bool arithSimplexCheckPeriod__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 39 "../../../../../src/options/arith_options"
+#line 39 "../../../src/options/arith_options"
 inline arithPivotThreshold__option_t::type arithPivotThreshold__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 39 "../../../../../src/options/arith_options"
+#line 39 "../../../src/options/arith_options"
 inline bool arithPivotThreshold__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 39 "../../../../../src/options/arith_options"
+#line 39 "../../../src/options/arith_options"
 inline void arithPivotThreshold__option_t::set(const arithPivotThreshold__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 42 "../../../../../src/options/arith_options"
+#line 42 "../../../src/options/arith_options"
 inline arithPropagateMaxLength__option_t::type arithPropagateMaxLength__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 42 "../../../../../src/options/arith_options"
+#line 42 "../../../src/options/arith_options"
 inline bool arithPropagateMaxLength__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 45 "../../../../../src/options/arith_options"
+#line 45 "../../../src/options/arith_options"
 inline arithDioSolver__option_t::type arithDioSolver__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 45 "../../../../../src/options/arith_options"
+#line 45 "../../../src/options/arith_options"
 inline bool arithDioSolver__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 51 "../../../../../src/options/arith_options"
+#line 51 "../../../src/options/arith_options"
 inline arithRewriteEq__option_t::type arithRewriteEq__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 51 "../../../../../src/options/arith_options"
+#line 51 "../../../src/options/arith_options"
 inline bool arithRewriteEq__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 51 "../../../../../src/options/arith_options"
+#line 51 "../../../src/options/arith_options"
 inline void arithRewriteEq__option_t::set(const arithRewriteEq__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 56 "../../../../../src/options/arith_options"
+#line 56 "../../../src/options/arith_options"
 inline arithMLTrick__option_t::type arithMLTrick__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 56 "../../../../../src/options/arith_options"
+#line 56 "../../../src/options/arith_options"
 inline bool arithMLTrick__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 60 "../../../../../src/options/arith_options"
+#line 60 "../../../src/options/arith_options"
 inline arithMLTrickSubstitutions__option_t::type arithMLTrickSubstitutions__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 60 "../../../../../src/options/arith_options"
+#line 60 "../../../src/options/arith_options"
 inline bool arithMLTrickSubstitutions__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 63 "../../../../../src/options/arith_options"
+#line 63 "../../../src/options/arith_options"
 inline doCutAllBounded__option_t::type doCutAllBounded__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 63 "../../../../../src/options/arith_options"
+#line 63 "../../../src/options/arith_options"
 inline bool doCutAllBounded__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 63 "../../../../../src/options/arith_options"
+#line 63 "../../../src/options/arith_options"
 inline void doCutAllBounded__option_t::set(const doCutAllBounded__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 67 "../../../../../src/options/arith_options"
+#line 67 "../../../src/options/arith_options"
 inline maxCutsInContext__option_t::type maxCutsInContext__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 67 "../../../../../src/options/arith_options"
+#line 67 "../../../src/options/arith_options"
 inline bool maxCutsInContext__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 70 "../../../../../src/options/arith_options"
+#line 70 "../../../src/options/arith_options"
 inline revertArithModels__option_t::type revertArithModels__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 70 "../../../../../src/options/arith_options"
+#line 70 "../../../src/options/arith_options"
 inline bool revertArithModels__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 73 "../../../../../src/options/arith_options"
+#line 73 "../../../src/options/arith_options"
 inline havePenalties__option_t::type havePenalties__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 73 "../../../../../src/options/arith_options"
+#line 73 "../../../src/options/arith_options"
 inline bool havePenalties__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 73 "../../../../../src/options/arith_options"
+#line 73 "../../../src/options/arith_options"
 inline void havePenalties__option_t::set(const havePenalties__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 77 "../../../../../src/options/arith_options"
+#line 77 "../../../src/options/arith_options"
 inline useFC__option_t::type useFC__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 77 "../../../../../src/options/arith_options"
+#line 77 "../../../src/options/arith_options"
 inline bool useFC__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 77 "../../../../../src/options/arith_options"
+#line 77 "../../../src/options/arith_options"
 inline void useFC__option_t::set(const useFC__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 80 "../../../../../src/options/arith_options"
+#line 80 "../../../src/options/arith_options"
 inline useSOI__option_t::type useSOI__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 80 "../../../../../src/options/arith_options"
+#line 80 "../../../src/options/arith_options"
 inline bool useSOI__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 80 "../../../../../src/options/arith_options"
+#line 80 "../../../src/options/arith_options"
 inline void useSOI__option_t::set(const useSOI__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 83 "../../../../../src/options/arith_options"
+#line 83 "../../../src/options/arith_options"
 inline restrictedPivots__option_t::type restrictedPivots__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 83 "../../../../../src/options/arith_options"
+#line 83 "../../../src/options/arith_options"
 inline bool restrictedPivots__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 83 "../../../../../src/options/arith_options"
+#line 83 "../../../src/options/arith_options"
 inline void restrictedPivots__option_t::set(const restrictedPivots__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 86 "../../../../../src/options/arith_options"
+#line 86 "../../../src/options/arith_options"
 inline collectPivots__option_t::type collectPivots__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 86 "../../../../../src/options/arith_options"
+#line 86 "../../../src/options/arith_options"
 inline bool collectPivots__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 86 "../../../../../src/options/arith_options"
+#line 86 "../../../src/options/arith_options"
 inline void collectPivots__option_t::set(const collectPivots__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 89 "../../../../../src/options/arith_options"
+#line 89 "../../../src/options/arith_options"
 inline useApprox__option_t::type useApprox__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 89 "../../../../../src/options/arith_options"
+#line 89 "../../../src/options/arith_options"
 inline bool useApprox__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 89 "../../../../../src/options/arith_options"
+#line 89 "../../../src/options/arith_options"
 inline void useApprox__option_t::set(const useApprox__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 92 "../../../../../src/options/arith_options"
+#line 92 "../../../src/options/arith_options"
 inline maxApproxDepth__option_t::type maxApproxDepth__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 92 "../../../../../src/options/arith_options"
+#line 92 "../../../src/options/arith_options"
 inline bool maxApproxDepth__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 92 "../../../../../src/options/arith_options"
+#line 92 "../../../src/options/arith_options"
 inline void maxApproxDepth__option_t::set(const maxApproxDepth__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 95 "../../../../../src/options/arith_options"
+#line 95 "../../../src/options/arith_options"
 inline exportDioDecompositions__option_t::type exportDioDecompositions__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 95 "../../../../../src/options/arith_options"
+#line 95 "../../../src/options/arith_options"
 inline bool exportDioDecompositions__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 95 "../../../../../src/options/arith_options"
+#line 95 "../../../src/options/arith_options"
 inline void exportDioDecompositions__option_t::set(const exportDioDecompositions__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 98 "../../../../../src/options/arith_options"
+#line 98 "../../../src/options/arith_options"
 inline newProp__option_t::type newProp__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 98 "../../../../../src/options/arith_options"
+#line 98 "../../../src/options/arith_options"
 inline bool newProp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 98 "../../../../../src/options/arith_options"
+#line 98 "../../../src/options/arith_options"
 inline void newProp__option_t::set(const newProp__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 101 "../../../../../src/options/arith_options"
+#line 101 "../../../src/options/arith_options"
 inline arithPropAsLemmaLength__option_t::type arithPropAsLemmaLength__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 101 "../../../../../src/options/arith_options"
+#line 101 "../../../src/options/arith_options"
 inline bool arithPropAsLemmaLength__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 101 "../../../../../src/options/arith_options"
+#line 101 "../../../src/options/arith_options"
 inline void arithPropAsLemmaLength__option_t::set(const arithPropAsLemmaLength__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 104 "../../../../../src/options/arith_options"
+#line 104 "../../../src/options/arith_options"
 inline soiQuickExplain__option_t::type soiQuickExplain__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 104 "../../../../../src/options/arith_options"
+#line 104 "../../../src/options/arith_options"
 inline bool soiQuickExplain__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 104 "../../../../../src/options/arith_options"
+#line 104 "../../../src/options/arith_options"
 inline void soiQuickExplain__option_t::set(const soiQuickExplain__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 107 "../../../../../src/options/arith_options"
+#line 107 "../../../src/options/arith_options"
 inline rewriteDivk__option_t::type rewriteDivk__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 107 "../../../../../src/options/arith_options"
+#line 107 "../../../src/options/arith_options"
 inline bool rewriteDivk__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 107 "../../../../../src/options/arith_options"
+#line 107 "../../../src/options/arith_options"
 inline void rewriteDivk__option_t::set(const rewriteDivk__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 110 "../../../../../src/options/arith_options"
+#line 110 "../../../src/options/arith_options"
 inline trySolveIntStandardEffort__option_t::type trySolveIntStandardEffort__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 110 "../../../../../src/options/arith_options"
+#line 110 "../../../src/options/arith_options"
 inline bool trySolveIntStandardEffort__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 113 "../../../../../src/options/arith_options"
+#line 113 "../../../src/options/arith_options"
 inline replayFailureLemma__option_t::type replayFailureLemma__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 113 "../../../../../src/options/arith_options"
+#line 113 "../../../src/options/arith_options"
 inline bool replayFailureLemma__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 116 "../../../../../src/options/arith_options"
+#line 116 "../../../src/options/arith_options"
 inline dioSolverTurns__option_t::type dioSolverTurns__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 116 "../../../../../src/options/arith_options"
+#line 116 "../../../src/options/arith_options"
 inline bool dioSolverTurns__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 119 "../../../../../src/options/arith_options"
+#line 119 "../../../src/options/arith_options"
 inline rrTurns__option_t::type rrTurns__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 119 "../../../../../src/options/arith_options"
+#line 119 "../../../src/options/arith_options"
 inline bool rrTurns__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 122 "../../../../../src/options/arith_options"
+#line 122 "../../../src/options/arith_options"
 inline dioRepeat__option_t::type dioRepeat__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 122 "../../../../../src/options/arith_options"
+#line 122 "../../../src/options/arith_options"
 inline bool dioRepeat__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 125 "../../../../../src/options/arith_options"
+#line 125 "../../../src/options/arith_options"
 inline replayEarlyCloseDepths__option_t::type replayEarlyCloseDepths__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 125 "../../../../../src/options/arith_options"
+#line 125 "../../../src/options/arith_options"
 inline bool replayEarlyCloseDepths__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 128 "../../../../../src/options/arith_options"
+#line 128 "../../../src/options/arith_options"
 inline replayFailurePenalty__option_t::type replayFailurePenalty__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 128 "../../../../../src/options/arith_options"
+#line 128 "../../../src/options/arith_options"
 inline bool replayFailurePenalty__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 131 "../../../../../src/options/arith_options"
+#line 131 "../../../src/options/arith_options"
 inline replayNumericFailurePenalty__option_t::type replayNumericFailurePenalty__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 131 "../../../../../src/options/arith_options"
+#line 131 "../../../src/options/arith_options"
 inline bool replayNumericFailurePenalty__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 134 "../../../../../src/options/arith_options"
+#line 134 "../../../src/options/arith_options"
 inline replayRejectCutSize__option_t::type replayRejectCutSize__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 134 "../../../../../src/options/arith_options"
+#line 134 "../../../src/options/arith_options"
 inline bool replayRejectCutSize__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 137 "../../../../../src/options/arith_options"
+#line 137 "../../../src/options/arith_options"
 inline lemmaRejectCutSize__option_t::type lemmaRejectCutSize__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 137 "../../../../../src/options/arith_options"
+#line 137 "../../../src/options/arith_options"
 inline bool lemmaRejectCutSize__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 140 "../../../../../src/options/arith_options"
+#line 140 "../../../src/options/arith_options"
 inline soiApproxMajorFailure__option_t::type soiApproxMajorFailure__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 140 "../../../../../src/options/arith_options"
+#line 140 "../../../src/options/arith_options"
 inline bool soiApproxMajorFailure__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 143 "../../../../../src/options/arith_options"
+#line 143 "../../../src/options/arith_options"
 inline soiApproxMajorFailurePen__option_t::type soiApproxMajorFailurePen__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 143 "../../../../../src/options/arith_options"
+#line 143 "../../../src/options/arith_options"
 inline bool soiApproxMajorFailurePen__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 146 "../../../../../src/options/arith_options"
+#line 146 "../../../src/options/arith_options"
 inline soiApproxMinorFailure__option_t::type soiApproxMinorFailure__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 146 "../../../../../src/options/arith_options"
+#line 146 "../../../src/options/arith_options"
 inline bool soiApproxMinorFailure__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 149 "../../../../../src/options/arith_options"
+#line 149 "../../../src/options/arith_options"
 inline soiApproxMinorFailurePen__option_t::type soiApproxMinorFailurePen__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 149 "../../../../../src/options/arith_options"
+#line 149 "../../../src/options/arith_options"
 inline bool soiApproxMinorFailurePen__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 152 "../../../../../src/options/arith_options"
+#line 152 "../../../src/options/arith_options"
 inline ppAssertMaxSubSize__option_t::type ppAssertMaxSubSize__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 152 "../../../../../src/options/arith_options"
+#line 152 "../../../src/options/arith_options"
 inline bool ppAssertMaxSubSize__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 155 "../../../../../src/options/arith_options"
+#line 155 "../../../src/options/arith_options"
 inline maxReplayTree__option_t::type maxReplayTree__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 155 "../../../../../src/options/arith_options"
+#line 155 "../../../src/options/arith_options"
 inline bool maxReplayTree__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 159 "../../../../../src/options/arith_options"
+#line 159 "../../../src/options/arith_options"
 inline pbRewrites__option_t::type pbRewrites__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 159 "../../../../../src/options/arith_options"
+#line 159 "../../../src/options/arith_options"
 inline bool pbRewrites__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 162 "../../../../../src/options/arith_options"
+#line 162 "../../../src/options/arith_options"
 inline pbRewriteThreshold__option_t::type pbRewriteThreshold__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 162 "../../../../../src/options/arith_options"
+#line 162 "../../../src/options/arith_options"
 inline bool pbRewriteThreshold__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 165 "../../../../../src/options/arith_options"
+#line 165 "../../../src/options/arith_options"
 inline sNormInferEq__option_t::type sNormInferEq__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 165 "../../../../../src/options/arith_options"
+#line 165 "../../../src/options/arith_options"
 inline bool sNormInferEq__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 168 "../../../src/options/arith_options"
+inline nlExt__option_t::type nlExt__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 168 "../../../src/options/arith_options"
+inline bool nlExt__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 171 "../../../src/options/arith_options"
+inline nlExtResBound__option_t::type nlExtResBound__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 171 "../../../src/options/arith_options"
+inline bool nlExtResBound__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 174 "../../../src/options/arith_options"
+inline nlExtTangentPlanes__option_t::type nlExtTangentPlanes__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 174 "../../../src/options/arith_options"
+inline bool nlExtTangentPlanes__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 177 "../../../src/options/arith_options"
+inline nlExtEntailConflicts__option_t::type nlExtEntailConflicts__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 177 "../../../src/options/arith_options"
+inline bool nlExtEntailConflicts__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 180 "../../../src/options/arith_options"
+inline nlExtRewrites__option_t::type nlExtRewrites__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 180 "../../../src/options/arith_options"
+inline bool nlExtRewrites__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 183 "../../../src/options/arith_options"
+inline nlExtSolveSubs__option_t::type nlExtSolveSubs__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 183 "../../../src/options/arith_options"
+inline bool nlExtSolveSubs__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 186 "../../../src/options/arith_options"
+inline nlExtPurify__option_t::type nlExtPurify__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 186 "../../../src/options/arith_options"
+inline bool nlExtPurify__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 189 "../../../src/options/arith_options"
+inline nlExtSplitZero__option_t::type nlExtSplitZero__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 189 "../../../src/options/arith_options"
+inline bool nlExtSplitZero__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/arith_propagation_mode.cpp b/src/options/arith_propagation_mode.cpp
index 5baf0b8..67e6f51 100644
--- a/src/options/arith_propagation_mode.cpp
+++ b/src/options/arith_propagation_mode.cpp
@@ -2,9 +2,9 @@
 /*! \file arith_propagation_mode.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/arith_propagation_mode.h b/src/options/arith_propagation_mode.h
index dc4b803..fad89cc 100644
--- a/src/options/arith_propagation_mode.h
+++ b/src/options/arith_propagation_mode.h
@@ -2,9 +2,9 @@
 /*! \file arith_propagation_mode.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/arith_unate_lemma_mode.cpp b/src/options/arith_unate_lemma_mode.cpp
index 9b683f4..ca076a7 100644
--- a/src/options/arith_unate_lemma_mode.cpp
+++ b/src/options/arith_unate_lemma_mode.cpp
@@ -2,9 +2,9 @@
 /*! \file arith_unate_lemma_mode.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/arith_unate_lemma_mode.h b/src/options/arith_unate_lemma_mode.h
index 39664d3..bab7cfa 100644
--- a/src/options/arith_unate_lemma_mode.h
+++ b/src/options/arith_unate_lemma_mode.h
@@ -2,9 +2,9 @@
 /*! \file arith_unate_lemma_mode.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/arrays_options.cpp b/src/options/arrays_options.cpp
index 682bf0e..2425c3d 100644
--- a/src/options/arrays_options.cpp
+++ b/src/options/arrays_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -19,86 +19,86 @@
 namespace CVC4 {
 
 
-#line 8 "../../../../../src/options/arrays_options"
+#line 8 "../../../src/options/arrays_options"
 template <> void Options::set(options::arraysOptimizeLinear__option_t, const options::arraysOptimizeLinear__option_t::type& x) { d_holder->arraysOptimizeLinear = x; }
-#line 8 "../../../../../src/options/arrays_options"
+#line 8 "../../../src/options/arrays_options"
 template <> const options::arraysOptimizeLinear__option_t::type& Options::operator[](options::arraysOptimizeLinear__option_t) const { return d_holder->arraysOptimizeLinear; }
-#line 8 "../../../../../src/options/arrays_options"
+#line 8 "../../../src/options/arrays_options"
 template <> bool Options::wasSetByUser(options::arraysOptimizeLinear__option_t) const { return d_holder->arraysOptimizeLinear__setByUser__; }
-#line 11 "../../../../../src/options/arrays_options"
+#line 11 "../../../src/options/arrays_options"
 template <> void Options::set(options::arraysLazyRIntro1__option_t, const options::arraysLazyRIntro1__option_t::type& x) { d_holder->arraysLazyRIntro1 = x; }
-#line 11 "../../../../../src/options/arrays_options"
+#line 11 "../../../src/options/arrays_options"
 template <> const options::arraysLazyRIntro1__option_t::type& Options::operator[](options::arraysLazyRIntro1__option_t) const { return d_holder->arraysLazyRIntro1; }
-#line 11 "../../../../../src/options/arrays_options"
+#line 11 "../../../src/options/arrays_options"
 template <> bool Options::wasSetByUser(options::arraysLazyRIntro1__option_t) const { return d_holder->arraysLazyRIntro1__setByUser__; }
-#line 14 "../../../../../src/options/arrays_options"
+#line 14 "../../../src/options/arrays_options"
 template <> void Options::set(options::arraysWeakEquivalence__option_t, const options::arraysWeakEquivalence__option_t::type& x) { d_holder->arraysWeakEquivalence = x; }
-#line 14 "../../../../../src/options/arrays_options"
+#line 14 "../../../src/options/arrays_options"
 template <> const options::arraysWeakEquivalence__option_t::type& Options::operator[](options::arraysWeakEquivalence__option_t) const { return d_holder->arraysWeakEquivalence; }
-#line 14 "../../../../../src/options/arrays_options"
+#line 14 "../../../src/options/arrays_options"
 template <> bool Options::wasSetByUser(options::arraysWeakEquivalence__option_t) const { return d_holder->arraysWeakEquivalence__setByUser__; }
-#line 17 "../../../../../src/options/arrays_options"
+#line 17 "../../../src/options/arrays_options"
 template <> void Options::set(options::arraysModelBased__option_t, const options::arraysModelBased__option_t::type& x) { d_holder->arraysModelBased = x; }
-#line 17 "../../../../../src/options/arrays_options"
+#line 17 "../../../src/options/arrays_options"
 template <> const options::arraysModelBased__option_t::type& Options::operator[](options::arraysModelBased__option_t) const { return d_holder->arraysModelBased; }
-#line 17 "../../../../../src/options/arrays_options"
+#line 17 "../../../src/options/arrays_options"
 template <> bool Options::wasSetByUser(options::arraysModelBased__option_t) const { return d_holder->arraysModelBased__setByUser__; }
-#line 20 "../../../../../src/options/arrays_options"
+#line 20 "../../../src/options/arrays_options"
 template <> void Options::set(options::arraysEagerIndexSplitting__option_t, const options::arraysEagerIndexSplitting__option_t::type& x) { d_holder->arraysEagerIndexSplitting = x; }
-#line 20 "../../../../../src/options/arrays_options"
+#line 20 "../../../src/options/arrays_options"
 template <> const options::arraysEagerIndexSplitting__option_t::type& Options::operator[](options::arraysEagerIndexSplitting__option_t) const { return d_holder->arraysEagerIndexSplitting; }
-#line 20 "../../../../../src/options/arrays_options"
+#line 20 "../../../src/options/arrays_options"
 template <> bool Options::wasSetByUser(options::arraysEagerIndexSplitting__option_t) const { return d_holder->arraysEagerIndexSplitting__setByUser__; }
-#line 23 "../../../../../src/options/arrays_options"
+#line 23 "../../../src/options/arrays_options"
 template <> void Options::set(options::arraysEagerLemmas__option_t, const options::arraysEagerLemmas__option_t::type& x) { d_holder->arraysEagerLemmas = x; }
-#line 23 "../../../../../src/options/arrays_options"
+#line 23 "../../../src/options/arrays_options"
 template <> const options::arraysEagerLemmas__option_t::type& Options::operator[](options::arraysEagerLemmas__option_t) const { return d_holder->arraysEagerLemmas; }
-#line 23 "../../../../../src/options/arrays_options"
+#line 23 "../../../src/options/arrays_options"
 template <> bool Options::wasSetByUser(options::arraysEagerLemmas__option_t) const { return d_holder->arraysEagerLemmas__setByUser__; }
-#line 26 "../../../../../src/options/arrays_options"
+#line 26 "../../../src/options/arrays_options"
 template <> void Options::set(options::arraysConfig__option_t, const options::arraysConfig__option_t::type& x) { d_holder->arraysConfig = x; }
-#line 26 "../../../../../src/options/arrays_options"
+#line 26 "../../../src/options/arrays_options"
 template <> const options::arraysConfig__option_t::type& Options::operator[](options::arraysConfig__option_t) const { return d_holder->arraysConfig; }
-#line 26 "../../../../../src/options/arrays_options"
+#line 26 "../../../src/options/arrays_options"
 template <> bool Options::wasSetByUser(options::arraysConfig__option_t) const { return d_holder->arraysConfig__setByUser__; }
-#line 29 "../../../../../src/options/arrays_options"
+#line 29 "../../../src/options/arrays_options"
 template <> void Options::set(options::arraysReduceSharing__option_t, const options::arraysReduceSharing__option_t::type& x) { d_holder->arraysReduceSharing = x; }
-#line 29 "../../../../../src/options/arrays_options"
+#line 29 "../../../src/options/arrays_options"
 template <> const options::arraysReduceSharing__option_t::type& Options::operator[](options::arraysReduceSharing__option_t) const { return d_holder->arraysReduceSharing; }
-#line 29 "../../../../../src/options/arrays_options"
+#line 29 "../../../src/options/arrays_options"
 template <> bool Options::wasSetByUser(options::arraysReduceSharing__option_t) const { return d_holder->arraysReduceSharing__setByUser__; }
-#line 32 "../../../../../src/options/arrays_options"
+#line 32 "../../../src/options/arrays_options"
 template <> void Options::set(options::arraysPropagate__option_t, const options::arraysPropagate__option_t::type& x) { d_holder->arraysPropagate = x; }
-#line 32 "../../../../../src/options/arrays_options"
+#line 32 "../../../src/options/arrays_options"
 template <> const options::arraysPropagate__option_t::type& Options::operator[](options::arraysPropagate__option_t) const { return d_holder->arraysPropagate; }
-#line 32 "../../../../../src/options/arrays_options"
+#line 32 "../../../src/options/arrays_options"
 template <> bool Options::wasSetByUser(options::arraysPropagate__option_t) const { return d_holder->arraysPropagate__setByUser__; }
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/arrays_options"
+#line 8 "../../../src/options/arrays_options"
 struct arraysOptimizeLinear__option_t arraysOptimizeLinear;
-#line 11 "../../../../../src/options/arrays_options"
+#line 11 "../../../src/options/arrays_options"
 struct arraysLazyRIntro1__option_t arraysLazyRIntro1;
-#line 14 "../../../../../src/options/arrays_options"
+#line 14 "../../../src/options/arrays_options"
 struct arraysWeakEquivalence__option_t arraysWeakEquivalence;
-#line 17 "../../../../../src/options/arrays_options"
+#line 17 "../../../src/options/arrays_options"
 struct arraysModelBased__option_t arraysModelBased;
-#line 20 "../../../../../src/options/arrays_options"
+#line 20 "../../../src/options/arrays_options"
 struct arraysEagerIndexSplitting__option_t arraysEagerIndexSplitting;
-#line 23 "../../../../../src/options/arrays_options"
+#line 23 "../../../src/options/arrays_options"
 struct arraysEagerLemmas__option_t arraysEagerLemmas;
-#line 26 "../../../../../src/options/arrays_options"
+#line 26 "../../../src/options/arrays_options"
 struct arraysConfig__option_t arraysConfig;
-#line 29 "../../../../../src/options/arrays_options"
+#line 29 "../../../src/options/arrays_options"
 struct arraysReduceSharing__option_t arraysReduceSharing;
-#line 32 "../../../../../src/options/arrays_options"
+#line 32 "../../../src/options/arrays_options"
 struct arraysPropagate__option_t arraysPropagate;
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/arrays_options.h b/src/options/arrays_options.h
index 4fab7e7..46e30b8 100644
--- a/src/options/arrays_options.h
+++ b/src/options/arrays_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -22,7 +22,7 @@
 #include "options/options.h"
 
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__ARRAYS__FOR_OPTION_HOLDER \
   arraysOptimizeLinear__option_t::type arraysOptimizeLinear; \
@@ -44,179 +44,179 @@
   arraysPropagate__option_t::type arraysPropagate; \
   bool arraysPropagate__setByUser__;
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/arrays_options"
+#line 8 "../../../src/options/arrays_options"
 extern struct CVC4_PUBLIC arraysOptimizeLinear__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arraysOptimizeLinear CVC4_PUBLIC;
-#line 11 "../../../../../src/options/arrays_options"
+#line 11 "../../../src/options/arrays_options"
 extern struct CVC4_PUBLIC arraysLazyRIntro1__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arraysLazyRIntro1 CVC4_PUBLIC;
-#line 14 "../../../../../src/options/arrays_options"
+#line 14 "../../../src/options/arrays_options"
 extern struct CVC4_PUBLIC arraysWeakEquivalence__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arraysWeakEquivalence CVC4_PUBLIC;
-#line 17 "../../../../../src/options/arrays_options"
+#line 17 "../../../src/options/arrays_options"
 extern struct CVC4_PUBLIC arraysModelBased__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arraysModelBased CVC4_PUBLIC;
-#line 20 "../../../../../src/options/arrays_options"
+#line 20 "../../../src/options/arrays_options"
 extern struct CVC4_PUBLIC arraysEagerIndexSplitting__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arraysEagerIndexSplitting CVC4_PUBLIC;
-#line 23 "../../../../../src/options/arrays_options"
+#line 23 "../../../src/options/arrays_options"
 extern struct CVC4_PUBLIC arraysEagerLemmas__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arraysEagerLemmas CVC4_PUBLIC;
-#line 26 "../../../../../src/options/arrays_options"
+#line 26 "../../../src/options/arrays_options"
 extern struct CVC4_PUBLIC arraysConfig__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arraysConfig CVC4_PUBLIC;
-#line 29 "../../../../../src/options/arrays_options"
+#line 29 "../../../src/options/arrays_options"
 extern struct CVC4_PUBLIC arraysReduceSharing__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arraysReduceSharing CVC4_PUBLIC;
-#line 32 "../../../../../src/options/arrays_options"
+#line 32 "../../../src/options/arrays_options"
 extern struct CVC4_PUBLIC arraysPropagate__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } arraysPropagate CVC4_PUBLIC;
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
-#line 8 "../../../../../src/options/arrays_options"
+#line 8 "../../../src/options/arrays_options"
 template <> void Options::set(options::arraysOptimizeLinear__option_t, const options::arraysOptimizeLinear__option_t::type& x);
-#line 8 "../../../../../src/options/arrays_options"
+#line 8 "../../../src/options/arrays_options"
 template <> const options::arraysOptimizeLinear__option_t::type& Options::operator[](options::arraysOptimizeLinear__option_t) const;
-#line 8 "../../../../../src/options/arrays_options"
+#line 8 "../../../src/options/arrays_options"
 template <> bool Options::wasSetByUser(options::arraysOptimizeLinear__option_t) const;
-#line 8 "../../../../../src/options/arrays_options"
+#line 8 "../../../src/options/arrays_options"
 template <> void Options::assignBool(options::arraysOptimizeLinear__option_t, std::string option, bool value);
-#line 11 "../../../../../src/options/arrays_options"
+#line 11 "../../../src/options/arrays_options"
 template <> void Options::set(options::arraysLazyRIntro1__option_t, const options::arraysLazyRIntro1__option_t::type& x);
-#line 11 "../../../../../src/options/arrays_options"
+#line 11 "../../../src/options/arrays_options"
 template <> const options::arraysLazyRIntro1__option_t::type& Options::operator[](options::arraysLazyRIntro1__option_t) const;
-#line 11 "../../../../../src/options/arrays_options"
+#line 11 "../../../src/options/arrays_options"
 template <> bool Options::wasSetByUser(options::arraysLazyRIntro1__option_t) const;
-#line 11 "../../../../../src/options/arrays_options"
+#line 11 "../../../src/options/arrays_options"
 template <> void Options::assignBool(options::arraysLazyRIntro1__option_t, std::string option, bool value);
-#line 14 "../../../../../src/options/arrays_options"
+#line 14 "../../../src/options/arrays_options"
 template <> void Options::set(options::arraysWeakEquivalence__option_t, const options::arraysWeakEquivalence__option_t::type& x);
-#line 14 "../../../../../src/options/arrays_options"
+#line 14 "../../../src/options/arrays_options"
 template <> const options::arraysWeakEquivalence__option_t::type& Options::operator[](options::arraysWeakEquivalence__option_t) const;
-#line 14 "../../../../../src/options/arrays_options"
+#line 14 "../../../src/options/arrays_options"
 template <> bool Options::wasSetByUser(options::arraysWeakEquivalence__option_t) const;
-#line 14 "../../../../../src/options/arrays_options"
+#line 14 "../../../src/options/arrays_options"
 template <> void Options::assignBool(options::arraysWeakEquivalence__option_t, std::string option, bool value);
-#line 17 "../../../../../src/options/arrays_options"
+#line 17 "../../../src/options/arrays_options"
 template <> void Options::set(options::arraysModelBased__option_t, const options::arraysModelBased__option_t::type& x);
-#line 17 "../../../../../src/options/arrays_options"
+#line 17 "../../../src/options/arrays_options"
 template <> const options::arraysModelBased__option_t::type& Options::operator[](options::arraysModelBased__option_t) const;
-#line 17 "../../../../../src/options/arrays_options"
+#line 17 "../../../src/options/arrays_options"
 template <> bool Options::wasSetByUser(options::arraysModelBased__option_t) const;
-#line 17 "../../../../../src/options/arrays_options"
+#line 17 "../../../src/options/arrays_options"
 template <> void Options::assignBool(options::arraysModelBased__option_t, std::string option, bool value);
-#line 20 "../../../../../src/options/arrays_options"
+#line 20 "../../../src/options/arrays_options"
 template <> void Options::set(options::arraysEagerIndexSplitting__option_t, const options::arraysEagerIndexSplitting__option_t::type& x);
-#line 20 "../../../../../src/options/arrays_options"
+#line 20 "../../../src/options/arrays_options"
 template <> const options::arraysEagerIndexSplitting__option_t::type& Options::operator[](options::arraysEagerIndexSplitting__option_t) const;
-#line 20 "../../../../../src/options/arrays_options"
+#line 20 "../../../src/options/arrays_options"
 template <> bool Options::wasSetByUser(options::arraysEagerIndexSplitting__option_t) const;
-#line 20 "../../../../../src/options/arrays_options"
+#line 20 "../../../src/options/arrays_options"
 template <> void Options::assignBool(options::arraysEagerIndexSplitting__option_t, std::string option, bool value);
-#line 23 "../../../../../src/options/arrays_options"
+#line 23 "../../../src/options/arrays_options"
 template <> void Options::set(options::arraysEagerLemmas__option_t, const options::arraysEagerLemmas__option_t::type& x);
-#line 23 "../../../../../src/options/arrays_options"
+#line 23 "../../../src/options/arrays_options"
 template <> const options::arraysEagerLemmas__option_t::type& Options::operator[](options::arraysEagerLemmas__option_t) const;
-#line 23 "../../../../../src/options/arrays_options"
+#line 23 "../../../src/options/arrays_options"
 template <> bool Options::wasSetByUser(options::arraysEagerLemmas__option_t) const;
-#line 23 "../../../../../src/options/arrays_options"
+#line 23 "../../../src/options/arrays_options"
 template <> void Options::assignBool(options::arraysEagerLemmas__option_t, std::string option, bool value);
-#line 26 "../../../../../src/options/arrays_options"
+#line 26 "../../../src/options/arrays_options"
 template <> void Options::set(options::arraysConfig__option_t, const options::arraysConfig__option_t::type& x);
-#line 26 "../../../../../src/options/arrays_options"
+#line 26 "../../../src/options/arrays_options"
 template <> const options::arraysConfig__option_t::type& Options::operator[](options::arraysConfig__option_t) const;
-#line 26 "../../../../../src/options/arrays_options"
+#line 26 "../../../src/options/arrays_options"
 template <> bool Options::wasSetByUser(options::arraysConfig__option_t) const;
-#line 26 "../../../../../src/options/arrays_options"
+#line 26 "../../../src/options/arrays_options"
 template <> void Options::assign(options::arraysConfig__option_t, std::string option, std::string value);
-#line 29 "../../../../../src/options/arrays_options"
+#line 29 "../../../src/options/arrays_options"
 template <> void Options::set(options::arraysReduceSharing__option_t, const options::arraysReduceSharing__option_t::type& x);
-#line 29 "../../../../../src/options/arrays_options"
+#line 29 "../../../src/options/arrays_options"
 template <> const options::arraysReduceSharing__option_t::type& Options::operator[](options::arraysReduceSharing__option_t) const;
-#line 29 "../../../../../src/options/arrays_options"
+#line 29 "../../../src/options/arrays_options"
 template <> bool Options::wasSetByUser(options::arraysReduceSharing__option_t) const;
-#line 29 "../../../../../src/options/arrays_options"
+#line 29 "../../../src/options/arrays_options"
 template <> void Options::assignBool(options::arraysReduceSharing__option_t, std::string option, bool value);
-#line 32 "../../../../../src/options/arrays_options"
+#line 32 "../../../src/options/arrays_options"
 template <> void Options::set(options::arraysPropagate__option_t, const options::arraysPropagate__option_t::type& x);
-#line 32 "../../../../../src/options/arrays_options"
+#line 32 "../../../src/options/arrays_options"
 template <> const options::arraysPropagate__option_t::type& Options::operator[](options::arraysPropagate__option_t) const;
-#line 32 "../../../../../src/options/arrays_options"
+#line 32 "../../../src/options/arrays_options"
 template <> bool Options::wasSetByUser(options::arraysPropagate__option_t) const;
-#line 32 "../../../../../src/options/arrays_options"
+#line 32 "../../../src/options/arrays_options"
 template <> void Options::assign(options::arraysPropagate__option_t, std::string option, std::string value);
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/arrays_options"
+#line 8 "../../../src/options/arrays_options"
 inline arraysOptimizeLinear__option_t::type arraysOptimizeLinear__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 8 "../../../../../src/options/arrays_options"
+#line 8 "../../../src/options/arrays_options"
 inline bool arraysOptimizeLinear__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 8 "../../../../../src/options/arrays_options"
+#line 8 "../../../src/options/arrays_options"
 inline void arraysOptimizeLinear__option_t::set(const arraysOptimizeLinear__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 11 "../../../../../src/options/arrays_options"
+#line 11 "../../../src/options/arrays_options"
 inline arraysLazyRIntro1__option_t::type arraysLazyRIntro1__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 11 "../../../../../src/options/arrays_options"
+#line 11 "../../../src/options/arrays_options"
 inline bool arraysLazyRIntro1__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 11 "../../../../../src/options/arrays_options"
+#line 11 "../../../src/options/arrays_options"
 inline void arraysLazyRIntro1__option_t::set(const arraysLazyRIntro1__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 14 "../../../../../src/options/arrays_options"
+#line 14 "../../../src/options/arrays_options"
 inline arraysWeakEquivalence__option_t::type arraysWeakEquivalence__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 14 "../../../../../src/options/arrays_options"
+#line 14 "../../../src/options/arrays_options"
 inline bool arraysWeakEquivalence__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 14 "../../../../../src/options/arrays_options"
+#line 14 "../../../src/options/arrays_options"
 inline void arraysWeakEquivalence__option_t::set(const arraysWeakEquivalence__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 17 "../../../../../src/options/arrays_options"
+#line 17 "../../../src/options/arrays_options"
 inline arraysModelBased__option_t::type arraysModelBased__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 17 "../../../../../src/options/arrays_options"
+#line 17 "../../../src/options/arrays_options"
 inline bool arraysModelBased__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 17 "../../../../../src/options/arrays_options"
+#line 17 "../../../src/options/arrays_options"
 inline void arraysModelBased__option_t::set(const arraysModelBased__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 20 "../../../../../src/options/arrays_options"
+#line 20 "../../../src/options/arrays_options"
 inline arraysEagerIndexSplitting__option_t::type arraysEagerIndexSplitting__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 20 "../../../../../src/options/arrays_options"
+#line 20 "../../../src/options/arrays_options"
 inline bool arraysEagerIndexSplitting__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 20 "../../../../../src/options/arrays_options"
+#line 20 "../../../src/options/arrays_options"
 inline void arraysEagerIndexSplitting__option_t::set(const arraysEagerIndexSplitting__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 23 "../../../../../src/options/arrays_options"
+#line 23 "../../../src/options/arrays_options"
 inline arraysEagerLemmas__option_t::type arraysEagerLemmas__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 23 "../../../../../src/options/arrays_options"
+#line 23 "../../../src/options/arrays_options"
 inline bool arraysEagerLemmas__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 23 "../../../../../src/options/arrays_options"
+#line 23 "../../../src/options/arrays_options"
 inline void arraysEagerLemmas__option_t::set(const arraysEagerLemmas__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 26 "../../../../../src/options/arrays_options"
+#line 26 "../../../src/options/arrays_options"
 inline arraysConfig__option_t::type arraysConfig__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 26 "../../../../../src/options/arrays_options"
+#line 26 "../../../src/options/arrays_options"
 inline bool arraysConfig__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 26 "../../../../../src/options/arrays_options"
+#line 26 "../../../src/options/arrays_options"
 inline void arraysConfig__option_t::set(const arraysConfig__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 29 "../../../../../src/options/arrays_options"
+#line 29 "../../../src/options/arrays_options"
 inline arraysReduceSharing__option_t::type arraysReduceSharing__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 29 "../../../../../src/options/arrays_options"
+#line 29 "../../../src/options/arrays_options"
 inline bool arraysReduceSharing__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 29 "../../../../../src/options/arrays_options"
+#line 29 "../../../src/options/arrays_options"
 inline void arraysReduceSharing__option_t::set(const arraysReduceSharing__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 32 "../../../../../src/options/arrays_options"
+#line 32 "../../../src/options/arrays_options"
 inline arraysPropagate__option_t::type arraysPropagate__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 32 "../../../../../src/options/arrays_options"
+#line 32 "../../../src/options/arrays_options"
 inline bool arraysPropagate__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 32 "../../../../../src/options/arrays_options"
+#line 32 "../../../src/options/arrays_options"
 inline void arraysPropagate__option_t::set(const arraysPropagate__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/base_handlers.h b/src/options/base_handlers.h
index 0345f9e..b036c7e 100644
--- a/src/options/base_handlers.h
+++ b/src/options/base_handlers.h
@@ -2,9 +2,9 @@
 /*! \file base_handlers.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/base_options.cpp b/src/options/base_options.cpp
index 1f02290..3c1f454 100644
--- a/src/options/base_options.cpp
+++ b/src/options/base_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -19,116 +19,116 @@
 namespace CVC4 {
 
 
-#line 158 "../../../../../src/options/base_options"
+#line 158 "../../../src/options/base_options"
 template <> void Options::set(options::binary_name__option_t, const options::binary_name__option_t::type& x) { d_holder->binary_name = x; }
-#line 158 "../../../../../src/options/base_options"
+#line 158 "../../../src/options/base_options"
 template <> const options::binary_name__option_t::type& Options::operator[](options::binary_name__option_t) const { return d_holder->binary_name; }
-#line 158 "../../../../../src/options/base_options"
+#line 158 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::binary_name__option_t) const { return d_holder->binary_name__setByUser__; }
-#line 160 "../../../../../src/options/base_options"
+#line 160 "../../../src/options/base_options"
 template <> void Options::set(options::in__option_t, const options::in__option_t::type& x) { d_holder->in = x; }
-#line 160 "../../../../../src/options/base_options"
+#line 160 "../../../src/options/base_options"
 template <> const options::in__option_t::type& Options::operator[](options::in__option_t) const { return d_holder->in; }
-#line 160 "../../../../../src/options/base_options"
+#line 160 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::in__option_t) const { return d_holder->in__setByUser__; }
-#line 161 "../../../../../src/options/base_options"
+#line 161 "../../../src/options/base_options"
 template <> void Options::set(options::out__option_t, const options::out__option_t::type& x) { d_holder->out = x; }
-#line 161 "../../../../../src/options/base_options"
+#line 161 "../../../src/options/base_options"
 template <> const options::out__option_t::type& Options::operator[](options::out__option_t) const { return d_holder->out; }
-#line 161 "../../../../../src/options/base_options"
+#line 161 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::out__option_t) const { return d_holder->out__setByUser__; }
-#line 162 "../../../../../src/options/base_options"
+#line 162 "../../../src/options/base_options"
 template <> void Options::set(options::err__option_t, const options::err__option_t::type& x) { d_holder->err = x; }
-#line 162 "../../../../../src/options/base_options"
+#line 162 "../../../src/options/base_options"
 template <> const options::err__option_t::type& Options::operator[](options::err__option_t) const { return d_holder->err; }
-#line 162 "../../../../../src/options/base_options"
+#line 162 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::err__option_t) const { return d_holder->err__setByUser__; }
-#line 164 "../../../../../src/options/base_options"
+#line 164 "../../../src/options/base_options"
 template <> void Options::set(options::inputLanguage__option_t, const options::inputLanguage__option_t::type& x) { d_holder->inputLanguage = x; }
-#line 164 "../../../../../src/options/base_options"
+#line 164 "../../../src/options/base_options"
 template <> const options::inputLanguage__option_t::type& Options::operator[](options::inputLanguage__option_t) const { return d_holder->inputLanguage; }
-#line 164 "../../../../../src/options/base_options"
+#line 164 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::inputLanguage__option_t) const { return d_holder->inputLanguage__setByUser__; }
-#line 166 "../../../../../src/options/base_options"
+#line 166 "../../../src/options/base_options"
 template <> void Options::set(options::outputLanguage__option_t, const options::outputLanguage__option_t::type& x) { d_holder->outputLanguage = x; }
-#line 166 "../../../../../src/options/base_options"
+#line 166 "../../../src/options/base_options"
 template <> const options::outputLanguage__option_t::type& Options::operator[](options::outputLanguage__option_t) const { return d_holder->outputLanguage; }
-#line 166 "../../../../../src/options/base_options"
+#line 166 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::outputLanguage__option_t) const { return d_holder->outputLanguage__setByUser__; }
-#line 168 "../../../../../src/options/base_options"
+#line 168 "../../../src/options/base_options"
 template <> void Options::set(options::languageHelp__option_t, const options::languageHelp__option_t::type& x) { d_holder->languageHelp = x; }
-#line 168 "../../../../../src/options/base_options"
+#line 168 "../../../src/options/base_options"
 template <> const options::languageHelp__option_t::type& Options::operator[](options::languageHelp__option_t) const { return d_holder->languageHelp; }
-#line 168 "../../../../../src/options/base_options"
+#line 168 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::languageHelp__option_t) const { return d_holder->languageHelp__setByUser__; }
-#line 175 "../../../../../src/options/base_options"
+#line 175 "../../../src/options/base_options"
 template <> void Options::set(options::verbosity__option_t, const options::verbosity__option_t::type& x) { d_holder->verbosity = x; }
-#line 175 "../../../../../src/options/base_options"
+#line 175 "../../../src/options/base_options"
 template <> const options::verbosity__option_t::type& Options::operator[](options::verbosity__option_t) const { return d_holder->verbosity; }
-#line 175 "../../../../../src/options/base_options"
+#line 175 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::verbosity__option_t) const { return d_holder->verbosity__setByUser__; }
-#line 182 "../../../../../src/options/base_options"
+#line 182 "../../../src/options/base_options"
 template <> const options::statistics__option_t::type& Options::operator[](options::statistics__option_t) const { return d_holder->statistics; }
-#line 182 "../../../../../src/options/base_options"
+#line 182 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::statistics__option_t) const { return d_holder->statistics__setByUser__; }
-#line 186 "../../../../../src/options/base_options"
+#line 186 "../../../src/options/base_options"
 template <> const options::statsEveryQuery__option_t::type& Options::operator[](options::statsEveryQuery__option_t) const { return d_holder->statsEveryQuery; }
-#line 186 "../../../../../src/options/base_options"
+#line 186 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::statsEveryQuery__option_t) const { return d_holder->statsEveryQuery__setByUser__; }
-#line 190 "../../../../../src/options/base_options"
+#line 190 "../../../src/options/base_options"
 template <> const options::statsHideZeros__option_t::type& Options::operator[](options::statsHideZeros__option_t) const { return d_holder->statsHideZeros; }
-#line 190 "../../../../../src/options/base_options"
+#line 190 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::statsHideZeros__option_t) const { return d_holder->statsHideZeros__setByUser__; }
-#line 196 "../../../../../src/options/base_options"
+#line 196 "../../../src/options/base_options"
 template <> void Options::set(options::parseOnly__option_t, const options::parseOnly__option_t::type& x) { d_holder->parseOnly = x; }
-#line 196 "../../../../../src/options/base_options"
+#line 196 "../../../src/options/base_options"
 template <> const options::parseOnly__option_t::type& Options::operator[](options::parseOnly__option_t) const { return d_holder->parseOnly; }
-#line 196 "../../../../../src/options/base_options"
+#line 196 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::parseOnly__option_t) const { return d_holder->parseOnly__setByUser__; }
-#line 199 "../../../../../src/options/base_options"
+#line 199 "../../../src/options/base_options"
 template <> const options::preprocessOnly__option_t::type& Options::operator[](options::preprocessOnly__option_t) const { return d_holder->preprocessOnly; }
-#line 199 "../../../../../src/options/base_options"
+#line 199 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::preprocessOnly__option_t) const { return d_holder->preprocessOnly__setByUser__; }
-#line 207 "../../../../../src/options/base_options"
+#line 207 "../../../src/options/base_options"
 template <> const options::printSuccess__option_t::type& Options::operator[](options::printSuccess__option_t) const { return d_holder->printSuccess; }
-#line 207 "../../../../../src/options/base_options"
+#line 207 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::printSuccess__option_t) const { return d_holder->printSuccess__setByUser__; }
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
-#line 158 "../../../../../src/options/base_options"
+#line 158 "../../../src/options/base_options"
 struct binary_name__option_t binary_name;
-#line 160 "../../../../../src/options/base_options"
+#line 160 "../../../src/options/base_options"
 struct in__option_t in;
-#line 161 "../../../../../src/options/base_options"
+#line 161 "../../../src/options/base_options"
 struct out__option_t out;
-#line 162 "../../../../../src/options/base_options"
+#line 162 "../../../src/options/base_options"
 struct err__option_t err;
-#line 164 "../../../../../src/options/base_options"
+#line 164 "../../../src/options/base_options"
 struct inputLanguage__option_t inputLanguage;
-#line 166 "../../../../../src/options/base_options"
+#line 166 "../../../src/options/base_options"
 struct outputLanguage__option_t outputLanguage;
-#line 168 "../../../../../src/options/base_options"
+#line 168 "../../../src/options/base_options"
 struct languageHelp__option_t languageHelp;
-#line 175 "../../../../../src/options/base_options"
+#line 175 "../../../src/options/base_options"
 struct verbosity__option_t verbosity;
-#line 182 "../../../../../src/options/base_options"
+#line 182 "../../../src/options/base_options"
 struct statistics__option_t statistics;
-#line 186 "../../../../../src/options/base_options"
+#line 186 "../../../src/options/base_options"
 struct statsEveryQuery__option_t statsEveryQuery;
-#line 190 "../../../../../src/options/base_options"
+#line 190 "../../../src/options/base_options"
 struct statsHideZeros__option_t statsHideZeros;
-#line 196 "../../../../../src/options/base_options"
+#line 196 "../../../src/options/base_options"
 struct parseOnly__option_t parseOnly;
-#line 199 "../../../../../src/options/base_options"
+#line 199 "../../../src/options/base_options"
 struct preprocessOnly__option_t preprocessOnly;
-#line 207 "../../../../../src/options/base_options"
+#line 207 "../../../src/options/base_options"
 struct printSuccess__option_t printSuccess;
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/base_options.h b/src/options/base_options.h
index 009dd5e..de78e99 100644
--- a/src/options/base_options.h
+++ b/src/options/base_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -21,18 +21,18 @@
 
 #include "options/options.h"
 
-#line 160 "../../../../../src/options/base_options"
+#line 160 "../../../src/options/base_options"
 #include <iosfwd>
-#line 161 "../../../../../src/options/base_options"
+#line 161 "../../../src/options/base_options"
 #include <iosfwd>
-#line 162 "../../../../../src/options/base_options"
+#line 162 "../../../src/options/base_options"
 #include <iosfwd>
-#line 164 "../../../../../src/options/base_options"
+#line 164 "../../../src/options/base_options"
 #include "options/language.h"
-#line 166 "../../../../../src/options/base_options"
+#line 166 "../../../src/options/base_options"
 #include "options/language.h"
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__BASE__FOR_OPTION_HOLDER \
   binary_name__option_t::type binary_name; \
@@ -64,244 +64,244 @@
   printSuccess__option_t::type printSuccess; \
   bool printSuccess__setByUser__;
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
 namespace options {
 
 
-#line 158 "../../../../../src/options/base_options"
+#line 158 "../../../src/options/base_options"
 extern struct CVC4_PUBLIC binary_name__option_t { typedef std::string type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } binary_name CVC4_PUBLIC;
-#line 160 "../../../../../src/options/base_options"
+#line 160 "../../../src/options/base_options"
 extern struct CVC4_PUBLIC in__option_t { typedef std::istream* type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } in CVC4_PUBLIC;
-#line 161 "../../../../../src/options/base_options"
+#line 161 "../../../src/options/base_options"
 extern struct CVC4_PUBLIC out__option_t { typedef std::ostream* type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } out CVC4_PUBLIC;
-#line 162 "../../../../../src/options/base_options"
+#line 162 "../../../src/options/base_options"
 extern struct CVC4_PUBLIC err__option_t { typedef std::ostream* type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } err CVC4_PUBLIC;
-#line 164 "../../../../../src/options/base_options"
+#line 164 "../../../src/options/base_options"
 extern struct CVC4_PUBLIC inputLanguage__option_t { typedef InputLanguage type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } inputLanguage CVC4_PUBLIC;
-#line 166 "../../../../../src/options/base_options"
+#line 166 "../../../src/options/base_options"
 extern struct CVC4_PUBLIC outputLanguage__option_t { typedef OutputLanguage type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } outputLanguage CVC4_PUBLIC;
-#line 168 "../../../../../src/options/base_options"
+#line 168 "../../../src/options/base_options"
 extern struct CVC4_PUBLIC languageHelp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } languageHelp CVC4_PUBLIC;
-#line 175 "../../../../../src/options/base_options"
+#line 175 "../../../src/options/base_options"
 extern struct CVC4_PUBLIC verbosity__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } verbosity CVC4_PUBLIC;
-#line 182 "../../../../../src/options/base_options"
+#line 182 "../../../src/options/base_options"
 extern struct CVC4_PUBLIC statistics__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } statistics CVC4_PUBLIC;
-#line 186 "../../../../../src/options/base_options"
+#line 186 "../../../src/options/base_options"
 extern struct CVC4_PUBLIC statsEveryQuery__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } statsEveryQuery CVC4_PUBLIC;
-#line 190 "../../../../../src/options/base_options"
+#line 190 "../../../src/options/base_options"
 extern struct CVC4_PUBLIC statsHideZeros__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } statsHideZeros CVC4_PUBLIC;
-#line 196 "../../../../../src/options/base_options"
+#line 196 "../../../src/options/base_options"
 extern struct CVC4_PUBLIC parseOnly__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } parseOnly CVC4_PUBLIC;
-#line 199 "../../../../../src/options/base_options"
+#line 199 "../../../src/options/base_options"
 extern struct CVC4_PUBLIC preprocessOnly__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } preprocessOnly CVC4_PUBLIC;
-#line 207 "../../../../../src/options/base_options"
+#line 207 "../../../src/options/base_options"
 extern struct CVC4_PUBLIC printSuccess__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } printSuccess CVC4_PUBLIC;
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
-#line 158 "../../../../../src/options/base_options"
+#line 158 "../../../src/options/base_options"
 template <> void Options::set(options::binary_name__option_t, const options::binary_name__option_t::type& x);
-#line 158 "../../../../../src/options/base_options"
+#line 158 "../../../src/options/base_options"
 template <> const options::binary_name__option_t::type& Options::operator[](options::binary_name__option_t) const;
-#line 158 "../../../../../src/options/base_options"
+#line 158 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::binary_name__option_t) const;
-#line 158 "../../../../../src/options/base_options"
+#line 158 "../../../src/options/base_options"
 template <> void Options::assign(options::binary_name__option_t, std::string option, std::string value);
-#line 160 "../../../../../src/options/base_options"
+#line 160 "../../../src/options/base_options"
 template <> void Options::set(options::in__option_t, const options::in__option_t::type& x);
-#line 160 "../../../../../src/options/base_options"
+#line 160 "../../../src/options/base_options"
 template <> const options::in__option_t::type& Options::operator[](options::in__option_t) const;
-#line 160 "../../../../../src/options/base_options"
+#line 160 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::in__option_t) const;
-#line 160 "../../../../../src/options/base_options"
+#line 160 "../../../src/options/base_options"
 template <> void Options::assign(options::in__option_t, std::string option, std::string value);
-#line 161 "../../../../../src/options/base_options"
+#line 161 "../../../src/options/base_options"
 template <> void Options::set(options::out__option_t, const options::out__option_t::type& x);
-#line 161 "../../../../../src/options/base_options"
+#line 161 "../../../src/options/base_options"
 template <> const options::out__option_t::type& Options::operator[](options::out__option_t) const;
-#line 161 "../../../../../src/options/base_options"
+#line 161 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::out__option_t) const;
-#line 161 "../../../../../src/options/base_options"
+#line 161 "../../../src/options/base_options"
 template <> void Options::assign(options::out__option_t, std::string option, std::string value);
-#line 162 "../../../../../src/options/base_options"
+#line 162 "../../../src/options/base_options"
 template <> void Options::set(options::err__option_t, const options::err__option_t::type& x);
-#line 162 "../../../../../src/options/base_options"
+#line 162 "../../../src/options/base_options"
 template <> const options::err__option_t::type& Options::operator[](options::err__option_t) const;
-#line 162 "../../../../../src/options/base_options"
+#line 162 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::err__option_t) const;
-#line 162 "../../../../../src/options/base_options"
+#line 162 "../../../src/options/base_options"
 template <> void Options::assign(options::err__option_t, std::string option, std::string value);
-#line 164 "../../../../../src/options/base_options"
+#line 164 "../../../src/options/base_options"
 template <> void Options::set(options::inputLanguage__option_t, const options::inputLanguage__option_t::type& x);
-#line 164 "../../../../../src/options/base_options"
+#line 164 "../../../src/options/base_options"
 template <> const options::inputLanguage__option_t::type& Options::operator[](options::inputLanguage__option_t) const;
-#line 164 "../../../../../src/options/base_options"
+#line 164 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::inputLanguage__option_t) const;
-#line 164 "../../../../../src/options/base_options"
+#line 164 "../../../src/options/base_options"
 template <> void Options::assign(options::inputLanguage__option_t, std::string option, std::string value);
-#line 166 "../../../../../src/options/base_options"
+#line 166 "../../../src/options/base_options"
 template <> void Options::set(options::outputLanguage__option_t, const options::outputLanguage__option_t::type& x);
-#line 166 "../../../../../src/options/base_options"
+#line 166 "../../../src/options/base_options"
 template <> const options::outputLanguage__option_t::type& Options::operator[](options::outputLanguage__option_t) const;
-#line 166 "../../../../../src/options/base_options"
+#line 166 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::outputLanguage__option_t) const;
-#line 166 "../../../../../src/options/base_options"
+#line 166 "../../../src/options/base_options"
 template <> void Options::assign(options::outputLanguage__option_t, std::string option, std::string value);
-#line 168 "../../../../../src/options/base_options"
+#line 168 "../../../src/options/base_options"
 template <> void Options::set(options::languageHelp__option_t, const options::languageHelp__option_t::type& x);
-#line 168 "../../../../../src/options/base_options"
+#line 168 "../../../src/options/base_options"
 template <> const options::languageHelp__option_t::type& Options::operator[](options::languageHelp__option_t) const;
-#line 168 "../../../../../src/options/base_options"
+#line 168 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::languageHelp__option_t) const;
-#line 168 "../../../../../src/options/base_options"
+#line 168 "../../../src/options/base_options"
 template <> void Options::assignBool(options::languageHelp__option_t, std::string option, bool value);
-#line 175 "../../../../../src/options/base_options"
+#line 175 "../../../src/options/base_options"
 template <> void Options::set(options::verbosity__option_t, const options::verbosity__option_t::type& x);
-#line 175 "../../../../../src/options/base_options"
+#line 175 "../../../src/options/base_options"
 template <> const options::verbosity__option_t::type& Options::operator[](options::verbosity__option_t) const;
-#line 175 "../../../../../src/options/base_options"
+#line 175 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::verbosity__option_t) const;
-#line 175 "../../../../../src/options/base_options"
+#line 175 "../../../src/options/base_options"
 template <> void Options::assign(options::verbosity__option_t, std::string option, std::string value);
-#line 182 "../../../../../src/options/base_options"
+#line 182 "../../../src/options/base_options"
 template <> const options::statistics__option_t::type& Options::operator[](options::statistics__option_t) const;
-#line 182 "../../../../../src/options/base_options"
+#line 182 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::statistics__option_t) const;
-#line 182 "../../../../../src/options/base_options"
+#line 182 "../../../src/options/base_options"
 template <> void Options::assignBool(options::statistics__option_t, std::string option, bool value);
-#line 186 "../../../../../src/options/base_options"
+#line 186 "../../../src/options/base_options"
 template <> const options::statsEveryQuery__option_t::type& Options::operator[](options::statsEveryQuery__option_t) const;
-#line 186 "../../../../../src/options/base_options"
+#line 186 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::statsEveryQuery__option_t) const;
-#line 186 "../../../../../src/options/base_options"
+#line 186 "../../../src/options/base_options"
 template <> void Options::assignBool(options::statsEveryQuery__option_t, std::string option, bool value);
-#line 190 "../../../../../src/options/base_options"
+#line 190 "../../../src/options/base_options"
 template <> const options::statsHideZeros__option_t::type& Options::operator[](options::statsHideZeros__option_t) const;
-#line 190 "../../../../../src/options/base_options"
+#line 190 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::statsHideZeros__option_t) const;
-#line 190 "../../../../../src/options/base_options"
+#line 190 "../../../src/options/base_options"
 template <> void Options::assignBool(options::statsHideZeros__option_t, std::string option, bool value);
-#line 196 "../../../../../src/options/base_options"
+#line 196 "../../../src/options/base_options"
 template <> void Options::set(options::parseOnly__option_t, const options::parseOnly__option_t::type& x);
-#line 196 "../../../../../src/options/base_options"
+#line 196 "../../../src/options/base_options"
 template <> const options::parseOnly__option_t::type& Options::operator[](options::parseOnly__option_t) const;
-#line 196 "../../../../../src/options/base_options"
+#line 196 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::parseOnly__option_t) const;
-#line 196 "../../../../../src/options/base_options"
+#line 196 "../../../src/options/base_options"
 template <> void Options::assignBool(options::parseOnly__option_t, std::string option, bool value);
-#line 199 "../../../../../src/options/base_options"
+#line 199 "../../../src/options/base_options"
 template <> const options::preprocessOnly__option_t::type& Options::operator[](options::preprocessOnly__option_t) const;
-#line 199 "../../../../../src/options/base_options"
+#line 199 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::preprocessOnly__option_t) const;
-#line 199 "../../../../../src/options/base_options"
+#line 199 "../../../src/options/base_options"
 template <> void Options::assignBool(options::preprocessOnly__option_t, std::string option, bool value);
-#line 207 "../../../../../src/options/base_options"
+#line 207 "../../../src/options/base_options"
 template <> const options::printSuccess__option_t::type& Options::operator[](options::printSuccess__option_t) const;
-#line 207 "../../../../../src/options/base_options"
+#line 207 "../../../src/options/base_options"
 template <> bool Options::wasSetByUser(options::printSuccess__option_t) const;
-#line 207 "../../../../../src/options/base_options"
+#line 207 "../../../src/options/base_options"
 template <> void Options::assignBool(options::printSuccess__option_t, std::string option, bool value);
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
-#line 158 "../../../../../src/options/base_options"
+#line 158 "../../../src/options/base_options"
 inline binary_name__option_t::type binary_name__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 158 "../../../../../src/options/base_options"
+#line 158 "../../../src/options/base_options"
 inline bool binary_name__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 158 "../../../../../src/options/base_options"
+#line 158 "../../../src/options/base_options"
 inline void binary_name__option_t::set(const binary_name__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 160 "../../../../../src/options/base_options"
+#line 160 "../../../src/options/base_options"
 inline in__option_t::type in__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 160 "../../../../../src/options/base_options"
+#line 160 "../../../src/options/base_options"
 inline bool in__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 160 "../../../../../src/options/base_options"
+#line 160 "../../../src/options/base_options"
 inline void in__option_t::set(const in__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 161 "../../../../../src/options/base_options"
+#line 161 "../../../src/options/base_options"
 inline out__option_t::type out__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 161 "../../../../../src/options/base_options"
+#line 161 "../../../src/options/base_options"
 inline bool out__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 161 "../../../../../src/options/base_options"
+#line 161 "../../../src/options/base_options"
 inline void out__option_t::set(const out__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 162 "../../../../../src/options/base_options"
+#line 162 "../../../src/options/base_options"
 inline err__option_t::type err__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 162 "../../../../../src/options/base_options"
+#line 162 "../../../src/options/base_options"
 inline bool err__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 162 "../../../../../src/options/base_options"
+#line 162 "../../../src/options/base_options"
 inline void err__option_t::set(const err__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 164 "../../../../../src/options/base_options"
+#line 164 "../../../src/options/base_options"
 inline inputLanguage__option_t::type inputLanguage__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 164 "../../../../../src/options/base_options"
+#line 164 "../../../src/options/base_options"
 inline bool inputLanguage__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 164 "../../../../../src/options/base_options"
+#line 164 "../../../src/options/base_options"
 inline void inputLanguage__option_t::set(const inputLanguage__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 166 "../../../../../src/options/base_options"
+#line 166 "../../../src/options/base_options"
 inline outputLanguage__option_t::type outputLanguage__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 166 "../../../../../src/options/base_options"
+#line 166 "../../../src/options/base_options"
 inline bool outputLanguage__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 166 "../../../../../src/options/base_options"
+#line 166 "../../../src/options/base_options"
 inline void outputLanguage__option_t::set(const outputLanguage__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 168 "../../../../../src/options/base_options"
+#line 168 "../../../src/options/base_options"
 inline languageHelp__option_t::type languageHelp__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 168 "../../../../../src/options/base_options"
+#line 168 "../../../src/options/base_options"
 inline bool languageHelp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 168 "../../../../../src/options/base_options"
+#line 168 "../../../src/options/base_options"
 inline void languageHelp__option_t::set(const languageHelp__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 175 "../../../../../src/options/base_options"
+#line 175 "../../../src/options/base_options"
 inline verbosity__option_t::type verbosity__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 175 "../../../../../src/options/base_options"
+#line 175 "../../../src/options/base_options"
 inline bool verbosity__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 175 "../../../../../src/options/base_options"
+#line 175 "../../../src/options/base_options"
 inline void verbosity__option_t::set(const verbosity__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 182 "../../../../../src/options/base_options"
+#line 182 "../../../src/options/base_options"
 inline statistics__option_t::type statistics__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 182 "../../../../../src/options/base_options"
+#line 182 "../../../src/options/base_options"
 inline bool statistics__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 186 "../../../../../src/options/base_options"
+#line 186 "../../../src/options/base_options"
 inline statsEveryQuery__option_t::type statsEveryQuery__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 186 "../../../../../src/options/base_options"
+#line 186 "../../../src/options/base_options"
 inline bool statsEveryQuery__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 190 "../../../../../src/options/base_options"
+#line 190 "../../../src/options/base_options"
 inline statsHideZeros__option_t::type statsHideZeros__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 190 "../../../../../src/options/base_options"
+#line 190 "../../../src/options/base_options"
 inline bool statsHideZeros__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 196 "../../../../../src/options/base_options"
+#line 196 "../../../src/options/base_options"
 inline parseOnly__option_t::type parseOnly__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 196 "../../../../../src/options/base_options"
+#line 196 "../../../src/options/base_options"
 inline bool parseOnly__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 196 "../../../../../src/options/base_options"
+#line 196 "../../../src/options/base_options"
 inline void parseOnly__option_t::set(const parseOnly__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 199 "../../../../../src/options/base_options"
+#line 199 "../../../src/options/base_options"
 inline preprocessOnly__option_t::type preprocessOnly__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 199 "../../../../../src/options/base_options"
+#line 199 "../../../src/options/base_options"
 inline bool preprocessOnly__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 207 "../../../../../src/options/base_options"
+#line 207 "../../../src/options/base_options"
 inline printSuccess__option_t::type printSuccess__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 207 "../../../../../src/options/base_options"
+#line 207 "../../../src/options/base_options"
 inline bool printSuccess__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/base_options_template.cpp b/src/options/base_options_template.cpp
index bdcef60..1093b83 100644
--- a/src/options/base_options_template.cpp
+++ b/src/options/base_options_template.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/base_options_template.h b/src/options/base_options_template.h
index 486b793..8fe3a39 100644
--- a/src/options/base_options_template.h
+++ b/src/options/base_options_template.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/booleans_options.cpp b/src/options/booleans_options.cpp
index 2762db1..fbd3225 100644
--- a/src/options/booleans_options.cpp
+++ b/src/options/booleans_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -20,13 +20,13 @@ namespace CVC4 {
 
 
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/booleans_options.h b/src/options/booleans_options.h
index 5f7e4ce..685065e 100644
--- a/src/options/booleans_options.h
+++ b/src/options/booleans_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -22,11 +22,11 @@
 #include "options/options.h"
 
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__BOOLEANS__FOR_OPTION_HOLDER
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
@@ -34,19 +34,19 @@ namespace options {
 
 
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/builtin_options.cpp b/src/options/builtin_options.cpp
index 2762db1..fbd3225 100644
--- a/src/options/builtin_options.cpp
+++ b/src/options/builtin_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -20,13 +20,13 @@ namespace CVC4 {
 
 
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/builtin_options.h b/src/options/builtin_options.h
index b86a0b3..a46c5ca 100644
--- a/src/options/builtin_options.h
+++ b/src/options/builtin_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -22,11 +22,11 @@
 #include "options/options.h"
 
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__BUILTIN__FOR_OPTION_HOLDER
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
@@ -34,19 +34,19 @@ namespace options {
 
 
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/bv_bitblast_mode.cpp b/src/options/bv_bitblast_mode.cpp
index f331345..e9f9b60 100644
--- a/src/options/bv_bitblast_mode.cpp
+++ b/src/options/bv_bitblast_mode.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/bv_bitblast_mode.h b/src/options/bv_bitblast_mode.h
index 3a64741..5bc5f60 100644
--- a/src/options/bv_bitblast_mode.h
+++ b/src/options/bv_bitblast_mode.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/bv_options.cpp b/src/options/bv_options.cpp
index ffead76..6958897 100644
--- a/src/options/bv_options.cpp
+++ b/src/options/bv_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -19,192 +19,192 @@
 namespace CVC4 {
 
 
-#line 10 "../../../../../src/options/bv_options"
+#line 10 "../../../src/options/bv_options"
 template <> void Options::set(options::bvSatSolver__option_t, const options::bvSatSolver__option_t::type& x) { d_holder->bvSatSolver = x; }
-#line 10 "../../../../../src/options/bv_options"
+#line 10 "../../../src/options/bv_options"
 template <> const options::bvSatSolver__option_t::type& Options::operator[](options::bvSatSolver__option_t) const { return d_holder->bvSatSolver; }
-#line 10 "../../../../../src/options/bv_options"
+#line 10 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bvSatSolver__option_t) const { return d_holder->bvSatSolver__setByUser__; }
-#line 13 "../../../../../src/options/bv_options"
+#line 13 "../../../src/options/bv_options"
 template <> void Options::set(options::bitblastMode__option_t, const options::bitblastMode__option_t::type& x) { d_holder->bitblastMode = x; }
-#line 13 "../../../../../src/options/bv_options"
+#line 13 "../../../src/options/bv_options"
 template <> const options::bitblastMode__option_t::type& Options::operator[](options::bitblastMode__option_t) const { return d_holder->bitblastMode; }
-#line 13 "../../../../../src/options/bv_options"
+#line 13 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitblastMode__option_t) const { return d_holder->bitblastMode__setByUser__; }
-#line 18 "../../../../../src/options/bv_options"
+#line 18 "../../../src/options/bv_options"
 template <> void Options::set(options::bitvectorAig__option_t, const options::bitvectorAig__option_t::type& x) { d_holder->bitvectorAig = x; }
-#line 18 "../../../../../src/options/bv_options"
+#line 18 "../../../src/options/bv_options"
 template <> const options::bitvectorAig__option_t::type& Options::operator[](options::bitvectorAig__option_t) const { return d_holder->bitvectorAig; }
-#line 18 "../../../../../src/options/bv_options"
+#line 18 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorAig__option_t) const { return d_holder->bitvectorAig__setByUser__; }
-#line 20 "../../../../../src/options/bv_options"
+#line 20 "../../../src/options/bv_options"
 template <> void Options::set(options::bitvectorAigSimplifications__option_t, const options::bitvectorAigSimplifications__option_t::type& x) { d_holder->bitvectorAigSimplifications = x; }
-#line 20 "../../../../../src/options/bv_options"
+#line 20 "../../../src/options/bv_options"
 template <> const options::bitvectorAigSimplifications__option_t::type& Options::operator[](options::bitvectorAigSimplifications__option_t) const { return d_holder->bitvectorAigSimplifications; }
-#line 20 "../../../../../src/options/bv_options"
+#line 20 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorAigSimplifications__option_t) const { return d_holder->bitvectorAigSimplifications__setByUser__; }
-#line 24 "../../../../../src/options/bv_options"
+#line 24 "../../../src/options/bv_options"
 template <> void Options::set(options::bitvectorPropagate__option_t, const options::bitvectorPropagate__option_t::type& x) { d_holder->bitvectorPropagate = x; }
-#line 24 "../../../../../src/options/bv_options"
+#line 24 "../../../src/options/bv_options"
 template <> const options::bitvectorPropagate__option_t::type& Options::operator[](options::bitvectorPropagate__option_t) const { return d_holder->bitvectorPropagate; }
-#line 24 "../../../../../src/options/bv_options"
+#line 24 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorPropagate__option_t) const { return d_holder->bitvectorPropagate__setByUser__; }
-#line 27 "../../../../../src/options/bv_options"
+#line 27 "../../../src/options/bv_options"
 template <> void Options::set(options::bitvectorEqualitySolver__option_t, const options::bitvectorEqualitySolver__option_t::type& x) { d_holder->bitvectorEqualitySolver = x; }
-#line 27 "../../../../../src/options/bv_options"
+#line 27 "../../../src/options/bv_options"
 template <> const options::bitvectorEqualitySolver__option_t::type& Options::operator[](options::bitvectorEqualitySolver__option_t) const { return d_holder->bitvectorEqualitySolver; }
-#line 27 "../../../../../src/options/bv_options"
+#line 27 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorEqualitySolver__option_t) const { return d_holder->bitvectorEqualitySolver__setByUser__; }
-#line 30 "../../../../../src/options/bv_options"
+#line 30 "../../../src/options/bv_options"
 template <> void Options::set(options::bitvectorEqualitySlicer__option_t, const options::bitvectorEqualitySlicer__option_t::type& x) { d_holder->bitvectorEqualitySlicer = x; }
-#line 30 "../../../../../src/options/bv_options"
+#line 30 "../../../src/options/bv_options"
 template <> const options::bitvectorEqualitySlicer__option_t::type& Options::operator[](options::bitvectorEqualitySlicer__option_t) const { return d_holder->bitvectorEqualitySlicer; }
-#line 30 "../../../../../src/options/bv_options"
+#line 30 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorEqualitySlicer__option_t) const { return d_holder->bitvectorEqualitySlicer__setByUser__; }
-#line 34 "../../../../../src/options/bv_options"
+#line 34 "../../../src/options/bv_options"
 template <> void Options::set(options::bitvectorInequalitySolver__option_t, const options::bitvectorInequalitySolver__option_t::type& x) { d_holder->bitvectorInequalitySolver = x; }
-#line 34 "../../../../../src/options/bv_options"
+#line 34 "../../../src/options/bv_options"
 template <> const options::bitvectorInequalitySolver__option_t::type& Options::operator[](options::bitvectorInequalitySolver__option_t) const { return d_holder->bitvectorInequalitySolver; }
-#line 34 "../../../../../src/options/bv_options"
+#line 34 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorInequalitySolver__option_t) const { return d_holder->bitvectorInequalitySolver__setByUser__; }
-#line 37 "../../../../../src/options/bv_options"
+#line 37 "../../../src/options/bv_options"
 template <> void Options::set(options::bitvectorAlgebraicSolver__option_t, const options::bitvectorAlgebraicSolver__option_t::type& x) { d_holder->bitvectorAlgebraicSolver = x; }
-#line 37 "../../../../../src/options/bv_options"
+#line 37 "../../../src/options/bv_options"
 template <> const options::bitvectorAlgebraicSolver__option_t::type& Options::operator[](options::bitvectorAlgebraicSolver__option_t) const { return d_holder->bitvectorAlgebraicSolver; }
-#line 37 "../../../../../src/options/bv_options"
+#line 37 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorAlgebraicSolver__option_t) const { return d_holder->bitvectorAlgebraicSolver__setByUser__; }
-#line 40 "../../../../../src/options/bv_options"
+#line 40 "../../../src/options/bv_options"
 template <> void Options::set(options::bitvectorAlgebraicBudget__option_t, const options::bitvectorAlgebraicBudget__option_t::type& x) { d_holder->bitvectorAlgebraicBudget = x; }
-#line 40 "../../../../../src/options/bv_options"
+#line 40 "../../../src/options/bv_options"
 template <> const options::bitvectorAlgebraicBudget__option_t::type& Options::operator[](options::bitvectorAlgebraicBudget__option_t) const { return d_holder->bitvectorAlgebraicBudget; }
-#line 40 "../../../../../src/options/bv_options"
+#line 40 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorAlgebraicBudget__option_t) const { return d_holder->bitvectorAlgebraicBudget__setByUser__; }
-#line 45 "../../../../../src/options/bv_options"
+#line 45 "../../../src/options/bv_options"
 template <> void Options::set(options::bitvectorToBool__option_t, const options::bitvectorToBool__option_t::type& x) { d_holder->bitvectorToBool = x; }
-#line 45 "../../../../../src/options/bv_options"
+#line 45 "../../../src/options/bv_options"
 template <> const options::bitvectorToBool__option_t::type& Options::operator[](options::bitvectorToBool__option_t) const { return d_holder->bitvectorToBool; }
-#line 45 "../../../../../src/options/bv_options"
+#line 45 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorToBool__option_t) const { return d_holder->bitvectorToBool__setByUser__; }
-#line 48 "../../../../../src/options/bv_options"
+#line 48 "../../../src/options/bv_options"
 template <> void Options::set(options::boolToBitvector__option_t, const options::boolToBitvector__option_t::type& x) { d_holder->boolToBitvector = x; }
-#line 48 "../../../../../src/options/bv_options"
+#line 48 "../../../src/options/bv_options"
 template <> const options::boolToBitvector__option_t::type& Options::operator[](options::boolToBitvector__option_t) const { return d_holder->boolToBitvector; }
-#line 48 "../../../../../src/options/bv_options"
+#line 48 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::boolToBitvector__option_t) const { return d_holder->boolToBitvector__setByUser__; }
-#line 51 "../../../../../src/options/bv_options"
+#line 51 "../../../src/options/bv_options"
 template <> void Options::set(options::bitvectorDivByZeroConst__option_t, const options::bitvectorDivByZeroConst__option_t::type& x) { d_holder->bitvectorDivByZeroConst = x; }
-#line 51 "../../../../../src/options/bv_options"
+#line 51 "../../../src/options/bv_options"
 template <> const options::bitvectorDivByZeroConst__option_t::type& Options::operator[](options::bitvectorDivByZeroConst__option_t) const { return d_holder->bitvectorDivByZeroConst; }
-#line 51 "../../../../../src/options/bv_options"
+#line 51 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorDivByZeroConst__option_t) const { return d_holder->bitvectorDivByZeroConst__setByUser__; }
-#line 54 "../../../../../src/options/bv_options"
+#line 54 "../../../src/options/bv_options"
 template <> void Options::set(options::bvExtractArithRewrite__option_t, const options::bvExtractArithRewrite__option_t::type& x) { d_holder->bvExtractArithRewrite = x; }
-#line 54 "../../../../../src/options/bv_options"
+#line 54 "../../../src/options/bv_options"
 template <> const options::bvExtractArithRewrite__option_t::type& Options::operator[](options::bvExtractArithRewrite__option_t) const { return d_holder->bvExtractArithRewrite; }
-#line 54 "../../../../../src/options/bv_options"
+#line 54 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bvExtractArithRewrite__option_t) const { return d_holder->bvExtractArithRewrite__setByUser__; }
-#line 57 "../../../../../src/options/bv_options"
+#line 57 "../../../src/options/bv_options"
 template <> void Options::set(options::bvAbstraction__option_t, const options::bvAbstraction__option_t::type& x) { d_holder->bvAbstraction = x; }
-#line 57 "../../../../../src/options/bv_options"
+#line 57 "../../../src/options/bv_options"
 template <> const options::bvAbstraction__option_t::type& Options::operator[](options::bvAbstraction__option_t) const { return d_holder->bvAbstraction; }
-#line 57 "../../../../../src/options/bv_options"
+#line 57 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bvAbstraction__option_t) const { return d_holder->bvAbstraction__setByUser__; }
-#line 60 "../../../../../src/options/bv_options"
+#line 60 "../../../src/options/bv_options"
 template <> void Options::set(options::skolemizeArguments__option_t, const options::skolemizeArguments__option_t::type& x) { d_holder->skolemizeArguments = x; }
-#line 60 "../../../../../src/options/bv_options"
+#line 60 "../../../src/options/bv_options"
 template <> const options::skolemizeArguments__option_t::type& Options::operator[](options::skolemizeArguments__option_t) const { return d_holder->skolemizeArguments; }
-#line 60 "../../../../../src/options/bv_options"
+#line 60 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::skolemizeArguments__option_t) const { return d_holder->skolemizeArguments__setByUser__; }
-#line 63 "../../../../../src/options/bv_options"
+#line 63 "../../../src/options/bv_options"
 template <> const options::bvNumFunc__option_t::type& Options::operator[](options::bvNumFunc__option_t) const { return d_holder->bvNumFunc; }
-#line 63 "../../../../../src/options/bv_options"
+#line 63 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bvNumFunc__option_t) const { return d_holder->bvNumFunc__setByUser__; }
-#line 66 "../../../../../src/options/bv_options"
+#line 66 "../../../src/options/bv_options"
 template <> void Options::set(options::bvEagerExplanations__option_t, const options::bvEagerExplanations__option_t::type& x) { d_holder->bvEagerExplanations = x; }
-#line 66 "../../../../../src/options/bv_options"
+#line 66 "../../../src/options/bv_options"
 template <> const options::bvEagerExplanations__option_t::type& Options::operator[](options::bvEagerExplanations__option_t) const { return d_holder->bvEagerExplanations; }
-#line 66 "../../../../../src/options/bv_options"
+#line 66 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bvEagerExplanations__option_t) const { return d_holder->bvEagerExplanations__setByUser__; }
-#line 69 "../../../../../src/options/bv_options"
+#line 69 "../../../src/options/bv_options"
 template <> const options::bitvectorQuickXplain__option_t::type& Options::operator[](options::bitvectorQuickXplain__option_t) const { return d_holder->bitvectorQuickXplain; }
-#line 69 "../../../../../src/options/bv_options"
+#line 69 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorQuickXplain__option_t) const { return d_holder->bitvectorQuickXplain__setByUser__; }
-#line 72 "../../../../../src/options/bv_options"
+#line 72 "../../../src/options/bv_options"
 template <> const options::bvIntroducePow2__option_t::type& Options::operator[](options::bvIntroducePow2__option_t) const { return d_holder->bvIntroducePow2; }
-#line 72 "../../../../../src/options/bv_options"
+#line 72 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bvIntroducePow2__option_t) const { return d_holder->bvIntroducePow2__setByUser__; }
-#line 75 "../../../../../src/options/bv_options"
+#line 75 "../../../src/options/bv_options"
 template <> void Options::set(options::bvLazyRewriteExtf__option_t, const options::bvLazyRewriteExtf__option_t::type& x) { d_holder->bvLazyRewriteExtf = x; }
-#line 75 "../../../../../src/options/bv_options"
+#line 75 "../../../src/options/bv_options"
 template <> const options::bvLazyRewriteExtf__option_t::type& Options::operator[](options::bvLazyRewriteExtf__option_t) const { return d_holder->bvLazyRewriteExtf; }
-#line 75 "../../../../../src/options/bv_options"
+#line 75 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bvLazyRewriteExtf__option_t) const { return d_holder->bvLazyRewriteExtf__setByUser__; }
-#line 78 "../../../../../src/options/bv_options"
+#line 78 "../../../src/options/bv_options"
 template <> void Options::set(options::bvLazyReduceExtf__option_t, const options::bvLazyReduceExtf__option_t::type& x) { d_holder->bvLazyReduceExtf = x; }
-#line 78 "../../../../../src/options/bv_options"
+#line 78 "../../../src/options/bv_options"
 template <> const options::bvLazyReduceExtf__option_t::type& Options::operator[](options::bvLazyReduceExtf__option_t) const { return d_holder->bvLazyReduceExtf; }
-#line 78 "../../../../../src/options/bv_options"
+#line 78 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bvLazyReduceExtf__option_t) const { return d_holder->bvLazyReduceExtf__setByUser__; }
-#line 81 "../../../../../src/options/bv_options"
+#line 81 "../../../src/options/bv_options"
 template <> void Options::set(options::bvAlgExtf__option_t, const options::bvAlgExtf__option_t::type& x) { d_holder->bvAlgExtf = x; }
-#line 81 "../../../../../src/options/bv_options"
+#line 81 "../../../src/options/bv_options"
 template <> const options::bvAlgExtf__option_t::type& Options::operator[](options::bvAlgExtf__option_t) const { return d_holder->bvAlgExtf; }
-#line 81 "../../../../../src/options/bv_options"
+#line 81 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bvAlgExtf__option_t) const { return d_holder->bvAlgExtf__setByUser__; }
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
-#line 10 "../../../../../src/options/bv_options"
+#line 10 "../../../src/options/bv_options"
 struct bvSatSolver__option_t bvSatSolver;
-#line 13 "../../../../../src/options/bv_options"
+#line 13 "../../../src/options/bv_options"
 struct bitblastMode__option_t bitblastMode;
-#line 18 "../../../../../src/options/bv_options"
+#line 18 "../../../src/options/bv_options"
 struct bitvectorAig__option_t bitvectorAig;
-#line 20 "../../../../../src/options/bv_options"
+#line 20 "../../../src/options/bv_options"
 struct bitvectorAigSimplifications__option_t bitvectorAigSimplifications;
-#line 24 "../../../../../src/options/bv_options"
+#line 24 "../../../src/options/bv_options"
 struct bitvectorPropagate__option_t bitvectorPropagate;
-#line 27 "../../../../../src/options/bv_options"
+#line 27 "../../../src/options/bv_options"
 struct bitvectorEqualitySolver__option_t bitvectorEqualitySolver;
-#line 30 "../../../../../src/options/bv_options"
+#line 30 "../../../src/options/bv_options"
 struct bitvectorEqualitySlicer__option_t bitvectorEqualitySlicer;
-#line 34 "../../../../../src/options/bv_options"
+#line 34 "../../../src/options/bv_options"
 struct bitvectorInequalitySolver__option_t bitvectorInequalitySolver;
-#line 37 "../../../../../src/options/bv_options"
+#line 37 "../../../src/options/bv_options"
 struct bitvectorAlgebraicSolver__option_t bitvectorAlgebraicSolver;
-#line 40 "../../../../../src/options/bv_options"
+#line 40 "../../../src/options/bv_options"
 struct bitvectorAlgebraicBudget__option_t bitvectorAlgebraicBudget;
-#line 45 "../../../../../src/options/bv_options"
+#line 45 "../../../src/options/bv_options"
 struct bitvectorToBool__option_t bitvectorToBool;
-#line 48 "../../../../../src/options/bv_options"
+#line 48 "../../../src/options/bv_options"
 struct boolToBitvector__option_t boolToBitvector;
-#line 51 "../../../../../src/options/bv_options"
+#line 51 "../../../src/options/bv_options"
 struct bitvectorDivByZeroConst__option_t bitvectorDivByZeroConst;
-#line 54 "../../../../../src/options/bv_options"
+#line 54 "../../../src/options/bv_options"
 struct bvExtractArithRewrite__option_t bvExtractArithRewrite;
-#line 57 "../../../../../src/options/bv_options"
+#line 57 "../../../src/options/bv_options"
 struct bvAbstraction__option_t bvAbstraction;
-#line 60 "../../../../../src/options/bv_options"
+#line 60 "../../../src/options/bv_options"
 struct skolemizeArguments__option_t skolemizeArguments;
-#line 63 "../../../../../src/options/bv_options"
+#line 63 "../../../src/options/bv_options"
 struct bvNumFunc__option_t bvNumFunc;
-#line 66 "../../../../../src/options/bv_options"
+#line 66 "../../../src/options/bv_options"
 struct bvEagerExplanations__option_t bvEagerExplanations;
-#line 69 "../../../../../src/options/bv_options"
+#line 69 "../../../src/options/bv_options"
 struct bitvectorQuickXplain__option_t bitvectorQuickXplain;
-#line 72 "../../../../../src/options/bv_options"
+#line 72 "../../../src/options/bv_options"
 struct bvIntroducePow2__option_t bvIntroducePow2;
-#line 75 "../../../../../src/options/bv_options"
+#line 75 "../../../src/options/bv_options"
 struct bvLazyRewriteExtf__option_t bvLazyRewriteExtf;
-#line 78 "../../../../../src/options/bv_options"
+#line 78 "../../../src/options/bv_options"
 struct bvLazyReduceExtf__option_t bvLazyReduceExtf;
-#line 81 "../../../../../src/options/bv_options"
+#line 81 "../../../src/options/bv_options"
 struct bvAlgExtf__option_t bvAlgExtf;
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/bv_options.h b/src/options/bv_options.h
index 78e2959..3d5ae80 100644
--- a/src/options/bv_options.h
+++ b/src/options/bv_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -21,14 +21,14 @@
 
 #include "options/options.h"
 
-#line 10 "../../../../../src/options/bv_options"
+#line 10 "../../../src/options/bv_options"
 #include "options/bv_bitblast_mode.h"
-#line 13 "../../../../../src/options/bv_options"
+#line 13 "../../../src/options/bv_options"
 #include "options/bv_bitblast_mode.h"
-#line 30 "../../../../../src/options/bv_options"
+#line 30 "../../../src/options/bv_options"
 #include "options/bv_bitblast_mode.h"
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__BV__FOR_OPTION_HOLDER \
   bvSatSolver__option_t::type bvSatSolver; \
@@ -78,405 +78,405 @@
   bvAlgExtf__option_t::type bvAlgExtf; \
   bool bvAlgExtf__setByUser__;
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
 namespace options {
 
 
-#line 10 "../../../../../src/options/bv_options"
+#line 10 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC bvSatSolver__option_t { typedef CVC4::theory::bv::SatSolverMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bvSatSolver CVC4_PUBLIC;
-#line 13 "../../../../../src/options/bv_options"
+#line 13 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC bitblastMode__option_t { typedef CVC4::theory::bv::BitblastMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitblastMode CVC4_PUBLIC;
-#line 18 "../../../../../src/options/bv_options"
+#line 18 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC bitvectorAig__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitvectorAig CVC4_PUBLIC;
-#line 20 "../../../../../src/options/bv_options"
+#line 20 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC bitvectorAigSimplifications__option_t { typedef std::string type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitvectorAigSimplifications CVC4_PUBLIC;
-#line 24 "../../../../../src/options/bv_options"
+#line 24 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC bitvectorPropagate__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitvectorPropagate CVC4_PUBLIC;
-#line 27 "../../../../../src/options/bv_options"
+#line 27 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC bitvectorEqualitySolver__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitvectorEqualitySolver CVC4_PUBLIC;
-#line 30 "../../../../../src/options/bv_options"
+#line 30 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC bitvectorEqualitySlicer__option_t { typedef CVC4::theory::bv::BvSlicerMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitvectorEqualitySlicer CVC4_PUBLIC;
-#line 34 "../../../../../src/options/bv_options"
+#line 34 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC bitvectorInequalitySolver__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitvectorInequalitySolver CVC4_PUBLIC;
-#line 37 "../../../../../src/options/bv_options"
+#line 37 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC bitvectorAlgebraicSolver__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitvectorAlgebraicSolver CVC4_PUBLIC;
-#line 40 "../../../../../src/options/bv_options"
+#line 40 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC bitvectorAlgebraicBudget__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitvectorAlgebraicBudget CVC4_PUBLIC;
-#line 45 "../../../../../src/options/bv_options"
+#line 45 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC bitvectorToBool__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitvectorToBool CVC4_PUBLIC;
-#line 48 "../../../../../src/options/bv_options"
+#line 48 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC boolToBitvector__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } boolToBitvector CVC4_PUBLIC;
-#line 51 "../../../../../src/options/bv_options"
+#line 51 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC bitvectorDivByZeroConst__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bitvectorDivByZeroConst CVC4_PUBLIC;
-#line 54 "../../../../../src/options/bv_options"
+#line 54 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC bvExtractArithRewrite__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bvExtractArithRewrite CVC4_PUBLIC;
-#line 57 "../../../../../src/options/bv_options"
+#line 57 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC bvAbstraction__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bvAbstraction CVC4_PUBLIC;
-#line 60 "../../../../../src/options/bv_options"
+#line 60 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC skolemizeArguments__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } skolemizeArguments CVC4_PUBLIC;
-#line 63 "../../../../../src/options/bv_options"
+#line 63 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC bvNumFunc__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } bvNumFunc CVC4_PUBLIC;
-#line 66 "../../../../../src/options/bv_options"
+#line 66 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC bvEagerExplanations__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bvEagerExplanations CVC4_PUBLIC;
-#line 69 "../../../../../src/options/bv_options"
+#line 69 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC bitvectorQuickXplain__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } bitvectorQuickXplain CVC4_PUBLIC;
-#line 72 "../../../../../src/options/bv_options"
+#line 72 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC bvIntroducePow2__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } bvIntroducePow2 CVC4_PUBLIC;
-#line 75 "../../../../../src/options/bv_options"
+#line 75 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC bvLazyRewriteExtf__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bvLazyRewriteExtf CVC4_PUBLIC;
-#line 78 "../../../../../src/options/bv_options"
+#line 78 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC bvLazyReduceExtf__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bvLazyReduceExtf CVC4_PUBLIC;
-#line 81 "../../../../../src/options/bv_options"
+#line 81 "../../../src/options/bv_options"
 extern struct CVC4_PUBLIC bvAlgExtf__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } bvAlgExtf CVC4_PUBLIC;
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
-#line 10 "../../../../../src/options/bv_options"
+#line 10 "../../../src/options/bv_options"
 template <> void Options::set(options::bvSatSolver__option_t, const options::bvSatSolver__option_t::type& x);
-#line 10 "../../../../../src/options/bv_options"
+#line 10 "../../../src/options/bv_options"
 template <> const options::bvSatSolver__option_t::type& Options::operator[](options::bvSatSolver__option_t) const;
-#line 10 "../../../../../src/options/bv_options"
+#line 10 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bvSatSolver__option_t) const;
-#line 10 "../../../../../src/options/bv_options"
+#line 10 "../../../src/options/bv_options"
 template <> void Options::assign(options::bvSatSolver__option_t, std::string option, std::string value);
-#line 13 "../../../../../src/options/bv_options"
+#line 13 "../../../src/options/bv_options"
 template <> void Options::set(options::bitblastMode__option_t, const options::bitblastMode__option_t::type& x);
-#line 13 "../../../../../src/options/bv_options"
+#line 13 "../../../src/options/bv_options"
 template <> const options::bitblastMode__option_t::type& Options::operator[](options::bitblastMode__option_t) const;
-#line 13 "../../../../../src/options/bv_options"
+#line 13 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitblastMode__option_t) const;
-#line 13 "../../../../../src/options/bv_options"
+#line 13 "../../../src/options/bv_options"
 template <> void Options::assign(options::bitblastMode__option_t, std::string option, std::string value);
-#line 18 "../../../../../src/options/bv_options"
+#line 18 "../../../src/options/bv_options"
 template <> void Options::set(options::bitvectorAig__option_t, const options::bitvectorAig__option_t::type& x);
-#line 18 "../../../../../src/options/bv_options"
+#line 18 "../../../src/options/bv_options"
 template <> const options::bitvectorAig__option_t::type& Options::operator[](options::bitvectorAig__option_t) const;
-#line 18 "../../../../../src/options/bv_options"
+#line 18 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorAig__option_t) const;
-#line 18 "../../../../../src/options/bv_options"
+#line 18 "../../../src/options/bv_options"
 template <> void Options::assignBool(options::bitvectorAig__option_t, std::string option, bool value);
-#line 20 "../../../../../src/options/bv_options"
+#line 20 "../../../src/options/bv_options"
 template <> void Options::set(options::bitvectorAigSimplifications__option_t, const options::bitvectorAigSimplifications__option_t::type& x);
-#line 20 "../../../../../src/options/bv_options"
+#line 20 "../../../src/options/bv_options"
 template <> const options::bitvectorAigSimplifications__option_t::type& Options::operator[](options::bitvectorAigSimplifications__option_t) const;
-#line 20 "../../../../../src/options/bv_options"
+#line 20 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorAigSimplifications__option_t) const;
-#line 20 "../../../../../src/options/bv_options"
+#line 20 "../../../src/options/bv_options"
 template <> void Options::assign(options::bitvectorAigSimplifications__option_t, std::string option, std::string value);
-#line 24 "../../../../../src/options/bv_options"
+#line 24 "../../../src/options/bv_options"
 template <> void Options::set(options::bitvectorPropagate__option_t, const options::bitvectorPropagate__option_t::type& x);
-#line 24 "../../../../../src/options/bv_options"
+#line 24 "../../../src/options/bv_options"
 template <> const options::bitvectorPropagate__option_t::type& Options::operator[](options::bitvectorPropagate__option_t) const;
-#line 24 "../../../../../src/options/bv_options"
+#line 24 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorPropagate__option_t) const;
-#line 24 "../../../../../src/options/bv_options"
+#line 24 "../../../src/options/bv_options"
 template <> void Options::assignBool(options::bitvectorPropagate__option_t, std::string option, bool value);
-#line 27 "../../../../../src/options/bv_options"
+#line 27 "../../../src/options/bv_options"
 template <> void Options::set(options::bitvectorEqualitySolver__option_t, const options::bitvectorEqualitySolver__option_t::type& x);
-#line 27 "../../../../../src/options/bv_options"
+#line 27 "../../../src/options/bv_options"
 template <> const options::bitvectorEqualitySolver__option_t::type& Options::operator[](options::bitvectorEqualitySolver__option_t) const;
-#line 27 "../../../../../src/options/bv_options"
+#line 27 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorEqualitySolver__option_t) const;
-#line 27 "../../../../../src/options/bv_options"
+#line 27 "../../../src/options/bv_options"
 template <> void Options::assignBool(options::bitvectorEqualitySolver__option_t, std::string option, bool value);
-#line 30 "../../../../../src/options/bv_options"
+#line 30 "../../../src/options/bv_options"
 template <> void Options::set(options::bitvectorEqualitySlicer__option_t, const options::bitvectorEqualitySlicer__option_t::type& x);
-#line 30 "../../../../../src/options/bv_options"
+#line 30 "../../../src/options/bv_options"
 template <> const options::bitvectorEqualitySlicer__option_t::type& Options::operator[](options::bitvectorEqualitySlicer__option_t) const;
-#line 30 "../../../../../src/options/bv_options"
+#line 30 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorEqualitySlicer__option_t) const;
-#line 30 "../../../../../src/options/bv_options"
+#line 30 "../../../src/options/bv_options"
 template <> void Options::assign(options::bitvectorEqualitySlicer__option_t, std::string option, std::string value);
-#line 34 "../../../../../src/options/bv_options"
+#line 34 "../../../src/options/bv_options"
 template <> void Options::set(options::bitvectorInequalitySolver__option_t, const options::bitvectorInequalitySolver__option_t::type& x);
-#line 34 "../../../../../src/options/bv_options"
+#line 34 "../../../src/options/bv_options"
 template <> const options::bitvectorInequalitySolver__option_t::type& Options::operator[](options::bitvectorInequalitySolver__option_t) const;
-#line 34 "../../../../../src/options/bv_options"
+#line 34 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorInequalitySolver__option_t) const;
-#line 34 "../../../../../src/options/bv_options"
+#line 34 "../../../src/options/bv_options"
 template <> void Options::assignBool(options::bitvectorInequalitySolver__option_t, std::string option, bool value);
-#line 37 "../../../../../src/options/bv_options"
+#line 37 "../../../src/options/bv_options"
 template <> void Options::set(options::bitvectorAlgebraicSolver__option_t, const options::bitvectorAlgebraicSolver__option_t::type& x);
-#line 37 "../../../../../src/options/bv_options"
+#line 37 "../../../src/options/bv_options"
 template <> const options::bitvectorAlgebraicSolver__option_t::type& Options::operator[](options::bitvectorAlgebraicSolver__option_t) const;
-#line 37 "../../../../../src/options/bv_options"
+#line 37 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorAlgebraicSolver__option_t) const;
-#line 37 "../../../../../src/options/bv_options"
+#line 37 "../../../src/options/bv_options"
 template <> void Options::assignBool(options::bitvectorAlgebraicSolver__option_t, std::string option, bool value);
-#line 40 "../../../../../src/options/bv_options"
+#line 40 "../../../src/options/bv_options"
 template <> void Options::set(options::bitvectorAlgebraicBudget__option_t, const options::bitvectorAlgebraicBudget__option_t::type& x);
-#line 40 "../../../../../src/options/bv_options"
+#line 40 "../../../src/options/bv_options"
 template <> const options::bitvectorAlgebraicBudget__option_t::type& Options::operator[](options::bitvectorAlgebraicBudget__option_t) const;
-#line 40 "../../../../../src/options/bv_options"
+#line 40 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorAlgebraicBudget__option_t) const;
-#line 40 "../../../../../src/options/bv_options"
+#line 40 "../../../src/options/bv_options"
 template <> void Options::assign(options::bitvectorAlgebraicBudget__option_t, std::string option, std::string value);
-#line 45 "../../../../../src/options/bv_options"
+#line 45 "../../../src/options/bv_options"
 template <> void Options::set(options::bitvectorToBool__option_t, const options::bitvectorToBool__option_t::type& x);
-#line 45 "../../../../../src/options/bv_options"
+#line 45 "../../../src/options/bv_options"
 template <> const options::bitvectorToBool__option_t::type& Options::operator[](options::bitvectorToBool__option_t) const;
-#line 45 "../../../../../src/options/bv_options"
+#line 45 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorToBool__option_t) const;
-#line 45 "../../../../../src/options/bv_options"
+#line 45 "../../../src/options/bv_options"
 template <> void Options::assignBool(options::bitvectorToBool__option_t, std::string option, bool value);
-#line 48 "../../../../../src/options/bv_options"
+#line 48 "../../../src/options/bv_options"
 template <> void Options::set(options::boolToBitvector__option_t, const options::boolToBitvector__option_t::type& x);
-#line 48 "../../../../../src/options/bv_options"
+#line 48 "../../../src/options/bv_options"
 template <> const options::boolToBitvector__option_t::type& Options::operator[](options::boolToBitvector__option_t) const;
-#line 48 "../../../../../src/options/bv_options"
+#line 48 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::boolToBitvector__option_t) const;
-#line 48 "../../../../../src/options/bv_options"
+#line 48 "../../../src/options/bv_options"
 template <> void Options::assignBool(options::boolToBitvector__option_t, std::string option, bool value);
-#line 51 "../../../../../src/options/bv_options"
+#line 51 "../../../src/options/bv_options"
 template <> void Options::set(options::bitvectorDivByZeroConst__option_t, const options::bitvectorDivByZeroConst__option_t::type& x);
-#line 51 "../../../../../src/options/bv_options"
+#line 51 "../../../src/options/bv_options"
 template <> const options::bitvectorDivByZeroConst__option_t::type& Options::operator[](options::bitvectorDivByZeroConst__option_t) const;
-#line 51 "../../../../../src/options/bv_options"
+#line 51 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorDivByZeroConst__option_t) const;
-#line 51 "../../../../../src/options/bv_options"
+#line 51 "../../../src/options/bv_options"
 template <> void Options::assignBool(options::bitvectorDivByZeroConst__option_t, std::string option, bool value);
-#line 54 "../../../../../src/options/bv_options"
+#line 54 "../../../src/options/bv_options"
 template <> void Options::set(options::bvExtractArithRewrite__option_t, const options::bvExtractArithRewrite__option_t::type& x);
-#line 54 "../../../../../src/options/bv_options"
+#line 54 "../../../src/options/bv_options"
 template <> const options::bvExtractArithRewrite__option_t::type& Options::operator[](options::bvExtractArithRewrite__option_t) const;
-#line 54 "../../../../../src/options/bv_options"
+#line 54 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bvExtractArithRewrite__option_t) const;
-#line 54 "../../../../../src/options/bv_options"
+#line 54 "../../../src/options/bv_options"
 template <> void Options::assignBool(options::bvExtractArithRewrite__option_t, std::string option, bool value);
-#line 57 "../../../../../src/options/bv_options"
+#line 57 "../../../src/options/bv_options"
 template <> void Options::set(options::bvAbstraction__option_t, const options::bvAbstraction__option_t::type& x);
-#line 57 "../../../../../src/options/bv_options"
+#line 57 "../../../src/options/bv_options"
 template <> const options::bvAbstraction__option_t::type& Options::operator[](options::bvAbstraction__option_t) const;
-#line 57 "../../../../../src/options/bv_options"
+#line 57 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bvAbstraction__option_t) const;
-#line 57 "../../../../../src/options/bv_options"
+#line 57 "../../../src/options/bv_options"
 template <> void Options::assignBool(options::bvAbstraction__option_t, std::string option, bool value);
-#line 60 "../../../../../src/options/bv_options"
+#line 60 "../../../src/options/bv_options"
 template <> void Options::set(options::skolemizeArguments__option_t, const options::skolemizeArguments__option_t::type& x);
-#line 60 "../../../../../src/options/bv_options"
+#line 60 "../../../src/options/bv_options"
 template <> const options::skolemizeArguments__option_t::type& Options::operator[](options::skolemizeArguments__option_t) const;
-#line 60 "../../../../../src/options/bv_options"
+#line 60 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::skolemizeArguments__option_t) const;
-#line 60 "../../../../../src/options/bv_options"
+#line 60 "../../../src/options/bv_options"
 template <> void Options::assignBool(options::skolemizeArguments__option_t, std::string option, bool value);
-#line 63 "../../../../../src/options/bv_options"
+#line 63 "../../../src/options/bv_options"
 template <> const options::bvNumFunc__option_t::type& Options::operator[](options::bvNumFunc__option_t) const;
-#line 63 "../../../../../src/options/bv_options"
+#line 63 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bvNumFunc__option_t) const;
-#line 63 "../../../../../src/options/bv_options"
+#line 63 "../../../src/options/bv_options"
 template <> void Options::assign(options::bvNumFunc__option_t, std::string option, std::string value);
-#line 66 "../../../../../src/options/bv_options"
+#line 66 "../../../src/options/bv_options"
 template <> void Options::set(options::bvEagerExplanations__option_t, const options::bvEagerExplanations__option_t::type& x);
-#line 66 "../../../../../src/options/bv_options"
+#line 66 "../../../src/options/bv_options"
 template <> const options::bvEagerExplanations__option_t::type& Options::operator[](options::bvEagerExplanations__option_t) const;
-#line 66 "../../../../../src/options/bv_options"
+#line 66 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bvEagerExplanations__option_t) const;
-#line 66 "../../../../../src/options/bv_options"
+#line 66 "../../../src/options/bv_options"
 template <> void Options::assignBool(options::bvEagerExplanations__option_t, std::string option, bool value);
-#line 69 "../../../../../src/options/bv_options"
+#line 69 "../../../src/options/bv_options"
 template <> const options::bitvectorQuickXplain__option_t::type& Options::operator[](options::bitvectorQuickXplain__option_t) const;
-#line 69 "../../../../../src/options/bv_options"
+#line 69 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bitvectorQuickXplain__option_t) const;
-#line 69 "../../../../../src/options/bv_options"
+#line 69 "../../../src/options/bv_options"
 template <> void Options::assignBool(options::bitvectorQuickXplain__option_t, std::string option, bool value);
-#line 72 "../../../../../src/options/bv_options"
+#line 72 "../../../src/options/bv_options"
 template <> const options::bvIntroducePow2__option_t::type& Options::operator[](options::bvIntroducePow2__option_t) const;
-#line 72 "../../../../../src/options/bv_options"
+#line 72 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bvIntroducePow2__option_t) const;
-#line 72 "../../../../../src/options/bv_options"
+#line 72 "../../../src/options/bv_options"
 template <> void Options::assignBool(options::bvIntroducePow2__option_t, std::string option, bool value);
-#line 75 "../../../../../src/options/bv_options"
+#line 75 "../../../src/options/bv_options"
 template <> void Options::set(options::bvLazyRewriteExtf__option_t, const options::bvLazyRewriteExtf__option_t::type& x);
-#line 75 "../../../../../src/options/bv_options"
+#line 75 "../../../src/options/bv_options"
 template <> const options::bvLazyRewriteExtf__option_t::type& Options::operator[](options::bvLazyRewriteExtf__option_t) const;
-#line 75 "../../../../../src/options/bv_options"
+#line 75 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bvLazyRewriteExtf__option_t) const;
-#line 75 "../../../../../src/options/bv_options"
+#line 75 "../../../src/options/bv_options"
 template <> void Options::assignBool(options::bvLazyRewriteExtf__option_t, std::string option, bool value);
-#line 78 "../../../../../src/options/bv_options"
+#line 78 "../../../src/options/bv_options"
 template <> void Options::set(options::bvLazyReduceExtf__option_t, const options::bvLazyReduceExtf__option_t::type& x);
-#line 78 "../../../../../src/options/bv_options"
+#line 78 "../../../src/options/bv_options"
 template <> const options::bvLazyReduceExtf__option_t::type& Options::operator[](options::bvLazyReduceExtf__option_t) const;
-#line 78 "../../../../../src/options/bv_options"
+#line 78 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bvLazyReduceExtf__option_t) const;
-#line 78 "../../../../../src/options/bv_options"
+#line 78 "../../../src/options/bv_options"
 template <> void Options::assignBool(options::bvLazyReduceExtf__option_t, std::string option, bool value);
-#line 81 "../../../../../src/options/bv_options"
+#line 81 "../../../src/options/bv_options"
 template <> void Options::set(options::bvAlgExtf__option_t, const options::bvAlgExtf__option_t::type& x);
-#line 81 "../../../../../src/options/bv_options"
+#line 81 "../../../src/options/bv_options"
 template <> const options::bvAlgExtf__option_t::type& Options::operator[](options::bvAlgExtf__option_t) const;
-#line 81 "../../../../../src/options/bv_options"
+#line 81 "../../../src/options/bv_options"
 template <> bool Options::wasSetByUser(options::bvAlgExtf__option_t) const;
-#line 81 "../../../../../src/options/bv_options"
+#line 81 "../../../src/options/bv_options"
 template <> void Options::assignBool(options::bvAlgExtf__option_t, std::string option, bool value);
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
-#line 10 "../../../../../src/options/bv_options"
+#line 10 "../../../src/options/bv_options"
 inline bvSatSolver__option_t::type bvSatSolver__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 10 "../../../../../src/options/bv_options"
+#line 10 "../../../src/options/bv_options"
 inline bool bvSatSolver__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 10 "../../../../../src/options/bv_options"
+#line 10 "../../../src/options/bv_options"
 inline void bvSatSolver__option_t::set(const bvSatSolver__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 13 "../../../../../src/options/bv_options"
+#line 13 "../../../src/options/bv_options"
 inline bitblastMode__option_t::type bitblastMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 13 "../../../../../src/options/bv_options"
+#line 13 "../../../src/options/bv_options"
 inline bool bitblastMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 13 "../../../../../src/options/bv_options"
+#line 13 "../../../src/options/bv_options"
 inline void bitblastMode__option_t::set(const bitblastMode__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 18 "../../../../../src/options/bv_options"
+#line 18 "../../../src/options/bv_options"
 inline bitvectorAig__option_t::type bitvectorAig__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 18 "../../../../../src/options/bv_options"
+#line 18 "../../../src/options/bv_options"
 inline bool bitvectorAig__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 18 "../../../../../src/options/bv_options"
+#line 18 "../../../src/options/bv_options"
 inline void bitvectorAig__option_t::set(const bitvectorAig__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 20 "../../../../../src/options/bv_options"
+#line 20 "../../../src/options/bv_options"
 inline bitvectorAigSimplifications__option_t::type bitvectorAigSimplifications__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 20 "../../../../../src/options/bv_options"
+#line 20 "../../../src/options/bv_options"
 inline bool bitvectorAigSimplifications__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 20 "../../../../../src/options/bv_options"
+#line 20 "../../../src/options/bv_options"
 inline void bitvectorAigSimplifications__option_t::set(const bitvectorAigSimplifications__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 24 "../../../../../src/options/bv_options"
+#line 24 "../../../src/options/bv_options"
 inline bitvectorPropagate__option_t::type bitvectorPropagate__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 24 "../../../../../src/options/bv_options"
+#line 24 "../../../src/options/bv_options"
 inline bool bitvectorPropagate__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 24 "../../../../../src/options/bv_options"
+#line 24 "../../../src/options/bv_options"
 inline void bitvectorPropagate__option_t::set(const bitvectorPropagate__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 27 "../../../../../src/options/bv_options"
+#line 27 "../../../src/options/bv_options"
 inline bitvectorEqualitySolver__option_t::type bitvectorEqualitySolver__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 27 "../../../../../src/options/bv_options"
+#line 27 "../../../src/options/bv_options"
 inline bool bitvectorEqualitySolver__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 27 "../../../../../src/options/bv_options"
+#line 27 "../../../src/options/bv_options"
 inline void bitvectorEqualitySolver__option_t::set(const bitvectorEqualitySolver__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 30 "../../../../../src/options/bv_options"
+#line 30 "../../../src/options/bv_options"
 inline bitvectorEqualitySlicer__option_t::type bitvectorEqualitySlicer__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 30 "../../../../../src/options/bv_options"
+#line 30 "../../../src/options/bv_options"
 inline bool bitvectorEqualitySlicer__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 30 "../../../../../src/options/bv_options"
+#line 30 "../../../src/options/bv_options"
 inline void bitvectorEqualitySlicer__option_t::set(const bitvectorEqualitySlicer__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 34 "../../../../../src/options/bv_options"
+#line 34 "../../../src/options/bv_options"
 inline bitvectorInequalitySolver__option_t::type bitvectorInequalitySolver__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 34 "../../../../../src/options/bv_options"
+#line 34 "../../../src/options/bv_options"
 inline bool bitvectorInequalitySolver__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 34 "../../../../../src/options/bv_options"
+#line 34 "../../../src/options/bv_options"
 inline void bitvectorInequalitySolver__option_t::set(const bitvectorInequalitySolver__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 37 "../../../../../src/options/bv_options"
+#line 37 "../../../src/options/bv_options"
 inline bitvectorAlgebraicSolver__option_t::type bitvectorAlgebraicSolver__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 37 "../../../../../src/options/bv_options"
+#line 37 "../../../src/options/bv_options"
 inline bool bitvectorAlgebraicSolver__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 37 "../../../../../src/options/bv_options"
+#line 37 "../../../src/options/bv_options"
 inline void bitvectorAlgebraicSolver__option_t::set(const bitvectorAlgebraicSolver__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 40 "../../../../../src/options/bv_options"
+#line 40 "../../../src/options/bv_options"
 inline bitvectorAlgebraicBudget__option_t::type bitvectorAlgebraicBudget__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 40 "../../../../../src/options/bv_options"
+#line 40 "../../../src/options/bv_options"
 inline bool bitvectorAlgebraicBudget__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 40 "../../../../../src/options/bv_options"
+#line 40 "../../../src/options/bv_options"
 inline void bitvectorAlgebraicBudget__option_t::set(const bitvectorAlgebraicBudget__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 45 "../../../../../src/options/bv_options"
+#line 45 "../../../src/options/bv_options"
 inline bitvectorToBool__option_t::type bitvectorToBool__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 45 "../../../../../src/options/bv_options"
+#line 45 "../../../src/options/bv_options"
 inline bool bitvectorToBool__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 45 "../../../../../src/options/bv_options"
+#line 45 "../../../src/options/bv_options"
 inline void bitvectorToBool__option_t::set(const bitvectorToBool__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 48 "../../../../../src/options/bv_options"
+#line 48 "../../../src/options/bv_options"
 inline boolToBitvector__option_t::type boolToBitvector__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 48 "../../../../../src/options/bv_options"
+#line 48 "../../../src/options/bv_options"
 inline bool boolToBitvector__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 48 "../../../../../src/options/bv_options"
+#line 48 "../../../src/options/bv_options"
 inline void boolToBitvector__option_t::set(const boolToBitvector__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 51 "../../../../../src/options/bv_options"
+#line 51 "../../../src/options/bv_options"
 inline bitvectorDivByZeroConst__option_t::type bitvectorDivByZeroConst__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 51 "../../../../../src/options/bv_options"
+#line 51 "../../../src/options/bv_options"
 inline bool bitvectorDivByZeroConst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 51 "../../../../../src/options/bv_options"
+#line 51 "../../../src/options/bv_options"
 inline void bitvectorDivByZeroConst__option_t::set(const bitvectorDivByZeroConst__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 54 "../../../../../src/options/bv_options"
+#line 54 "../../../src/options/bv_options"
 inline bvExtractArithRewrite__option_t::type bvExtractArithRewrite__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 54 "../../../../../src/options/bv_options"
+#line 54 "../../../src/options/bv_options"
 inline bool bvExtractArithRewrite__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 54 "../../../../../src/options/bv_options"
+#line 54 "../../../src/options/bv_options"
 inline void bvExtractArithRewrite__option_t::set(const bvExtractArithRewrite__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 57 "../../../../../src/options/bv_options"
+#line 57 "../../../src/options/bv_options"
 inline bvAbstraction__option_t::type bvAbstraction__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 57 "../../../../../src/options/bv_options"
+#line 57 "../../../src/options/bv_options"
 inline bool bvAbstraction__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 57 "../../../../../src/options/bv_options"
+#line 57 "../../../src/options/bv_options"
 inline void bvAbstraction__option_t::set(const bvAbstraction__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 60 "../../../../../src/options/bv_options"
+#line 60 "../../../src/options/bv_options"
 inline skolemizeArguments__option_t::type skolemizeArguments__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 60 "../../../../../src/options/bv_options"
+#line 60 "../../../src/options/bv_options"
 inline bool skolemizeArguments__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 60 "../../../../../src/options/bv_options"
+#line 60 "../../../src/options/bv_options"
 inline void skolemizeArguments__option_t::set(const skolemizeArguments__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 63 "../../../../../src/options/bv_options"
+#line 63 "../../../src/options/bv_options"
 inline bvNumFunc__option_t::type bvNumFunc__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 63 "../../../../../src/options/bv_options"
+#line 63 "../../../src/options/bv_options"
 inline bool bvNumFunc__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 66 "../../../../../src/options/bv_options"
+#line 66 "../../../src/options/bv_options"
 inline bvEagerExplanations__option_t::type bvEagerExplanations__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 66 "../../../../../src/options/bv_options"
+#line 66 "../../../src/options/bv_options"
 inline bool bvEagerExplanations__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 66 "../../../../../src/options/bv_options"
+#line 66 "../../../src/options/bv_options"
 inline void bvEagerExplanations__option_t::set(const bvEagerExplanations__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 69 "../../../../../src/options/bv_options"
+#line 69 "../../../src/options/bv_options"
 inline bitvectorQuickXplain__option_t::type bitvectorQuickXplain__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 69 "../../../../../src/options/bv_options"
+#line 69 "../../../src/options/bv_options"
 inline bool bitvectorQuickXplain__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 72 "../../../../../src/options/bv_options"
+#line 72 "../../../src/options/bv_options"
 inline bvIntroducePow2__option_t::type bvIntroducePow2__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 72 "../../../../../src/options/bv_options"
+#line 72 "../../../src/options/bv_options"
 inline bool bvIntroducePow2__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 75 "../../../../../src/options/bv_options"
+#line 75 "../../../src/options/bv_options"
 inline bvLazyRewriteExtf__option_t::type bvLazyRewriteExtf__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 75 "../../../../../src/options/bv_options"
+#line 75 "../../../src/options/bv_options"
 inline bool bvLazyRewriteExtf__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 75 "../../../../../src/options/bv_options"
+#line 75 "../../../src/options/bv_options"
 inline void bvLazyRewriteExtf__option_t::set(const bvLazyRewriteExtf__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 78 "../../../../../src/options/bv_options"
+#line 78 "../../../src/options/bv_options"
 inline bvLazyReduceExtf__option_t::type bvLazyReduceExtf__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 78 "../../../../../src/options/bv_options"
+#line 78 "../../../src/options/bv_options"
 inline bool bvLazyReduceExtf__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 78 "../../../../../src/options/bv_options"
+#line 78 "../../../src/options/bv_options"
 inline void bvLazyReduceExtf__option_t::set(const bvLazyReduceExtf__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 81 "../../../../../src/options/bv_options"
+#line 81 "../../../src/options/bv_options"
 inline bvAlgExtf__option_t::type bvAlgExtf__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 81 "../../../../../src/options/bv_options"
+#line 81 "../../../src/options/bv_options"
 inline bool bvAlgExtf__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 81 "../../../../../src/options/bv_options"
+#line 81 "../../../src/options/bv_options"
 inline void bvAlgExtf__option_t::set(const bvAlgExtf__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/datatypes_options.cpp b/src/options/datatypes_options.cpp
index 92e13f9..f88fe92 100644
--- a/src/options/datatypes_options.cpp
+++ b/src/options/datatypes_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -19,72 +19,72 @@
 namespace CVC4 {
 
 
-#line 12 "../../../../../src/options/datatypes_options"
+#line 12 "../../../src/options/datatypes_options"
 template <> void Options::set(options::dtRewriteErrorSel__option_t, const options::dtRewriteErrorSel__option_t::type& x) { d_holder->dtRewriteErrorSel = x; }
-#line 12 "../../../../../src/options/datatypes_options"
+#line 12 "../../../src/options/datatypes_options"
 template <> const options::dtRewriteErrorSel__option_t::type& Options::operator[](options::dtRewriteErrorSel__option_t) const { return d_holder->dtRewriteErrorSel; }
-#line 12 "../../../../../src/options/datatypes_options"
+#line 12 "../../../src/options/datatypes_options"
 template <> bool Options::wasSetByUser(options::dtRewriteErrorSel__option_t) const { return d_holder->dtRewriteErrorSel__setByUser__; }
-#line 14 "../../../../../src/options/datatypes_options"
+#line 14 "../../../src/options/datatypes_options"
 template <> void Options::set(options::dtForceAssignment__option_t, const options::dtForceAssignment__option_t::type& x) { d_holder->dtForceAssignment = x; }
-#line 14 "../../../../../src/options/datatypes_options"
+#line 14 "../../../src/options/datatypes_options"
 template <> const options::dtForceAssignment__option_t::type& Options::operator[](options::dtForceAssignment__option_t) const { return d_holder->dtForceAssignment; }
-#line 14 "../../../../../src/options/datatypes_options"
+#line 14 "../../../src/options/datatypes_options"
 template <> bool Options::wasSetByUser(options::dtForceAssignment__option_t) const { return d_holder->dtForceAssignment__setByUser__; }
-#line 16 "../../../../../src/options/datatypes_options"
+#line 16 "../../../src/options/datatypes_options"
 template <> const options::dtBinarySplit__option_t::type& Options::operator[](options::dtBinarySplit__option_t) const { return d_holder->dtBinarySplit; }
-#line 16 "../../../../../src/options/datatypes_options"
+#line 16 "../../../src/options/datatypes_options"
 template <> bool Options::wasSetByUser(options::dtBinarySplit__option_t) const { return d_holder->dtBinarySplit__setByUser__; }
-#line 18 "../../../../../src/options/datatypes_options"
+#line 18 "../../../src/options/datatypes_options"
 template <> const options::dtRefIntro__option_t::type& Options::operator[](options::dtRefIntro__option_t) const { return d_holder->dtRefIntro; }
-#line 18 "../../../../../src/options/datatypes_options"
+#line 18 "../../../src/options/datatypes_options"
 template <> bool Options::wasSetByUser(options::dtRefIntro__option_t) const { return d_holder->dtRefIntro__setByUser__; }
-#line 20 "../../../../../src/options/datatypes_options"
+#line 20 "../../../src/options/datatypes_options"
 template <> const options::dtUseTesters__option_t::type& Options::operator[](options::dtUseTesters__option_t) const { return d_holder->dtUseTesters; }
-#line 20 "../../../../../src/options/datatypes_options"
+#line 20 "../../../src/options/datatypes_options"
 template <> bool Options::wasSetByUser(options::dtUseTesters__option_t) const { return d_holder->dtUseTesters__setByUser__; }
-#line 22 "../../../../../src/options/datatypes_options"
+#line 22 "../../../src/options/datatypes_options"
 template <> const options::cdtBisimilar__option_t::type& Options::operator[](options::cdtBisimilar__option_t) const { return d_holder->cdtBisimilar; }
-#line 22 "../../../../../src/options/datatypes_options"
+#line 22 "../../../src/options/datatypes_options"
 template <> bool Options::wasSetByUser(options::cdtBisimilar__option_t) const { return d_holder->cdtBisimilar__setByUser__; }
-#line 24 "../../../../../src/options/datatypes_options"
+#line 24 "../../../src/options/datatypes_options"
 template <> const options::dtCyclic__option_t::type& Options::operator[](options::dtCyclic__option_t) const { return d_holder->dtCyclic; }
-#line 24 "../../../../../src/options/datatypes_options"
+#line 24 "../../../src/options/datatypes_options"
 template <> bool Options::wasSetByUser(options::dtCyclic__option_t) const { return d_holder->dtCyclic__setByUser__; }
-#line 26 "../../../../../src/options/datatypes_options"
+#line 26 "../../../src/options/datatypes_options"
 template <> const options::dtInferAsLemmas__option_t::type& Options::operator[](options::dtInferAsLemmas__option_t) const { return d_holder->dtInferAsLemmas; }
-#line 26 "../../../../../src/options/datatypes_options"
+#line 26 "../../../src/options/datatypes_options"
 template <> bool Options::wasSetByUser(options::dtInferAsLemmas__option_t) const { return d_holder->dtInferAsLemmas__setByUser__; }
-#line 30 "../../../../../src/options/datatypes_options"
+#line 30 "../../../src/options/datatypes_options"
 template <> const options::dtBlastSplits__option_t::type& Options::operator[](options::dtBlastSplits__option_t) const { return d_holder->dtBlastSplits; }
-#line 30 "../../../../../src/options/datatypes_options"
+#line 30 "../../../src/options/datatypes_options"
 template <> bool Options::wasSetByUser(options::dtBlastSplits__option_t) const { return d_holder->dtBlastSplits__setByUser__; }
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
-#line 12 "../../../../../src/options/datatypes_options"
+#line 12 "../../../src/options/datatypes_options"
 struct dtRewriteErrorSel__option_t dtRewriteErrorSel;
-#line 14 "../../../../../src/options/datatypes_options"
+#line 14 "../../../src/options/datatypes_options"
 struct dtForceAssignment__option_t dtForceAssignment;
-#line 16 "../../../../../src/options/datatypes_options"
+#line 16 "../../../src/options/datatypes_options"
 struct dtBinarySplit__option_t dtBinarySplit;
-#line 18 "../../../../../src/options/datatypes_options"
+#line 18 "../../../src/options/datatypes_options"
 struct dtRefIntro__option_t dtRefIntro;
-#line 20 "../../../../../src/options/datatypes_options"
+#line 20 "../../../src/options/datatypes_options"
 struct dtUseTesters__option_t dtUseTesters;
-#line 22 "../../../../../src/options/datatypes_options"
+#line 22 "../../../src/options/datatypes_options"
 struct cdtBisimilar__option_t cdtBisimilar;
-#line 24 "../../../../../src/options/datatypes_options"
+#line 24 "../../../src/options/datatypes_options"
 struct dtCyclic__option_t dtCyclic;
-#line 26 "../../../../../src/options/datatypes_options"
+#line 26 "../../../src/options/datatypes_options"
 struct dtInferAsLemmas__option_t dtInferAsLemmas;
-#line 30 "../../../../../src/options/datatypes_options"
+#line 30 "../../../src/options/datatypes_options"
 struct dtBlastSplits__option_t dtBlastSplits;
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/datatypes_options.h b/src/options/datatypes_options.h
index 0aea94e..6048933 100644
--- a/src/options/datatypes_options.h
+++ b/src/options/datatypes_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -22,7 +22,7 @@
 #include "options/options.h"
 
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__DATATYPES__FOR_OPTION_HOLDER \
   dtRewriteErrorSel__option_t::type dtRewriteErrorSel; \
@@ -44,151 +44,151 @@
   dtBlastSplits__option_t::type dtBlastSplits; \
   bool dtBlastSplits__setByUser__;
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
 namespace options {
 
 
-#line 12 "../../../../../src/options/datatypes_options"
+#line 12 "../../../src/options/datatypes_options"
 extern struct CVC4_PUBLIC dtRewriteErrorSel__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } dtRewriteErrorSel CVC4_PUBLIC;
-#line 14 "../../../../../src/options/datatypes_options"
+#line 14 "../../../src/options/datatypes_options"
 extern struct CVC4_PUBLIC dtForceAssignment__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } dtForceAssignment CVC4_PUBLIC;
-#line 16 "../../../../../src/options/datatypes_options"
+#line 16 "../../../src/options/datatypes_options"
 extern struct CVC4_PUBLIC dtBinarySplit__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dtBinarySplit CVC4_PUBLIC;
-#line 18 "../../../../../src/options/datatypes_options"
+#line 18 "../../../src/options/datatypes_options"
 extern struct CVC4_PUBLIC dtRefIntro__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dtRefIntro CVC4_PUBLIC;
-#line 20 "../../../../../src/options/datatypes_options"
+#line 20 "../../../src/options/datatypes_options"
 extern struct CVC4_PUBLIC dtUseTesters__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dtUseTesters CVC4_PUBLIC;
-#line 22 "../../../../../src/options/datatypes_options"
+#line 22 "../../../src/options/datatypes_options"
 extern struct CVC4_PUBLIC cdtBisimilar__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cdtBisimilar CVC4_PUBLIC;
-#line 24 "../../../../../src/options/datatypes_options"
+#line 24 "../../../src/options/datatypes_options"
 extern struct CVC4_PUBLIC dtCyclic__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dtCyclic CVC4_PUBLIC;
-#line 26 "../../../../../src/options/datatypes_options"
+#line 26 "../../../src/options/datatypes_options"
 extern struct CVC4_PUBLIC dtInferAsLemmas__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dtInferAsLemmas CVC4_PUBLIC;
-#line 30 "../../../../../src/options/datatypes_options"
+#line 30 "../../../src/options/datatypes_options"
 extern struct CVC4_PUBLIC dtBlastSplits__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dtBlastSplits CVC4_PUBLIC;
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
-#line 12 "../../../../../src/options/datatypes_options"
+#line 12 "../../../src/options/datatypes_options"
 template <> void Options::set(options::dtRewriteErrorSel__option_t, const options::dtRewriteErrorSel__option_t::type& x);
-#line 12 "../../../../../src/options/datatypes_options"
+#line 12 "../../../src/options/datatypes_options"
 template <> const options::dtRewriteErrorSel__option_t::type& Options::operator[](options::dtRewriteErrorSel__option_t) const;
-#line 12 "../../../../../src/options/datatypes_options"
+#line 12 "../../../src/options/datatypes_options"
 template <> bool Options::wasSetByUser(options::dtRewriteErrorSel__option_t) const;
-#line 12 "../../../../../src/options/datatypes_options"
+#line 12 "../../../src/options/datatypes_options"
 template <> void Options::assignBool(options::dtRewriteErrorSel__option_t, std::string option, bool value);
-#line 14 "../../../../../src/options/datatypes_options"
+#line 14 "../../../src/options/datatypes_options"
 template <> void Options::set(options::dtForceAssignment__option_t, const options::dtForceAssignment__option_t::type& x);
-#line 14 "../../../../../src/options/datatypes_options"
+#line 14 "../../../src/options/datatypes_options"
 template <> const options::dtForceAssignment__option_t::type& Options::operator[](options::dtForceAssignment__option_t) const;
-#line 14 "../../../../../src/options/datatypes_options"
+#line 14 "../../../src/options/datatypes_options"
 template <> bool Options::wasSetByUser(options::dtForceAssignment__option_t) const;
-#line 14 "../../../../../src/options/datatypes_options"
+#line 14 "../../../src/options/datatypes_options"
 template <> void Options::assignBool(options::dtForceAssignment__option_t, std::string option, bool value);
-#line 16 "../../../../../src/options/datatypes_options"
+#line 16 "../../../src/options/datatypes_options"
 template <> const options::dtBinarySplit__option_t::type& Options::operator[](options::dtBinarySplit__option_t) const;
-#line 16 "../../../../../src/options/datatypes_options"
+#line 16 "../../../src/options/datatypes_options"
 template <> bool Options::wasSetByUser(options::dtBinarySplit__option_t) const;
-#line 16 "../../../../../src/options/datatypes_options"
+#line 16 "../../../src/options/datatypes_options"
 template <> void Options::assignBool(options::dtBinarySplit__option_t, std::string option, bool value);
-#line 18 "../../../../../src/options/datatypes_options"
+#line 18 "../../../src/options/datatypes_options"
 template <> const options::dtRefIntro__option_t::type& Options::operator[](options::dtRefIntro__option_t) const;
-#line 18 "../../../../../src/options/datatypes_options"
+#line 18 "../../../src/options/datatypes_options"
 template <> bool Options::wasSetByUser(options::dtRefIntro__option_t) const;
-#line 18 "../../../../../src/options/datatypes_options"
+#line 18 "../../../src/options/datatypes_options"
 template <> void Options::assignBool(options::dtRefIntro__option_t, std::string option, bool value);
-#line 20 "../../../../../src/options/datatypes_options"
+#line 20 "../../../src/options/datatypes_options"
 template <> const options::dtUseTesters__option_t::type& Options::operator[](options::dtUseTesters__option_t) const;
-#line 20 "../../../../../src/options/datatypes_options"
+#line 20 "../../../src/options/datatypes_options"
 template <> bool Options::wasSetByUser(options::dtUseTesters__option_t) const;
-#line 20 "../../../../../src/options/datatypes_options"
+#line 20 "../../../src/options/datatypes_options"
 template <> void Options::assignBool(options::dtUseTesters__option_t, std::string option, bool value);
-#line 22 "../../../../../src/options/datatypes_options"
+#line 22 "../../../src/options/datatypes_options"
 template <> const options::cdtBisimilar__option_t::type& Options::operator[](options::cdtBisimilar__option_t) const;
-#line 22 "../../../../../src/options/datatypes_options"
+#line 22 "../../../src/options/datatypes_options"
 template <> bool Options::wasSetByUser(options::cdtBisimilar__option_t) const;
-#line 22 "../../../../../src/options/datatypes_options"
+#line 22 "../../../src/options/datatypes_options"
 template <> void Options::assignBool(options::cdtBisimilar__option_t, std::string option, bool value);
-#line 24 "../../../../../src/options/datatypes_options"
+#line 24 "../../../src/options/datatypes_options"
 template <> const options::dtCyclic__option_t::type& Options::operator[](options::dtCyclic__option_t) const;
-#line 24 "../../../../../src/options/datatypes_options"
+#line 24 "../../../src/options/datatypes_options"
 template <> bool Options::wasSetByUser(options::dtCyclic__option_t) const;
-#line 24 "../../../../../src/options/datatypes_options"
+#line 24 "../../../src/options/datatypes_options"
 template <> void Options::assignBool(options::dtCyclic__option_t, std::string option, bool value);
-#line 26 "../../../../../src/options/datatypes_options"
+#line 26 "../../../src/options/datatypes_options"
 template <> const options::dtInferAsLemmas__option_t::type& Options::operator[](options::dtInferAsLemmas__option_t) const;
-#line 26 "../../../../../src/options/datatypes_options"
+#line 26 "../../../src/options/datatypes_options"
 template <> bool Options::wasSetByUser(options::dtInferAsLemmas__option_t) const;
-#line 26 "../../../../../src/options/datatypes_options"
+#line 26 "../../../src/options/datatypes_options"
 template <> void Options::assignBool(options::dtInferAsLemmas__option_t, std::string option, bool value);
-#line 30 "../../../../../src/options/datatypes_options"
+#line 30 "../../../src/options/datatypes_options"
 template <> const options::dtBlastSplits__option_t::type& Options::operator[](options::dtBlastSplits__option_t) const;
-#line 30 "../../../../../src/options/datatypes_options"
+#line 30 "../../../src/options/datatypes_options"
 template <> bool Options::wasSetByUser(options::dtBlastSplits__option_t) const;
-#line 30 "../../../../../src/options/datatypes_options"
+#line 30 "../../../src/options/datatypes_options"
 template <> void Options::assignBool(options::dtBlastSplits__option_t, std::string option, bool value);
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
-#line 12 "../../../../../src/options/datatypes_options"
+#line 12 "../../../src/options/datatypes_options"
 inline dtRewriteErrorSel__option_t::type dtRewriteErrorSel__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 12 "../../../../../src/options/datatypes_options"
+#line 12 "../../../src/options/datatypes_options"
 inline bool dtRewriteErrorSel__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 12 "../../../../../src/options/datatypes_options"
+#line 12 "../../../src/options/datatypes_options"
 inline void dtRewriteErrorSel__option_t::set(const dtRewriteErrorSel__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 14 "../../../../../src/options/datatypes_options"
+#line 14 "../../../src/options/datatypes_options"
 inline dtForceAssignment__option_t::type dtForceAssignment__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 14 "../../../../../src/options/datatypes_options"
+#line 14 "../../../src/options/datatypes_options"
 inline bool dtForceAssignment__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 14 "../../../../../src/options/datatypes_options"
+#line 14 "../../../src/options/datatypes_options"
 inline void dtForceAssignment__option_t::set(const dtForceAssignment__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 16 "../../../../../src/options/datatypes_options"
+#line 16 "../../../src/options/datatypes_options"
 inline dtBinarySplit__option_t::type dtBinarySplit__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 16 "../../../../../src/options/datatypes_options"
+#line 16 "../../../src/options/datatypes_options"
 inline bool dtBinarySplit__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 18 "../../../../../src/options/datatypes_options"
+#line 18 "../../../src/options/datatypes_options"
 inline dtRefIntro__option_t::type dtRefIntro__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 18 "../../../../../src/options/datatypes_options"
+#line 18 "../../../src/options/datatypes_options"
 inline bool dtRefIntro__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 20 "../../../../../src/options/datatypes_options"
+#line 20 "../../../src/options/datatypes_options"
 inline dtUseTesters__option_t::type dtUseTesters__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 20 "../../../../../src/options/datatypes_options"
+#line 20 "../../../src/options/datatypes_options"
 inline bool dtUseTesters__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 22 "../../../../../src/options/datatypes_options"
+#line 22 "../../../src/options/datatypes_options"
 inline cdtBisimilar__option_t::type cdtBisimilar__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 22 "../../../../../src/options/datatypes_options"
+#line 22 "../../../src/options/datatypes_options"
 inline bool cdtBisimilar__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 24 "../../../../../src/options/datatypes_options"
+#line 24 "../../../src/options/datatypes_options"
 inline dtCyclic__option_t::type dtCyclic__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 24 "../../../../../src/options/datatypes_options"
+#line 24 "../../../src/options/datatypes_options"
 inline bool dtCyclic__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 26 "../../../../../src/options/datatypes_options"
+#line 26 "../../../src/options/datatypes_options"
 inline dtInferAsLemmas__option_t::type dtInferAsLemmas__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 26 "../../../../../src/options/datatypes_options"
+#line 26 "../../../src/options/datatypes_options"
 inline bool dtInferAsLemmas__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 30 "../../../../../src/options/datatypes_options"
+#line 30 "../../../src/options/datatypes_options"
 inline dtBlastSplits__option_t::type dtBlastSplits__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 30 "../../../../../src/options/datatypes_options"
+#line 30 "../../../src/options/datatypes_options"
 inline bool dtBlastSplits__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/decision_mode.cpp b/src/options/decision_mode.cpp
index 3a93b02..118ff8d 100644
--- a/src/options/decision_mode.cpp
+++ b/src/options/decision_mode.cpp
@@ -2,9 +2,9 @@
 /*! \file decision_mode.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/decision_mode.h b/src/options/decision_mode.h
index efc6ca2..0d9c96e 100644
--- a/src/options/decision_mode.h
+++ b/src/options/decision_mode.h
@@ -2,9 +2,9 @@
 /*! \file decision_mode.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Kshitij Bansal, Tim King
+ **   Morgan Deters, Kshitij Bansal, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/decision_options.cpp b/src/options/decision_options.cpp
index fe2bc1a..92e09a2 100644
--- a/src/options/decision_options.cpp
+++ b/src/options/decision_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -19,54 +19,54 @@
 namespace CVC4 {
 
 
-#line 9 "../../../../../src/options/decision_options"
+#line 9 "../../../src/options/decision_options"
 template <> void Options::set(options::decisionMode__option_t, const options::decisionMode__option_t::type& x) { d_holder->decisionMode = x; }
-#line 9 "../../../../../src/options/decision_options"
+#line 9 "../../../src/options/decision_options"
 template <> const options::decisionMode__option_t::type& Options::operator[](options::decisionMode__option_t) const { return d_holder->decisionMode; }
-#line 9 "../../../../../src/options/decision_options"
+#line 9 "../../../src/options/decision_options"
 template <> bool Options::wasSetByUser(options::decisionMode__option_t) const { return d_holder->decisionMode__setByUser__; }
-#line 13 "../../../../../src/options/decision_options"
+#line 13 "../../../src/options/decision_options"
 template <> void Options::set(options::decisionStopOnly__option_t, const options::decisionStopOnly__option_t::type& x) { d_holder->decisionStopOnly = x; }
-#line 13 "../../../../../src/options/decision_options"
+#line 13 "../../../src/options/decision_options"
 template <> const options::decisionStopOnly__option_t::type& Options::operator[](options::decisionStopOnly__option_t) const { return d_holder->decisionStopOnly; }
-#line 13 "../../../../../src/options/decision_options"
+#line 13 "../../../src/options/decision_options"
 template <> bool Options::wasSetByUser(options::decisionStopOnly__option_t) const { return d_holder->decisionStopOnly__setByUser__; }
-#line 15 "../../../../../src/options/decision_options"
+#line 15 "../../../src/options/decision_options"
 template <> const options::decisionThreshold__option_t::type& Options::operator[](options::decisionThreshold__option_t) const { return d_holder->decisionThreshold; }
-#line 15 "../../../../../src/options/decision_options"
+#line 15 "../../../src/options/decision_options"
 template <> bool Options::wasSetByUser(options::decisionThreshold__option_t) const { return d_holder->decisionThreshold__setByUser__; }
-#line 18 "../../../../../src/options/decision_options"
+#line 18 "../../../src/options/decision_options"
 template <> const options::decisionUseWeight__option_t::type& Options::operator[](options::decisionUseWeight__option_t) const { return d_holder->decisionUseWeight; }
-#line 18 "../../../../../src/options/decision_options"
+#line 18 "../../../src/options/decision_options"
 template <> bool Options::wasSetByUser(options::decisionUseWeight__option_t) const { return d_holder->decisionUseWeight__setByUser__; }
-#line 21 "../../../../../src/options/decision_options"
+#line 21 "../../../src/options/decision_options"
 template <> const options::decisionRandomWeight__option_t::type& Options::operator[](options::decisionRandomWeight__option_t) const { return d_holder->decisionRandomWeight; }
-#line 21 "../../../../../src/options/decision_options"
+#line 21 "../../../src/options/decision_options"
 template <> bool Options::wasSetByUser(options::decisionRandomWeight__option_t) const { return d_holder->decisionRandomWeight__setByUser__; }
-#line 24 "../../../../../src/options/decision_options"
+#line 24 "../../../src/options/decision_options"
 template <> const options::decisionWeightInternal__option_t::type& Options::operator[](options::decisionWeightInternal__option_t) const { return d_holder->decisionWeightInternal; }
-#line 24 "../../../../../src/options/decision_options"
+#line 24 "../../../src/options/decision_options"
 template <> bool Options::wasSetByUser(options::decisionWeightInternal__option_t) const { return d_holder->decisionWeightInternal__setByUser__; }
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
-#line 9 "../../../../../src/options/decision_options"
+#line 9 "../../../src/options/decision_options"
 struct decisionMode__option_t decisionMode;
-#line 13 "../../../../../src/options/decision_options"
+#line 13 "../../../src/options/decision_options"
 struct decisionStopOnly__option_t decisionStopOnly;
-#line 15 "../../../../../src/options/decision_options"
+#line 15 "../../../src/options/decision_options"
 struct decisionThreshold__option_t decisionThreshold;
-#line 18 "../../../../../src/options/decision_options"
+#line 18 "../../../src/options/decision_options"
 struct decisionUseWeight__option_t decisionUseWeight;
-#line 21 "../../../../../src/options/decision_options"
+#line 21 "../../../src/options/decision_options"
 struct decisionRandomWeight__option_t decisionRandomWeight;
-#line 24 "../../../../../src/options/decision_options"
+#line 24 "../../../src/options/decision_options"
 struct decisionWeightInternal__option_t decisionWeightInternal;
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/decision_options.h b/src/options/decision_options.h
index d1ef6c7..6c3f21d 100644
--- a/src/options/decision_options.h
+++ b/src/options/decision_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -21,12 +21,12 @@
 
 #include "options/options.h"
 
-#line 9 "../../../../../src/options/decision_options"
+#line 9 "../../../src/options/decision_options"
 #include "options/decision_mode.h"
-#line 15 "../../../../../src/options/decision_options"
+#line 15 "../../../src/options/decision_options"
 #include "options/decision_weight.h"
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__DECISION__FOR_OPTION_HOLDER \
   decisionMode__option_t::type decisionMode; \
@@ -42,112 +42,112 @@
   decisionWeightInternal__option_t::type decisionWeightInternal; \
   bool decisionWeightInternal__setByUser__;
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
 namespace options {
 
 
-#line 9 "../../../../../src/options/decision_options"
+#line 9 "../../../src/options/decision_options"
 extern struct CVC4_PUBLIC decisionMode__option_t { typedef decision::DecisionMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } decisionMode CVC4_PUBLIC;
-#line 13 "../../../../../src/options/decision_options"
+#line 13 "../../../src/options/decision_options"
 extern struct CVC4_PUBLIC decisionStopOnly__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } decisionStopOnly CVC4_PUBLIC;
-#line 15 "../../../../../src/options/decision_options"
+#line 15 "../../../src/options/decision_options"
 extern struct CVC4_PUBLIC decisionThreshold__option_t { typedef decision::DecisionWeight type; type operator()() const; bool wasSetByUser() const; } decisionThreshold CVC4_PUBLIC;
-#line 18 "../../../../../src/options/decision_options"
+#line 18 "../../../src/options/decision_options"
 extern struct CVC4_PUBLIC decisionUseWeight__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } decisionUseWeight CVC4_PUBLIC;
-#line 21 "../../../../../src/options/decision_options"
+#line 21 "../../../src/options/decision_options"
 extern struct CVC4_PUBLIC decisionRandomWeight__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } decisionRandomWeight CVC4_PUBLIC;
-#line 24 "../../../../../src/options/decision_options"
+#line 24 "../../../src/options/decision_options"
 extern struct CVC4_PUBLIC decisionWeightInternal__option_t { typedef decision::DecisionWeightInternal type; type operator()() const; bool wasSetByUser() const; } decisionWeightInternal CVC4_PUBLIC;
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
-#line 9 "../../../../../src/options/decision_options"
+#line 9 "../../../src/options/decision_options"
 template <> void Options::set(options::decisionMode__option_t, const options::decisionMode__option_t::type& x);
-#line 9 "../../../../../src/options/decision_options"
+#line 9 "../../../src/options/decision_options"
 template <> const options::decisionMode__option_t::type& Options::operator[](options::decisionMode__option_t) const;
-#line 9 "../../../../../src/options/decision_options"
+#line 9 "../../../src/options/decision_options"
 template <> bool Options::wasSetByUser(options::decisionMode__option_t) const;
-#line 9 "../../../../../src/options/decision_options"
+#line 9 "../../../src/options/decision_options"
 template <> void Options::assign(options::decisionMode__option_t, std::string option, std::string value);
-#line 13 "../../../../../src/options/decision_options"
+#line 13 "../../../src/options/decision_options"
 template <> void Options::set(options::decisionStopOnly__option_t, const options::decisionStopOnly__option_t::type& x);
-#line 13 "../../../../../src/options/decision_options"
+#line 13 "../../../src/options/decision_options"
 template <> const options::decisionStopOnly__option_t::type& Options::operator[](options::decisionStopOnly__option_t) const;
-#line 13 "../../../../../src/options/decision_options"
+#line 13 "../../../src/options/decision_options"
 template <> bool Options::wasSetByUser(options::decisionStopOnly__option_t) const;
-#line 13 "../../../../../src/options/decision_options"
+#line 13 "../../../src/options/decision_options"
 template <> void Options::assignBool(options::decisionStopOnly__option_t, std::string option, bool value);
-#line 15 "../../../../../src/options/decision_options"
+#line 15 "../../../src/options/decision_options"
 template <> const options::decisionThreshold__option_t::type& Options::operator[](options::decisionThreshold__option_t) const;
-#line 15 "../../../../../src/options/decision_options"
+#line 15 "../../../src/options/decision_options"
 template <> bool Options::wasSetByUser(options::decisionThreshold__option_t) const;
-#line 15 "../../../../../src/options/decision_options"
+#line 15 "../../../src/options/decision_options"
 template <> void Options::assign(options::decisionThreshold__option_t, std::string option, std::string value);
-#line 18 "../../../../../src/options/decision_options"
+#line 18 "../../../src/options/decision_options"
 template <> const options::decisionUseWeight__option_t::type& Options::operator[](options::decisionUseWeight__option_t) const;
-#line 18 "../../../../../src/options/decision_options"
+#line 18 "../../../src/options/decision_options"
 template <> bool Options::wasSetByUser(options::decisionUseWeight__option_t) const;
-#line 18 "../../../../../src/options/decision_options"
+#line 18 "../../../src/options/decision_options"
 template <> void Options::assignBool(options::decisionUseWeight__option_t, std::string option, bool value);
-#line 21 "../../../../../src/options/decision_options"
+#line 21 "../../../src/options/decision_options"
 template <> const options::decisionRandomWeight__option_t::type& Options::operator[](options::decisionRandomWeight__option_t) const;
-#line 21 "../../../../../src/options/decision_options"
+#line 21 "../../../src/options/decision_options"
 template <> bool Options::wasSetByUser(options::decisionRandomWeight__option_t) const;
-#line 21 "../../../../../src/options/decision_options"
+#line 21 "../../../src/options/decision_options"
 template <> void Options::assign(options::decisionRandomWeight__option_t, std::string option, std::string value);
-#line 24 "../../../../../src/options/decision_options"
+#line 24 "../../../src/options/decision_options"
 template <> const options::decisionWeightInternal__option_t::type& Options::operator[](options::decisionWeightInternal__option_t) const;
-#line 24 "../../../../../src/options/decision_options"
+#line 24 "../../../src/options/decision_options"
 template <> bool Options::wasSetByUser(options::decisionWeightInternal__option_t) const;
-#line 24 "../../../../../src/options/decision_options"
+#line 24 "../../../src/options/decision_options"
 template <> void Options::assign(options::decisionWeightInternal__option_t, std::string option, std::string value);
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
-#line 9 "../../../../../src/options/decision_options"
+#line 9 "../../../src/options/decision_options"
 inline decisionMode__option_t::type decisionMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 9 "../../../../../src/options/decision_options"
+#line 9 "../../../src/options/decision_options"
 inline bool decisionMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 9 "../../../../../src/options/decision_options"
+#line 9 "../../../src/options/decision_options"
 inline void decisionMode__option_t::set(const decisionMode__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 13 "../../../../../src/options/decision_options"
+#line 13 "../../../src/options/decision_options"
 inline decisionStopOnly__option_t::type decisionStopOnly__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 13 "../../../../../src/options/decision_options"
+#line 13 "../../../src/options/decision_options"
 inline bool decisionStopOnly__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 13 "../../../../../src/options/decision_options"
+#line 13 "../../../src/options/decision_options"
 inline void decisionStopOnly__option_t::set(const decisionStopOnly__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 15 "../../../../../src/options/decision_options"
+#line 15 "../../../src/options/decision_options"
 inline decisionThreshold__option_t::type decisionThreshold__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 15 "../../../../../src/options/decision_options"
+#line 15 "../../../src/options/decision_options"
 inline bool decisionThreshold__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 18 "../../../../../src/options/decision_options"
+#line 18 "../../../src/options/decision_options"
 inline decisionUseWeight__option_t::type decisionUseWeight__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 18 "../../../../../src/options/decision_options"
+#line 18 "../../../src/options/decision_options"
 inline bool decisionUseWeight__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 21 "../../../../../src/options/decision_options"
+#line 21 "../../../src/options/decision_options"
 inline decisionRandomWeight__option_t::type decisionRandomWeight__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 21 "../../../../../src/options/decision_options"
+#line 21 "../../../src/options/decision_options"
 inline bool decisionRandomWeight__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 24 "../../../../../src/options/decision_options"
+#line 24 "../../../src/options/decision_options"
 inline decisionWeightInternal__option_t::type decisionWeightInternal__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 24 "../../../../../src/options/decision_options"
+#line 24 "../../../src/options/decision_options"
 inline bool decisionWeightInternal__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/decision_weight.h b/src/options/decision_weight.h
index 6d01b18..8340142 100644
--- a/src/options/decision_weight.h
+++ b/src/options/decision_weight.h
@@ -2,9 +2,9 @@
 /*! \file decision_weight.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Kshitij Bansal, Tim King, Morgan Deters
+ **   Kshitij Bansal, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/didyoumean.cpp b/src/options/didyoumean.cpp
index 693764b..40836dd 100644
--- a/src/options/didyoumean.cpp
+++ b/src/options/didyoumean.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Kshitij Bansal, Tim King, Clark Barrett
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/didyoumean.h b/src/options/didyoumean.h
index 31b58aa..7129126 100644
--- a/src/options/didyoumean.h
+++ b/src/options/didyoumean.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Kshitij Bansal, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/expr_options.cpp b/src/options/expr_options.cpp
index b4c93ac..db04a1c 100644
--- a/src/options/expr_options.cpp
+++ b/src/options/expr_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -19,44 +19,44 @@
 namespace CVC4 {
 
 
-#line 8 "../../../../../src/options/expr_options"
+#line 8 "../../../src/options/expr_options"
 template <> const options::defaultExprDepth__option_t::type& Options::operator[](options::defaultExprDepth__option_t) const { return d_holder->defaultExprDepth; }
-#line 8 "../../../../../src/options/expr_options"
+#line 8 "../../../src/options/expr_options"
 template <> bool Options::wasSetByUser(options::defaultExprDepth__option_t) const { return d_holder->defaultExprDepth__setByUser__; }
-#line 12 "../../../../../src/options/expr_options"
+#line 12 "../../../src/options/expr_options"
 template <> const options::defaultDagThresh__option_t::type& Options::operator[](options::defaultDagThresh__option_t) const { return d_holder->defaultDagThresh; }
-#line 12 "../../../../../src/options/expr_options"
+#line 12 "../../../src/options/expr_options"
 template <> bool Options::wasSetByUser(options::defaultDagThresh__option_t) const { return d_holder->defaultDagThresh__setByUser__; }
-#line 17 "../../../../../src/options/expr_options"
+#line 17 "../../../src/options/expr_options"
 template <> const options::printExprTypes__option_t::type& Options::operator[](options::printExprTypes__option_t) const { return d_holder->printExprTypes; }
-#line 17 "../../../../../src/options/expr_options"
+#line 17 "../../../src/options/expr_options"
 template <> bool Options::wasSetByUser(options::printExprTypes__option_t) const { return d_holder->printExprTypes__setByUser__; }
-#line 20 "../../../../../src/options/expr_options"
+#line 20 "../../../src/options/expr_options"
 template <> const options::earlyTypeChecking__option_t::type& Options::operator[](options::earlyTypeChecking__option_t) const { return d_holder->earlyTypeChecking; }
-#line 20 "../../../../../src/options/expr_options"
+#line 20 "../../../src/options/expr_options"
 template <> bool Options::wasSetByUser(options::earlyTypeChecking__option_t) const { return d_holder->earlyTypeChecking__setByUser__; }
-#line 26 "../../../../../src/options/expr_options"
+#line 26 "../../../src/options/expr_options"
 template <> const options::typeChecking__option_t::type& Options::operator[](options::typeChecking__option_t) const { return d_holder->typeChecking; }
-#line 26 "../../../../../src/options/expr_options"
+#line 26 "../../../src/options/expr_options"
 template <> bool Options::wasSetByUser(options::typeChecking__option_t) const { return d_holder->typeChecking__setByUser__; }
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/expr_options"
+#line 8 "../../../src/options/expr_options"
 struct defaultExprDepth__option_t defaultExprDepth;
-#line 12 "../../../../../src/options/expr_options"
+#line 12 "../../../src/options/expr_options"
 struct defaultDagThresh__option_t defaultDagThresh;
-#line 17 "../../../../../src/options/expr_options"
+#line 17 "../../../src/options/expr_options"
 struct printExprTypes__option_t printExprTypes;
-#line 20 "../../../../../src/options/expr_options"
+#line 20 "../../../src/options/expr_options"
 struct earlyTypeChecking__option_t earlyTypeChecking;
-#line 26 "../../../../../src/options/expr_options"
+#line 26 "../../../src/options/expr_options"
 struct typeChecking__option_t typeChecking;
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/expr_options.h b/src/options/expr_options.h
index a28cfca..1154c40 100644
--- a/src/options/expr_options.h
+++ b/src/options/expr_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -22,7 +22,7 @@
 #include "options/options.h"
 
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__EXPR__FOR_OPTION_HOLDER \
   defaultExprDepth__option_t::type defaultExprDepth; \
@@ -36,91 +36,91 @@
   typeChecking__option_t::type typeChecking; \
   bool typeChecking__setByUser__;
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/expr_options"
+#line 8 "../../../src/options/expr_options"
 extern struct CVC4_PUBLIC defaultExprDepth__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } defaultExprDepth CVC4_PUBLIC;
-#line 12 "../../../../../src/options/expr_options"
+#line 12 "../../../src/options/expr_options"
 extern struct CVC4_PUBLIC defaultDagThresh__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } defaultDagThresh CVC4_PUBLIC;
-#line 17 "../../../../../src/options/expr_options"
+#line 17 "../../../src/options/expr_options"
 extern struct CVC4_PUBLIC printExprTypes__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } printExprTypes CVC4_PUBLIC;
-#line 20 "../../../../../src/options/expr_options"
+#line 20 "../../../src/options/expr_options"
 extern struct CVC4_PUBLIC earlyTypeChecking__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } earlyTypeChecking CVC4_PUBLIC;
-#line 26 "../../../../../src/options/expr_options"
+#line 26 "../../../src/options/expr_options"
 extern struct CVC4_PUBLIC typeChecking__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } typeChecking CVC4_PUBLIC;
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
-#line 8 "../../../../../src/options/expr_options"
+#line 8 "../../../src/options/expr_options"
 template <> const options::defaultExprDepth__option_t::type& Options::operator[](options::defaultExprDepth__option_t) const;
-#line 8 "../../../../../src/options/expr_options"
+#line 8 "../../../src/options/expr_options"
 template <> bool Options::wasSetByUser(options::defaultExprDepth__option_t) const;
-#line 8 "../../../../../src/options/expr_options"
+#line 8 "../../../src/options/expr_options"
 template <> void Options::assign(options::defaultExprDepth__option_t, std::string option, std::string value);
-#line 12 "../../../../../src/options/expr_options"
+#line 12 "../../../src/options/expr_options"
 template <> const options::defaultDagThresh__option_t::type& Options::operator[](options::defaultDagThresh__option_t) const;
-#line 12 "../../../../../src/options/expr_options"
+#line 12 "../../../src/options/expr_options"
 template <> bool Options::wasSetByUser(options::defaultDagThresh__option_t) const;
-#line 12 "../../../../../src/options/expr_options"
+#line 12 "../../../src/options/expr_options"
 template <> void Options::assign(options::defaultDagThresh__option_t, std::string option, std::string value);
-#line 17 "../../../../../src/options/expr_options"
+#line 17 "../../../src/options/expr_options"
 template <> const options::printExprTypes__option_t::type& Options::operator[](options::printExprTypes__option_t) const;
-#line 17 "../../../../../src/options/expr_options"
+#line 17 "../../../src/options/expr_options"
 template <> bool Options::wasSetByUser(options::printExprTypes__option_t) const;
-#line 17 "../../../../../src/options/expr_options"
+#line 17 "../../../src/options/expr_options"
 template <> void Options::assignBool(options::printExprTypes__option_t, std::string option, bool value);
-#line 20 "../../../../../src/options/expr_options"
+#line 20 "../../../src/options/expr_options"
 template <> const options::earlyTypeChecking__option_t::type& Options::operator[](options::earlyTypeChecking__option_t) const;
-#line 20 "../../../../../src/options/expr_options"
+#line 20 "../../../src/options/expr_options"
 template <> bool Options::wasSetByUser(options::earlyTypeChecking__option_t) const;
-#line 20 "../../../../../src/options/expr_options"
+#line 20 "../../../src/options/expr_options"
 template <> void Options::assignBool(options::earlyTypeChecking__option_t, std::string option, bool value);
-#line 26 "../../../../../src/options/expr_options"
+#line 26 "../../../src/options/expr_options"
 template <> const options::typeChecking__option_t::type& Options::operator[](options::typeChecking__option_t) const;
-#line 26 "../../../../../src/options/expr_options"
+#line 26 "../../../src/options/expr_options"
 template <> bool Options::wasSetByUser(options::typeChecking__option_t) const;
-#line 26 "../../../../../src/options/expr_options"
+#line 26 "../../../src/options/expr_options"
 template <> void Options::assignBool(options::typeChecking__option_t, std::string option, bool value);
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/expr_options"
+#line 8 "../../../src/options/expr_options"
 inline defaultExprDepth__option_t::type defaultExprDepth__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 8 "../../../../../src/options/expr_options"
+#line 8 "../../../src/options/expr_options"
 inline bool defaultExprDepth__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 12 "../../../../../src/options/expr_options"
+#line 12 "../../../src/options/expr_options"
 inline defaultDagThresh__option_t::type defaultDagThresh__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 12 "../../../../../src/options/expr_options"
+#line 12 "../../../src/options/expr_options"
 inline bool defaultDagThresh__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 17 "../../../../../src/options/expr_options"
+#line 17 "../../../src/options/expr_options"
 inline printExprTypes__option_t::type printExprTypes__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 17 "../../../../../src/options/expr_options"
+#line 17 "../../../src/options/expr_options"
 inline bool printExprTypes__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 20 "../../../../../src/options/expr_options"
+#line 20 "../../../src/options/expr_options"
 inline earlyTypeChecking__option_t::type earlyTypeChecking__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 20 "../../../../../src/options/expr_options"
+#line 20 "../../../src/options/expr_options"
 inline bool earlyTypeChecking__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 26 "../../../../../src/options/expr_options"
+#line 26 "../../../src/options/expr_options"
 inline typeChecking__option_t::type typeChecking__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 26 "../../../../../src/options/expr_options"
+#line 26 "../../../src/options/expr_options"
 inline bool typeChecking__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/fp_options.cpp b/src/options/fp_options.cpp
index 2762db1..fbd3225 100644
--- a/src/options/fp_options.cpp
+++ b/src/options/fp_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -20,13 +20,13 @@ namespace CVC4 {
 
 
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/fp_options.h b/src/options/fp_options.h
index a82896a..a44cf45 100644
--- a/src/options/fp_options.h
+++ b/src/options/fp_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -22,11 +22,11 @@
 #include "options/options.h"
 
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__FP__FOR_OPTION_HOLDER
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
@@ -34,19 +34,19 @@ namespace options {
 
 
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/idl_options.cpp b/src/options/idl_options.cpp
index a27c333..90a4ec3 100644
--- a/src/options/idl_options.cpp
+++ b/src/options/idl_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -19,22 +19,22 @@
 namespace CVC4 {
 
 
-#line 8 "../../../../../src/options/idl_options"
+#line 8 "../../../src/options/idl_options"
 template <> void Options::set(options::idlRewriteEq__option_t, const options::idlRewriteEq__option_t::type& x) { d_holder->idlRewriteEq = x; }
-#line 8 "../../../../../src/options/idl_options"
+#line 8 "../../../src/options/idl_options"
 template <> const options::idlRewriteEq__option_t::type& Options::operator[](options::idlRewriteEq__option_t) const { return d_holder->idlRewriteEq; }
-#line 8 "../../../../../src/options/idl_options"
+#line 8 "../../../src/options/idl_options"
 template <> bool Options::wasSetByUser(options::idlRewriteEq__option_t) const { return d_holder->idlRewriteEq__setByUser__; }
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/idl_options"
+#line 8 "../../../src/options/idl_options"
 struct idlRewriteEq__option_t idlRewriteEq;
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/idl_options.h b/src/options/idl_options.h
index 55536cf..63f7bcb 100644
--- a/src/options/idl_options.h
+++ b/src/options/idl_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -22,49 +22,49 @@
 #include "options/options.h"
 
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__IDL__FOR_OPTION_HOLDER \
   idlRewriteEq__option_t::type idlRewriteEq; \
   bool idlRewriteEq__setByUser__;
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/idl_options"
+#line 8 "../../../src/options/idl_options"
 extern struct CVC4_PUBLIC idlRewriteEq__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } idlRewriteEq CVC4_PUBLIC;
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
-#line 8 "../../../../../src/options/idl_options"
+#line 8 "../../../src/options/idl_options"
 template <> void Options::set(options::idlRewriteEq__option_t, const options::idlRewriteEq__option_t::type& x);
-#line 8 "../../../../../src/options/idl_options"
+#line 8 "../../../src/options/idl_options"
 template <> const options::idlRewriteEq__option_t::type& Options::operator[](options::idlRewriteEq__option_t) const;
-#line 8 "../../../../../src/options/idl_options"
+#line 8 "../../../src/options/idl_options"
 template <> bool Options::wasSetByUser(options::idlRewriteEq__option_t) const;
-#line 8 "../../../../../src/options/idl_options"
+#line 8 "../../../src/options/idl_options"
 template <> void Options::assignBool(options::idlRewriteEq__option_t, std::string option, bool value);
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/idl_options"
+#line 8 "../../../src/options/idl_options"
 inline idlRewriteEq__option_t::type idlRewriteEq__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 8 "../../../../../src/options/idl_options"
+#line 8 "../../../src/options/idl_options"
 inline bool idlRewriteEq__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 8 "../../../../../src/options/idl_options"
+#line 8 "../../../src/options/idl_options"
 inline void idlRewriteEq__option_t::set(const idlRewriteEq__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/language.cpp b/src/options/language.cpp
index 665089e..bbb95f2 100644
--- a/src/options/language.cpp
+++ b/src/options/language.cpp
@@ -2,9 +2,9 @@
 /*! \file language.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Andrew Reynolds, Tim King
+ **   Morgan Deters, Andrew Reynolds, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -24,6 +24,7 @@ InputLanguage toInputLanguage(OutputLanguage language) {
   case output::LANG_SMTLIB_V1:
   case output::LANG_SMTLIB_V2_0:
   case output::LANG_SMTLIB_V2_5:
+  case output::LANG_SMTLIB_V2_6:
   case output::LANG_TPTP:
   case output::LANG_CVC4:
   case output::LANG_Z3STR:
@@ -45,6 +46,7 @@ OutputLanguage toOutputLanguage(InputLanguage language) {
   case input::LANG_SMTLIB_V1:
   case input::LANG_SMTLIB_V2_0:
   case input::LANG_SMTLIB_V2_5:
+  case input::LANG_SMTLIB_V2_6:
   case input::LANG_TPTP:
   case input::LANG_CVC4:
   case input::LANG_Z3STR:
@@ -85,6 +87,9 @@ OutputLanguage toOutputLanguage(std::string language) {
   } else if(language == "smtlib2.5" || language == "smt2.5" ||
             language == "LANG_SMTLIB_V2_5") {
     return output::LANG_SMTLIB_V2_5;
+  } else if(language == "smtlib2.6" || language == "smt2.6" ||
+            language == "LANG_SMTLIB_V2_6") {
+    return output::LANG_SMTLIB_V2_6;
   } else if(language == "tptp" || language == "LANG_TPTP") {
     return output::LANG_TPTP;
   } else if(language == "z3str" || language == "z3-str" ||
@@ -117,6 +122,9 @@ InputLanguage toInputLanguage(std::string language) {
   } else if(language == "smtlib2.5" || language == "smt2.5" ||
             language == "LANG_SMTLIB_V2_5") {
     return input::LANG_SMTLIB_V2_5;
+  } else if(language == "smtlib2.6" || language == "smt2.6" ||
+            language == "LANG_SMTLIB_V2_6") {
+    return input::LANG_SMTLIB_V2_6;
   } else if(language == "tptp" || language == "LANG_TPTP") {
     return input::LANG_TPTP;
   } else if(language == "z3str" || language == "z3-str" ||
diff --git a/src/options/language.h b/src/options/language.h
index 00328e4..f238e76 100644
--- a/src/options/language.h
+++ b/src/options/language.h
@@ -2,9 +2,9 @@
 /*! \file language.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Francois Bobot, Andrew Reynolds
+ **   Morgan Deters, Andrew Reynolds, Francois Bobot
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -49,8 +49,10 @@ enum CVC4_PUBLIC Language {
   LANG_SMTLIB_V2_0,
   /** The SMTLIB v2.5 input language */
   LANG_SMTLIB_V2_5,
+  /** The SMTLIB v2.6 input language */
+  LANG_SMTLIB_V2_6,
   /** Backward-compatibility for enumeration naming */
-  LANG_SMTLIB_V2 = LANG_SMTLIB_V2_5,
+  LANG_SMTLIB_V2 = LANG_SMTLIB_V2_6,
   /** The TPTP input language */
   LANG_TPTP,
   /** The CVC4 input language */
@@ -82,6 +84,9 @@ inline std::ostream& operator<<(std::ostream& out, Language lang) {
   case LANG_SMTLIB_V2_5:
     out << "LANG_SMTLIB_V2_5";
     break;
+  case LANG_SMTLIB_V2_6:
+    out << "LANG_SMTLIB_V2_6";
+    break;
   case LANG_TPTP:
     out << "LANG_TPTP";
     break;
@@ -123,6 +128,8 @@ enum CVC4_PUBLIC Language {
   LANG_SMTLIB_V2_0 = input::LANG_SMTLIB_V2_0,
   /** The SMTLIB v2.5 output language */
   LANG_SMTLIB_V2_5 = input::LANG_SMTLIB_V2_5,
+  /** The SMTLIB v2.6 output language */
+  LANG_SMTLIB_V2_6 = input::LANG_SMTLIB_V2_6,
   /** Backward-compatibility for enumeration naming */
   LANG_SMTLIB_V2 = input::LANG_SMTLIB_V2,
   /** The TPTP output language */
diff --git a/src/options/language.i b/src/options/language.i
index d14368c..427e6c6 100644
--- a/src/options/language.i
+++ b/src/options/language.i
@@ -23,6 +23,7 @@ namespace CVC4 {
 %rename(INPUT_LANG_SMTLIB_V2) CVC4::language::input::LANG_SMTLIB_V2;
 %rename(INPUT_LANG_SMTLIB_V2_0) CVC4::language::input::LANG_SMTLIB_V2_0;
 %rename(INPUT_LANG_SMTLIB_V2_5) CVC4::language::input::LANG_SMTLIB_V2_5;
+%rename(INPUT_LANG_SMTLIB_V2_6) CVC4::language::input::LANG_SMTLIB_V2_6;
 %rename(INPUT_LANG_TPTP) CVC4::language::input::LANG_TPTP;
 %rename(INPUT_LANG_CVC4) CVC4::language::input::LANG_CVC4;
 %rename(INPUT_LANG_MAX) CVC4::language::input::LANG_MAX;
@@ -34,6 +35,7 @@ namespace CVC4 {
 %rename(OUTPUT_LANG_SMTLIB_V2) CVC4::language::output::LANG_SMTLIB_V2;
 %rename(OUTPUT_LANG_SMTLIB_V2_0) CVC4::language::output::LANG_SMTLIB_V2_0;
 %rename(OUTPUT_LANG_SMTLIB_V2_5) CVC4::language::output::LANG_SMTLIB_V2_5;
+%rename(OUTPUT_LANG_SMTLIB_V2_6) CVC4::language::output::LANG_SMTLIB_V2_6;
 %rename(OUTPUT_LANG_TPTP) CVC4::language::output::LANG_TPTP;
 %rename(OUTPUT_LANG_CVC4) CVC4::language::output::LANG_CVC4;
 %rename(OUTPUT_LANG_AST) CVC4::language::output::LANG_AST;
diff --git a/src/options/main_options.cpp b/src/options/main_options.cpp
index 28b344e..c8184ee 100644
--- a/src/options/main_options.cpp
+++ b/src/options/main_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -19,118 +19,118 @@
 namespace CVC4 {
 
 
-#line 8 "../../../../../src/options/main_options"
+#line 8 "../../../src/options/main_options"
 template <> const options::version__option_t::type& Options::operator[](options::version__option_t) const { return d_holder->version; }
-#line 8 "../../../../../src/options/main_options"
+#line 8 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::version__option_t) const { return d_holder->version__setByUser__; }
-#line 12 "../../../../../src/options/main_options"
+#line 12 "../../../src/options/main_options"
 template <> const options::help__option_t::type& Options::operator[](options::help__option_t) const { return d_holder->help; }
-#line 12 "../../../../../src/options/main_options"
+#line 12 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::help__option_t) const { return d_holder->help__setByUser__; }
-#line 23 "../../../../../src/options/main_options"
+#line 23 "../../../src/options/main_options"
 template <> const options::earlyExit__option_t::type& Options::operator[](options::earlyExit__option_t) const { return d_holder->earlyExit; }
-#line 23 "../../../../../src/options/main_options"
+#line 23 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::earlyExit__option_t) const { return d_holder->earlyExit__setByUser__; }
-#line 27 "../../../../../src/options/main_options"
+#line 27 "../../../src/options/main_options"
 template <> const options::threads__option_t::type& Options::operator[](options::threads__option_t) const { return d_holder->threads; }
-#line 27 "../../../../../src/options/main_options"
+#line 27 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::threads__option_t) const { return d_holder->threads__setByUser__; }
-#line 31 "../../../../../src/options/main_options"
+#line 31 "../../../src/options/main_options"
 template <> const options::threadStackSize__option_t::type& Options::operator[](options::threadStackSize__option_t) const { return d_holder->threadStackSize; }
-#line 31 "../../../../../src/options/main_options"
+#line 31 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::threadStackSize__option_t) const { return d_holder->threadStackSize__setByUser__; }
-#line 33 "../../../../../src/options/main_options"
+#line 33 "../../../src/options/main_options"
 template <> void Options::set(options::threadArgv__option_t, const options::threadArgv__option_t::type& x) { d_holder->threadArgv = x; }
-#line 33 "../../../../../src/options/main_options"
+#line 33 "../../../src/options/main_options"
 template <> const options::threadArgv__option_t::type& Options::operator[](options::threadArgv__option_t) const { return d_holder->threadArgv; }
-#line 33 "../../../../../src/options/main_options"
+#line 33 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::threadArgv__option_t) const { return d_holder->threadArgv__setByUser__; }
-#line 35 "../../../../../src/options/main_options"
+#line 35 "../../../src/options/main_options"
 template <> void Options::set(options::thread_id__option_t, const options::thread_id__option_t::type& x) { d_holder->thread_id = x; }
-#line 35 "../../../../../src/options/main_options"
+#line 35 "../../../src/options/main_options"
 template <> const options::thread_id__option_t::type& Options::operator[](options::thread_id__option_t) const { return d_holder->thread_id; }
-#line 35 "../../../../../src/options/main_options"
+#line 35 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::thread_id__option_t) const { return d_holder->thread_id__setByUser__; }
-#line 37 "../../../../../src/options/main_options"
+#line 37 "../../../src/options/main_options"
 template <> void Options::set(options::sharingFilterByLength__option_t, const options::sharingFilterByLength__option_t::type& x) { d_holder->sharingFilterByLength = x; }
-#line 37 "../../../../../src/options/main_options"
+#line 37 "../../../src/options/main_options"
 template <> const options::sharingFilterByLength__option_t::type& Options::operator[](options::sharingFilterByLength__option_t) const { return d_holder->sharingFilterByLength; }
-#line 37 "../../../../../src/options/main_options"
+#line 37 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::sharingFilterByLength__option_t) const { return d_holder->sharingFilterByLength__setByUser__; }
-#line 39 "../../../../../src/options/main_options"
+#line 39 "../../../src/options/main_options"
 template <> const options::fallbackSequential__option_t::type& Options::operator[](options::fallbackSequential__option_t) const { return d_holder->fallbackSequential; }
-#line 39 "../../../../../src/options/main_options"
+#line 39 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::fallbackSequential__option_t) const { return d_holder->fallbackSequential__setByUser__; }
-#line 41 "../../../../../src/options/main_options"
+#line 41 "../../../src/options/main_options"
 template <> const options::incrementalParallel__option_t::type& Options::operator[](options::incrementalParallel__option_t) const { return d_holder->incrementalParallel; }
-#line 41 "../../../../../src/options/main_options"
+#line 41 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::incrementalParallel__option_t) const { return d_holder->incrementalParallel__setByUser__; }
-#line 44 "../../../../../src/options/main_options"
+#line 44 "../../../src/options/main_options"
 template <> void Options::set(options::interactive__option_t, const options::interactive__option_t::type& x) { d_holder->interactive = x; }
-#line 44 "../../../../../src/options/main_options"
+#line 44 "../../../src/options/main_options"
 template <> const options::interactive__option_t::type& Options::operator[](options::interactive__option_t) const { return d_holder->interactive; }
-#line 44 "../../../../../src/options/main_options"
+#line 44 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::interactive__option_t) const { return d_holder->interactive__setByUser__; }
-#line 46 "../../../../../src/options/main_options"
+#line 46 "../../../src/options/main_options"
 template <> const options::interactivePrompt__option_t::type& Options::operator[](options::interactivePrompt__option_t) const { return d_holder->interactivePrompt; }
-#line 46 "../../../../../src/options/main_options"
+#line 46 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::interactivePrompt__option_t) const { return d_holder->interactivePrompt__setByUser__; }
-#line 50 "../../../../../src/options/main_options"
+#line 50 "../../../src/options/main_options"
 template <> const options::continuedExecution__option_t::type& Options::operator[](options::continuedExecution__option_t) const { return d_holder->continuedExecution; }
-#line 50 "../../../../../src/options/main_options"
+#line 50 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::continuedExecution__option_t) const { return d_holder->continuedExecution__setByUser__; }
-#line 53 "../../../../../src/options/main_options"
+#line 53 "../../../src/options/main_options"
 template <> const options::segvSpin__option_t::type& Options::operator[](options::segvSpin__option_t) const { return d_holder->segvSpin; }
-#line 53 "../../../../../src/options/main_options"
+#line 53 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::segvSpin__option_t) const { return d_holder->segvSpin__setByUser__; }
-#line 57 "../../../../../src/options/main_options"
+#line 57 "../../../src/options/main_options"
 template <> const options::tearDownIncremental__option_t::type& Options::operator[](options::tearDownIncremental__option_t) const { return d_holder->tearDownIncremental; }
-#line 57 "../../../../../src/options/main_options"
+#line 57 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::tearDownIncremental__option_t) const { return d_holder->tearDownIncremental__setByUser__; }
-#line 60 "../../../../../src/options/main_options"
+#line 60 "../../../src/options/main_options"
 template <> const options::waitToJoin__option_t::type& Options::operator[](options::waitToJoin__option_t) const { return d_holder->waitToJoin; }
-#line 60 "../../../../../src/options/main_options"
+#line 60 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::waitToJoin__option_t) const { return d_holder->waitToJoin__setByUser__; }
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/main_options"
+#line 8 "../../../src/options/main_options"
 struct version__option_t version;
-#line 12 "../../../../../src/options/main_options"
+#line 12 "../../../src/options/main_options"
 struct help__option_t help;
-#line 23 "../../../../../src/options/main_options"
+#line 23 "../../../src/options/main_options"
 struct earlyExit__option_t earlyExit;
-#line 27 "../../../../../src/options/main_options"
+#line 27 "../../../src/options/main_options"
 struct threads__option_t threads;
-#line 31 "../../../../../src/options/main_options"
+#line 31 "../../../src/options/main_options"
 struct threadStackSize__option_t threadStackSize;
-#line 33 "../../../../../src/options/main_options"
+#line 33 "../../../src/options/main_options"
 struct threadArgv__option_t threadArgv;
-#line 35 "../../../../../src/options/main_options"
+#line 35 "../../../src/options/main_options"
 struct thread_id__option_t thread_id;
-#line 37 "../../../../../src/options/main_options"
+#line 37 "../../../src/options/main_options"
 struct sharingFilterByLength__option_t sharingFilterByLength;
-#line 39 "../../../../../src/options/main_options"
+#line 39 "../../../src/options/main_options"
 struct fallbackSequential__option_t fallbackSequential;
-#line 41 "../../../../../src/options/main_options"
+#line 41 "../../../src/options/main_options"
 struct incrementalParallel__option_t incrementalParallel;
-#line 44 "../../../../../src/options/main_options"
+#line 44 "../../../src/options/main_options"
 struct interactive__option_t interactive;
-#line 46 "../../../../../src/options/main_options"
+#line 46 "../../../src/options/main_options"
 struct interactivePrompt__option_t interactivePrompt;
-#line 50 "../../../../../src/options/main_options"
+#line 50 "../../../src/options/main_options"
 struct continuedExecution__option_t continuedExecution;
-#line 53 "../../../../../src/options/main_options"
+#line 53 "../../../src/options/main_options"
 struct segvSpin__option_t segvSpin;
-#line 57 "../../../../../src/options/main_options"
+#line 57 "../../../src/options/main_options"
 struct tearDownIncremental__option_t tearDownIncremental;
-#line 60 "../../../../../src/options/main_options"
+#line 60 "../../../src/options/main_options"
 struct waitToJoin__option_t waitToJoin;
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/main_options.h b/src/options/main_options.h
index 59576cd..cb05487 100644
--- a/src/options/main_options.h
+++ b/src/options/main_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -21,12 +21,12 @@
 
 #include "options/options.h"
 
-#line 33 "../../../../../src/options/main_options"
+#line 33 "../../../src/options/main_options"
 #include <vector>
-#line 33 "../../../../../src/options/main_options"
+#line 33 "../../../src/options/main_options"
 #include <string>
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__DRIVER__FOR_OPTION_HOLDER \
   version__option_t::type version; \
@@ -62,250 +62,250 @@
   waitToJoin__option_t::type waitToJoin; \
   bool waitToJoin__setByUser__;
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/main_options"
+#line 8 "../../../src/options/main_options"
 extern struct CVC4_PUBLIC version__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } version CVC4_PUBLIC;
-#line 12 "../../../../../src/options/main_options"
+#line 12 "../../../src/options/main_options"
 extern struct CVC4_PUBLIC help__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } help CVC4_PUBLIC;
-#line 23 "../../../../../src/options/main_options"
+#line 23 "../../../src/options/main_options"
 extern struct CVC4_PUBLIC earlyExit__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } earlyExit CVC4_PUBLIC;
-#line 27 "../../../../../src/options/main_options"
+#line 27 "../../../src/options/main_options"
 extern struct CVC4_PUBLIC threads__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } threads CVC4_PUBLIC;
-#line 31 "../../../../../src/options/main_options"
+#line 31 "../../../src/options/main_options"
 extern struct CVC4_PUBLIC threadStackSize__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } threadStackSize CVC4_PUBLIC;
-#line 33 "../../../../../src/options/main_options"
+#line 33 "../../../src/options/main_options"
 extern struct CVC4_PUBLIC threadArgv__option_t { typedef std::vector<std::string> type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } threadArgv CVC4_PUBLIC;
-#line 35 "../../../../../src/options/main_options"
+#line 35 "../../../src/options/main_options"
 extern struct CVC4_PUBLIC thread_id__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } thread_id CVC4_PUBLIC;
-#line 37 "../../../../../src/options/main_options"
+#line 37 "../../../src/options/main_options"
 extern struct CVC4_PUBLIC sharingFilterByLength__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } sharingFilterByLength CVC4_PUBLIC;
-#line 39 "../../../../../src/options/main_options"
+#line 39 "../../../src/options/main_options"
 extern struct CVC4_PUBLIC fallbackSequential__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } fallbackSequential CVC4_PUBLIC;
-#line 41 "../../../../../src/options/main_options"
+#line 41 "../../../src/options/main_options"
 extern struct CVC4_PUBLIC incrementalParallel__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } incrementalParallel CVC4_PUBLIC;
-#line 44 "../../../../../src/options/main_options"
+#line 44 "../../../src/options/main_options"
 extern struct CVC4_PUBLIC interactive__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } interactive CVC4_PUBLIC;
-#line 46 "../../../../../src/options/main_options"
+#line 46 "../../../src/options/main_options"
 extern struct CVC4_PUBLIC interactivePrompt__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } interactivePrompt CVC4_PUBLIC;
-#line 50 "../../../../../src/options/main_options"
+#line 50 "../../../src/options/main_options"
 extern struct CVC4_PUBLIC continuedExecution__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } continuedExecution CVC4_PUBLIC;
-#line 53 "../../../../../src/options/main_options"
+#line 53 "../../../src/options/main_options"
 extern struct CVC4_PUBLIC segvSpin__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } segvSpin CVC4_PUBLIC;
-#line 57 "../../../../../src/options/main_options"
+#line 57 "../../../src/options/main_options"
 extern struct CVC4_PUBLIC tearDownIncremental__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } tearDownIncremental CVC4_PUBLIC;
-#line 60 "../../../../../src/options/main_options"
+#line 60 "../../../src/options/main_options"
 extern struct CVC4_PUBLIC waitToJoin__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } waitToJoin CVC4_PUBLIC;
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
-#line 8 "../../../../../src/options/main_options"
+#line 8 "../../../src/options/main_options"
 template <> const options::version__option_t::type& Options::operator[](options::version__option_t) const;
-#line 8 "../../../../../src/options/main_options"
+#line 8 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::version__option_t) const;
-#line 8 "../../../../../src/options/main_options"
+#line 8 "../../../src/options/main_options"
 template <> void Options::assignBool(options::version__option_t, std::string option, bool value);
-#line 12 "../../../../../src/options/main_options"
+#line 12 "../../../src/options/main_options"
 template <> const options::help__option_t::type& Options::operator[](options::help__option_t) const;
-#line 12 "../../../../../src/options/main_options"
+#line 12 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::help__option_t) const;
-#line 12 "../../../../../src/options/main_options"
+#line 12 "../../../src/options/main_options"
 template <> void Options::assignBool(options::help__option_t, std::string option, bool value);
-#line 23 "../../../../../src/options/main_options"
+#line 23 "../../../src/options/main_options"
 template <> const options::earlyExit__option_t::type& Options::operator[](options::earlyExit__option_t) const;
-#line 23 "../../../../../src/options/main_options"
+#line 23 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::earlyExit__option_t) const;
-#line 23 "../../../../../src/options/main_options"
+#line 23 "../../../src/options/main_options"
 template <> void Options::assignBool(options::earlyExit__option_t, std::string option, bool value);
-#line 27 "../../../../../src/options/main_options"
+#line 27 "../../../src/options/main_options"
 template <> const options::threads__option_t::type& Options::operator[](options::threads__option_t) const;
-#line 27 "../../../../../src/options/main_options"
+#line 27 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::threads__option_t) const;
-#line 27 "../../../../../src/options/main_options"
+#line 27 "../../../src/options/main_options"
 template <> void Options::assign(options::threads__option_t, std::string option, std::string value);
-#line 31 "../../../../../src/options/main_options"
+#line 31 "../../../src/options/main_options"
 template <> const options::threadStackSize__option_t::type& Options::operator[](options::threadStackSize__option_t) const;
-#line 31 "../../../../../src/options/main_options"
+#line 31 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::threadStackSize__option_t) const;
-#line 31 "../../../../../src/options/main_options"
+#line 31 "../../../src/options/main_options"
 template <> void Options::assign(options::threadStackSize__option_t, std::string option, std::string value);
-#line 33 "../../../../../src/options/main_options"
+#line 33 "../../../src/options/main_options"
 template <> void Options::set(options::threadArgv__option_t, const options::threadArgv__option_t::type& x);
-#line 33 "../../../../../src/options/main_options"
+#line 33 "../../../src/options/main_options"
 template <> const options::threadArgv__option_t::type& Options::operator[](options::threadArgv__option_t) const;
-#line 33 "../../../../../src/options/main_options"
+#line 33 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::threadArgv__option_t) const;
-#line 33 "../../../../../src/options/main_options"
+#line 33 "../../../src/options/main_options"
 template <> void Options::assign(options::threadArgv__option_t, std::string option, std::string value);
-#line 35 "../../../../../src/options/main_options"
+#line 35 "../../../src/options/main_options"
 template <> void Options::set(options::thread_id__option_t, const options::thread_id__option_t::type& x);
-#line 35 "../../../../../src/options/main_options"
+#line 35 "../../../src/options/main_options"
 template <> const options::thread_id__option_t::type& Options::operator[](options::thread_id__option_t) const;
-#line 35 "../../../../../src/options/main_options"
+#line 35 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::thread_id__option_t) const;
-#line 35 "../../../../../src/options/main_options"
+#line 35 "../../../src/options/main_options"
 template <> void Options::assign(options::thread_id__option_t, std::string option, std::string value);
-#line 37 "../../../../../src/options/main_options"
+#line 37 "../../../src/options/main_options"
 template <> void Options::set(options::sharingFilterByLength__option_t, const options::sharingFilterByLength__option_t::type& x);
-#line 37 "../../../../../src/options/main_options"
+#line 37 "../../../src/options/main_options"
 template <> const options::sharingFilterByLength__option_t::type& Options::operator[](options::sharingFilterByLength__option_t) const;
-#line 37 "../../../../../src/options/main_options"
+#line 37 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::sharingFilterByLength__option_t) const;
-#line 37 "../../../../../src/options/main_options"
+#line 37 "../../../src/options/main_options"
 template <> void Options::assign(options::sharingFilterByLength__option_t, std::string option, std::string value);
-#line 39 "../../../../../src/options/main_options"
+#line 39 "../../../src/options/main_options"
 template <> const options::fallbackSequential__option_t::type& Options::operator[](options::fallbackSequential__option_t) const;
-#line 39 "../../../../../src/options/main_options"
+#line 39 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::fallbackSequential__option_t) const;
-#line 39 "../../../../../src/options/main_options"
+#line 39 "../../../src/options/main_options"
 template <> void Options::assignBool(options::fallbackSequential__option_t, std::string option, bool value);
-#line 41 "../../../../../src/options/main_options"
+#line 41 "../../../src/options/main_options"
 template <> const options::incrementalParallel__option_t::type& Options::operator[](options::incrementalParallel__option_t) const;
-#line 41 "../../../../../src/options/main_options"
+#line 41 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::incrementalParallel__option_t) const;
-#line 41 "../../../../../src/options/main_options"
+#line 41 "../../../src/options/main_options"
 template <> void Options::assignBool(options::incrementalParallel__option_t, std::string option, bool value);
-#line 44 "../../../../../src/options/main_options"
+#line 44 "../../../src/options/main_options"
 template <> void Options::set(options::interactive__option_t, const options::interactive__option_t::type& x);
-#line 44 "../../../../../src/options/main_options"
+#line 44 "../../../src/options/main_options"
 template <> const options::interactive__option_t::type& Options::operator[](options::interactive__option_t) const;
-#line 44 "../../../../../src/options/main_options"
+#line 44 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::interactive__option_t) const;
-#line 44 "../../../../../src/options/main_options"
+#line 44 "../../../src/options/main_options"
 template <> void Options::assignBool(options::interactive__option_t, std::string option, bool value);
-#line 46 "../../../../../src/options/main_options"
+#line 46 "../../../src/options/main_options"
 template <> const options::interactivePrompt__option_t::type& Options::operator[](options::interactivePrompt__option_t) const;
-#line 46 "../../../../../src/options/main_options"
+#line 46 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::interactivePrompt__option_t) const;
-#line 46 "../../../../../src/options/main_options"
+#line 46 "../../../src/options/main_options"
 template <> void Options::assignBool(options::interactivePrompt__option_t, std::string option, bool value);
-#line 50 "../../../../../src/options/main_options"
+#line 50 "../../../src/options/main_options"
 template <> const options::continuedExecution__option_t::type& Options::operator[](options::continuedExecution__option_t) const;
-#line 50 "../../../../../src/options/main_options"
+#line 50 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::continuedExecution__option_t) const;
-#line 50 "../../../../../src/options/main_options"
+#line 50 "../../../src/options/main_options"
 template <> void Options::assignBool(options::continuedExecution__option_t, std::string option, bool value);
-#line 53 "../../../../../src/options/main_options"
+#line 53 "../../../src/options/main_options"
 template <> const options::segvSpin__option_t::type& Options::operator[](options::segvSpin__option_t) const;
-#line 53 "../../../../../src/options/main_options"
+#line 53 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::segvSpin__option_t) const;
-#line 53 "../../../../../src/options/main_options"
+#line 53 "../../../src/options/main_options"
 template <> void Options::assignBool(options::segvSpin__option_t, std::string option, bool value);
-#line 57 "../../../../../src/options/main_options"
+#line 57 "../../../src/options/main_options"
 template <> const options::tearDownIncremental__option_t::type& Options::operator[](options::tearDownIncremental__option_t) const;
-#line 57 "../../../../../src/options/main_options"
+#line 57 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::tearDownIncremental__option_t) const;
-#line 57 "../../../../../src/options/main_options"
+#line 57 "../../../src/options/main_options"
 template <> void Options::assign(options::tearDownIncremental__option_t, std::string option, std::string value);
-#line 60 "../../../../../src/options/main_options"
+#line 60 "../../../src/options/main_options"
 template <> const options::waitToJoin__option_t::type& Options::operator[](options::waitToJoin__option_t) const;
-#line 60 "../../../../../src/options/main_options"
+#line 60 "../../../src/options/main_options"
 template <> bool Options::wasSetByUser(options::waitToJoin__option_t) const;
-#line 60 "../../../../../src/options/main_options"
+#line 60 "../../../src/options/main_options"
 template <> void Options::assignBool(options::waitToJoin__option_t, std::string option, bool value);
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/main_options"
+#line 8 "../../../src/options/main_options"
 inline version__option_t::type version__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 8 "../../../../../src/options/main_options"
+#line 8 "../../../src/options/main_options"
 inline bool version__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 12 "../../../../../src/options/main_options"
+#line 12 "../../../src/options/main_options"
 inline help__option_t::type help__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 12 "../../../../../src/options/main_options"
+#line 12 "../../../src/options/main_options"
 inline bool help__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 23 "../../../../../src/options/main_options"
+#line 23 "../../../src/options/main_options"
 inline earlyExit__option_t::type earlyExit__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 23 "../../../../../src/options/main_options"
+#line 23 "../../../src/options/main_options"
 inline bool earlyExit__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 27 "../../../../../src/options/main_options"
+#line 27 "../../../src/options/main_options"
 inline threads__option_t::type threads__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 27 "../../../../../src/options/main_options"
+#line 27 "../../../src/options/main_options"
 inline bool threads__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 31 "../../../../../src/options/main_options"
+#line 31 "../../../src/options/main_options"
 inline threadStackSize__option_t::type threadStackSize__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 31 "../../../../../src/options/main_options"
+#line 31 "../../../src/options/main_options"
 inline bool threadStackSize__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 33 "../../../../../src/options/main_options"
+#line 33 "../../../src/options/main_options"
 inline threadArgv__option_t::type threadArgv__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 33 "../../../../../src/options/main_options"
+#line 33 "../../../src/options/main_options"
 inline bool threadArgv__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 33 "../../../../../src/options/main_options"
+#line 33 "../../../src/options/main_options"
 inline void threadArgv__option_t::set(const threadArgv__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 35 "../../../../../src/options/main_options"
+#line 35 "../../../src/options/main_options"
 inline thread_id__option_t::type thread_id__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 35 "../../../../../src/options/main_options"
+#line 35 "../../../src/options/main_options"
 inline bool thread_id__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 35 "../../../../../src/options/main_options"
+#line 35 "../../../src/options/main_options"
 inline void thread_id__option_t::set(const thread_id__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 37 "../../../../../src/options/main_options"
+#line 37 "../../../src/options/main_options"
 inline sharingFilterByLength__option_t::type sharingFilterByLength__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 37 "../../../../../src/options/main_options"
+#line 37 "../../../src/options/main_options"
 inline bool sharingFilterByLength__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 37 "../../../../../src/options/main_options"
+#line 37 "../../../src/options/main_options"
 inline void sharingFilterByLength__option_t::set(const sharingFilterByLength__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 39 "../../../../../src/options/main_options"
+#line 39 "../../../src/options/main_options"
 inline fallbackSequential__option_t::type fallbackSequential__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 39 "../../../../../src/options/main_options"
+#line 39 "../../../src/options/main_options"
 inline bool fallbackSequential__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 41 "../../../../../src/options/main_options"
+#line 41 "../../../src/options/main_options"
 inline incrementalParallel__option_t::type incrementalParallel__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 41 "../../../../../src/options/main_options"
+#line 41 "../../../src/options/main_options"
 inline bool incrementalParallel__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 44 "../../../../../src/options/main_options"
+#line 44 "../../../src/options/main_options"
 inline interactive__option_t::type interactive__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 44 "../../../../../src/options/main_options"
+#line 44 "../../../src/options/main_options"
 inline bool interactive__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 44 "../../../../../src/options/main_options"
+#line 44 "../../../src/options/main_options"
 inline void interactive__option_t::set(const interactive__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 46 "../../../../../src/options/main_options"
+#line 46 "../../../src/options/main_options"
 inline interactivePrompt__option_t::type interactivePrompt__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 46 "../../../../../src/options/main_options"
+#line 46 "../../../src/options/main_options"
 inline bool interactivePrompt__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 50 "../../../../../src/options/main_options"
+#line 50 "../../../src/options/main_options"
 inline continuedExecution__option_t::type continuedExecution__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 50 "../../../../../src/options/main_options"
+#line 50 "../../../src/options/main_options"
 inline bool continuedExecution__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 53 "../../../../../src/options/main_options"
+#line 53 "../../../src/options/main_options"
 inline segvSpin__option_t::type segvSpin__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 53 "../../../../../src/options/main_options"
+#line 53 "../../../src/options/main_options"
 inline bool segvSpin__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 57 "../../../../../src/options/main_options"
+#line 57 "../../../src/options/main_options"
 inline tearDownIncremental__option_t::type tearDownIncremental__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 57 "../../../../../src/options/main_options"
+#line 57 "../../../src/options/main_options"
 inline bool tearDownIncremental__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 60 "../../../../../src/options/main_options"
+#line 60 "../../../src/options/main_options"
 inline waitToJoin__option_t::type waitToJoin__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 60 "../../../../../src/options/main_options"
+#line 60 "../../../src/options/main_options"
 inline bool waitToJoin__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/open_ostream.cpp b/src/options/open_ostream.cpp
index 214f148..e93764e 100644
--- a/src/options/open_ostream.cpp
+++ b/src/options/open_ostream.cpp
@@ -2,9 +2,9 @@
 /*! \file open_ostream.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/open_ostream.h b/src/options/open_ostream.h
index 6c00e7d..7630c3b 100644
--- a/src/options/open_ostream.h
+++ b/src/options/open_ostream.h
@@ -2,9 +2,9 @@
 /*! \file open_ostream.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/option_exception.h b/src/options/option_exception.h
index 450eda9..4cea295 100644
--- a/src/options/option_exception.h
+++ b/src/options/option_exception.h
@@ -2,9 +2,9 @@
 /*! \file option_exception.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/options.h b/src/options/options.h
index 3551d82..6b2bfed 100644
--- a/src/options/options.h
+++ b/src/options/options.h
@@ -2,9 +2,9 @@
 /*! \file options.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters, Kshitij Bansal
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/options_get_option_template.cpp b/src/options/options_get_option_template.cpp
index d50644a..81a0daf 100644
--- a/src/options/options_get_option_template.cpp
+++ b/src/options/options_get_option_template.cpp
@@ -2,9 +2,9 @@
 /*! \file options_get_option_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/options_handler.cpp b/src/options/options_handler.cpp
index 94bf155..85fe145 100644
--- a/src/options/options_handler.cpp
+++ b/src/options/options_handler.cpp
@@ -2,9 +2,9 @@
 /*! \file options_handler.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Andrew Reynolds
+ **   Tim King, Andrew Reynolds, Liana Hadarean
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -958,7 +958,7 @@ const std::string OptionsHandler::s_bitblastingModeHelp = "\
 Bit-blasting modes currently supported by the --bitblast option:\n\
 \n\
 lazy (default)\n\
-+ Separate boolean structure and term reasoning betwen the core\n\
++ Separate boolean structure and term reasoning between the core\n\
   SAT solver and the bv SAT solver\n\
 \n\
 eager\n\
diff --git a/src/options/options_handler.h b/src/options/options_handler.h
index 6721eaa..fa87149 100644
--- a/src/options/options_handler.h
+++ b/src/options/options_handler.h
@@ -2,9 +2,9 @@
 /*! \file options_handler.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Andrew Reynolds
+ **   Tim King, Andrew Reynolds, Liana Hadarean
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/options_holder_template.h b/src/options/options_holder_template.h
index f33656e..0d6da1e 100644
--- a/src/options/options_holder_template.h
+++ b/src/options/options_holder_template.h
@@ -2,9 +2,9 @@
 /*! \file options_holder_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/options_public_functions.cpp b/src/options/options_public_functions.cpp
index 111b548..54fbd3c 100644
--- a/src/options/options_public_functions.cpp
+++ b/src/options/options_public_functions.cpp
@@ -2,9 +2,9 @@
 /*! \file options_public_functions.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/options_set_option_template.cpp b/src/options/options_set_option_template.cpp
index cc068f4..cfe642b 100644
--- a/src/options/options_set_option_template.cpp
+++ b/src/options/options_set_option_template.cpp
@@ -2,9 +2,9 @@
 /*! \file options_set_option_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/options_template.cpp b/src/options/options_template.cpp
index 694d46d..6144b57 100644
--- a/src/options/options_template.cpp
+++ b/src/options/options_template.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Morgan Deters, Kshitij Bansal
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -434,6 +434,7 @@ Languages currently supported as arguments to the -L / --lang option:\n\
   smt | smtlib | smt2 |\n\
   smt2.0 | smtlib2 | smtlib2.0   SMT-LIB format 2.0\n\
   smt2.5 | smtlib2.5             SMT-LIB format 2.5\n\
+  smt2.6 | smtlib2.6             SMT-LIB format 2.6\n\
   tptp                           TPTP format (cnf and fof)\n\
   sygus                          SyGuS format\n\
 \n\
@@ -445,6 +446,7 @@ Languages currently supported as arguments to the --output-lang option:\n\
   smt | smtlib | smt2 |\n\
   smt2.0 | smtlib2.0 | smtlib2   SMT-LIB format 2.0\n\
   smt2.5 | smtlib2.5             SMT-LIB format 2.5\n\
+  smt2.6 | smtlib2.6             SMT-LIB format 2.6\n\
   tptp                           TPTP format\n\
   z3str                          SMT-LIB 2.0 with Z3-str string constraints\n\
   ast                            internal format (simple syntax trees)\n\
diff --git a/src/options/parser_options.cpp b/src/options/parser_options.cpp
index 5ee5b84..85cc778 100644
--- a/src/options/parser_options.cpp
+++ b/src/options/parser_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -19,44 +19,44 @@
 namespace CVC4 {
 
 
-#line 8 "../../../../../src/options/parser_options"
+#line 8 "../../../src/options/parser_options"
 template <> const options::strictParsing__option_t::type& Options::operator[](options::strictParsing__option_t) const { return d_holder->strictParsing; }
-#line 8 "../../../../../src/options/parser_options"
+#line 8 "../../../src/options/parser_options"
 template <> bool Options::wasSetByUser(options::strictParsing__option_t) const { return d_holder->strictParsing__setByUser__; }
-#line 11 "../../../../../src/options/parser_options"
+#line 11 "../../../src/options/parser_options"
 template <> const options::memoryMap__option_t::type& Options::operator[](options::memoryMap__option_t) const { return d_holder->memoryMap; }
-#line 11 "../../../../../src/options/parser_options"
+#line 11 "../../../src/options/parser_options"
 template <> bool Options::wasSetByUser(options::memoryMap__option_t) const { return d_holder->memoryMap__setByUser__; }
-#line 14 "../../../../../src/options/parser_options"
+#line 14 "../../../src/options/parser_options"
 template <> const options::semanticChecks__option_t::type& Options::operator[](options::semanticChecks__option_t) const { return d_holder->semanticChecks; }
-#line 14 "../../../../../src/options/parser_options"
+#line 14 "../../../src/options/parser_options"
 template <> bool Options::wasSetByUser(options::semanticChecks__option_t) const { return d_holder->semanticChecks__setByUser__; }
-#line 17 "../../../../../src/options/parser_options"
+#line 17 "../../../src/options/parser_options"
 template <> const options::globalDeclarations__option_t::type& Options::operator[](options::globalDeclarations__option_t) const { return d_holder->globalDeclarations; }
-#line 17 "../../../../../src/options/parser_options"
+#line 17 "../../../src/options/parser_options"
 template <> bool Options::wasSetByUser(options::globalDeclarations__option_t) const { return d_holder->globalDeclarations__setByUser__; }
-#line 32 "../../../../../src/options/parser_options"
+#line 32 "../../../src/options/parser_options"
 template <> const options::filesystemAccess__option_t::type& Options::operator[](options::filesystemAccess__option_t) const { return d_holder->filesystemAccess; }
-#line 32 "../../../../../src/options/parser_options"
+#line 32 "../../../src/options/parser_options"
 template <> bool Options::wasSetByUser(options::filesystemAccess__option_t) const { return d_holder->filesystemAccess__setByUser__; }
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/parser_options"
+#line 8 "../../../src/options/parser_options"
 struct strictParsing__option_t strictParsing;
-#line 11 "../../../../../src/options/parser_options"
+#line 11 "../../../src/options/parser_options"
 struct memoryMap__option_t memoryMap;
-#line 14 "../../../../../src/options/parser_options"
+#line 14 "../../../src/options/parser_options"
 struct semanticChecks__option_t semanticChecks;
-#line 17 "../../../../../src/options/parser_options"
+#line 17 "../../../src/options/parser_options"
 struct globalDeclarations__option_t globalDeclarations;
-#line 32 "../../../../../src/options/parser_options"
+#line 32 "../../../src/options/parser_options"
 struct filesystemAccess__option_t filesystemAccess;
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/parser_options.h b/src/options/parser_options.h
index 07e45c9..d5305c7 100644
--- a/src/options/parser_options.h
+++ b/src/options/parser_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -22,7 +22,7 @@
 #include "options/options.h"
 
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__PARSER__FOR_OPTION_HOLDER \
   strictParsing__option_t::type strictParsing; \
@@ -36,91 +36,91 @@
   filesystemAccess__option_t::type filesystemAccess; \
   bool filesystemAccess__setByUser__;
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/parser_options"
+#line 8 "../../../src/options/parser_options"
 extern struct CVC4_PUBLIC strictParsing__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } strictParsing CVC4_PUBLIC;
-#line 11 "../../../../../src/options/parser_options"
+#line 11 "../../../src/options/parser_options"
 extern struct CVC4_PUBLIC memoryMap__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } memoryMap CVC4_PUBLIC;
-#line 14 "../../../../../src/options/parser_options"
+#line 14 "../../../src/options/parser_options"
 extern struct CVC4_PUBLIC semanticChecks__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } semanticChecks CVC4_PUBLIC;
-#line 17 "../../../../../src/options/parser_options"
+#line 17 "../../../src/options/parser_options"
 extern struct CVC4_PUBLIC globalDeclarations__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } globalDeclarations CVC4_PUBLIC;
-#line 32 "../../../../../src/options/parser_options"
+#line 32 "../../../src/options/parser_options"
 extern struct CVC4_PUBLIC filesystemAccess__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } filesystemAccess CVC4_PUBLIC;
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
-#line 8 "../../../../../src/options/parser_options"
+#line 8 "../../../src/options/parser_options"
 template <> const options::strictParsing__option_t::type& Options::operator[](options::strictParsing__option_t) const;
-#line 8 "../../../../../src/options/parser_options"
+#line 8 "../../../src/options/parser_options"
 template <> bool Options::wasSetByUser(options::strictParsing__option_t) const;
-#line 8 "../../../../../src/options/parser_options"
+#line 8 "../../../src/options/parser_options"
 template <> void Options::assignBool(options::strictParsing__option_t, std::string option, bool value);
-#line 11 "../../../../../src/options/parser_options"
+#line 11 "../../../src/options/parser_options"
 template <> const options::memoryMap__option_t::type& Options::operator[](options::memoryMap__option_t) const;
-#line 11 "../../../../../src/options/parser_options"
+#line 11 "../../../src/options/parser_options"
 template <> bool Options::wasSetByUser(options::memoryMap__option_t) const;
-#line 11 "../../../../../src/options/parser_options"
+#line 11 "../../../src/options/parser_options"
 template <> void Options::assignBool(options::memoryMap__option_t, std::string option, bool value);
-#line 14 "../../../../../src/options/parser_options"
+#line 14 "../../../src/options/parser_options"
 template <> const options::semanticChecks__option_t::type& Options::operator[](options::semanticChecks__option_t) const;
-#line 14 "../../../../../src/options/parser_options"
+#line 14 "../../../src/options/parser_options"
 template <> bool Options::wasSetByUser(options::semanticChecks__option_t) const;
-#line 14 "../../../../../src/options/parser_options"
+#line 14 "../../../src/options/parser_options"
 template <> void Options::assignBool(options::semanticChecks__option_t, std::string option, bool value);
-#line 17 "../../../../../src/options/parser_options"
+#line 17 "../../../src/options/parser_options"
 template <> const options::globalDeclarations__option_t::type& Options::operator[](options::globalDeclarations__option_t) const;
-#line 17 "../../../../../src/options/parser_options"
+#line 17 "../../../src/options/parser_options"
 template <> bool Options::wasSetByUser(options::globalDeclarations__option_t) const;
-#line 17 "../../../../../src/options/parser_options"
+#line 17 "../../../src/options/parser_options"
 template <> void Options::assignBool(options::globalDeclarations__option_t, std::string option, bool value);
-#line 32 "../../../../../src/options/parser_options"
+#line 32 "../../../src/options/parser_options"
 template <> const options::filesystemAccess__option_t::type& Options::operator[](options::filesystemAccess__option_t) const;
-#line 32 "../../../../../src/options/parser_options"
+#line 32 "../../../src/options/parser_options"
 template <> bool Options::wasSetByUser(options::filesystemAccess__option_t) const;
-#line 32 "../../../../../src/options/parser_options"
+#line 32 "../../../src/options/parser_options"
 template <> void Options::assignBool(options::filesystemAccess__option_t, std::string option, bool value);
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/parser_options"
+#line 8 "../../../src/options/parser_options"
 inline strictParsing__option_t::type strictParsing__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 8 "../../../../../src/options/parser_options"
+#line 8 "../../../src/options/parser_options"
 inline bool strictParsing__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 11 "../../../../../src/options/parser_options"
+#line 11 "../../../src/options/parser_options"
 inline memoryMap__option_t::type memoryMap__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 11 "../../../../../src/options/parser_options"
+#line 11 "../../../src/options/parser_options"
 inline bool memoryMap__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 14 "../../../../../src/options/parser_options"
+#line 14 "../../../src/options/parser_options"
 inline semanticChecks__option_t::type semanticChecks__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 14 "../../../../../src/options/parser_options"
+#line 14 "../../../src/options/parser_options"
 inline bool semanticChecks__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 17 "../../../../../src/options/parser_options"
+#line 17 "../../../src/options/parser_options"
 inline globalDeclarations__option_t::type globalDeclarations__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 17 "../../../../../src/options/parser_options"
+#line 17 "../../../src/options/parser_options"
 inline bool globalDeclarations__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 32 "../../../../../src/options/parser_options"
+#line 32 "../../../src/options/parser_options"
 inline filesystemAccess__option_t::type filesystemAccess__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 32 "../../../../../src/options/parser_options"
+#line 32 "../../../src/options/parser_options"
 inline bool filesystemAccess__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/printer_modes.cpp b/src/options/printer_modes.cpp
index 3ca311a..ef4dc6b 100644
--- a/src/options/printer_modes.cpp
+++ b/src/options/printer_modes.cpp
@@ -2,9 +2,9 @@
 /*! \file printer_modes.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Andrew Reynolds, Tim King
+ **   Morgan Deters, Andrew Reynolds, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/printer_modes.h b/src/options/printer_modes.h
index a05ca24..db3efe6 100644
--- a/src/options/printer_modes.h
+++ b/src/options/printer_modes.h
@@ -2,9 +2,9 @@
 /*! \file printer_modes.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Morgan Deters, Tim King
+ **   Andrew Reynolds, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/printer_options.cpp b/src/options/printer_options.cpp
index 634d3d6..4a42542 100644
--- a/src/options/printer_options.cpp
+++ b/src/options/printer_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -19,30 +19,30 @@
 namespace CVC4 {
 
 
-#line 8 "../../../../../src/options/printer_options"
+#line 8 "../../../src/options/printer_options"
 template <> void Options::set(options::modelFormatMode__option_t, const options::modelFormatMode__option_t::type& x) { d_holder->modelFormatMode = x; }
-#line 8 "../../../../../src/options/printer_options"
+#line 8 "../../../src/options/printer_options"
 template <> const options::modelFormatMode__option_t::type& Options::operator[](options::modelFormatMode__option_t) const { return d_holder->modelFormatMode; }
-#line 8 "../../../../../src/options/printer_options"
+#line 8 "../../../src/options/printer_options"
 template <> bool Options::wasSetByUser(options::modelFormatMode__option_t) const { return d_holder->modelFormatMode__setByUser__; }
-#line 11 "../../../../../src/options/printer_options"
+#line 11 "../../../src/options/printer_options"
 template <> void Options::set(options::instFormatMode__option_t, const options::instFormatMode__option_t::type& x) { d_holder->instFormatMode = x; }
-#line 11 "../../../../../src/options/printer_options"
+#line 11 "../../../src/options/printer_options"
 template <> const options::instFormatMode__option_t::type& Options::operator[](options::instFormatMode__option_t) const { return d_holder->instFormatMode; }
-#line 11 "../../../../../src/options/printer_options"
+#line 11 "../../../src/options/printer_options"
 template <> bool Options::wasSetByUser(options::instFormatMode__option_t) const { return d_holder->instFormatMode__setByUser__; }
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/printer_options"
+#line 8 "../../../src/options/printer_options"
 struct modelFormatMode__option_t modelFormatMode;
-#line 11 "../../../../../src/options/printer_options"
+#line 11 "../../../src/options/printer_options"
 struct instFormatMode__option_t instFormatMode;
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/printer_options.h b/src/options/printer_options.h
index 8bdf04b..5259c3a 100644
--- a/src/options/printer_options.h
+++ b/src/options/printer_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -21,12 +21,12 @@
 
 #include "options/options.h"
 
-#line 8 "../../../../../src/options/printer_options"
+#line 8 "../../../src/options/printer_options"
 #include "options/printer_modes.h"
-#line 11 "../../../../../src/options/printer_options"
+#line 11 "../../../src/options/printer_options"
 #include "options/printer_modes.h"
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__PRINTER__FOR_OPTION_HOLDER \
   modelFormatMode__option_t::type modelFormatMode; \
@@ -34,60 +34,60 @@
   instFormatMode__option_t::type instFormatMode; \
   bool instFormatMode__setByUser__;
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/printer_options"
+#line 8 "../../../src/options/printer_options"
 extern struct CVC4_PUBLIC modelFormatMode__option_t { typedef ModelFormatMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } modelFormatMode CVC4_PUBLIC;
-#line 11 "../../../../../src/options/printer_options"
+#line 11 "../../../src/options/printer_options"
 extern struct CVC4_PUBLIC instFormatMode__option_t { typedef InstFormatMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } instFormatMode CVC4_PUBLIC;
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
-#line 8 "../../../../../src/options/printer_options"
+#line 8 "../../../src/options/printer_options"
 template <> void Options::set(options::modelFormatMode__option_t, const options::modelFormatMode__option_t::type& x);
-#line 8 "../../../../../src/options/printer_options"
+#line 8 "../../../src/options/printer_options"
 template <> const options::modelFormatMode__option_t::type& Options::operator[](options::modelFormatMode__option_t) const;
-#line 8 "../../../../../src/options/printer_options"
+#line 8 "../../../src/options/printer_options"
 template <> bool Options::wasSetByUser(options::modelFormatMode__option_t) const;
-#line 8 "../../../../../src/options/printer_options"
+#line 8 "../../../src/options/printer_options"
 template <> void Options::assign(options::modelFormatMode__option_t, std::string option, std::string value);
-#line 11 "../../../../../src/options/printer_options"
+#line 11 "../../../src/options/printer_options"
 template <> void Options::set(options::instFormatMode__option_t, const options::instFormatMode__option_t::type& x);
-#line 11 "../../../../../src/options/printer_options"
+#line 11 "../../../src/options/printer_options"
 template <> const options::instFormatMode__option_t::type& Options::operator[](options::instFormatMode__option_t) const;
-#line 11 "../../../../../src/options/printer_options"
+#line 11 "../../../src/options/printer_options"
 template <> bool Options::wasSetByUser(options::instFormatMode__option_t) const;
-#line 11 "../../../../../src/options/printer_options"
+#line 11 "../../../src/options/printer_options"
 template <> void Options::assign(options::instFormatMode__option_t, std::string option, std::string value);
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/printer_options"
+#line 8 "../../../src/options/printer_options"
 inline modelFormatMode__option_t::type modelFormatMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 8 "../../../../../src/options/printer_options"
+#line 8 "../../../src/options/printer_options"
 inline bool modelFormatMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 8 "../../../../../src/options/printer_options"
+#line 8 "../../../src/options/printer_options"
 inline void modelFormatMode__option_t::set(const modelFormatMode__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 11 "../../../../../src/options/printer_options"
+#line 11 "../../../src/options/printer_options"
 inline instFormatMode__option_t::type instFormatMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 11 "../../../../../src/options/printer_options"
+#line 11 "../../../src/options/printer_options"
 inline bool instFormatMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 11 "../../../../../src/options/printer_options"
+#line 11 "../../../src/options/printer_options"
 inline void instFormatMode__option_t::set(const instFormatMode__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/proof_options.cpp b/src/options/proof_options.cpp
index 38ab4bf..c26f9ba 100644
--- a/src/options/proof_options.cpp
+++ b/src/options/proof_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -19,40 +19,40 @@
 namespace CVC4 {
 
 
-#line 8 "../../../../../src/options/proof_options"
+#line 8 "../../../src/options/proof_options"
 template <> const options::lfscLetification__option_t::type& Options::operator[](options::lfscLetification__option_t) const { return d_holder->lfscLetification; }
-#line 8 "../../../../../src/options/proof_options"
+#line 8 "../../../src/options/proof_options"
 template <> bool Options::wasSetByUser(options::lfscLetification__option_t) const { return d_holder->lfscLetification__setByUser__; }
-#line 11 "../../../../../src/options/proof_options"
+#line 11 "../../../src/options/proof_options"
 template <> const options::aggressiveCoreMin__option_t::type& Options::operator[](options::aggressiveCoreMin__option_t) const { return d_holder->aggressiveCoreMin; }
-#line 11 "../../../../../src/options/proof_options"
+#line 11 "../../../src/options/proof_options"
 template <> bool Options::wasSetByUser(options::aggressiveCoreMin__option_t) const { return d_holder->aggressiveCoreMin__setByUser__; }
-#line 14 "../../../../../src/options/proof_options"
+#line 14 "../../../src/options/proof_options"
 template <> void Options::set(options::fewerPreprocessingHoles__option_t, const options::fewerPreprocessingHoles__option_t::type& x) { d_holder->fewerPreprocessingHoles = x; }
-#line 14 "../../../../../src/options/proof_options"
+#line 14 "../../../src/options/proof_options"
 template <> const options::fewerPreprocessingHoles__option_t::type& Options::operator[](options::fewerPreprocessingHoles__option_t) const { return d_holder->fewerPreprocessingHoles; }
-#line 14 "../../../../../src/options/proof_options"
+#line 14 "../../../src/options/proof_options"
 template <> bool Options::wasSetByUser(options::fewerPreprocessingHoles__option_t) const { return d_holder->fewerPreprocessingHoles__setByUser__; }
-#line 17 "../../../../../src/options/proof_options"
+#line 17 "../../../src/options/proof_options"
 template <> const options::allowEmptyDependencies__option_t::type& Options::operator[](options::allowEmptyDependencies__option_t) const { return d_holder->allowEmptyDependencies; }
-#line 17 "../../../../../src/options/proof_options"
+#line 17 "../../../src/options/proof_options"
 template <> bool Options::wasSetByUser(options::allowEmptyDependencies__option_t) const { return d_holder->allowEmptyDependencies__setByUser__; }
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/proof_options"
+#line 8 "../../../src/options/proof_options"
 struct lfscLetification__option_t lfscLetification;
-#line 11 "../../../../../src/options/proof_options"
+#line 11 "../../../src/options/proof_options"
 struct aggressiveCoreMin__option_t aggressiveCoreMin;
-#line 14 "../../../../../src/options/proof_options"
+#line 14 "../../../src/options/proof_options"
 struct fewerPreprocessingHoles__option_t fewerPreprocessingHoles;
-#line 17 "../../../../../src/options/proof_options"
+#line 17 "../../../src/options/proof_options"
 struct allowEmptyDependencies__option_t allowEmptyDependencies;
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/proof_options.h b/src/options/proof_options.h
index c307c33..afbc49f 100644
--- a/src/options/proof_options.h
+++ b/src/options/proof_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -22,7 +22,7 @@
 #include "options/options.h"
 
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__PROOF__FOR_OPTION_HOLDER \
   lfscLetification__option_t::type lfscLetification; \
@@ -34,82 +34,82 @@
   allowEmptyDependencies__option_t::type allowEmptyDependencies; \
   bool allowEmptyDependencies__setByUser__;
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/proof_options"
+#line 8 "../../../src/options/proof_options"
 extern struct CVC4_PUBLIC lfscLetification__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } lfscLetification CVC4_PUBLIC;
-#line 11 "../../../../../src/options/proof_options"
+#line 11 "../../../src/options/proof_options"
 extern struct CVC4_PUBLIC aggressiveCoreMin__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } aggressiveCoreMin CVC4_PUBLIC;
-#line 14 "../../../../../src/options/proof_options"
+#line 14 "../../../src/options/proof_options"
 extern struct CVC4_PUBLIC fewerPreprocessingHoles__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } fewerPreprocessingHoles CVC4_PUBLIC;
-#line 17 "../../../../../src/options/proof_options"
+#line 17 "../../../src/options/proof_options"
 extern struct CVC4_PUBLIC allowEmptyDependencies__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } allowEmptyDependencies CVC4_PUBLIC;
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
-#line 8 "../../../../../src/options/proof_options"
+#line 8 "../../../src/options/proof_options"
 template <> const options::lfscLetification__option_t::type& Options::operator[](options::lfscLetification__option_t) const;
-#line 8 "../../../../../src/options/proof_options"
+#line 8 "../../../src/options/proof_options"
 template <> bool Options::wasSetByUser(options::lfscLetification__option_t) const;
-#line 8 "../../../../../src/options/proof_options"
+#line 8 "../../../src/options/proof_options"
 template <> void Options::assignBool(options::lfscLetification__option_t, std::string option, bool value);
-#line 11 "../../../../../src/options/proof_options"
+#line 11 "../../../src/options/proof_options"
 template <> const options::aggressiveCoreMin__option_t::type& Options::operator[](options::aggressiveCoreMin__option_t) const;
-#line 11 "../../../../../src/options/proof_options"
+#line 11 "../../../src/options/proof_options"
 template <> bool Options::wasSetByUser(options::aggressiveCoreMin__option_t) const;
-#line 11 "../../../../../src/options/proof_options"
+#line 11 "../../../src/options/proof_options"
 template <> void Options::assignBool(options::aggressiveCoreMin__option_t, std::string option, bool value);
-#line 14 "../../../../../src/options/proof_options"
+#line 14 "../../../src/options/proof_options"
 template <> void Options::set(options::fewerPreprocessingHoles__option_t, const options::fewerPreprocessingHoles__option_t::type& x);
-#line 14 "../../../../../src/options/proof_options"
+#line 14 "../../../src/options/proof_options"
 template <> const options::fewerPreprocessingHoles__option_t::type& Options::operator[](options::fewerPreprocessingHoles__option_t) const;
-#line 14 "../../../../../src/options/proof_options"
+#line 14 "../../../src/options/proof_options"
 template <> bool Options::wasSetByUser(options::fewerPreprocessingHoles__option_t) const;
-#line 14 "../../../../../src/options/proof_options"
+#line 14 "../../../src/options/proof_options"
 template <> void Options::assignBool(options::fewerPreprocessingHoles__option_t, std::string option, bool value);
-#line 17 "../../../../../src/options/proof_options"
+#line 17 "../../../src/options/proof_options"
 template <> const options::allowEmptyDependencies__option_t::type& Options::operator[](options::allowEmptyDependencies__option_t) const;
-#line 17 "../../../../../src/options/proof_options"
+#line 17 "../../../src/options/proof_options"
 template <> bool Options::wasSetByUser(options::allowEmptyDependencies__option_t) const;
-#line 17 "../../../../../src/options/proof_options"
+#line 17 "../../../src/options/proof_options"
 template <> void Options::assignBool(options::allowEmptyDependencies__option_t, std::string option, bool value);
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/proof_options"
+#line 8 "../../../src/options/proof_options"
 inline lfscLetification__option_t::type lfscLetification__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 8 "../../../../../src/options/proof_options"
+#line 8 "../../../src/options/proof_options"
 inline bool lfscLetification__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 11 "../../../../../src/options/proof_options"
+#line 11 "../../../src/options/proof_options"
 inline aggressiveCoreMin__option_t::type aggressiveCoreMin__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 11 "../../../../../src/options/proof_options"
+#line 11 "../../../src/options/proof_options"
 inline bool aggressiveCoreMin__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 14 "../../../../../src/options/proof_options"
+#line 14 "../../../src/options/proof_options"
 inline fewerPreprocessingHoles__option_t::type fewerPreprocessingHoles__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 14 "../../../../../src/options/proof_options"
+#line 14 "../../../src/options/proof_options"
 inline bool fewerPreprocessingHoles__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 14 "../../../../../src/options/proof_options"
+#line 14 "../../../src/options/proof_options"
 inline void fewerPreprocessingHoles__option_t::set(const fewerPreprocessingHoles__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 17 "../../../../../src/options/proof_options"
+#line 17 "../../../src/options/proof_options"
 inline allowEmptyDependencies__option_t::type allowEmptyDependencies__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 17 "../../../../../src/options/proof_options"
+#line 17 "../../../src/options/proof_options"
 inline bool allowEmptyDependencies__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/prop_options.cpp b/src/options/prop_options.cpp
index 98892a4..38b7111 100644
--- a/src/options/prop_options.cpp
+++ b/src/options/prop_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -19,76 +19,76 @@
 namespace CVC4 {
 
 
-#line 8 "../../../../../src/options/prop_options"
+#line 8 "../../../src/options/prop_options"
 template <> const options::satRandomFreq__option_t::type& Options::operator[](options::satRandomFreq__option_t) const { return d_holder->satRandomFreq; }
-#line 8 "../../../../../src/options/prop_options"
+#line 8 "../../../src/options/prop_options"
 template <> bool Options::wasSetByUser(options::satRandomFreq__option_t) const { return d_holder->satRandomFreq__setByUser__; }
-#line 10 "../../../../../src/options/prop_options"
+#line 10 "../../../src/options/prop_options"
 template <> void Options::set(options::satRandomSeed__option_t, const options::satRandomSeed__option_t::type& x) { d_holder->satRandomSeed = x; }
-#line 10 "../../../../../src/options/prop_options"
+#line 10 "../../../src/options/prop_options"
 template <> const options::satRandomSeed__option_t::type& Options::operator[](options::satRandomSeed__option_t) const { return d_holder->satRandomSeed; }
-#line 10 "../../../../../src/options/prop_options"
+#line 10 "../../../src/options/prop_options"
 template <> bool Options::wasSetByUser(options::satRandomSeed__option_t) const { return d_holder->satRandomSeed__setByUser__; }
-#line 13 "../../../../../src/options/prop_options"
+#line 13 "../../../src/options/prop_options"
 template <> void Options::set(options::satVarDecay__option_t, const options::satVarDecay__option_t::type& x) { d_holder->satVarDecay = x; }
-#line 13 "../../../../../src/options/prop_options"
+#line 13 "../../../src/options/prop_options"
 template <> const options::satVarDecay__option_t::type& Options::operator[](options::satVarDecay__option_t) const { return d_holder->satVarDecay; }
-#line 13 "../../../../../src/options/prop_options"
+#line 13 "../../../src/options/prop_options"
 template <> bool Options::wasSetByUser(options::satVarDecay__option_t) const { return d_holder->satVarDecay__setByUser__; }
-#line 15 "../../../../../src/options/prop_options"
+#line 15 "../../../src/options/prop_options"
 template <> void Options::set(options::satClauseDecay__option_t, const options::satClauseDecay__option_t::type& x) { d_holder->satClauseDecay = x; }
-#line 15 "../../../../../src/options/prop_options"
+#line 15 "../../../src/options/prop_options"
 template <> const options::satClauseDecay__option_t::type& Options::operator[](options::satClauseDecay__option_t) const { return d_holder->satClauseDecay; }
-#line 15 "../../../../../src/options/prop_options"
+#line 15 "../../../src/options/prop_options"
 template <> bool Options::wasSetByUser(options::satClauseDecay__option_t) const { return d_holder->satClauseDecay__setByUser__; }
-#line 17 "../../../../../src/options/prop_options"
+#line 17 "../../../src/options/prop_options"
 template <> const options::satRestartFirst__option_t::type& Options::operator[](options::satRestartFirst__option_t) const { return d_holder->satRestartFirst; }
-#line 17 "../../../../../src/options/prop_options"
+#line 17 "../../../src/options/prop_options"
 template <> bool Options::wasSetByUser(options::satRestartFirst__option_t) const { return d_holder->satRestartFirst__setByUser__; }
-#line 19 "../../../../../src/options/prop_options"
+#line 19 "../../../src/options/prop_options"
 template <> const options::satRestartInc__option_t::type& Options::operator[](options::satRestartInc__option_t) const { return d_holder->satRestartInc; }
-#line 19 "../../../../../src/options/prop_options"
+#line 19 "../../../src/options/prop_options"
 template <> bool Options::wasSetByUser(options::satRestartInc__option_t) const { return d_holder->satRestartInc__setByUser__; }
-#line 22 "../../../../../src/options/prop_options"
+#line 22 "../../../src/options/prop_options"
 template <> const options::sat_refine_conflicts__option_t::type& Options::operator[](options::sat_refine_conflicts__option_t) const { return d_holder->sat_refine_conflicts; }
-#line 22 "../../../../../src/options/prop_options"
+#line 22 "../../../src/options/prop_options"
 template <> bool Options::wasSetByUser(options::sat_refine_conflicts__option_t) const { return d_holder->sat_refine_conflicts__setByUser__; }
-#line 25 "../../../../../src/options/prop_options"
+#line 25 "../../../src/options/prop_options"
 template <> void Options::set(options::minisatUseElim__option_t, const options::minisatUseElim__option_t::type& x) { d_holder->minisatUseElim = x; }
-#line 25 "../../../../../src/options/prop_options"
+#line 25 "../../../src/options/prop_options"
 template <> const options::minisatUseElim__option_t::type& Options::operator[](options::minisatUseElim__option_t) const { return d_holder->minisatUseElim; }
-#line 25 "../../../../../src/options/prop_options"
+#line 25 "../../../src/options/prop_options"
 template <> bool Options::wasSetByUser(options::minisatUseElim__option_t) const { return d_holder->minisatUseElim__setByUser__; }
-#line 28 "../../../../../src/options/prop_options"
+#line 28 "../../../src/options/prop_options"
 template <> const options::minisatDumpDimacs__option_t::type& Options::operator[](options::minisatDumpDimacs__option_t) const { return d_holder->minisatDumpDimacs; }
-#line 28 "../../../../../src/options/prop_options"
+#line 28 "../../../src/options/prop_options"
 template <> bool Options::wasSetByUser(options::minisatDumpDimacs__option_t) const { return d_holder->minisatDumpDimacs__setByUser__; }
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/prop_options"
+#line 8 "../../../src/options/prop_options"
 struct satRandomFreq__option_t satRandomFreq;
-#line 10 "../../../../../src/options/prop_options"
+#line 10 "../../../src/options/prop_options"
 struct satRandomSeed__option_t satRandomSeed;
-#line 13 "../../../../../src/options/prop_options"
+#line 13 "../../../src/options/prop_options"
 struct satVarDecay__option_t satVarDecay;
-#line 15 "../../../../../src/options/prop_options"
+#line 15 "../../../src/options/prop_options"
 struct satClauseDecay__option_t satClauseDecay;
-#line 17 "../../../../../src/options/prop_options"
+#line 17 "../../../src/options/prop_options"
 struct satRestartFirst__option_t satRestartFirst;
-#line 19 "../../../../../src/options/prop_options"
+#line 19 "../../../src/options/prop_options"
 struct satRestartInc__option_t satRestartInc;
-#line 22 "../../../../../src/options/prop_options"
+#line 22 "../../../src/options/prop_options"
 struct sat_refine_conflicts__option_t sat_refine_conflicts;
-#line 25 "../../../../../src/options/prop_options"
+#line 25 "../../../src/options/prop_options"
 struct minisatUseElim__option_t minisatUseElim;
-#line 28 "../../../../../src/options/prop_options"
+#line 28 "../../../src/options/prop_options"
 struct minisatDumpDimacs__option_t minisatDumpDimacs;
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/prop_options.h b/src/options/prop_options.h
index 9457dd2..98bfd88 100644
--- a/src/options/prop_options.h
+++ b/src/options/prop_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -22,7 +22,7 @@
 #include "options/options.h"
 
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__PROP__FOR_OPTION_HOLDER \
   satRandomFreq__option_t::type satRandomFreq; \
@@ -44,159 +44,159 @@
   minisatDumpDimacs__option_t::type minisatDumpDimacs; \
   bool minisatDumpDimacs__setByUser__;
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/prop_options"
+#line 8 "../../../src/options/prop_options"
 extern struct CVC4_PUBLIC satRandomFreq__option_t { typedef double type; type operator()() const; bool wasSetByUser() const; } satRandomFreq CVC4_PUBLIC;
-#line 10 "../../../../../src/options/prop_options"
+#line 10 "../../../src/options/prop_options"
 extern struct CVC4_PUBLIC satRandomSeed__option_t { typedef uint32_t type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } satRandomSeed CVC4_PUBLIC;
-#line 13 "../../../../../src/options/prop_options"
+#line 13 "../../../src/options/prop_options"
 extern struct CVC4_PUBLIC satVarDecay__option_t { typedef double type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } satVarDecay CVC4_PUBLIC;
-#line 15 "../../../../../src/options/prop_options"
+#line 15 "../../../src/options/prop_options"
 extern struct CVC4_PUBLIC satClauseDecay__option_t { typedef double type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } satClauseDecay CVC4_PUBLIC;
-#line 17 "../../../../../src/options/prop_options"
+#line 17 "../../../src/options/prop_options"
 extern struct CVC4_PUBLIC satRestartFirst__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } satRestartFirst CVC4_PUBLIC;
-#line 19 "../../../../../src/options/prop_options"
+#line 19 "../../../src/options/prop_options"
 extern struct CVC4_PUBLIC satRestartInc__option_t { typedef double type; type operator()() const; bool wasSetByUser() const; } satRestartInc CVC4_PUBLIC;
-#line 22 "../../../../../src/options/prop_options"
+#line 22 "../../../src/options/prop_options"
 extern struct CVC4_PUBLIC sat_refine_conflicts__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sat_refine_conflicts CVC4_PUBLIC;
-#line 25 "../../../../../src/options/prop_options"
+#line 25 "../../../src/options/prop_options"
 extern struct CVC4_PUBLIC minisatUseElim__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } minisatUseElim CVC4_PUBLIC;
-#line 28 "../../../../../src/options/prop_options"
+#line 28 "../../../src/options/prop_options"
 extern struct CVC4_PUBLIC minisatDumpDimacs__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } minisatDumpDimacs CVC4_PUBLIC;
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
-#line 8 "../../../../../src/options/prop_options"
+#line 8 "../../../src/options/prop_options"
 template <> const options::satRandomFreq__option_t::type& Options::operator[](options::satRandomFreq__option_t) const;
-#line 8 "../../../../../src/options/prop_options"
+#line 8 "../../../src/options/prop_options"
 template <> bool Options::wasSetByUser(options::satRandomFreq__option_t) const;
-#line 8 "../../../../../src/options/prop_options"
+#line 8 "../../../src/options/prop_options"
 template <> void Options::assign(options::satRandomFreq__option_t, std::string option, std::string value);
-#line 10 "../../../../../src/options/prop_options"
+#line 10 "../../../src/options/prop_options"
 template <> void Options::set(options::satRandomSeed__option_t, const options::satRandomSeed__option_t::type& x);
-#line 10 "../../../../../src/options/prop_options"
+#line 10 "../../../src/options/prop_options"
 template <> const options::satRandomSeed__option_t::type& Options::operator[](options::satRandomSeed__option_t) const;
-#line 10 "../../../../../src/options/prop_options"
+#line 10 "../../../src/options/prop_options"
 template <> bool Options::wasSetByUser(options::satRandomSeed__option_t) const;
-#line 10 "../../../../../src/options/prop_options"
+#line 10 "../../../src/options/prop_options"
 template <> void Options::assign(options::satRandomSeed__option_t, std::string option, std::string value);
-#line 13 "../../../../../src/options/prop_options"
+#line 13 "../../../src/options/prop_options"
 template <> void Options::set(options::satVarDecay__option_t, const options::satVarDecay__option_t::type& x);
-#line 13 "../../../../../src/options/prop_options"
+#line 13 "../../../src/options/prop_options"
 template <> const options::satVarDecay__option_t::type& Options::operator[](options::satVarDecay__option_t) const;
-#line 13 "../../../../../src/options/prop_options"
+#line 13 "../../../src/options/prop_options"
 template <> bool Options::wasSetByUser(options::satVarDecay__option_t) const;
-#line 13 "../../../../../src/options/prop_options"
+#line 13 "../../../src/options/prop_options"
 template <> void Options::assign(options::satVarDecay__option_t, std::string option, std::string value);
-#line 15 "../../../../../src/options/prop_options"
+#line 15 "../../../src/options/prop_options"
 template <> void Options::set(options::satClauseDecay__option_t, const options::satClauseDecay__option_t::type& x);
-#line 15 "../../../../../src/options/prop_options"
+#line 15 "../../../src/options/prop_options"
 template <> const options::satClauseDecay__option_t::type& Options::operator[](options::satClauseDecay__option_t) const;
-#line 15 "../../../../../src/options/prop_options"
+#line 15 "../../../src/options/prop_options"
 template <> bool Options::wasSetByUser(options::satClauseDecay__option_t) const;
-#line 15 "../../../../../src/options/prop_options"
+#line 15 "../../../src/options/prop_options"
 template <> void Options::assign(options::satClauseDecay__option_t, std::string option, std::string value);
-#line 17 "../../../../../src/options/prop_options"
+#line 17 "../../../src/options/prop_options"
 template <> const options::satRestartFirst__option_t::type& Options::operator[](options::satRestartFirst__option_t) const;
-#line 17 "../../../../../src/options/prop_options"
+#line 17 "../../../src/options/prop_options"
 template <> bool Options::wasSetByUser(options::satRestartFirst__option_t) const;
-#line 17 "../../../../../src/options/prop_options"
+#line 17 "../../../src/options/prop_options"
 template <> void Options::assign(options::satRestartFirst__option_t, std::string option, std::string value);
-#line 19 "../../../../../src/options/prop_options"
+#line 19 "../../../src/options/prop_options"
 template <> const options::satRestartInc__option_t::type& Options::operator[](options::satRestartInc__option_t) const;
-#line 19 "../../../../../src/options/prop_options"
+#line 19 "../../../src/options/prop_options"
 template <> bool Options::wasSetByUser(options::satRestartInc__option_t) const;
-#line 19 "../../../../../src/options/prop_options"
+#line 19 "../../../src/options/prop_options"
 template <> void Options::assign(options::satRestartInc__option_t, std::string option, std::string value);
-#line 22 "../../../../../src/options/prop_options"
+#line 22 "../../../src/options/prop_options"
 template <> const options::sat_refine_conflicts__option_t::type& Options::operator[](options::sat_refine_conflicts__option_t) const;
-#line 22 "../../../../../src/options/prop_options"
+#line 22 "../../../src/options/prop_options"
 template <> bool Options::wasSetByUser(options::sat_refine_conflicts__option_t) const;
-#line 22 "../../../../../src/options/prop_options"
+#line 22 "../../../src/options/prop_options"
 template <> void Options::assignBool(options::sat_refine_conflicts__option_t, std::string option, bool value);
-#line 25 "../../../../../src/options/prop_options"
+#line 25 "../../../src/options/prop_options"
 template <> void Options::set(options::minisatUseElim__option_t, const options::minisatUseElim__option_t::type& x);
-#line 25 "../../../../../src/options/prop_options"
+#line 25 "../../../src/options/prop_options"
 template <> const options::minisatUseElim__option_t::type& Options::operator[](options::minisatUseElim__option_t) const;
-#line 25 "../../../../../src/options/prop_options"
+#line 25 "../../../src/options/prop_options"
 template <> bool Options::wasSetByUser(options::minisatUseElim__option_t) const;
-#line 25 "../../../../../src/options/prop_options"
+#line 25 "../../../src/options/prop_options"
 template <> void Options::assignBool(options::minisatUseElim__option_t, std::string option, bool value);
-#line 28 "../../../../../src/options/prop_options"
+#line 28 "../../../src/options/prop_options"
 template <> const options::minisatDumpDimacs__option_t::type& Options::operator[](options::minisatDumpDimacs__option_t) const;
-#line 28 "../../../../../src/options/prop_options"
+#line 28 "../../../src/options/prop_options"
 template <> bool Options::wasSetByUser(options::minisatDumpDimacs__option_t) const;
-#line 28 "../../../../../src/options/prop_options"
+#line 28 "../../../src/options/prop_options"
 template <> void Options::assignBool(options::minisatDumpDimacs__option_t, std::string option, bool value);
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/prop_options"
+#line 8 "../../../src/options/prop_options"
 inline satRandomFreq__option_t::type satRandomFreq__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 8 "../../../../../src/options/prop_options"
+#line 8 "../../../src/options/prop_options"
 inline bool satRandomFreq__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 10 "../../../../../src/options/prop_options"
+#line 10 "../../../src/options/prop_options"
 inline satRandomSeed__option_t::type satRandomSeed__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 10 "../../../../../src/options/prop_options"
+#line 10 "../../../src/options/prop_options"
 inline bool satRandomSeed__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 10 "../../../../../src/options/prop_options"
+#line 10 "../../../src/options/prop_options"
 inline void satRandomSeed__option_t::set(const satRandomSeed__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 13 "../../../../../src/options/prop_options"
+#line 13 "../../../src/options/prop_options"
 inline satVarDecay__option_t::type satVarDecay__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 13 "../../../../../src/options/prop_options"
+#line 13 "../../../src/options/prop_options"
 inline bool satVarDecay__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 13 "../../../../../src/options/prop_options"
+#line 13 "../../../src/options/prop_options"
 inline void satVarDecay__option_t::set(const satVarDecay__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 15 "../../../../../src/options/prop_options"
+#line 15 "../../../src/options/prop_options"
 inline satClauseDecay__option_t::type satClauseDecay__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 15 "../../../../../src/options/prop_options"
+#line 15 "../../../src/options/prop_options"
 inline bool satClauseDecay__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 15 "../../../../../src/options/prop_options"
+#line 15 "../../../src/options/prop_options"
 inline void satClauseDecay__option_t::set(const satClauseDecay__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 17 "../../../../../src/options/prop_options"
+#line 17 "../../../src/options/prop_options"
 inline satRestartFirst__option_t::type satRestartFirst__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 17 "../../../../../src/options/prop_options"
+#line 17 "../../../src/options/prop_options"
 inline bool satRestartFirst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 19 "../../../../../src/options/prop_options"
+#line 19 "../../../src/options/prop_options"
 inline satRestartInc__option_t::type satRestartInc__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 19 "../../../../../src/options/prop_options"
+#line 19 "../../../src/options/prop_options"
 inline bool satRestartInc__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 22 "../../../../../src/options/prop_options"
+#line 22 "../../../src/options/prop_options"
 inline sat_refine_conflicts__option_t::type sat_refine_conflicts__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 22 "../../../../../src/options/prop_options"
+#line 22 "../../../src/options/prop_options"
 inline bool sat_refine_conflicts__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 25 "../../../../../src/options/prop_options"
+#line 25 "../../../src/options/prop_options"
 inline minisatUseElim__option_t::type minisatUseElim__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 25 "../../../../../src/options/prop_options"
+#line 25 "../../../src/options/prop_options"
 inline bool minisatUseElim__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 25 "../../../../../src/options/prop_options"
+#line 25 "../../../src/options/prop_options"
 inline void minisatUseElim__option_t::set(const minisatUseElim__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 28 "../../../../../src/options/prop_options"
+#line 28 "../../../src/options/prop_options"
 inline minisatDumpDimacs__option_t::type minisatDumpDimacs__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 28 "../../../../../src/options/prop_options"
+#line 28 "../../../src/options/prop_options"
 inline bool minisatDumpDimacs__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/quantifiers_modes.cpp b/src/options/quantifiers_modes.cpp
index e2cd78d..0b89260 100644
--- a/src/options/quantifiers_modes.cpp
+++ b/src/options/quantifiers_modes.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/quantifiers_modes.h b/src/options/quantifiers_modes.h
index e4c539e..18c3bfe 100644
--- a/src/options/quantifiers_modes.h
+++ b/src/options/quantifiers_modes.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/quantifiers_options b/src/options/quantifiers_options
index cf8fca2..f15723e 100644
--- a/src/options/quantifiers_options
+++ b/src/options/quantifiers_options
@@ -54,7 +54,7 @@ option aggressiveMiniscopeQuant --ag-miniscope-quant bool :default false
  perform aggressive miniscoping for quantifiers
 option elimTautQuant --elim-taut-quant bool :default true
  eliminate tautological disjuncts of quantified formulas
-option elimExtArithQuant --elim-ext-arith-quant bool :default true
+option elimExtArithQuant --elim-ext-arith-quant bool :read-write :default true
  eliminate extended arithmetic symbols in quantified formulas
 option condRewriteQuant --cond-rewrite-quant bool :default true
  conditional rewriting of quantified formulas
@@ -91,6 +91,10 @@ option multiTriggerWhenSingle --multi-trigger-when-single bool :default false
  select multi triggers when single triggers exist
 option multiTriggerPriority --multi-trigger-priority bool :default false
  only try multi triggers if single triggers give no instantiations
+option multiTriggerCache --multi-trigger-cache bool :default false
+ caching version of multi triggers
+option multiTriggerLinear --multi-trigger-linear bool :default true
+ implementation of multi triggers where maximum number of instantiations is linear wrt number of ground terms
 option triggerSelMode --trigger-sel CVC4::theory::quantifiers::TriggerSelMode :default CVC4::theory::quantifiers::TRIGGER_SEL_MIN :read-write :include "options/quantifiers_modes.h" :handler  stringToTriggerSelMode
  selection mode for triggers
 option triggerActiveSelMode --trigger-active-sel CVC4::theory::quantifiers::TriggerActiveSelMode :default CVC4::theory::quantifiers::TRIGGER_ACTIVE_SEL_ALL :read-write :include "options/quantifiers_modes.h" :handler stringToTriggerActiveSelMode
@@ -108,6 +112,8 @@ option instWhenPhase --inst-when-phase=N int :read-write :default 2 :read-write
  instantiation rounds quantifiers takes (>=1) before allowing theory combination to happen
 option instWhenTcFirst --inst-when-tc-first bool :default true :read-write
  allow theory combination to happen once initially, before quantifier strategies are run
+option quantModelEe --quant-model-ee bool :default false
+ use equality engine of model for last call effort
  
 option instMaxLevel --inst-max-level=N int :read-write :default -1
  maximum inst level of terms used to instantiate quantified formulas with (-1 == no limit, default)
@@ -187,6 +193,8 @@ option qcfVoExp --qcf-vo-exp bool :default false
 
 option instNoEntail --inst-no-entail bool :read-write :default true
  do not consider instances of quantified formulas that are currently entailed
+option instNoModelTrue --inst-no-model-true bool :read-write :default false
+ do not consider instances of quantified formulas that are currently true in model, if it is available
 
 option instPropagate --inst-prop bool :read-write :default false
  internal propagation for instantiations for selecting relevant instances
@@ -269,9 +277,13 @@ option sygusNormalFormGlobalContent --sygus-nf-sym-content bool :default true
   
 option sygusInvTemplMode --sygus-inv-templ=MODE CVC4::theory::quantifiers::SygusInvTemplMode :default CVC4::theory::quantifiers::SYGUS_INV_TEMPL_MODE_NONE :include "options/quantifiers_modes.h" :handler stringToSygusInvTemplMode
   template mode for sygus invariant synthesis
+option sygusUnifCondSol --sygus-unif-csol bool :default false
+  enable approach which unifies conditional solutions
 
 option sygusDirectEval --sygus-direct-eval bool :default true
   direct unfolding of evaluation functions
+option sygusCRefEval --sygus-cref-eval bool :default false
+  direct evaluation of refinement lemmas for conflict analysis
   
 # approach applied to general quantified formulas
 option cbqi --cbqi bool :read-write :default false
@@ -302,7 +314,7 @@ option cbqiLitDepend --cbqi-lit-dep bool :default true
   dependency lemmas for quantifier alternation in counterexample-based quantifier instantiation
 option cbqiInnermost --cbqi-innermost bool :read-write :default true
  only process innermost quantified formulas in counterexample-based quantifier instantiation
-option cbqiNestedQE --cbqi-nested-qe bool :default false
+option cbqiNestedQE --cbqi-nested-qe bool :read-write :default false
  process nested quantified formulas with quantifier elimination in counterexample-based quantifier instantiation
  
 option quantEpr --quant-epr bool :default false :read-write
diff --git a/src/options/quantifiers_options.cpp b/src/options/quantifiers_options.cpp
index 421e305..c801275 100644
--- a/src/options/quantifiers_options.cpp
+++ b/src/options/quantifiers_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -19,950 +19,992 @@
 namespace CVC4 {
 
 
-#line 13 "../../../../../src/options/quantifiers_options"
+#line 13 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::miniscopeQuant__option_t, const options::miniscopeQuant__option_t::type& x) { d_holder->miniscopeQuant = x; }
-#line 13 "../../../../../src/options/quantifiers_options"
+#line 13 "../../../src/options/quantifiers_options"
 template <> const options::miniscopeQuant__option_t::type& Options::operator[](options::miniscopeQuant__option_t) const { return d_holder->miniscopeQuant; }
-#line 13 "../../../../../src/options/quantifiers_options"
+#line 13 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::miniscopeQuant__option_t) const { return d_holder->miniscopeQuant__setByUser__; }
-#line 18 "../../../../../src/options/quantifiers_options"
+#line 18 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::miniscopeQuantFreeVar__option_t, const options::miniscopeQuantFreeVar__option_t::type& x) { d_holder->miniscopeQuantFreeVar = x; }
-#line 18 "../../../../../src/options/quantifiers_options"
+#line 18 "../../../src/options/quantifiers_options"
 template <> const options::miniscopeQuantFreeVar__option_t::type& Options::operator[](options::miniscopeQuantFreeVar__option_t) const { return d_holder->miniscopeQuantFreeVar; }
-#line 18 "../../../../../src/options/quantifiers_options"
+#line 18 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::miniscopeQuantFreeVar__option_t) const { return d_holder->miniscopeQuantFreeVar__setByUser__; }
-#line 20 "../../../../../src/options/quantifiers_options"
+#line 20 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::quantSplit__option_t, const options::quantSplit__option_t::type& x) { d_holder->quantSplit = x; }
-#line 20 "../../../../../src/options/quantifiers_options"
+#line 20 "../../../src/options/quantifiers_options"
 template <> const options::quantSplit__option_t::type& Options::operator[](options::quantSplit__option_t) const { return d_holder->quantSplit; }
-#line 20 "../../../../../src/options/quantifiers_options"
+#line 20 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantSplit__option_t) const { return d_holder->quantSplit__setByUser__; }
-#line 22 "../../../../../src/options/quantifiers_options"
+#line 22 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::prenexQuant__option_t, const options::prenexQuant__option_t::type& x) { d_holder->prenexQuant = x; }
-#line 22 "../../../../../src/options/quantifiers_options"
+#line 22 "../../../src/options/quantifiers_options"
 template <> const options::prenexQuant__option_t::type& Options::operator[](options::prenexQuant__option_t) const { return d_holder->prenexQuant; }
-#line 22 "../../../../../src/options/quantifiers_options"
+#line 22 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::prenexQuant__option_t) const { return d_holder->prenexQuant__setByUser__; }
-#line 24 "../../../../../src/options/quantifiers_options"
+#line 24 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::prenexQuantUser__option_t, const options::prenexQuantUser__option_t::type& x) { d_holder->prenexQuantUser = x; }
-#line 24 "../../../../../src/options/quantifiers_options"
+#line 24 "../../../src/options/quantifiers_options"
 template <> const options::prenexQuantUser__option_t::type& Options::operator[](options::prenexQuantUser__option_t) const { return d_holder->prenexQuantUser; }
-#line 24 "../../../../../src/options/quantifiers_options"
+#line 24 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::prenexQuantUser__option_t) const { return d_holder->prenexQuantUser__setByUser__; }
-#line 29 "../../../../../src/options/quantifiers_options"
+#line 29 "../../../src/options/quantifiers_options"
 template <> const options::varElimQuant__option_t::type& Options::operator[](options::varElimQuant__option_t) const { return d_holder->varElimQuant; }
-#line 29 "../../../../../src/options/quantifiers_options"
+#line 29 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::varElimQuant__option_t) const { return d_holder->varElimQuant__setByUser__; }
-#line 31 "../../../../../src/options/quantifiers_options"
+#line 31 "../../../src/options/quantifiers_options"
 template <> const options::varIneqElimQuant__option_t::type& Options::operator[](options::varIneqElimQuant__option_t) const { return d_holder->varIneqElimQuant; }
-#line 31 "../../../../../src/options/quantifiers_options"
+#line 31 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::varIneqElimQuant__option_t) const { return d_holder->varIneqElimQuant__setByUser__; }
-#line 33 "../../../../../src/options/quantifiers_options"
+#line 33 "../../../src/options/quantifiers_options"
 template <> const options::dtVarExpandQuant__option_t::type& Options::operator[](options::dtVarExpandQuant__option_t) const { return d_holder->dtVarExpandQuant; }
-#line 33 "../../../../../src/options/quantifiers_options"
+#line 33 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::dtVarExpandQuant__option_t) const { return d_holder->dtVarExpandQuant__setByUser__; }
-#line 36 "../../../../../src/options/quantifiers_options"
+#line 36 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::iteLiftQuant__option_t, const options::iteLiftQuant__option_t::type& x) { d_holder->iteLiftQuant = x; }
-#line 36 "../../../../../src/options/quantifiers_options"
+#line 36 "../../../src/options/quantifiers_options"
 template <> const options::iteLiftQuant__option_t::type& Options::operator[](options::iteLiftQuant__option_t) const { return d_holder->iteLiftQuant; }
-#line 36 "../../../../../src/options/quantifiers_options"
+#line 36 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::iteLiftQuant__option_t) const { return d_holder->iteLiftQuant__setByUser__; }
-#line 38 "../../../../../src/options/quantifiers_options"
+#line 38 "../../../src/options/quantifiers_options"
 template <> const options::condVarSplitQuant__option_t::type& Options::operator[](options::condVarSplitQuant__option_t) const { return d_holder->condVarSplitQuant; }
-#line 38 "../../../../../src/options/quantifiers_options"
+#line 38 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::condVarSplitQuant__option_t) const { return d_holder->condVarSplitQuant__setByUser__; }
-#line 40 "../../../../../src/options/quantifiers_options"
+#line 40 "../../../src/options/quantifiers_options"
 template <> const options::condVarSplitQuantAgg__option_t::type& Options::operator[](options::condVarSplitQuantAgg__option_t) const { return d_holder->condVarSplitQuantAgg; }
-#line 40 "../../../../../src/options/quantifiers_options"
+#line 40 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::condVarSplitQuantAgg__option_t) const { return d_holder->condVarSplitQuantAgg__setByUser__; }
-#line 42 "../../../../../src/options/quantifiers_options"
+#line 42 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::iteDtTesterSplitQuant__option_t, const options::iteDtTesterSplitQuant__option_t::type& x) { d_holder->iteDtTesterSplitQuant = x; }
-#line 42 "../../../../../src/options/quantifiers_options"
+#line 42 "../../../src/options/quantifiers_options"
 template <> const options::iteDtTesterSplitQuant__option_t::type& Options::operator[](options::iteDtTesterSplitQuant__option_t) const { return d_holder->iteDtTesterSplitQuant; }
-#line 42 "../../../../../src/options/quantifiers_options"
+#line 42 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::iteDtTesterSplitQuant__option_t) const { return d_holder->iteDtTesterSplitQuant__setByUser__; }
-#line 47 "../../../../../src/options/quantifiers_options"
+#line 47 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::preSkolemQuant__option_t, const options::preSkolemQuant__option_t::type& x) { d_holder->preSkolemQuant = x; }
-#line 47 "../../../../../src/options/quantifiers_options"
+#line 47 "../../../src/options/quantifiers_options"
 template <> const options::preSkolemQuant__option_t::type& Options::operator[](options::preSkolemQuant__option_t) const { return d_holder->preSkolemQuant; }
-#line 47 "../../../../../src/options/quantifiers_options"
+#line 47 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::preSkolemQuant__option_t) const { return d_holder->preSkolemQuant__setByUser__; }
-#line 49 "../../../../../src/options/quantifiers_options"
+#line 49 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::preSkolemQuantNested__option_t, const options::preSkolemQuantNested__option_t::type& x) { d_holder->preSkolemQuantNested = x; }
-#line 49 "../../../../../src/options/quantifiers_options"
+#line 49 "../../../src/options/quantifiers_options"
 template <> const options::preSkolemQuantNested__option_t::type& Options::operator[](options::preSkolemQuantNested__option_t) const { return d_holder->preSkolemQuantNested; }
-#line 49 "../../../../../src/options/quantifiers_options"
+#line 49 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::preSkolemQuantNested__option_t) const { return d_holder->preSkolemQuantNested__setByUser__; }
-#line 51 "../../../../../src/options/quantifiers_options"
+#line 51 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::preSkolemQuantAgg__option_t, const options::preSkolemQuantAgg__option_t::type& x) { d_holder->preSkolemQuantAgg = x; }
-#line 51 "../../../../../src/options/quantifiers_options"
+#line 51 "../../../src/options/quantifiers_options"
 template <> const options::preSkolemQuantAgg__option_t::type& Options::operator[](options::preSkolemQuantAgg__option_t) const { return d_holder->preSkolemQuantAgg; }
-#line 51 "../../../../../src/options/quantifiers_options"
+#line 51 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::preSkolemQuantAgg__option_t) const { return d_holder->preSkolemQuantAgg__setByUser__; }
-#line 53 "../../../../../src/options/quantifiers_options"
+#line 53 "../../../src/options/quantifiers_options"
 template <> const options::aggressiveMiniscopeQuant__option_t::type& Options::operator[](options::aggressiveMiniscopeQuant__option_t) const { return d_holder->aggressiveMiniscopeQuant; }
-#line 53 "../../../../../src/options/quantifiers_options"
+#line 53 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::aggressiveMiniscopeQuant__option_t) const { return d_holder->aggressiveMiniscopeQuant__setByUser__; }
-#line 55 "../../../../../src/options/quantifiers_options"
+#line 55 "../../../src/options/quantifiers_options"
 template <> const options::elimTautQuant__option_t::type& Options::operator[](options::elimTautQuant__option_t) const { return d_holder->elimTautQuant; }
-#line 55 "../../../../../src/options/quantifiers_options"
+#line 55 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::elimTautQuant__option_t) const { return d_holder->elimTautQuant__setByUser__; }
-#line 57 "../../../../../src/options/quantifiers_options"
+#line 57 "../../../src/options/quantifiers_options"
+template <> void Options::set(options::elimExtArithQuant__option_t, const options::elimExtArithQuant__option_t::type& x) { d_holder->elimExtArithQuant = x; }
+#line 57 "../../../src/options/quantifiers_options"
 template <> const options::elimExtArithQuant__option_t::type& Options::operator[](options::elimExtArithQuant__option_t) const { return d_holder->elimExtArithQuant; }
-#line 57 "../../../../../src/options/quantifiers_options"
+#line 57 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::elimExtArithQuant__option_t) const { return d_holder->elimExtArithQuant__setByUser__; }
-#line 59 "../../../../../src/options/quantifiers_options"
+#line 59 "../../../src/options/quantifiers_options"
 template <> const options::condRewriteQuant__option_t::type& Options::operator[](options::condRewriteQuant__option_t) const { return d_holder->condRewriteQuant; }
-#line 59 "../../../../../src/options/quantifiers_options"
+#line 59 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::condRewriteQuant__option_t) const { return d_holder->condRewriteQuant__setByUser__; }
-#line 64 "../../../../../src/options/quantifiers_options"
+#line 64 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::eMatching__option_t, const options::eMatching__option_t::type& x) { d_holder->eMatching = x; }
-#line 64 "../../../../../src/options/quantifiers_options"
+#line 64 "../../../src/options/quantifiers_options"
 template <> const options::eMatching__option_t::type& Options::operator[](options::eMatching__option_t) const { return d_holder->eMatching; }
-#line 64 "../../../../../src/options/quantifiers_options"
+#line 64 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::eMatching__option_t) const { return d_holder->eMatching__setByUser__; }
-#line 67 "../../../../../src/options/quantifiers_options"
+#line 67 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::termDbMode__option_t, const options::termDbMode__option_t::type& x) { d_holder->termDbMode = x; }
-#line 67 "../../../../../src/options/quantifiers_options"
+#line 67 "../../../src/options/quantifiers_options"
 template <> const options::termDbMode__option_t::type& Options::operator[](options::termDbMode__option_t) const { return d_holder->termDbMode; }
-#line 67 "../../../../../src/options/quantifiers_options"
+#line 67 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::termDbMode__option_t) const { return d_holder->termDbMode__setByUser__; }
-#line 69 "../../../../../src/options/quantifiers_options"
+#line 69 "../../../src/options/quantifiers_options"
 template <> const options::registerQuantBodyTerms__option_t::type& Options::operator[](options::registerQuantBodyTerms__option_t) const { return d_holder->registerQuantBodyTerms; }
-#line 69 "../../../../../src/options/quantifiers_options"
+#line 69 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::registerQuantBodyTerms__option_t) const { return d_holder->registerQuantBodyTerms__setByUser__; }
-#line 71 "../../../../../src/options/quantifiers_options"
+#line 71 "../../../src/options/quantifiers_options"
 template <> const options::inferArithTriggerEq__option_t::type& Options::operator[](options::inferArithTriggerEq__option_t) const { return d_holder->inferArithTriggerEq; }
-#line 71 "../../../../../src/options/quantifiers_options"
+#line 71 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::inferArithTriggerEq__option_t) const { return d_holder->inferArithTriggerEq__setByUser__; }
-#line 73 "../../../../../src/options/quantifiers_options"
+#line 73 "../../../src/options/quantifiers_options"
 template <> const options::inferArithTriggerEqExp__option_t::type& Options::operator[](options::inferArithTriggerEqExp__option_t) const { return d_holder->inferArithTriggerEqExp; }
-#line 73 "../../../../../src/options/quantifiers_options"
+#line 73 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::inferArithTriggerEqExp__option_t) const { return d_holder->inferArithTriggerEqExp__setByUser__; }
-#line 76 "../../../../../src/options/quantifiers_options"
+#line 76 "../../../src/options/quantifiers_options"
 template <> const options::strictTriggers__option_t::type& Options::operator[](options::strictTriggers__option_t) const { return d_holder->strictTriggers; }
-#line 76 "../../../../../src/options/quantifiers_options"
+#line 76 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::strictTriggers__option_t) const { return d_holder->strictTriggers__setByUser__; }
-#line 78 "../../../../../src/options/quantifiers_options"
+#line 78 "../../../src/options/quantifiers_options"
 template <> const options::relevantTriggers__option_t::type& Options::operator[](options::relevantTriggers__option_t) const { return d_holder->relevantTriggers; }
-#line 78 "../../../../../src/options/quantifiers_options"
+#line 78 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::relevantTriggers__option_t) const { return d_holder->relevantTriggers__setByUser__; }
-#line 80 "../../../../../src/options/quantifiers_options"
+#line 80 "../../../src/options/quantifiers_options"
 template <> const options::relationalTriggers__option_t::type& Options::operator[](options::relationalTriggers__option_t) const { return d_holder->relationalTriggers; }
-#line 80 "../../../../../src/options/quantifiers_options"
+#line 80 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::relationalTriggers__option_t) const { return d_holder->relationalTriggers__setByUser__; }
-#line 82 "../../../../../src/options/quantifiers_options"
+#line 82 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::purifyTriggers__option_t, const options::purifyTriggers__option_t::type& x) { d_holder->purifyTriggers = x; }
-#line 82 "../../../../../src/options/quantifiers_options"
+#line 82 "../../../src/options/quantifiers_options"
 template <> const options::purifyTriggers__option_t::type& Options::operator[](options::purifyTriggers__option_t) const { return d_holder->purifyTriggers; }
-#line 82 "../../../../../src/options/quantifiers_options"
+#line 82 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::purifyTriggers__option_t) const { return d_holder->purifyTriggers__setByUser__; }
-#line 84 "../../../../../src/options/quantifiers_options"
+#line 84 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::purifyDtTriggers__option_t, const options::purifyDtTriggers__option_t::type& x) { d_holder->purifyDtTriggers = x; }
-#line 84 "../../../../../src/options/quantifiers_options"
+#line 84 "../../../src/options/quantifiers_options"
 template <> const options::purifyDtTriggers__option_t::type& Options::operator[](options::purifyDtTriggers__option_t) const { return d_holder->purifyDtTriggers; }
-#line 84 "../../../../../src/options/quantifiers_options"
+#line 84 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::purifyDtTriggers__option_t) const { return d_holder->purifyDtTriggers__setByUser__; }
-#line 86 "../../../../../src/options/quantifiers_options"
+#line 86 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::pureThTriggers__option_t, const options::pureThTriggers__option_t::type& x) { d_holder->pureThTriggers = x; }
-#line 86 "../../../../../src/options/quantifiers_options"
+#line 86 "../../../src/options/quantifiers_options"
 template <> const options::pureThTriggers__option_t::type& Options::operator[](options::pureThTriggers__option_t) const { return d_holder->pureThTriggers; }
-#line 86 "../../../../../src/options/quantifiers_options"
+#line 86 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::pureThTriggers__option_t) const { return d_holder->pureThTriggers__setByUser__; }
-#line 88 "../../../../../src/options/quantifiers_options"
+#line 88 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::partialTriggers__option_t, const options::partialTriggers__option_t::type& x) { d_holder->partialTriggers = x; }
-#line 88 "../../../../../src/options/quantifiers_options"
+#line 88 "../../../src/options/quantifiers_options"
 template <> const options::partialTriggers__option_t::type& Options::operator[](options::partialTriggers__option_t) const { return d_holder->partialTriggers; }
-#line 88 "../../../../../src/options/quantifiers_options"
+#line 88 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::partialTriggers__option_t) const { return d_holder->partialTriggers__setByUser__; }
-#line 90 "../../../../../src/options/quantifiers_options"
+#line 90 "../../../src/options/quantifiers_options"
 template <> const options::multiTriggerWhenSingle__option_t::type& Options::operator[](options::multiTriggerWhenSingle__option_t) const { return d_holder->multiTriggerWhenSingle; }
-#line 90 "../../../../../src/options/quantifiers_options"
+#line 90 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::multiTriggerWhenSingle__option_t) const { return d_holder->multiTriggerWhenSingle__setByUser__; }
-#line 92 "../../../../../src/options/quantifiers_options"
+#line 92 "../../../src/options/quantifiers_options"
 template <> const options::multiTriggerPriority__option_t::type& Options::operator[](options::multiTriggerPriority__option_t) const { return d_holder->multiTriggerPriority; }
-#line 92 "../../../../../src/options/quantifiers_options"
+#line 92 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::multiTriggerPriority__option_t) const { return d_holder->multiTriggerPriority__setByUser__; }
-#line 94 "../../../../../src/options/quantifiers_options"
+#line 94 "../../../src/options/quantifiers_options"
+template <> const options::multiTriggerCache__option_t::type& Options::operator[](options::multiTriggerCache__option_t) const { return d_holder->multiTriggerCache; }
+#line 94 "../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::multiTriggerCache__option_t) const { return d_holder->multiTriggerCache__setByUser__; }
+#line 96 "../../../src/options/quantifiers_options"
+template <> const options::multiTriggerLinear__option_t::type& Options::operator[](options::multiTriggerLinear__option_t) const { return d_holder->multiTriggerLinear; }
+#line 96 "../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::multiTriggerLinear__option_t) const { return d_holder->multiTriggerLinear__setByUser__; }
+#line 98 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::triggerSelMode__option_t, const options::triggerSelMode__option_t::type& x) { d_holder->triggerSelMode = x; }
-#line 94 "../../../../../src/options/quantifiers_options"
+#line 98 "../../../src/options/quantifiers_options"
 template <> const options::triggerSelMode__option_t::type& Options::operator[](options::triggerSelMode__option_t) const { return d_holder->triggerSelMode; }
-#line 94 "../../../../../src/options/quantifiers_options"
+#line 98 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::triggerSelMode__option_t) const { return d_holder->triggerSelMode__setByUser__; }
-#line 96 "../../../../../src/options/quantifiers_options"
+#line 100 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::triggerActiveSelMode__option_t, const options::triggerActiveSelMode__option_t::type& x) { d_holder->triggerActiveSelMode = x; }
-#line 96 "../../../../../src/options/quantifiers_options"
+#line 100 "../../../src/options/quantifiers_options"
 template <> const options::triggerActiveSelMode__option_t::type& Options::operator[](options::triggerActiveSelMode__option_t) const { return d_holder->triggerActiveSelMode; }
-#line 96 "../../../../../src/options/quantifiers_options"
+#line 100 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::triggerActiveSelMode__option_t) const { return d_holder->triggerActiveSelMode__setByUser__; }
-#line 98 "../../../../../src/options/quantifiers_options"
+#line 102 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::userPatternsQuant__option_t, const options::userPatternsQuant__option_t::type& x) { d_holder->userPatternsQuant = x; }
-#line 98 "../../../../../src/options/quantifiers_options"
+#line 102 "../../../src/options/quantifiers_options"
 template <> const options::userPatternsQuant__option_t::type& Options::operator[](options::userPatternsQuant__option_t) const { return d_holder->userPatternsQuant; }
-#line 98 "../../../../../src/options/quantifiers_options"
+#line 102 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::userPatternsQuant__option_t) const { return d_holder->userPatternsQuant__setByUser__; }
-#line 100 "../../../../../src/options/quantifiers_options"
+#line 104 "../../../src/options/quantifiers_options"
 template <> const options::incrementTriggers__option_t::type& Options::operator[](options::incrementTriggers__option_t) const { return d_holder->incrementTriggers; }
-#line 100 "../../../../../src/options/quantifiers_options"
+#line 104 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::incrementTriggers__option_t) const { return d_holder->incrementTriggers__setByUser__; }
-#line 103 "../../../../../src/options/quantifiers_options"
+#line 107 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::instWhenMode__option_t, const options::instWhenMode__option_t::type& x) { d_holder->instWhenMode = x; }
-#line 103 "../../../../../src/options/quantifiers_options"
+#line 107 "../../../src/options/quantifiers_options"
 template <> const options::instWhenMode__option_t::type& Options::operator[](options::instWhenMode__option_t) const { return d_holder->instWhenMode; }
-#line 103 "../../../../../src/options/quantifiers_options"
+#line 107 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::instWhenMode__option_t) const { return d_holder->instWhenMode__setByUser__; }
-#line 105 "../../../../../src/options/quantifiers_options"
+#line 109 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::instWhenStrictInterleave__option_t, const options::instWhenStrictInterleave__option_t::type& x) { d_holder->instWhenStrictInterleave = x; }
-#line 105 "../../../../../src/options/quantifiers_options"
+#line 109 "../../../src/options/quantifiers_options"
 template <> const options::instWhenStrictInterleave__option_t::type& Options::operator[](options::instWhenStrictInterleave__option_t) const { return d_holder->instWhenStrictInterleave; }
-#line 105 "../../../../../src/options/quantifiers_options"
+#line 109 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::instWhenStrictInterleave__option_t) const { return d_holder->instWhenStrictInterleave__setByUser__; }
-#line 107 "../../../../../src/options/quantifiers_options"
+#line 111 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::instWhenPhase__option_t, const options::instWhenPhase__option_t::type& x) { d_holder->instWhenPhase = x; }
-#line 107 "../../../../../src/options/quantifiers_options"
+#line 111 "../../../src/options/quantifiers_options"
 template <> const options::instWhenPhase__option_t::type& Options::operator[](options::instWhenPhase__option_t) const { return d_holder->instWhenPhase; }
-#line 107 "../../../../../src/options/quantifiers_options"
+#line 111 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::instWhenPhase__option_t) const { return d_holder->instWhenPhase__setByUser__; }
-#line 109 "../../../../../src/options/quantifiers_options"
+#line 113 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::instWhenTcFirst__option_t, const options::instWhenTcFirst__option_t::type& x) { d_holder->instWhenTcFirst = x; }
-#line 109 "../../../../../src/options/quantifiers_options"
+#line 113 "../../../src/options/quantifiers_options"
 template <> const options::instWhenTcFirst__option_t::type& Options::operator[](options::instWhenTcFirst__option_t) const { return d_holder->instWhenTcFirst; }
-#line 109 "../../../../../src/options/quantifiers_options"
+#line 113 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::instWhenTcFirst__option_t) const { return d_holder->instWhenTcFirst__setByUser__; }
-#line 112 "../../../../../src/options/quantifiers_options"
+#line 115 "../../../src/options/quantifiers_options"
+template <> const options::quantModelEe__option_t::type& Options::operator[](options::quantModelEe__option_t) const { return d_holder->quantModelEe; }
+#line 115 "../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantModelEe__option_t) const { return d_holder->quantModelEe__setByUser__; }
+#line 118 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::instMaxLevel__option_t, const options::instMaxLevel__option_t::type& x) { d_holder->instMaxLevel = x; }
-#line 112 "../../../../../src/options/quantifiers_options"
+#line 118 "../../../src/options/quantifiers_options"
 template <> const options::instMaxLevel__option_t::type& Options::operator[](options::instMaxLevel__option_t) const { return d_holder->instMaxLevel; }
-#line 112 "../../../../../src/options/quantifiers_options"
+#line 118 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::instMaxLevel__option_t) const { return d_holder->instMaxLevel__setByUser__; }
-#line 114 "../../../../../src/options/quantifiers_options"
+#line 120 "../../../src/options/quantifiers_options"
 template <> const options::instLevelInputOnly__option_t::type& Options::operator[](options::instLevelInputOnly__option_t) const { return d_holder->instLevelInputOnly; }
-#line 114 "../../../../../src/options/quantifiers_options"
+#line 120 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::instLevelInputOnly__option_t) const { return d_holder->instLevelInputOnly__setByUser__; }
-#line 116 "../../../../../src/options/quantifiers_options"
+#line 122 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::quantRepMode__option_t, const options::quantRepMode__option_t::type& x) { d_holder->quantRepMode = x; }
-#line 116 "../../../../../src/options/quantifiers_options"
+#line 122 "../../../src/options/quantifiers_options"
 template <> const options::quantRepMode__option_t::type& Options::operator[](options::quantRepMode__option_t) const { return d_holder->quantRepMode; }
-#line 116 "../../../../../src/options/quantifiers_options"
+#line 122 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantRepMode__option_t) const { return d_holder->quantRepMode__setByUser__; }
-#line 118 "../../../../../src/options/quantifiers_options"
+#line 124 "../../../src/options/quantifiers_options"
 template <> const options::instRelevantCond__option_t::type& Options::operator[](options::instRelevantCond__option_t) const { return d_holder->instRelevantCond; }
-#line 118 "../../../../../src/options/quantifiers_options"
+#line 124 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::instRelevantCond__option_t) const { return d_holder->instRelevantCond__setByUser__; }
-#line 121 "../../../../../src/options/quantifiers_options"
+#line 127 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::fullSaturateQuant__option_t, const options::fullSaturateQuant__option_t::type& x) { d_holder->fullSaturateQuant = x; }
-#line 121 "../../../../../src/options/quantifiers_options"
+#line 127 "../../../src/options/quantifiers_options"
 template <> const options::fullSaturateQuant__option_t::type& Options::operator[](options::fullSaturateQuant__option_t) const { return d_holder->fullSaturateQuant; }
-#line 121 "../../../../../src/options/quantifiers_options"
+#line 127 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fullSaturateQuant__option_t) const { return d_holder->fullSaturateQuant__setByUser__; }
-#line 123 "../../../../../src/options/quantifiers_options"
+#line 129 "../../../src/options/quantifiers_options"
 template <> const options::fullSaturateQuantRd__option_t::type& Options::operator[](options::fullSaturateQuantRd__option_t) const { return d_holder->fullSaturateQuantRd; }
-#line 123 "../../../../../src/options/quantifiers_options"
+#line 129 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fullSaturateQuantRd__option_t) const { return d_holder->fullSaturateQuantRd__setByUser__; }
-#line 125 "../../../../../src/options/quantifiers_options"
+#line 131 "../../../src/options/quantifiers_options"
 template <> const options::fullSaturateInst__option_t::type& Options::operator[](options::fullSaturateInst__option_t) const { return d_holder->fullSaturateInst; }
-#line 125 "../../../../../src/options/quantifiers_options"
+#line 131 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fullSaturateInst__option_t) const { return d_holder->fullSaturateInst__setByUser__; }
-#line 128 "../../../../../src/options/quantifiers_options"
+#line 134 "../../../src/options/quantifiers_options"
 template <> const options::literalMatchMode__option_t::type& Options::operator[](options::literalMatchMode__option_t) const { return d_holder->literalMatchMode; }
-#line 128 "../../../../../src/options/quantifiers_options"
+#line 134 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::literalMatchMode__option_t) const { return d_holder->literalMatchMode__setByUser__; }
-#line 133 "../../../../../src/options/quantifiers_options"
+#line 139 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::finiteModelFind__option_t, const options::finiteModelFind__option_t::type& x) { d_holder->finiteModelFind = x; }
-#line 133 "../../../../../src/options/quantifiers_options"
+#line 139 "../../../src/options/quantifiers_options"
 template <> const options::finiteModelFind__option_t::type& Options::operator[](options::finiteModelFind__option_t) const { return d_holder->finiteModelFind; }
-#line 133 "../../../../../src/options/quantifiers_options"
+#line 139 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::finiteModelFind__option_t) const { return d_holder->finiteModelFind__setByUser__; }
-#line 136 "../../../../../src/options/quantifiers_options"
+#line 142 "../../../src/options/quantifiers_options"
 template <> const options::quantFunWellDefined__option_t::type& Options::operator[](options::quantFunWellDefined__option_t) const { return d_holder->quantFunWellDefined; }
-#line 136 "../../../../../src/options/quantifiers_options"
+#line 142 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantFunWellDefined__option_t) const { return d_holder->quantFunWellDefined__setByUser__; }
-#line 138 "../../../../../src/options/quantifiers_options"
+#line 144 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::fmfFunWellDefined__option_t, const options::fmfFunWellDefined__option_t::type& x) { d_holder->fmfFunWellDefined = x; }
-#line 138 "../../../../../src/options/quantifiers_options"
+#line 144 "../../../src/options/quantifiers_options"
 template <> const options::fmfFunWellDefined__option_t::type& Options::operator[](options::fmfFunWellDefined__option_t) const { return d_holder->fmfFunWellDefined; }
-#line 138 "../../../../../src/options/quantifiers_options"
+#line 144 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfFunWellDefined__option_t) const { return d_holder->fmfFunWellDefined__setByUser__; }
-#line 140 "../../../../../src/options/quantifiers_options"
+#line 146 "../../../src/options/quantifiers_options"
 template <> const options::fmfFunWellDefinedRelevant__option_t::type& Options::operator[](options::fmfFunWellDefinedRelevant__option_t) const { return d_holder->fmfFunWellDefinedRelevant; }
-#line 140 "../../../../../src/options/quantifiers_options"
+#line 146 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfFunWellDefinedRelevant__option_t) const { return d_holder->fmfFunWellDefinedRelevant__setByUser__; }
-#line 142 "../../../../../src/options/quantifiers_options"
+#line 148 "../../../src/options/quantifiers_options"
 template <> const options::fmfEmptySorts__option_t::type& Options::operator[](options::fmfEmptySorts__option_t) const { return d_holder->fmfEmptySorts; }
-#line 142 "../../../../../src/options/quantifiers_options"
+#line 148 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfEmptySorts__option_t) const { return d_holder->fmfEmptySorts__setByUser__; }
-#line 145 "../../../../../src/options/quantifiers_options"
+#line 151 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::mbqiMode__option_t, const options::mbqiMode__option_t::type& x) { d_holder->mbqiMode = x; }
-#line 145 "../../../../../src/options/quantifiers_options"
+#line 151 "../../../src/options/quantifiers_options"
 template <> const options::mbqiMode__option_t::type& Options::operator[](options::mbqiMode__option_t) const { return d_holder->mbqiMode; }
-#line 145 "../../../../../src/options/quantifiers_options"
+#line 151 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::mbqiMode__option_t) const { return d_holder->mbqiMode__setByUser__; }
-#line 147 "../../../../../src/options/quantifiers_options"
+#line 153 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::fmfOneInstPerRound__option_t, const options::fmfOneInstPerRound__option_t::type& x) { d_holder->fmfOneInstPerRound = x; }
-#line 147 "../../../../../src/options/quantifiers_options"
+#line 153 "../../../src/options/quantifiers_options"
 template <> const options::fmfOneInstPerRound__option_t::type& Options::operator[](options::fmfOneInstPerRound__option_t) const { return d_holder->fmfOneInstPerRound; }
-#line 147 "../../../../../src/options/quantifiers_options"
+#line 153 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfOneInstPerRound__option_t) const { return d_holder->fmfOneInstPerRound__setByUser__; }
-#line 149 "../../../../../src/options/quantifiers_options"
+#line 155 "../../../src/options/quantifiers_options"
 template <> const options::fmfOneQuantPerRound__option_t::type& Options::operator[](options::fmfOneQuantPerRound__option_t) const { return d_holder->fmfOneQuantPerRound; }
-#line 149 "../../../../../src/options/quantifiers_options"
+#line 155 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfOneQuantPerRound__option_t) const { return d_holder->fmfOneQuantPerRound__setByUser__; }
-#line 152 "../../../../../src/options/quantifiers_options"
+#line 158 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::fmfInstEngine__option_t, const options::fmfInstEngine__option_t::type& x) { d_holder->fmfInstEngine = x; }
-#line 152 "../../../../../src/options/quantifiers_options"
+#line 158 "../../../src/options/quantifiers_options"
 template <> const options::fmfInstEngine__option_t::type& Options::operator[](options::fmfInstEngine__option_t) const { return d_holder->fmfInstEngine; }
-#line 152 "../../../../../src/options/quantifiers_options"
+#line 158 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfInstEngine__option_t) const { return d_holder->fmfInstEngine__setByUser__; }
-#line 154 "../../../../../src/options/quantifiers_options"
+#line 160 "../../../src/options/quantifiers_options"
 template <> const options::fmfInstGen__option_t::type& Options::operator[](options::fmfInstGen__option_t) const { return d_holder->fmfInstGen; }
-#line 154 "../../../../../src/options/quantifiers_options"
+#line 160 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfInstGen__option_t) const { return d_holder->fmfInstGen__setByUser__; }
-#line 156 "../../../../../src/options/quantifiers_options"
+#line 162 "../../../src/options/quantifiers_options"
 template <> const options::fmfInstGenOneQuantPerRound__option_t::type& Options::operator[](options::fmfInstGenOneQuantPerRound__option_t) const { return d_holder->fmfInstGenOneQuantPerRound; }
-#line 156 "../../../../../src/options/quantifiers_options"
+#line 162 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfInstGenOneQuantPerRound__option_t) const { return d_holder->fmfInstGenOneQuantPerRound__setByUser__; }
-#line 158 "../../../../../src/options/quantifiers_options"
+#line 164 "../../../src/options/quantifiers_options"
 template <> const options::fmfFreshDistConst__option_t::type& Options::operator[](options::fmfFreshDistConst__option_t) const { return d_holder->fmfFreshDistConst; }
-#line 158 "../../../../../src/options/quantifiers_options"
+#line 164 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfFreshDistConst__option_t) const { return d_holder->fmfFreshDistConst__setByUser__; }
-#line 160 "../../../../../src/options/quantifiers_options"
+#line 166 "../../../src/options/quantifiers_options"
 template <> const options::fmfFmcSimple__option_t::type& Options::operator[](options::fmfFmcSimple__option_t) const { return d_holder->fmfFmcSimple; }
-#line 160 "../../../../../src/options/quantifiers_options"
+#line 166 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfFmcSimple__option_t) const { return d_holder->fmfFmcSimple__setByUser__; }
-#line 162 "../../../../../src/options/quantifiers_options"
+#line 168 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::fmfBoundInt__option_t, const options::fmfBoundInt__option_t::type& x) { d_holder->fmfBoundInt = x; }
-#line 162 "../../../../../src/options/quantifiers_options"
+#line 168 "../../../src/options/quantifiers_options"
 template <> const options::fmfBoundInt__option_t::type& Options::operator[](options::fmfBoundInt__option_t) const { return d_holder->fmfBoundInt; }
-#line 162 "../../../../../src/options/quantifiers_options"
+#line 168 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfBoundInt__option_t) const { return d_holder->fmfBoundInt__setByUser__; }
-#line 164 "../../../../../src/options/quantifiers_options"
+#line 170 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::fmfBound__option_t, const options::fmfBound__option_t::type& x) { d_holder->fmfBound = x; }
-#line 164 "../../../../../src/options/quantifiers_options"
+#line 170 "../../../src/options/quantifiers_options"
 template <> const options::fmfBound__option_t::type& Options::operator[](options::fmfBound__option_t) const { return d_holder->fmfBound; }
-#line 164 "../../../../../src/options/quantifiers_options"
+#line 170 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfBound__option_t) const { return d_holder->fmfBound__setByUser__; }
-#line 166 "../../../../../src/options/quantifiers_options"
+#line 172 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::fmfBoundLazy__option_t, const options::fmfBoundLazy__option_t::type& x) { d_holder->fmfBoundLazy = x; }
-#line 166 "../../../../../src/options/quantifiers_options"
+#line 172 "../../../src/options/quantifiers_options"
 template <> const options::fmfBoundLazy__option_t::type& Options::operator[](options::fmfBoundLazy__option_t) const { return d_holder->fmfBoundLazy; }
-#line 166 "../../../../../src/options/quantifiers_options"
+#line 172 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfBoundLazy__option_t) const { return d_holder->fmfBoundLazy__setByUser__; }
-#line 168 "../../../../../src/options/quantifiers_options"
+#line 174 "../../../src/options/quantifiers_options"
 template <> const options::fmfBoundMinMode__option_t::type& Options::operator[](options::fmfBoundMinMode__option_t) const { return d_holder->fmfBoundMinMode; }
-#line 168 "../../../../../src/options/quantifiers_options"
+#line 174 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfBoundMinMode__option_t) const { return d_holder->fmfBoundMinMode__setByUser__; }
-#line 173 "../../../../../src/options/quantifiers_options"
+#line 179 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::quantConflictFind__option_t, const options::quantConflictFind__option_t::type& x) { d_holder->quantConflictFind = x; }
-#line 173 "../../../../../src/options/quantifiers_options"
+#line 179 "../../../src/options/quantifiers_options"
 template <> const options::quantConflictFind__option_t::type& Options::operator[](options::quantConflictFind__option_t) const { return d_holder->quantConflictFind; }
-#line 173 "../../../../../src/options/quantifiers_options"
+#line 179 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantConflictFind__option_t) const { return d_holder->quantConflictFind__setByUser__; }
-#line 175 "../../../../../src/options/quantifiers_options"
+#line 181 "../../../src/options/quantifiers_options"
 template <> const options::qcfMode__option_t::type& Options::operator[](options::qcfMode__option_t) const { return d_holder->qcfMode; }
-#line 175 "../../../../../src/options/quantifiers_options"
+#line 181 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::qcfMode__option_t) const { return d_holder->qcfMode__setByUser__; }
-#line 177 "../../../../../src/options/quantifiers_options"
+#line 183 "../../../src/options/quantifiers_options"
 template <> const options::qcfWhenMode__option_t::type& Options::operator[](options::qcfWhenMode__option_t) const { return d_holder->qcfWhenMode; }
-#line 177 "../../../../../src/options/quantifiers_options"
+#line 183 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::qcfWhenMode__option_t) const { return d_holder->qcfWhenMode__setByUser__; }
-#line 179 "../../../../../src/options/quantifiers_options"
+#line 185 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::qcfTConstraint__option_t, const options::qcfTConstraint__option_t::type& x) { d_holder->qcfTConstraint = x; }
-#line 179 "../../../../../src/options/quantifiers_options"
+#line 185 "../../../src/options/quantifiers_options"
 template <> const options::qcfTConstraint__option_t::type& Options::operator[](options::qcfTConstraint__option_t) const { return d_holder->qcfTConstraint; }
-#line 179 "../../../../../src/options/quantifiers_options"
+#line 185 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::qcfTConstraint__option_t) const { return d_holder->qcfTConstraint__setByUser__; }
-#line 181 "../../../../../src/options/quantifiers_options"
+#line 187 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::qcfAllConflict__option_t, const options::qcfAllConflict__option_t::type& x) { d_holder->qcfAllConflict = x; }
-#line 181 "../../../../../src/options/quantifiers_options"
+#line 187 "../../../src/options/quantifiers_options"
 template <> const options::qcfAllConflict__option_t::type& Options::operator[](options::qcfAllConflict__option_t) const { return d_holder->qcfAllConflict; }
-#line 181 "../../../../../src/options/quantifiers_options"
+#line 187 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::qcfAllConflict__option_t) const { return d_holder->qcfAllConflict__setByUser__; }
-#line 183 "../../../../../src/options/quantifiers_options"
+#line 189 "../../../src/options/quantifiers_options"
 template <> const options::qcfNestedConflict__option_t::type& Options::operator[](options::qcfNestedConflict__option_t) const { return d_holder->qcfNestedConflict; }
-#line 183 "../../../../../src/options/quantifiers_options"
+#line 189 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::qcfNestedConflict__option_t) const { return d_holder->qcfNestedConflict__setByUser__; }
-#line 185 "../../../../../src/options/quantifiers_options"
+#line 191 "../../../src/options/quantifiers_options"
 template <> const options::qcfVoExp__option_t::type& Options::operator[](options::qcfVoExp__option_t) const { return d_holder->qcfVoExp; }
-#line 185 "../../../../../src/options/quantifiers_options"
+#line 191 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::qcfVoExp__option_t) const { return d_holder->qcfVoExp__setByUser__; }
-#line 188 "../../../../../src/options/quantifiers_options"
+#line 194 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::instNoEntail__option_t, const options::instNoEntail__option_t::type& x) { d_holder->instNoEntail = x; }
-#line 188 "../../../../../src/options/quantifiers_options"
+#line 194 "../../../src/options/quantifiers_options"
 template <> const options::instNoEntail__option_t::type& Options::operator[](options::instNoEntail__option_t) const { return d_holder->instNoEntail; }
-#line 188 "../../../../../src/options/quantifiers_options"
+#line 194 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::instNoEntail__option_t) const { return d_holder->instNoEntail__setByUser__; }
-#line 191 "../../../../../src/options/quantifiers_options"
+#line 196 "../../../src/options/quantifiers_options"
+template <> void Options::set(options::instNoModelTrue__option_t, const options::instNoModelTrue__option_t::type& x) { d_holder->instNoModelTrue = x; }
+#line 196 "../../../src/options/quantifiers_options"
+template <> const options::instNoModelTrue__option_t::type& Options::operator[](options::instNoModelTrue__option_t) const { return d_holder->instNoModelTrue; }
+#line 196 "../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::instNoModelTrue__option_t) const { return d_holder->instNoModelTrue__setByUser__; }
+#line 199 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::instPropagate__option_t, const options::instPropagate__option_t::type& x) { d_holder->instPropagate = x; }
-#line 191 "../../../../../src/options/quantifiers_options"
+#line 199 "../../../src/options/quantifiers_options"
 template <> const options::instPropagate__option_t::type& Options::operator[](options::instPropagate__option_t) const { return d_holder->instPropagate; }
-#line 191 "../../../../../src/options/quantifiers_options"
+#line 199 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::instPropagate__option_t) const { return d_holder->instPropagate__setByUser__; }
-#line 194 "../../../../../src/options/quantifiers_options"
+#line 202 "../../../src/options/quantifiers_options"
 template <> const options::qcfEagerTest__option_t::type& Options::operator[](options::qcfEagerTest__option_t) const { return d_holder->qcfEagerTest; }
-#line 194 "../../../../../src/options/quantifiers_options"
+#line 202 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::qcfEagerTest__option_t) const { return d_holder->qcfEagerTest__setByUser__; }
-#line 196 "../../../../../src/options/quantifiers_options"
+#line 204 "../../../src/options/quantifiers_options"
 template <> const options::qcfEagerCheckRd__option_t::type& Options::operator[](options::qcfEagerCheckRd__option_t) const { return d_holder->qcfEagerCheckRd; }
-#line 196 "../../../../../src/options/quantifiers_options"
+#line 204 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::qcfEagerCheckRd__option_t) const { return d_holder->qcfEagerCheckRd__setByUser__; }
-#line 198 "../../../../../src/options/quantifiers_options"
+#line 206 "../../../src/options/quantifiers_options"
 template <> const options::qcfSkipRd__option_t::type& Options::operator[](options::qcfSkipRd__option_t) const { return d_holder->qcfSkipRd; }
-#line 198 "../../../../../src/options/quantifiers_options"
+#line 206 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::qcfSkipRd__option_t) const { return d_holder->qcfSkipRd__setByUser__; }
-#line 203 "../../../../../src/options/quantifiers_options"
+#line 211 "../../../src/options/quantifiers_options"
 template <> const options::quantRewriteRules__option_t::type& Options::operator[](options::quantRewriteRules__option_t) const { return d_holder->quantRewriteRules; }
-#line 203 "../../../../../src/options/quantifiers_options"
+#line 211 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantRewriteRules__option_t) const { return d_holder->quantRewriteRules__setByUser__; }
-#line 205 "../../../../../src/options/quantifiers_options"
+#line 213 "../../../src/options/quantifiers_options"
 template <> const options::rrOneInstPerRound__option_t::type& Options::operator[](options::rrOneInstPerRound__option_t) const { return d_holder->rrOneInstPerRound; }
-#line 205 "../../../../../src/options/quantifiers_options"
+#line 213 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::rrOneInstPerRound__option_t) const { return d_holder->rrOneInstPerRound__setByUser__; }
-#line 210 "../../../../../src/options/quantifiers_options"
+#line 218 "../../../src/options/quantifiers_options"
 template <> const options::quantInduction__option_t::type& Options::operator[](options::quantInduction__option_t) const { return d_holder->quantInduction; }
-#line 210 "../../../../../src/options/quantifiers_options"
+#line 218 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantInduction__option_t) const { return d_holder->quantInduction__setByUser__; }
-#line 212 "../../../../../src/options/quantifiers_options"
+#line 220 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::dtStcInduction__option_t, const options::dtStcInduction__option_t::type& x) { d_holder->dtStcInduction = x; }
-#line 212 "../../../../../src/options/quantifiers_options"
+#line 220 "../../../src/options/quantifiers_options"
 template <> const options::dtStcInduction__option_t::type& Options::operator[](options::dtStcInduction__option_t) const { return d_holder->dtStcInduction; }
-#line 212 "../../../../../src/options/quantifiers_options"
+#line 220 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::dtStcInduction__option_t) const { return d_holder->dtStcInduction__setByUser__; }
-#line 214 "../../../../../src/options/quantifiers_options"
+#line 222 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::intWfInduction__option_t, const options::intWfInduction__option_t::type& x) { d_holder->intWfInduction = x; }
-#line 214 "../../../../../src/options/quantifiers_options"
+#line 222 "../../../src/options/quantifiers_options"
 template <> const options::intWfInduction__option_t::type& Options::operator[](options::intWfInduction__option_t) const { return d_holder->intWfInduction; }
-#line 214 "../../../../../src/options/quantifiers_options"
+#line 222 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::intWfInduction__option_t) const { return d_holder->intWfInduction__setByUser__; }
-#line 216 "../../../../../src/options/quantifiers_options"
+#line 224 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::conjectureGen__option_t, const options::conjectureGen__option_t::type& x) { d_holder->conjectureGen = x; }
-#line 216 "../../../../../src/options/quantifiers_options"
+#line 224 "../../../src/options/quantifiers_options"
 template <> const options::conjectureGen__option_t::type& Options::operator[](options::conjectureGen__option_t) const { return d_holder->conjectureGen; }
-#line 216 "../../../../../src/options/quantifiers_options"
+#line 224 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::conjectureGen__option_t) const { return d_holder->conjectureGen__setByUser__; }
-#line 219 "../../../../../src/options/quantifiers_options"
+#line 227 "../../../src/options/quantifiers_options"
 template <> const options::conjectureGenPerRound__option_t::type& Options::operator[](options::conjectureGenPerRound__option_t) const { return d_holder->conjectureGenPerRound; }
-#line 219 "../../../../../src/options/quantifiers_options"
+#line 227 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::conjectureGenPerRound__option_t) const { return d_holder->conjectureGenPerRound__setByUser__; }
-#line 221 "../../../../../src/options/quantifiers_options"
+#line 229 "../../../src/options/quantifiers_options"
 template <> const options::conjectureNoFilter__option_t::type& Options::operator[](options::conjectureNoFilter__option_t) const { return d_holder->conjectureNoFilter; }
-#line 221 "../../../../../src/options/quantifiers_options"
+#line 229 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::conjectureNoFilter__option_t) const { return d_holder->conjectureNoFilter__setByUser__; }
-#line 223 "../../../../../src/options/quantifiers_options"
+#line 231 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::conjectureFilterActiveTerms__option_t, const options::conjectureFilterActiveTerms__option_t::type& x) { d_holder->conjectureFilterActiveTerms = x; }
-#line 223 "../../../../../src/options/quantifiers_options"
+#line 231 "../../../src/options/quantifiers_options"
 template <> const options::conjectureFilterActiveTerms__option_t::type& Options::operator[](options::conjectureFilterActiveTerms__option_t) const { return d_holder->conjectureFilterActiveTerms; }
-#line 223 "../../../../../src/options/quantifiers_options"
+#line 231 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::conjectureFilterActiveTerms__option_t) const { return d_holder->conjectureFilterActiveTerms__setByUser__; }
-#line 225 "../../../../../src/options/quantifiers_options"
+#line 233 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::conjectureFilterCanonical__option_t, const options::conjectureFilterCanonical__option_t::type& x) { d_holder->conjectureFilterCanonical = x; }
-#line 225 "../../../../../src/options/quantifiers_options"
+#line 233 "../../../src/options/quantifiers_options"
 template <> const options::conjectureFilterCanonical__option_t::type& Options::operator[](options::conjectureFilterCanonical__option_t) const { return d_holder->conjectureFilterCanonical; }
-#line 225 "../../../../../src/options/quantifiers_options"
+#line 233 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::conjectureFilterCanonical__option_t) const { return d_holder->conjectureFilterCanonical__setByUser__; }
-#line 227 "../../../../../src/options/quantifiers_options"
+#line 235 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::conjectureFilterModel__option_t, const options::conjectureFilterModel__option_t::type& x) { d_holder->conjectureFilterModel = x; }
-#line 227 "../../../../../src/options/quantifiers_options"
+#line 235 "../../../src/options/quantifiers_options"
 template <> const options::conjectureFilterModel__option_t::type& Options::operator[](options::conjectureFilterModel__option_t) const { return d_holder->conjectureFilterModel; }
-#line 227 "../../../../../src/options/quantifiers_options"
+#line 235 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::conjectureFilterModel__option_t) const { return d_holder->conjectureFilterModel__setByUser__; }
-#line 229 "../../../../../src/options/quantifiers_options"
+#line 237 "../../../src/options/quantifiers_options"
 template <> const options::conjectureGenGtEnum__option_t::type& Options::operator[](options::conjectureGenGtEnum__option_t) const { return d_holder->conjectureGenGtEnum; }
-#line 229 "../../../../../src/options/quantifiers_options"
+#line 237 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::conjectureGenGtEnum__option_t) const { return d_holder->conjectureGenGtEnum__setByUser__; }
-#line 231 "../../../../../src/options/quantifiers_options"
+#line 239 "../../../src/options/quantifiers_options"
 template <> const options::conjectureUeeIntro__option_t::type& Options::operator[](options::conjectureUeeIntro__option_t) const { return d_holder->conjectureUeeIntro; }
-#line 231 "../../../../../src/options/quantifiers_options"
+#line 239 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::conjectureUeeIntro__option_t) const { return d_holder->conjectureUeeIntro__setByUser__; }
-#line 233 "../../../../../src/options/quantifiers_options"
+#line 241 "../../../src/options/quantifiers_options"
 template <> const options::conjectureGenMaxDepth__option_t::type& Options::operator[](options::conjectureGenMaxDepth__option_t) const { return d_holder->conjectureGenMaxDepth; }
-#line 233 "../../../../../src/options/quantifiers_options"
+#line 241 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::conjectureGenMaxDepth__option_t) const { return d_holder->conjectureGenMaxDepth__setByUser__; }
-#line 238 "../../../../../src/options/quantifiers_options"
+#line 246 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::ceGuidedInst__option_t, const options::ceGuidedInst__option_t::type& x) { d_holder->ceGuidedInst = x; }
-#line 238 "../../../../../src/options/quantifiers_options"
+#line 246 "../../../src/options/quantifiers_options"
 template <> const options::ceGuidedInst__option_t::type& Options::operator[](options::ceGuidedInst__option_t) const { return d_holder->ceGuidedInst; }
-#line 238 "../../../../../src/options/quantifiers_options"
+#line 246 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::ceGuidedInst__option_t) const { return d_holder->ceGuidedInst__setByUser__; }
-#line 240 "../../../../../src/options/quantifiers_options"
+#line 248 "../../../src/options/quantifiers_options"
 template <> const options::ceGuidedInstFair__option_t::type& Options::operator[](options::ceGuidedInstFair__option_t) const { return d_holder->ceGuidedInstFair; }
-#line 240 "../../../../../src/options/quantifiers_options"
+#line 248 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::ceGuidedInstFair__option_t) const { return d_holder->ceGuidedInstFair__setByUser__; }
-#line 242 "../../../../../src/options/quantifiers_options"
+#line 250 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::cegqiSingleInvMode__option_t, const options::cegqiSingleInvMode__option_t::type& x) { d_holder->cegqiSingleInvMode = x; }
-#line 242 "../../../../../src/options/quantifiers_options"
+#line 250 "../../../src/options/quantifiers_options"
 template <> const options::cegqiSingleInvMode__option_t::type& Options::operator[](options::cegqiSingleInvMode__option_t) const { return d_holder->cegqiSingleInvMode; }
-#line 242 "../../../../../src/options/quantifiers_options"
+#line 250 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cegqiSingleInvMode__option_t) const { return d_holder->cegqiSingleInvMode__setByUser__; }
-#line 244 "../../../../../src/options/quantifiers_options"
+#line 252 "../../../src/options/quantifiers_options"
 template <> const options::cegqiSingleInvPartial__option_t::type& Options::operator[](options::cegqiSingleInvPartial__option_t) const { return d_holder->cegqiSingleInvPartial; }
-#line 244 "../../../../../src/options/quantifiers_options"
+#line 252 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cegqiSingleInvPartial__option_t) const { return d_holder->cegqiSingleInvPartial__setByUser__; }
-#line 246 "../../../../../src/options/quantifiers_options"
+#line 254 "../../../src/options/quantifiers_options"
 template <> const options::cegqiSingleInvReconstruct__option_t::type& Options::operator[](options::cegqiSingleInvReconstruct__option_t) const { return d_holder->cegqiSingleInvReconstruct; }
-#line 246 "../../../../../src/options/quantifiers_options"
+#line 254 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cegqiSingleInvReconstruct__option_t) const { return d_holder->cegqiSingleInvReconstruct__setByUser__; }
-#line 248 "../../../../../src/options/quantifiers_options"
+#line 256 "../../../src/options/quantifiers_options"
 template <> const options::cegqiSolMinCore__option_t::type& Options::operator[](options::cegqiSolMinCore__option_t) const { return d_holder->cegqiSolMinCore; }
-#line 248 "../../../../../src/options/quantifiers_options"
+#line 256 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cegqiSolMinCore__option_t) const { return d_holder->cegqiSolMinCore__setByUser__; }
-#line 250 "../../../../../src/options/quantifiers_options"
+#line 258 "../../../src/options/quantifiers_options"
 template <> const options::cegqiSolMinInst__option_t::type& Options::operator[](options::cegqiSolMinInst__option_t) const { return d_holder->cegqiSolMinInst; }
-#line 250 "../../../../../src/options/quantifiers_options"
+#line 258 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cegqiSolMinInst__option_t) const { return d_holder->cegqiSolMinInst__setByUser__; }
-#line 252 "../../../../../src/options/quantifiers_options"
+#line 260 "../../../src/options/quantifiers_options"
 template <> const options::cegqiSingleInvReconstructConst__option_t::type& Options::operator[](options::cegqiSingleInvReconstructConst__option_t) const { return d_holder->cegqiSingleInvReconstructConst; }
-#line 252 "../../../../../src/options/quantifiers_options"
+#line 260 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cegqiSingleInvReconstructConst__option_t) const { return d_holder->cegqiSingleInvReconstructConst__setByUser__; }
-#line 254 "../../../../../src/options/quantifiers_options"
+#line 262 "../../../src/options/quantifiers_options"
 template <> const options::cegqiSingleInvAbort__option_t::type& Options::operator[](options::cegqiSingleInvAbort__option_t) const { return d_holder->cegqiSingleInvAbort; }
-#line 254 "../../../../../src/options/quantifiers_options"
+#line 262 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cegqiSingleInvAbort__option_t) const { return d_holder->cegqiSingleInvAbort__setByUser__; }
-#line 257 "../../../../../src/options/quantifiers_options"
+#line 265 "../../../src/options/quantifiers_options"
 template <> const options::sygusNormalForm__option_t::type& Options::operator[](options::sygusNormalForm__option_t) const { return d_holder->sygusNormalForm; }
-#line 257 "../../../../../src/options/quantifiers_options"
+#line 265 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::sygusNormalForm__option_t) const { return d_holder->sygusNormalForm__setByUser__; }
-#line 259 "../../../../../src/options/quantifiers_options"
+#line 267 "../../../src/options/quantifiers_options"
 template <> const options::sygusNormalFormArg__option_t::type& Options::operator[](options::sygusNormalFormArg__option_t) const { return d_holder->sygusNormalFormArg; }
-#line 259 "../../../../../src/options/quantifiers_options"
+#line 267 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::sygusNormalFormArg__option_t) const { return d_holder->sygusNormalFormArg__setByUser__; }
-#line 261 "../../../../../src/options/quantifiers_options"
+#line 269 "../../../src/options/quantifiers_options"
 template <> const options::sygusNormalFormGlobal__option_t::type& Options::operator[](options::sygusNormalFormGlobal__option_t) const { return d_holder->sygusNormalFormGlobal; }
-#line 261 "../../../../../src/options/quantifiers_options"
+#line 269 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::sygusNormalFormGlobal__option_t) const { return d_holder->sygusNormalFormGlobal__setByUser__; }
-#line 263 "../../../../../src/options/quantifiers_options"
+#line 271 "../../../src/options/quantifiers_options"
 template <> const options::sygusNormalFormGlobalGen__option_t::type& Options::operator[](options::sygusNormalFormGlobalGen__option_t) const { return d_holder->sygusNormalFormGlobalGen; }
-#line 263 "../../../../../src/options/quantifiers_options"
+#line 271 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::sygusNormalFormGlobalGen__option_t) const { return d_holder->sygusNormalFormGlobalGen__setByUser__; }
-#line 265 "../../../../../src/options/quantifiers_options"
+#line 273 "../../../src/options/quantifiers_options"
 template <> const options::sygusNormalFormGlobalArg__option_t::type& Options::operator[](options::sygusNormalFormGlobalArg__option_t) const { return d_holder->sygusNormalFormGlobalArg; }
-#line 265 "../../../../../src/options/quantifiers_options"
+#line 273 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::sygusNormalFormGlobalArg__option_t) const { return d_holder->sygusNormalFormGlobalArg__setByUser__; }
-#line 267 "../../../../../src/options/quantifiers_options"
+#line 275 "../../../src/options/quantifiers_options"
 template <> const options::sygusNormalFormGlobalContent__option_t::type& Options::operator[](options::sygusNormalFormGlobalContent__option_t) const { return d_holder->sygusNormalFormGlobalContent; }
-#line 267 "../../../../../src/options/quantifiers_options"
+#line 275 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::sygusNormalFormGlobalContent__option_t) const { return d_holder->sygusNormalFormGlobalContent__setByUser__; }
-#line 270 "../../../../../src/options/quantifiers_options"
+#line 278 "../../../src/options/quantifiers_options"
 template <> const options::sygusInvTemplMode__option_t::type& Options::operator[](options::sygusInvTemplMode__option_t) const { return d_holder->sygusInvTemplMode; }
-#line 270 "../../../../../src/options/quantifiers_options"
+#line 278 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::sygusInvTemplMode__option_t) const { return d_holder->sygusInvTemplMode__setByUser__; }
-#line 273 "../../../../../src/options/quantifiers_options"
+#line 280 "../../../src/options/quantifiers_options"
+template <> const options::sygusUnifCondSol__option_t::type& Options::operator[](options::sygusUnifCondSol__option_t) const { return d_holder->sygusUnifCondSol; }
+#line 280 "../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::sygusUnifCondSol__option_t) const { return d_holder->sygusUnifCondSol__setByUser__; }
+#line 283 "../../../src/options/quantifiers_options"
 template <> const options::sygusDirectEval__option_t::type& Options::operator[](options::sygusDirectEval__option_t) const { return d_holder->sygusDirectEval; }
-#line 273 "../../../../../src/options/quantifiers_options"
+#line 283 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::sygusDirectEval__option_t) const { return d_holder->sygusDirectEval__setByUser__; }
-#line 277 "../../../../../src/options/quantifiers_options"
+#line 285 "../../../src/options/quantifiers_options"
+template <> const options::sygusCRefEval__option_t::type& Options::operator[](options::sygusCRefEval__option_t) const { return d_holder->sygusCRefEval; }
+#line 285 "../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::sygusCRefEval__option_t) const { return d_holder->sygusCRefEval__setByUser__; }
+#line 289 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::cbqi__option_t, const options::cbqi__option_t::type& x) { d_holder->cbqi = x; }
-#line 277 "../../../../../src/options/quantifiers_options"
+#line 289 "../../../src/options/quantifiers_options"
 template <> const options::cbqi__option_t::type& Options::operator[](options::cbqi__option_t) const { return d_holder->cbqi; }
-#line 277 "../../../../../src/options/quantifiers_options"
+#line 289 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqi__option_t) const { return d_holder->cbqi__setByUser__; }
-#line 279 "../../../../../src/options/quantifiers_options"
+#line 291 "../../../src/options/quantifiers_options"
 template <> const options::recurseCbqi__option_t::type& Options::operator[](options::recurseCbqi__option_t) const { return d_holder->recurseCbqi; }
-#line 279 "../../../../../src/options/quantifiers_options"
+#line 291 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::recurseCbqi__option_t) const { return d_holder->recurseCbqi__setByUser__; }
-#line 281 "../../../../../src/options/quantifiers_options"
+#line 293 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::cbqiSat__option_t, const options::cbqiSat__option_t::type& x) { d_holder->cbqiSat = x; }
-#line 281 "../../../../../src/options/quantifiers_options"
+#line 293 "../../../src/options/quantifiers_options"
 template <> const options::cbqiSat__option_t::type& Options::operator[](options::cbqiSat__option_t) const { return d_holder->cbqiSat; }
-#line 281 "../../../../../src/options/quantifiers_options"
+#line 293 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiSat__option_t) const { return d_holder->cbqiSat__setByUser__; }
-#line 283 "../../../../../src/options/quantifiers_options"
+#line 295 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::cbqiModel__option_t, const options::cbqiModel__option_t::type& x) { d_holder->cbqiModel = x; }
-#line 283 "../../../../../src/options/quantifiers_options"
+#line 295 "../../../src/options/quantifiers_options"
 template <> const options::cbqiModel__option_t::type& Options::operator[](options::cbqiModel__option_t) const { return d_holder->cbqiModel; }
-#line 283 "../../../../../src/options/quantifiers_options"
+#line 295 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiModel__option_t) const { return d_holder->cbqiModel__setByUser__; }
-#line 285 "../../../../../src/options/quantifiers_options"
+#line 297 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::cbqiAll__option_t, const options::cbqiAll__option_t::type& x) { d_holder->cbqiAll = x; }
-#line 285 "../../../../../src/options/quantifiers_options"
+#line 297 "../../../src/options/quantifiers_options"
 template <> const options::cbqiAll__option_t::type& Options::operator[](options::cbqiAll__option_t) const { return d_holder->cbqiAll; }
-#line 285 "../../../../../src/options/quantifiers_options"
+#line 297 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiAll__option_t) const { return d_holder->cbqiAll__setByUser__; }
-#line 287 "../../../../../src/options/quantifiers_options"
+#line 299 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::cbqiUseInfInt__option_t, const options::cbqiUseInfInt__option_t::type& x) { d_holder->cbqiUseInfInt = x; }
-#line 287 "../../../../../src/options/quantifiers_options"
+#line 299 "../../../src/options/quantifiers_options"
 template <> const options::cbqiUseInfInt__option_t::type& Options::operator[](options::cbqiUseInfInt__option_t) const { return d_holder->cbqiUseInfInt; }
-#line 287 "../../../../../src/options/quantifiers_options"
+#line 299 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiUseInfInt__option_t) const { return d_holder->cbqiUseInfInt__setByUser__; }
-#line 289 "../../../../../src/options/quantifiers_options"
+#line 301 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::cbqiUseInfReal__option_t, const options::cbqiUseInfReal__option_t::type& x) { d_holder->cbqiUseInfReal = x; }
-#line 289 "../../../../../src/options/quantifiers_options"
+#line 301 "../../../src/options/quantifiers_options"
 template <> const options::cbqiUseInfReal__option_t::type& Options::operator[](options::cbqiUseInfReal__option_t) const { return d_holder->cbqiUseInfReal; }
-#line 289 "../../../../../src/options/quantifiers_options"
+#line 301 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiUseInfReal__option_t) const { return d_holder->cbqiUseInfReal__setByUser__; }
-#line 291 "../../../../../src/options/quantifiers_options"
+#line 303 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::cbqiPreRegInst__option_t, const options::cbqiPreRegInst__option_t::type& x) { d_holder->cbqiPreRegInst = x; }
-#line 291 "../../../../../src/options/quantifiers_options"
+#line 303 "../../../src/options/quantifiers_options"
 template <> const options::cbqiPreRegInst__option_t::type& Options::operator[](options::cbqiPreRegInst__option_t) const { return d_holder->cbqiPreRegInst; }
-#line 291 "../../../../../src/options/quantifiers_options"
+#line 303 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiPreRegInst__option_t) const { return d_holder->cbqiPreRegInst__setByUser__; }
-#line 293 "../../../../../src/options/quantifiers_options"
+#line 305 "../../../src/options/quantifiers_options"
 template <> const options::cbqiMinBounds__option_t::type& Options::operator[](options::cbqiMinBounds__option_t) const { return d_holder->cbqiMinBounds; }
-#line 293 "../../../../../src/options/quantifiers_options"
+#line 305 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiMinBounds__option_t) const { return d_holder->cbqiMinBounds__setByUser__; }
-#line 295 "../../../../../src/options/quantifiers_options"
+#line 307 "../../../src/options/quantifiers_options"
 template <> const options::cbqiRoundUpLowerLia__option_t::type& Options::operator[](options::cbqiRoundUpLowerLia__option_t) const { return d_holder->cbqiRoundUpLowerLia; }
-#line 295 "../../../../../src/options/quantifiers_options"
+#line 307 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiRoundUpLowerLia__option_t) const { return d_holder->cbqiRoundUpLowerLia__setByUser__; }
-#line 297 "../../../../../src/options/quantifiers_options"
+#line 309 "../../../src/options/quantifiers_options"
 template <> const options::cbqiMidpoint__option_t::type& Options::operator[](options::cbqiMidpoint__option_t) const { return d_holder->cbqiMidpoint; }
-#line 297 "../../../../../src/options/quantifiers_options"
+#line 309 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiMidpoint__option_t) const { return d_holder->cbqiMidpoint__setByUser__; }
-#line 299 "../../../../../src/options/quantifiers_options"
+#line 311 "../../../src/options/quantifiers_options"
 template <> const options::cbqiNopt__option_t::type& Options::operator[](options::cbqiNopt__option_t) const { return d_holder->cbqiNopt; }
-#line 299 "../../../../../src/options/quantifiers_options"
+#line 311 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiNopt__option_t) const { return d_holder->cbqiNopt__setByUser__; }
-#line 301 "../../../../../src/options/quantifiers_options"
+#line 313 "../../../src/options/quantifiers_options"
 template <> const options::cbqiLitDepend__option_t::type& Options::operator[](options::cbqiLitDepend__option_t) const { return d_holder->cbqiLitDepend; }
-#line 301 "../../../../../src/options/quantifiers_options"
+#line 313 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiLitDepend__option_t) const { return d_holder->cbqiLitDepend__setByUser__; }
-#line 303 "../../../../../src/options/quantifiers_options"
+#line 315 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::cbqiInnermost__option_t, const options::cbqiInnermost__option_t::type& x) { d_holder->cbqiInnermost = x; }
-#line 303 "../../../../../src/options/quantifiers_options"
+#line 315 "../../../src/options/quantifiers_options"
 template <> const options::cbqiInnermost__option_t::type& Options::operator[](options::cbqiInnermost__option_t) const { return d_holder->cbqiInnermost; }
-#line 303 "../../../../../src/options/quantifiers_options"
+#line 315 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiInnermost__option_t) const { return d_holder->cbqiInnermost__setByUser__; }
-#line 305 "../../../../../src/options/quantifiers_options"
+#line 317 "../../../src/options/quantifiers_options"
+template <> void Options::set(options::cbqiNestedQE__option_t, const options::cbqiNestedQE__option_t::type& x) { d_holder->cbqiNestedQE = x; }
+#line 317 "../../../src/options/quantifiers_options"
 template <> const options::cbqiNestedQE__option_t::type& Options::operator[](options::cbqiNestedQE__option_t) const { return d_holder->cbqiNestedQE; }
-#line 305 "../../../../../src/options/quantifiers_options"
+#line 317 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiNestedQE__option_t) const { return d_holder->cbqiNestedQE__setByUser__; }
-#line 308 "../../../../../src/options/quantifiers_options"
+#line 320 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::quantEpr__option_t, const options::quantEpr__option_t::type& x) { d_holder->quantEpr = x; }
-#line 308 "../../../../../src/options/quantifiers_options"
+#line 320 "../../../src/options/quantifiers_options"
 template <> const options::quantEpr__option_t::type& Options::operator[](options::quantEpr__option_t) const { return d_holder->quantEpr; }
-#line 308 "../../../../../src/options/quantifiers_options"
+#line 320 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantEpr__option_t) const { return d_holder->quantEpr__setByUser__; }
-#line 310 "../../../../../src/options/quantifiers_options"
+#line 322 "../../../src/options/quantifiers_options"
 template <> const options::quantEprMatching__option_t::type& Options::operator[](options::quantEprMatching__option_t) const { return d_holder->quantEprMatching; }
-#line 310 "../../../../../src/options/quantifiers_options"
+#line 322 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantEprMatching__option_t) const { return d_holder->quantEprMatching__setByUser__; }
-#line 315 "../../../../../src/options/quantifiers_options"
+#line 327 "../../../src/options/quantifiers_options"
 template <> const options::localTheoryExt__option_t::type& Options::operator[](options::localTheoryExt__option_t) const { return d_holder->localTheoryExt; }
-#line 315 "../../../../../src/options/quantifiers_options"
+#line 327 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::localTheoryExt__option_t) const { return d_holder->localTheoryExt__setByUser__; }
-#line 317 "../../../../../src/options/quantifiers_options"
+#line 329 "../../../src/options/quantifiers_options"
 template <> const options::ltePartialInst__option_t::type& Options::operator[](options::ltePartialInst__option_t) const { return d_holder->ltePartialInst; }
-#line 317 "../../../../../src/options/quantifiers_options"
+#line 329 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::ltePartialInst__option_t) const { return d_holder->ltePartialInst__setByUser__; }
-#line 319 "../../../../../src/options/quantifiers_options"
+#line 331 "../../../src/options/quantifiers_options"
 template <> const options::lteRestrictInstClosure__option_t::type& Options::operator[](options::lteRestrictInstClosure__option_t) const { return d_holder->lteRestrictInstClosure; }
-#line 319 "../../../../../src/options/quantifiers_options"
+#line 331 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::lteRestrictInstClosure__option_t) const { return d_holder->lteRestrictInstClosure__setByUser__; }
-#line 324 "../../../../../src/options/quantifiers_options"
+#line 336 "../../../src/options/quantifiers_options"
 template <> const options::quantAlphaEquiv__option_t::type& Options::operator[](options::quantAlphaEquiv__option_t) const { return d_holder->quantAlphaEquiv; }
-#line 324 "../../../../../src/options/quantifiers_options"
+#line 336 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantAlphaEquiv__option_t) const { return d_holder->quantAlphaEquiv__setByUser__; }
-#line 326 "../../../../../src/options/quantifiers_options"
+#line 338 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::macrosQuant__option_t, const options::macrosQuant__option_t::type& x) { d_holder->macrosQuant = x; }
-#line 326 "../../../../../src/options/quantifiers_options"
+#line 338 "../../../src/options/quantifiers_options"
 template <> const options::macrosQuant__option_t::type& Options::operator[](options::macrosQuant__option_t) const { return d_holder->macrosQuant; }
-#line 326 "../../../../../src/options/quantifiers_options"
+#line 338 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::macrosQuant__option_t) const { return d_holder->macrosQuant__setByUser__; }
-#line 328 "../../../../../src/options/quantifiers_options"
+#line 340 "../../../src/options/quantifiers_options"
 template <> const options::macrosQuantMode__option_t::type& Options::operator[](options::macrosQuantMode__option_t) const { return d_holder->macrosQuantMode; }
-#line 328 "../../../../../src/options/quantifiers_options"
+#line 340 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::macrosQuantMode__option_t) const { return d_holder->macrosQuantMode__setByUser__; }
-#line 330 "../../../../../src/options/quantifiers_options"
+#line 342 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::quantDynamicSplit__option_t, const options::quantDynamicSplit__option_t::type& x) { d_holder->quantDynamicSplit = x; }
-#line 330 "../../../../../src/options/quantifiers_options"
+#line 342 "../../../src/options/quantifiers_options"
 template <> const options::quantDynamicSplit__option_t::type& Options::operator[](options::quantDynamicSplit__option_t) const { return d_holder->quantDynamicSplit; }
-#line 330 "../../../../../src/options/quantifiers_options"
+#line 342 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantDynamicSplit__option_t) const { return d_holder->quantDynamicSplit__setByUser__; }
-#line 332 "../../../../../src/options/quantifiers_options"
+#line 344 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::quantAntiSkolem__option_t, const options::quantAntiSkolem__option_t::type& x) { d_holder->quantAntiSkolem = x; }
-#line 332 "../../../../../src/options/quantifiers_options"
+#line 344 "../../../src/options/quantifiers_options"
 template <> const options::quantAntiSkolem__option_t::type& Options::operator[](options::quantAntiSkolem__option_t) const { return d_holder->quantAntiSkolem; }
-#line 332 "../../../../../src/options/quantifiers_options"
+#line 344 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantAntiSkolem__option_t) const { return d_holder->quantAntiSkolem__setByUser__; }
-#line 342 "../../../../../src/options/quantifiers_options"
+#line 354 "../../../src/options/quantifiers_options"
 template <> const options::quantEqualityEngine__option_t::type& Options::operator[](options::quantEqualityEngine__option_t) const { return d_holder->quantEqualityEngine; }
-#line 342 "../../../../../src/options/quantifiers_options"
+#line 354 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantEqualityEngine__option_t) const { return d_holder->quantEqualityEngine__setByUser__; }
-#line 347 "../../../../../src/options/quantifiers_options"
+#line 359 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::trackInstLemmas__option_t, const options::trackInstLemmas__option_t::type& x) { d_holder->trackInstLemmas = x; }
-#line 347 "../../../../../src/options/quantifiers_options"
+#line 359 "../../../src/options/quantifiers_options"
 template <> const options::trackInstLemmas__option_t::type& Options::operator[](options::trackInstLemmas__option_t) const { return d_holder->trackInstLemmas; }
-#line 347 "../../../../../src/options/quantifiers_options"
+#line 359 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::trackInstLemmas__option_t) const { return d_holder->trackInstLemmas__setByUser__; }
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
-#line 13 "../../../../../src/options/quantifiers_options"
+#line 13 "../../../src/options/quantifiers_options"
 struct miniscopeQuant__option_t miniscopeQuant;
-#line 18 "../../../../../src/options/quantifiers_options"
+#line 18 "../../../src/options/quantifiers_options"
 struct miniscopeQuantFreeVar__option_t miniscopeQuantFreeVar;
-#line 20 "../../../../../src/options/quantifiers_options"
+#line 20 "../../../src/options/quantifiers_options"
 struct quantSplit__option_t quantSplit;
-#line 22 "../../../../../src/options/quantifiers_options"
+#line 22 "../../../src/options/quantifiers_options"
 struct prenexQuant__option_t prenexQuant;
-#line 24 "../../../../../src/options/quantifiers_options"
+#line 24 "../../../src/options/quantifiers_options"
 struct prenexQuantUser__option_t prenexQuantUser;
-#line 29 "../../../../../src/options/quantifiers_options"
+#line 29 "../../../src/options/quantifiers_options"
 struct varElimQuant__option_t varElimQuant;
-#line 31 "../../../../../src/options/quantifiers_options"
+#line 31 "../../../src/options/quantifiers_options"
 struct varIneqElimQuant__option_t varIneqElimQuant;
-#line 33 "../../../../../src/options/quantifiers_options"
+#line 33 "../../../src/options/quantifiers_options"
 struct dtVarExpandQuant__option_t dtVarExpandQuant;
-#line 36 "../../../../../src/options/quantifiers_options"
+#line 36 "../../../src/options/quantifiers_options"
 struct iteLiftQuant__option_t iteLiftQuant;
-#line 38 "../../../../../src/options/quantifiers_options"
+#line 38 "../../../src/options/quantifiers_options"
 struct condVarSplitQuant__option_t condVarSplitQuant;
-#line 40 "../../../../../src/options/quantifiers_options"
+#line 40 "../../../src/options/quantifiers_options"
 struct condVarSplitQuantAgg__option_t condVarSplitQuantAgg;
-#line 42 "../../../../../src/options/quantifiers_options"
+#line 42 "../../../src/options/quantifiers_options"
 struct iteDtTesterSplitQuant__option_t iteDtTesterSplitQuant;
-#line 47 "../../../../../src/options/quantifiers_options"
+#line 47 "../../../src/options/quantifiers_options"
 struct preSkolemQuant__option_t preSkolemQuant;
-#line 49 "../../../../../src/options/quantifiers_options"
+#line 49 "../../../src/options/quantifiers_options"
 struct preSkolemQuantNested__option_t preSkolemQuantNested;
-#line 51 "../../../../../src/options/quantifiers_options"
+#line 51 "../../../src/options/quantifiers_options"
 struct preSkolemQuantAgg__option_t preSkolemQuantAgg;
-#line 53 "../../../../../src/options/quantifiers_options"
+#line 53 "../../../src/options/quantifiers_options"
 struct aggressiveMiniscopeQuant__option_t aggressiveMiniscopeQuant;
-#line 55 "../../../../../src/options/quantifiers_options"
+#line 55 "../../../src/options/quantifiers_options"
 struct elimTautQuant__option_t elimTautQuant;
-#line 57 "../../../../../src/options/quantifiers_options"
+#line 57 "../../../src/options/quantifiers_options"
 struct elimExtArithQuant__option_t elimExtArithQuant;
-#line 59 "../../../../../src/options/quantifiers_options"
+#line 59 "../../../src/options/quantifiers_options"
 struct condRewriteQuant__option_t condRewriteQuant;
-#line 64 "../../../../../src/options/quantifiers_options"
+#line 64 "../../../src/options/quantifiers_options"
 struct eMatching__option_t eMatching;
-#line 67 "../../../../../src/options/quantifiers_options"
+#line 67 "../../../src/options/quantifiers_options"
 struct termDbMode__option_t termDbMode;
-#line 69 "../../../../../src/options/quantifiers_options"
+#line 69 "../../../src/options/quantifiers_options"
 struct registerQuantBodyTerms__option_t registerQuantBodyTerms;
-#line 71 "../../../../../src/options/quantifiers_options"
+#line 71 "../../../src/options/quantifiers_options"
 struct inferArithTriggerEq__option_t inferArithTriggerEq;
-#line 73 "../../../../../src/options/quantifiers_options"
+#line 73 "../../../src/options/quantifiers_options"
 struct inferArithTriggerEqExp__option_t inferArithTriggerEqExp;
-#line 76 "../../../../../src/options/quantifiers_options"
+#line 76 "../../../src/options/quantifiers_options"
 struct strictTriggers__option_t strictTriggers;
-#line 78 "../../../../../src/options/quantifiers_options"
+#line 78 "../../../src/options/quantifiers_options"
 struct relevantTriggers__option_t relevantTriggers;
-#line 80 "../../../../../src/options/quantifiers_options"
+#line 80 "../../../src/options/quantifiers_options"
 struct relationalTriggers__option_t relationalTriggers;
-#line 82 "../../../../../src/options/quantifiers_options"
+#line 82 "../../../src/options/quantifiers_options"
 struct purifyTriggers__option_t purifyTriggers;
-#line 84 "../../../../../src/options/quantifiers_options"
+#line 84 "../../../src/options/quantifiers_options"
 struct purifyDtTriggers__option_t purifyDtTriggers;
-#line 86 "../../../../../src/options/quantifiers_options"
+#line 86 "../../../src/options/quantifiers_options"
 struct pureThTriggers__option_t pureThTriggers;
-#line 88 "../../../../../src/options/quantifiers_options"
+#line 88 "../../../src/options/quantifiers_options"
 struct partialTriggers__option_t partialTriggers;
-#line 90 "../../../../../src/options/quantifiers_options"
+#line 90 "../../../src/options/quantifiers_options"
 struct multiTriggerWhenSingle__option_t multiTriggerWhenSingle;
-#line 92 "../../../../../src/options/quantifiers_options"
+#line 92 "../../../src/options/quantifiers_options"
 struct multiTriggerPriority__option_t multiTriggerPriority;
-#line 94 "../../../../../src/options/quantifiers_options"
+#line 94 "../../../src/options/quantifiers_options"
+struct multiTriggerCache__option_t multiTriggerCache;
+#line 96 "../../../src/options/quantifiers_options"
+struct multiTriggerLinear__option_t multiTriggerLinear;
+#line 98 "../../../src/options/quantifiers_options"
 struct triggerSelMode__option_t triggerSelMode;
-#line 96 "../../../../../src/options/quantifiers_options"
+#line 100 "../../../src/options/quantifiers_options"
 struct triggerActiveSelMode__option_t triggerActiveSelMode;
-#line 98 "../../../../../src/options/quantifiers_options"
+#line 102 "../../../src/options/quantifiers_options"
 struct userPatternsQuant__option_t userPatternsQuant;
-#line 100 "../../../../../src/options/quantifiers_options"
+#line 104 "../../../src/options/quantifiers_options"
 struct incrementTriggers__option_t incrementTriggers;
-#line 103 "../../../../../src/options/quantifiers_options"
+#line 107 "../../../src/options/quantifiers_options"
 struct instWhenMode__option_t instWhenMode;
-#line 105 "../../../../../src/options/quantifiers_options"
+#line 109 "../../../src/options/quantifiers_options"
 struct instWhenStrictInterleave__option_t instWhenStrictInterleave;
-#line 107 "../../../../../src/options/quantifiers_options"
+#line 111 "../../../src/options/quantifiers_options"
 struct instWhenPhase__option_t instWhenPhase;
-#line 109 "../../../../../src/options/quantifiers_options"
+#line 113 "../../../src/options/quantifiers_options"
 struct instWhenTcFirst__option_t instWhenTcFirst;
-#line 112 "../../../../../src/options/quantifiers_options"
+#line 115 "../../../src/options/quantifiers_options"
+struct quantModelEe__option_t quantModelEe;
+#line 118 "../../../src/options/quantifiers_options"
 struct instMaxLevel__option_t instMaxLevel;
-#line 114 "../../../../../src/options/quantifiers_options"
+#line 120 "../../../src/options/quantifiers_options"
 struct instLevelInputOnly__option_t instLevelInputOnly;
-#line 116 "../../../../../src/options/quantifiers_options"
+#line 122 "../../../src/options/quantifiers_options"
 struct quantRepMode__option_t quantRepMode;
-#line 118 "../../../../../src/options/quantifiers_options"
+#line 124 "../../../src/options/quantifiers_options"
 struct instRelevantCond__option_t instRelevantCond;
-#line 121 "../../../../../src/options/quantifiers_options"
+#line 127 "../../../src/options/quantifiers_options"
 struct fullSaturateQuant__option_t fullSaturateQuant;
-#line 123 "../../../../../src/options/quantifiers_options"
+#line 129 "../../../src/options/quantifiers_options"
 struct fullSaturateQuantRd__option_t fullSaturateQuantRd;
-#line 125 "../../../../../src/options/quantifiers_options"
+#line 131 "../../../src/options/quantifiers_options"
 struct fullSaturateInst__option_t fullSaturateInst;
-#line 128 "../../../../../src/options/quantifiers_options"
+#line 134 "../../../src/options/quantifiers_options"
 struct literalMatchMode__option_t literalMatchMode;
-#line 133 "../../../../../src/options/quantifiers_options"
+#line 139 "../../../src/options/quantifiers_options"
 struct finiteModelFind__option_t finiteModelFind;
-#line 136 "../../../../../src/options/quantifiers_options"
+#line 142 "../../../src/options/quantifiers_options"
 struct quantFunWellDefined__option_t quantFunWellDefined;
-#line 138 "../../../../../src/options/quantifiers_options"
+#line 144 "../../../src/options/quantifiers_options"
 struct fmfFunWellDefined__option_t fmfFunWellDefined;
-#line 140 "../../../../../src/options/quantifiers_options"
+#line 146 "../../../src/options/quantifiers_options"
 struct fmfFunWellDefinedRelevant__option_t fmfFunWellDefinedRelevant;
-#line 142 "../../../../../src/options/quantifiers_options"
+#line 148 "../../../src/options/quantifiers_options"
 struct fmfEmptySorts__option_t fmfEmptySorts;
-#line 145 "../../../../../src/options/quantifiers_options"
+#line 151 "../../../src/options/quantifiers_options"
 struct mbqiMode__option_t mbqiMode;
-#line 147 "../../../../../src/options/quantifiers_options"
+#line 153 "../../../src/options/quantifiers_options"
 struct fmfOneInstPerRound__option_t fmfOneInstPerRound;
-#line 149 "../../../../../src/options/quantifiers_options"
+#line 155 "../../../src/options/quantifiers_options"
 struct fmfOneQuantPerRound__option_t fmfOneQuantPerRound;
-#line 152 "../../../../../src/options/quantifiers_options"
+#line 158 "../../../src/options/quantifiers_options"
 struct fmfInstEngine__option_t fmfInstEngine;
-#line 154 "../../../../../src/options/quantifiers_options"
+#line 160 "../../../src/options/quantifiers_options"
 struct fmfInstGen__option_t fmfInstGen;
-#line 156 "../../../../../src/options/quantifiers_options"
+#line 162 "../../../src/options/quantifiers_options"
 struct fmfInstGenOneQuantPerRound__option_t fmfInstGenOneQuantPerRound;
-#line 158 "../../../../../src/options/quantifiers_options"
+#line 164 "../../../src/options/quantifiers_options"
 struct fmfFreshDistConst__option_t fmfFreshDistConst;
-#line 160 "../../../../../src/options/quantifiers_options"
+#line 166 "../../../src/options/quantifiers_options"
 struct fmfFmcSimple__option_t fmfFmcSimple;
-#line 162 "../../../../../src/options/quantifiers_options"
+#line 168 "../../../src/options/quantifiers_options"
 struct fmfBoundInt__option_t fmfBoundInt;
-#line 164 "../../../../../src/options/quantifiers_options"
+#line 170 "../../../src/options/quantifiers_options"
 struct fmfBound__option_t fmfBound;
-#line 166 "../../../../../src/options/quantifiers_options"
+#line 172 "../../../src/options/quantifiers_options"
 struct fmfBoundLazy__option_t fmfBoundLazy;
-#line 168 "../../../../../src/options/quantifiers_options"
+#line 174 "../../../src/options/quantifiers_options"
 struct fmfBoundMinMode__option_t fmfBoundMinMode;
-#line 173 "../../../../../src/options/quantifiers_options"
+#line 179 "../../../src/options/quantifiers_options"
 struct quantConflictFind__option_t quantConflictFind;
-#line 175 "../../../../../src/options/quantifiers_options"
+#line 181 "../../../src/options/quantifiers_options"
 struct qcfMode__option_t qcfMode;
-#line 177 "../../../../../src/options/quantifiers_options"
+#line 183 "../../../src/options/quantifiers_options"
 struct qcfWhenMode__option_t qcfWhenMode;
-#line 179 "../../../../../src/options/quantifiers_options"
+#line 185 "../../../src/options/quantifiers_options"
 struct qcfTConstraint__option_t qcfTConstraint;
-#line 181 "../../../../../src/options/quantifiers_options"
+#line 187 "../../../src/options/quantifiers_options"
 struct qcfAllConflict__option_t qcfAllConflict;
-#line 183 "../../../../../src/options/quantifiers_options"
+#line 189 "../../../src/options/quantifiers_options"
 struct qcfNestedConflict__option_t qcfNestedConflict;
-#line 185 "../../../../../src/options/quantifiers_options"
+#line 191 "../../../src/options/quantifiers_options"
 struct qcfVoExp__option_t qcfVoExp;
-#line 188 "../../../../../src/options/quantifiers_options"
+#line 194 "../../../src/options/quantifiers_options"
 struct instNoEntail__option_t instNoEntail;
-#line 191 "../../../../../src/options/quantifiers_options"
+#line 196 "../../../src/options/quantifiers_options"
+struct instNoModelTrue__option_t instNoModelTrue;
+#line 199 "../../../src/options/quantifiers_options"
 struct instPropagate__option_t instPropagate;
-#line 194 "../../../../../src/options/quantifiers_options"
+#line 202 "../../../src/options/quantifiers_options"
 struct qcfEagerTest__option_t qcfEagerTest;
-#line 196 "../../../../../src/options/quantifiers_options"
+#line 204 "../../../src/options/quantifiers_options"
 struct qcfEagerCheckRd__option_t qcfEagerCheckRd;
-#line 198 "../../../../../src/options/quantifiers_options"
+#line 206 "../../../src/options/quantifiers_options"
 struct qcfSkipRd__option_t qcfSkipRd;
-#line 203 "../../../../../src/options/quantifiers_options"
+#line 211 "../../../src/options/quantifiers_options"
 struct quantRewriteRules__option_t quantRewriteRules;
-#line 205 "../../../../../src/options/quantifiers_options"
+#line 213 "../../../src/options/quantifiers_options"
 struct rrOneInstPerRound__option_t rrOneInstPerRound;
-#line 210 "../../../../../src/options/quantifiers_options"
+#line 218 "../../../src/options/quantifiers_options"
 struct quantInduction__option_t quantInduction;
-#line 212 "../../../../../src/options/quantifiers_options"
+#line 220 "../../../src/options/quantifiers_options"
 struct dtStcInduction__option_t dtStcInduction;
-#line 214 "../../../../../src/options/quantifiers_options"
+#line 222 "../../../src/options/quantifiers_options"
 struct intWfInduction__option_t intWfInduction;
-#line 216 "../../../../../src/options/quantifiers_options"
+#line 224 "../../../src/options/quantifiers_options"
 struct conjectureGen__option_t conjectureGen;
-#line 219 "../../../../../src/options/quantifiers_options"
+#line 227 "../../../src/options/quantifiers_options"
 struct conjectureGenPerRound__option_t conjectureGenPerRound;
-#line 221 "../../../../../src/options/quantifiers_options"
+#line 229 "../../../src/options/quantifiers_options"
 struct conjectureNoFilter__option_t conjectureNoFilter;
-#line 223 "../../../../../src/options/quantifiers_options"
+#line 231 "../../../src/options/quantifiers_options"
 struct conjectureFilterActiveTerms__option_t conjectureFilterActiveTerms;
-#line 225 "../../../../../src/options/quantifiers_options"
+#line 233 "../../../src/options/quantifiers_options"
 struct conjectureFilterCanonical__option_t conjectureFilterCanonical;
-#line 227 "../../../../../src/options/quantifiers_options"
+#line 235 "../../../src/options/quantifiers_options"
 struct conjectureFilterModel__option_t conjectureFilterModel;
-#line 229 "../../../../../src/options/quantifiers_options"
+#line 237 "../../../src/options/quantifiers_options"
 struct conjectureGenGtEnum__option_t conjectureGenGtEnum;
-#line 231 "../../../../../src/options/quantifiers_options"
+#line 239 "../../../src/options/quantifiers_options"
 struct conjectureUeeIntro__option_t conjectureUeeIntro;
-#line 233 "../../../../../src/options/quantifiers_options"
+#line 241 "../../../src/options/quantifiers_options"
 struct conjectureGenMaxDepth__option_t conjectureGenMaxDepth;
-#line 238 "../../../../../src/options/quantifiers_options"
+#line 246 "../../../src/options/quantifiers_options"
 struct ceGuidedInst__option_t ceGuidedInst;
-#line 240 "../../../../../src/options/quantifiers_options"
+#line 248 "../../../src/options/quantifiers_options"
 struct ceGuidedInstFair__option_t ceGuidedInstFair;
-#line 242 "../../../../../src/options/quantifiers_options"
+#line 250 "../../../src/options/quantifiers_options"
 struct cegqiSingleInvMode__option_t cegqiSingleInvMode;
-#line 244 "../../../../../src/options/quantifiers_options"
+#line 252 "../../../src/options/quantifiers_options"
 struct cegqiSingleInvPartial__option_t cegqiSingleInvPartial;
-#line 246 "../../../../../src/options/quantifiers_options"
+#line 254 "../../../src/options/quantifiers_options"
 struct cegqiSingleInvReconstruct__option_t cegqiSingleInvReconstruct;
-#line 248 "../../../../../src/options/quantifiers_options"
+#line 256 "../../../src/options/quantifiers_options"
 struct cegqiSolMinCore__option_t cegqiSolMinCore;
-#line 250 "../../../../../src/options/quantifiers_options"
+#line 258 "../../../src/options/quantifiers_options"
 struct cegqiSolMinInst__option_t cegqiSolMinInst;
-#line 252 "../../../../../src/options/quantifiers_options"
+#line 260 "../../../src/options/quantifiers_options"
 struct cegqiSingleInvReconstructConst__option_t cegqiSingleInvReconstructConst;
-#line 254 "../../../../../src/options/quantifiers_options"
+#line 262 "../../../src/options/quantifiers_options"
 struct cegqiSingleInvAbort__option_t cegqiSingleInvAbort;
-#line 257 "../../../../../src/options/quantifiers_options"
+#line 265 "../../../src/options/quantifiers_options"
 struct sygusNormalForm__option_t sygusNormalForm;
-#line 259 "../../../../../src/options/quantifiers_options"
+#line 267 "../../../src/options/quantifiers_options"
 struct sygusNormalFormArg__option_t sygusNormalFormArg;
-#line 261 "../../../../../src/options/quantifiers_options"
+#line 269 "../../../src/options/quantifiers_options"
 struct sygusNormalFormGlobal__option_t sygusNormalFormGlobal;
-#line 263 "../../../../../src/options/quantifiers_options"
+#line 271 "../../../src/options/quantifiers_options"
 struct sygusNormalFormGlobalGen__option_t sygusNormalFormGlobalGen;
-#line 265 "../../../../../src/options/quantifiers_options"
+#line 273 "../../../src/options/quantifiers_options"
 struct sygusNormalFormGlobalArg__option_t sygusNormalFormGlobalArg;
-#line 267 "../../../../../src/options/quantifiers_options"
+#line 275 "../../../src/options/quantifiers_options"
 struct sygusNormalFormGlobalContent__option_t sygusNormalFormGlobalContent;
-#line 270 "../../../../../src/options/quantifiers_options"
+#line 278 "../../../src/options/quantifiers_options"
 struct sygusInvTemplMode__option_t sygusInvTemplMode;
-#line 273 "../../../../../src/options/quantifiers_options"
+#line 280 "../../../src/options/quantifiers_options"
+struct sygusUnifCondSol__option_t sygusUnifCondSol;
+#line 283 "../../../src/options/quantifiers_options"
 struct sygusDirectEval__option_t sygusDirectEval;
-#line 277 "../../../../../src/options/quantifiers_options"
+#line 285 "../../../src/options/quantifiers_options"
+struct sygusCRefEval__option_t sygusCRefEval;
+#line 289 "../../../src/options/quantifiers_options"
 struct cbqi__option_t cbqi;
-#line 279 "../../../../../src/options/quantifiers_options"
+#line 291 "../../../src/options/quantifiers_options"
 struct recurseCbqi__option_t recurseCbqi;
-#line 281 "../../../../../src/options/quantifiers_options"
+#line 293 "../../../src/options/quantifiers_options"
 struct cbqiSat__option_t cbqiSat;
-#line 283 "../../../../../src/options/quantifiers_options"
+#line 295 "../../../src/options/quantifiers_options"
 struct cbqiModel__option_t cbqiModel;
-#line 285 "../../../../../src/options/quantifiers_options"
+#line 297 "../../../src/options/quantifiers_options"
 struct cbqiAll__option_t cbqiAll;
-#line 287 "../../../../../src/options/quantifiers_options"
+#line 299 "../../../src/options/quantifiers_options"
 struct cbqiUseInfInt__option_t cbqiUseInfInt;
-#line 289 "../../../../../src/options/quantifiers_options"
+#line 301 "../../../src/options/quantifiers_options"
 struct cbqiUseInfReal__option_t cbqiUseInfReal;
-#line 291 "../../../../../src/options/quantifiers_options"
+#line 303 "../../../src/options/quantifiers_options"
 struct cbqiPreRegInst__option_t cbqiPreRegInst;
-#line 293 "../../../../../src/options/quantifiers_options"
+#line 305 "../../../src/options/quantifiers_options"
 struct cbqiMinBounds__option_t cbqiMinBounds;
-#line 295 "../../../../../src/options/quantifiers_options"
+#line 307 "../../../src/options/quantifiers_options"
 struct cbqiRoundUpLowerLia__option_t cbqiRoundUpLowerLia;
-#line 297 "../../../../../src/options/quantifiers_options"
+#line 309 "../../../src/options/quantifiers_options"
 struct cbqiMidpoint__option_t cbqiMidpoint;
-#line 299 "../../../../../src/options/quantifiers_options"
+#line 311 "../../../src/options/quantifiers_options"
 struct cbqiNopt__option_t cbqiNopt;
-#line 301 "../../../../../src/options/quantifiers_options"
+#line 313 "../../../src/options/quantifiers_options"
 struct cbqiLitDepend__option_t cbqiLitDepend;
-#line 303 "../../../../../src/options/quantifiers_options"
+#line 315 "../../../src/options/quantifiers_options"
 struct cbqiInnermost__option_t cbqiInnermost;
-#line 305 "../../../../../src/options/quantifiers_options"
+#line 317 "../../../src/options/quantifiers_options"
 struct cbqiNestedQE__option_t cbqiNestedQE;
-#line 308 "../../../../../src/options/quantifiers_options"
+#line 320 "../../../src/options/quantifiers_options"
 struct quantEpr__option_t quantEpr;
-#line 310 "../../../../../src/options/quantifiers_options"
+#line 322 "../../../src/options/quantifiers_options"
 struct quantEprMatching__option_t quantEprMatching;
-#line 315 "../../../../../src/options/quantifiers_options"
+#line 327 "../../../src/options/quantifiers_options"
 struct localTheoryExt__option_t localTheoryExt;
-#line 317 "../../../../../src/options/quantifiers_options"
+#line 329 "../../../src/options/quantifiers_options"
 struct ltePartialInst__option_t ltePartialInst;
-#line 319 "../../../../../src/options/quantifiers_options"
+#line 331 "../../../src/options/quantifiers_options"
 struct lteRestrictInstClosure__option_t lteRestrictInstClosure;
-#line 324 "../../../../../src/options/quantifiers_options"
+#line 336 "../../../src/options/quantifiers_options"
 struct quantAlphaEquiv__option_t quantAlphaEquiv;
-#line 326 "../../../../../src/options/quantifiers_options"
+#line 338 "../../../src/options/quantifiers_options"
 struct macrosQuant__option_t macrosQuant;
-#line 328 "../../../../../src/options/quantifiers_options"
+#line 340 "../../../src/options/quantifiers_options"
 struct macrosQuantMode__option_t macrosQuantMode;
-#line 330 "../../../../../src/options/quantifiers_options"
+#line 342 "../../../src/options/quantifiers_options"
 struct quantDynamicSplit__option_t quantDynamicSplit;
-#line 332 "../../../../../src/options/quantifiers_options"
+#line 344 "../../../src/options/quantifiers_options"
 struct quantAntiSkolem__option_t quantAntiSkolem;
-#line 342 "../../../../../src/options/quantifiers_options"
+#line 354 "../../../src/options/quantifiers_options"
 struct quantEqualityEngine__option_t quantEqualityEngine;
-#line 347 "../../../../../src/options/quantifiers_options"
+#line 359 "../../../src/options/quantifiers_options"
 struct trackInstLemmas__option_t trackInstLemmas;
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/quantifiers_options.h b/src/options/quantifiers_options.h
index 507c54d..623b3db 100644
--- a/src/options/quantifiers_options.h
+++ b/src/options/quantifiers_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -21,44 +21,44 @@
 
 #include "options/options.h"
 
-#line 22 "../../../../../src/options/quantifiers_options"
+#line 22 "../../../src/options/quantifiers_options"
 #include "options/quantifiers_modes.h"
-#line 36 "../../../../../src/options/quantifiers_options"
+#line 36 "../../../src/options/quantifiers_options"
 #include "options/quantifiers_modes.h"
-#line 67 "../../../../../src/options/quantifiers_options"
+#line 67 "../../../src/options/quantifiers_options"
 #include "options/quantifiers_modes.h"
-#line 94 "../../../../../src/options/quantifiers_options"
+#line 98 "../../../src/options/quantifiers_options"
 #include "options/quantifiers_modes.h"
-#line 96 "../../../../../src/options/quantifiers_options"
+#line 100 "../../../src/options/quantifiers_options"
 #include "options/quantifiers_modes.h"
-#line 98 "../../../../../src/options/quantifiers_options"
+#line 102 "../../../src/options/quantifiers_options"
 #include "options/quantifiers_modes.h"
-#line 103 "../../../../../src/options/quantifiers_options"
+#line 107 "../../../src/options/quantifiers_options"
 #include "options/quantifiers_modes.h"
-#line 116 "../../../../../src/options/quantifiers_options"
+#line 122 "../../../src/options/quantifiers_options"
 #include "options/quantifiers_modes.h"
-#line 128 "../../../../../src/options/quantifiers_options"
+#line 134 "../../../src/options/quantifiers_options"
 #include "options/quantifiers_modes.h"
-#line 145 "../../../../../src/options/quantifiers_options"
+#line 151 "../../../src/options/quantifiers_options"
 #include "options/quantifiers_modes.h"
-#line 168 "../../../../../src/options/quantifiers_options"
+#line 174 "../../../src/options/quantifiers_options"
 #include "options/quantifiers_modes.h"
-#line 175 "../../../../../src/options/quantifiers_options"
+#line 181 "../../../src/options/quantifiers_options"
 #include "options/quantifiers_modes.h"
-#line 177 "../../../../../src/options/quantifiers_options"
+#line 183 "../../../src/options/quantifiers_options"
 #include "options/quantifiers_modes.h"
-#line 240 "../../../../../src/options/quantifiers_options"
+#line 248 "../../../src/options/quantifiers_options"
 #include "options/quantifiers_modes.h"
-#line 242 "../../../../../src/options/quantifiers_options"
+#line 250 "../../../src/options/quantifiers_options"
 #include "options/quantifiers_modes.h"
-#line 270 "../../../../../src/options/quantifiers_options"
+#line 278 "../../../src/options/quantifiers_options"
 #include "options/quantifiers_modes.h"
-#line 328 "../../../../../src/options/quantifiers_options"
+#line 340 "../../../src/options/quantifiers_options"
 #include "options/quantifiers_modes.h"
-#line 330 "../../../../../src/options/quantifiers_options"
+#line 342 "../../../src/options/quantifiers_options"
 #include "options/quantifiers_modes.h"
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__QUANTIFIERS__FOR_OPTION_HOLDER \
   miniscopeQuant__option_t::type miniscopeQuant; \
@@ -127,6 +127,10 @@
   bool multiTriggerWhenSingle__setByUser__; \
   multiTriggerPriority__option_t::type multiTriggerPriority; \
   bool multiTriggerPriority__setByUser__; \
+  multiTriggerCache__option_t::type multiTriggerCache; \
+  bool multiTriggerCache__setByUser__; \
+  multiTriggerLinear__option_t::type multiTriggerLinear; \
+  bool multiTriggerLinear__setByUser__; \
   triggerSelMode__option_t::type triggerSelMode; \
   bool triggerSelMode__setByUser__; \
   triggerActiveSelMode__option_t::type triggerActiveSelMode; \
@@ -143,6 +147,8 @@
   bool instWhenPhase__setByUser__; \
   instWhenTcFirst__option_t::type instWhenTcFirst; \
   bool instWhenTcFirst__setByUser__; \
+  quantModelEe__option_t::type quantModelEe; \
+  bool quantModelEe__setByUser__; \
   instMaxLevel__option_t::type instMaxLevel; \
   bool instMaxLevel__setByUser__; \
   instLevelInputOnly__option_t::type instLevelInputOnly; \
@@ -209,6 +215,8 @@
   bool qcfVoExp__setByUser__; \
   instNoEntail__option_t::type instNoEntail; \
   bool instNoEntail__setByUser__; \
+  instNoModelTrue__option_t::type instNoModelTrue; \
+  bool instNoModelTrue__setByUser__; \
   instPropagate__option_t::type instPropagate; \
   bool instPropagate__setByUser__; \
   qcfEagerTest__option_t::type qcfEagerTest; \
@@ -277,8 +285,12 @@
   bool sygusNormalFormGlobalContent__setByUser__; \
   sygusInvTemplMode__option_t::type sygusInvTemplMode; \
   bool sygusInvTemplMode__setByUser__; \
+  sygusUnifCondSol__option_t::type sygusUnifCondSol; \
+  bool sygusUnifCondSol__setByUser__; \
   sygusDirectEval__option_t::type sygusDirectEval; \
   bool sygusDirectEval__setByUser__; \
+  sygusCRefEval__option_t::type sygusCRefEval; \
+  bool sygusCRefEval__setByUser__; \
   cbqi__option_t::type cbqi; \
   bool cbqi__setByUser__; \
   recurseCbqi__option_t::type recurseCbqi; \
@@ -334,2034 +346,2124 @@
   trackInstLemmas__option_t::type trackInstLemmas; \
   bool trackInstLemmas__setByUser__;
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
 namespace options {
 
 
-#line 13 "../../../../../src/options/quantifiers_options"
+#line 13 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC miniscopeQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } miniscopeQuant CVC4_PUBLIC;
-#line 18 "../../../../../src/options/quantifiers_options"
+#line 18 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC miniscopeQuantFreeVar__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } miniscopeQuantFreeVar CVC4_PUBLIC;
-#line 20 "../../../../../src/options/quantifiers_options"
+#line 20 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC quantSplit__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } quantSplit CVC4_PUBLIC;
-#line 22 "../../../../../src/options/quantifiers_options"
+#line 22 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC prenexQuant__option_t { typedef CVC4::theory::quantifiers::PrenexQuantMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } prenexQuant CVC4_PUBLIC;
-#line 24 "../../../../../src/options/quantifiers_options"
+#line 24 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC prenexQuantUser__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } prenexQuantUser CVC4_PUBLIC;
-#line 29 "../../../../../src/options/quantifiers_options"
+#line 29 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC varElimQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } varElimQuant CVC4_PUBLIC;
-#line 31 "../../../../../src/options/quantifiers_options"
+#line 31 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC varIneqElimQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } varIneqElimQuant CVC4_PUBLIC;
-#line 33 "../../../../../src/options/quantifiers_options"
+#line 33 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC dtVarExpandQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dtVarExpandQuant CVC4_PUBLIC;
-#line 36 "../../../../../src/options/quantifiers_options"
+#line 36 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC iteLiftQuant__option_t { typedef CVC4::theory::quantifiers::IteLiftQuantMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } iteLiftQuant CVC4_PUBLIC;
-#line 38 "../../../../../src/options/quantifiers_options"
+#line 38 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC condVarSplitQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } condVarSplitQuant CVC4_PUBLIC;
-#line 40 "../../../../../src/options/quantifiers_options"
+#line 40 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC condVarSplitQuantAgg__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } condVarSplitQuantAgg CVC4_PUBLIC;
-#line 42 "../../../../../src/options/quantifiers_options"
+#line 42 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC iteDtTesterSplitQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } iteDtTesterSplitQuant CVC4_PUBLIC;
-#line 47 "../../../../../src/options/quantifiers_options"
+#line 47 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC preSkolemQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } preSkolemQuant CVC4_PUBLIC;
-#line 49 "../../../../../src/options/quantifiers_options"
+#line 49 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC preSkolemQuantNested__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } preSkolemQuantNested CVC4_PUBLIC;
-#line 51 "../../../../../src/options/quantifiers_options"
+#line 51 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC preSkolemQuantAgg__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } preSkolemQuantAgg CVC4_PUBLIC;
-#line 53 "../../../../../src/options/quantifiers_options"
+#line 53 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC aggressiveMiniscopeQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } aggressiveMiniscopeQuant CVC4_PUBLIC;
-#line 55 "../../../../../src/options/quantifiers_options"
+#line 55 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC elimTautQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } elimTautQuant CVC4_PUBLIC;
-#line 57 "../../../../../src/options/quantifiers_options"
-extern struct CVC4_PUBLIC elimExtArithQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } elimExtArithQuant CVC4_PUBLIC;
-#line 59 "../../../../../src/options/quantifiers_options"
+#line 57 "../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC elimExtArithQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } elimExtArithQuant CVC4_PUBLIC;
+#line 59 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC condRewriteQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } condRewriteQuant CVC4_PUBLIC;
-#line 64 "../../../../../src/options/quantifiers_options"
+#line 64 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC eMatching__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } eMatching CVC4_PUBLIC;
-#line 67 "../../../../../src/options/quantifiers_options"
+#line 67 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC termDbMode__option_t { typedef CVC4::theory::quantifiers::TermDbMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } termDbMode CVC4_PUBLIC;
-#line 69 "../../../../../src/options/quantifiers_options"
+#line 69 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC registerQuantBodyTerms__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } registerQuantBodyTerms CVC4_PUBLIC;
-#line 71 "../../../../../src/options/quantifiers_options"
+#line 71 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC inferArithTriggerEq__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } inferArithTriggerEq CVC4_PUBLIC;
-#line 73 "../../../../../src/options/quantifiers_options"
+#line 73 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC inferArithTriggerEqExp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } inferArithTriggerEqExp CVC4_PUBLIC;
-#line 76 "../../../../../src/options/quantifiers_options"
+#line 76 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC strictTriggers__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } strictTriggers CVC4_PUBLIC;
-#line 78 "../../../../../src/options/quantifiers_options"
+#line 78 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC relevantTriggers__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } relevantTriggers CVC4_PUBLIC;
-#line 80 "../../../../../src/options/quantifiers_options"
+#line 80 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC relationalTriggers__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } relationalTriggers CVC4_PUBLIC;
-#line 82 "../../../../../src/options/quantifiers_options"
+#line 82 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC purifyTriggers__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } purifyTriggers CVC4_PUBLIC;
-#line 84 "../../../../../src/options/quantifiers_options"
+#line 84 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC purifyDtTriggers__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } purifyDtTriggers CVC4_PUBLIC;
-#line 86 "../../../../../src/options/quantifiers_options"
+#line 86 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC pureThTriggers__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } pureThTriggers CVC4_PUBLIC;
-#line 88 "../../../../../src/options/quantifiers_options"
+#line 88 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC partialTriggers__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } partialTriggers CVC4_PUBLIC;
-#line 90 "../../../../../src/options/quantifiers_options"
+#line 90 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC multiTriggerWhenSingle__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } multiTriggerWhenSingle CVC4_PUBLIC;
-#line 92 "../../../../../src/options/quantifiers_options"
+#line 92 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC multiTriggerPriority__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } multiTriggerPriority CVC4_PUBLIC;
-#line 94 "../../../../../src/options/quantifiers_options"
+#line 94 "../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC multiTriggerCache__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } multiTriggerCache CVC4_PUBLIC;
+#line 96 "../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC multiTriggerLinear__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } multiTriggerLinear CVC4_PUBLIC;
+#line 98 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC triggerSelMode__option_t { typedef CVC4::theory::quantifiers::TriggerSelMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } triggerSelMode CVC4_PUBLIC;
-#line 96 "../../../../../src/options/quantifiers_options"
+#line 100 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC triggerActiveSelMode__option_t { typedef CVC4::theory::quantifiers::TriggerActiveSelMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } triggerActiveSelMode CVC4_PUBLIC;
-#line 98 "../../../../../src/options/quantifiers_options"
+#line 102 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC userPatternsQuant__option_t { typedef CVC4::theory::quantifiers::UserPatMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } userPatternsQuant CVC4_PUBLIC;
-#line 100 "../../../../../src/options/quantifiers_options"
+#line 104 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC incrementTriggers__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } incrementTriggers CVC4_PUBLIC;
-#line 103 "../../../../../src/options/quantifiers_options"
+#line 107 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC instWhenMode__option_t { typedef CVC4::theory::quantifiers::InstWhenMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } instWhenMode CVC4_PUBLIC;
-#line 105 "../../../../../src/options/quantifiers_options"
+#line 109 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC instWhenStrictInterleave__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } instWhenStrictInterleave CVC4_PUBLIC;
-#line 107 "../../../../../src/options/quantifiers_options"
+#line 111 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC instWhenPhase__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } instWhenPhase CVC4_PUBLIC;
-#line 109 "../../../../../src/options/quantifiers_options"
+#line 113 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC instWhenTcFirst__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } instWhenTcFirst CVC4_PUBLIC;
-#line 112 "../../../../../src/options/quantifiers_options"
+#line 115 "../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC quantModelEe__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } quantModelEe CVC4_PUBLIC;
+#line 118 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC instMaxLevel__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } instMaxLevel CVC4_PUBLIC;
-#line 114 "../../../../../src/options/quantifiers_options"
+#line 120 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC instLevelInputOnly__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } instLevelInputOnly CVC4_PUBLIC;
-#line 116 "../../../../../src/options/quantifiers_options"
+#line 122 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC quantRepMode__option_t { typedef CVC4::theory::quantifiers::QuantRepMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } quantRepMode CVC4_PUBLIC;
-#line 118 "../../../../../src/options/quantifiers_options"
+#line 124 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC instRelevantCond__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } instRelevantCond CVC4_PUBLIC;
-#line 121 "../../../../../src/options/quantifiers_options"
+#line 127 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC fullSaturateQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } fullSaturateQuant CVC4_PUBLIC;
-#line 123 "../../../../../src/options/quantifiers_options"
+#line 129 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC fullSaturateQuantRd__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } fullSaturateQuantRd CVC4_PUBLIC;
-#line 125 "../../../../../src/options/quantifiers_options"
+#line 131 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC fullSaturateInst__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } fullSaturateInst CVC4_PUBLIC;
-#line 128 "../../../../../src/options/quantifiers_options"
+#line 134 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC literalMatchMode__option_t { typedef CVC4::theory::quantifiers::LiteralMatchMode type; type operator()() const; bool wasSetByUser() const; } literalMatchMode CVC4_PUBLIC;
-#line 133 "../../../../../src/options/quantifiers_options"
+#line 139 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC finiteModelFind__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } finiteModelFind CVC4_PUBLIC;
-#line 136 "../../../../../src/options/quantifiers_options"
+#line 142 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC quantFunWellDefined__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } quantFunWellDefined CVC4_PUBLIC;
-#line 138 "../../../../../src/options/quantifiers_options"
+#line 144 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC fmfFunWellDefined__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } fmfFunWellDefined CVC4_PUBLIC;
-#line 140 "../../../../../src/options/quantifiers_options"
+#line 146 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC fmfFunWellDefinedRelevant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } fmfFunWellDefinedRelevant CVC4_PUBLIC;
-#line 142 "../../../../../src/options/quantifiers_options"
+#line 148 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC fmfEmptySorts__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } fmfEmptySorts CVC4_PUBLIC;
-#line 145 "../../../../../src/options/quantifiers_options"
+#line 151 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC mbqiMode__option_t { typedef CVC4::theory::quantifiers::MbqiMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } mbqiMode CVC4_PUBLIC;
-#line 147 "../../../../../src/options/quantifiers_options"
+#line 153 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC fmfOneInstPerRound__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } fmfOneInstPerRound CVC4_PUBLIC;
-#line 149 "../../../../../src/options/quantifiers_options"
+#line 155 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC fmfOneQuantPerRound__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } fmfOneQuantPerRound CVC4_PUBLIC;
-#line 152 "../../../../../src/options/quantifiers_options"
+#line 158 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC fmfInstEngine__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } fmfInstEngine CVC4_PUBLIC;
-#line 154 "../../../../../src/options/quantifiers_options"
+#line 160 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC fmfInstGen__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } fmfInstGen CVC4_PUBLIC;
-#line 156 "../../../../../src/options/quantifiers_options"
+#line 162 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC fmfInstGenOneQuantPerRound__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } fmfInstGenOneQuantPerRound CVC4_PUBLIC;
-#line 158 "../../../../../src/options/quantifiers_options"
+#line 164 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC fmfFreshDistConst__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } fmfFreshDistConst CVC4_PUBLIC;
-#line 160 "../../../../../src/options/quantifiers_options"
+#line 166 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC fmfFmcSimple__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } fmfFmcSimple CVC4_PUBLIC;
-#line 162 "../../../../../src/options/quantifiers_options"
+#line 168 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC fmfBoundInt__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } fmfBoundInt CVC4_PUBLIC;
-#line 164 "../../../../../src/options/quantifiers_options"
+#line 170 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC fmfBound__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } fmfBound CVC4_PUBLIC;
-#line 166 "../../../../../src/options/quantifiers_options"
+#line 172 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC fmfBoundLazy__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } fmfBoundLazy CVC4_PUBLIC;
-#line 168 "../../../../../src/options/quantifiers_options"
+#line 174 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC fmfBoundMinMode__option_t { typedef CVC4::theory::quantifiers::FmfBoundMinMode type; type operator()() const; bool wasSetByUser() const; } fmfBoundMinMode CVC4_PUBLIC;
-#line 173 "../../../../../src/options/quantifiers_options"
+#line 179 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC quantConflictFind__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } quantConflictFind CVC4_PUBLIC;
-#line 175 "../../../../../src/options/quantifiers_options"
+#line 181 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC qcfMode__option_t { typedef CVC4::theory::quantifiers::QcfMode type; type operator()() const; bool wasSetByUser() const; } qcfMode CVC4_PUBLIC;
-#line 177 "../../../../../src/options/quantifiers_options"
+#line 183 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC qcfWhenMode__option_t { typedef CVC4::theory::quantifiers::QcfWhenMode type; type operator()() const; bool wasSetByUser() const; } qcfWhenMode CVC4_PUBLIC;
-#line 179 "../../../../../src/options/quantifiers_options"
+#line 185 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC qcfTConstraint__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } qcfTConstraint CVC4_PUBLIC;
-#line 181 "../../../../../src/options/quantifiers_options"
+#line 187 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC qcfAllConflict__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } qcfAllConflict CVC4_PUBLIC;
-#line 183 "../../../../../src/options/quantifiers_options"
+#line 189 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC qcfNestedConflict__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } qcfNestedConflict CVC4_PUBLIC;
-#line 185 "../../../../../src/options/quantifiers_options"
+#line 191 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC qcfVoExp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } qcfVoExp CVC4_PUBLIC;
-#line 188 "../../../../../src/options/quantifiers_options"
+#line 194 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC instNoEntail__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } instNoEntail CVC4_PUBLIC;
-#line 191 "../../../../../src/options/quantifiers_options"
+#line 196 "../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC instNoModelTrue__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } instNoModelTrue CVC4_PUBLIC;
+#line 199 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC instPropagate__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } instPropagate CVC4_PUBLIC;
-#line 194 "../../../../../src/options/quantifiers_options"
+#line 202 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC qcfEagerTest__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } qcfEagerTest CVC4_PUBLIC;
-#line 196 "../../../../../src/options/quantifiers_options"
+#line 204 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC qcfEagerCheckRd__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } qcfEagerCheckRd CVC4_PUBLIC;
-#line 198 "../../../../../src/options/quantifiers_options"
+#line 206 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC qcfSkipRd__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } qcfSkipRd CVC4_PUBLIC;
-#line 203 "../../../../../src/options/quantifiers_options"
+#line 211 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC quantRewriteRules__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } quantRewriteRules CVC4_PUBLIC;
-#line 205 "../../../../../src/options/quantifiers_options"
+#line 213 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC rrOneInstPerRound__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } rrOneInstPerRound CVC4_PUBLIC;
-#line 210 "../../../../../src/options/quantifiers_options"
+#line 218 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC quantInduction__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } quantInduction CVC4_PUBLIC;
-#line 212 "../../../../../src/options/quantifiers_options"
+#line 220 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC dtStcInduction__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } dtStcInduction CVC4_PUBLIC;
-#line 214 "../../../../../src/options/quantifiers_options"
+#line 222 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC intWfInduction__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } intWfInduction CVC4_PUBLIC;
-#line 216 "../../../../../src/options/quantifiers_options"
+#line 224 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC conjectureGen__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } conjectureGen CVC4_PUBLIC;
-#line 219 "../../../../../src/options/quantifiers_options"
+#line 227 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC conjectureGenPerRound__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } conjectureGenPerRound CVC4_PUBLIC;
-#line 221 "../../../../../src/options/quantifiers_options"
+#line 229 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC conjectureNoFilter__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } conjectureNoFilter CVC4_PUBLIC;
-#line 223 "../../../../../src/options/quantifiers_options"
+#line 231 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC conjectureFilterActiveTerms__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } conjectureFilterActiveTerms CVC4_PUBLIC;
-#line 225 "../../../../../src/options/quantifiers_options"
+#line 233 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC conjectureFilterCanonical__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } conjectureFilterCanonical CVC4_PUBLIC;
-#line 227 "../../../../../src/options/quantifiers_options"
+#line 235 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC conjectureFilterModel__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } conjectureFilterModel CVC4_PUBLIC;
-#line 229 "../../../../../src/options/quantifiers_options"
+#line 237 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC conjectureGenGtEnum__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } conjectureGenGtEnum CVC4_PUBLIC;
-#line 231 "../../../../../src/options/quantifiers_options"
+#line 239 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC conjectureUeeIntro__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } conjectureUeeIntro CVC4_PUBLIC;
-#line 233 "../../../../../src/options/quantifiers_options"
+#line 241 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC conjectureGenMaxDepth__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } conjectureGenMaxDepth CVC4_PUBLIC;
-#line 238 "../../../../../src/options/quantifiers_options"
+#line 246 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC ceGuidedInst__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } ceGuidedInst CVC4_PUBLIC;
-#line 240 "../../../../../src/options/quantifiers_options"
+#line 248 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC ceGuidedInstFair__option_t { typedef CVC4::theory::quantifiers::CegqiFairMode type; type operator()() const; bool wasSetByUser() const; } ceGuidedInstFair CVC4_PUBLIC;
-#line 242 "../../../../../src/options/quantifiers_options"
+#line 250 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC cegqiSingleInvMode__option_t { typedef CVC4::theory::quantifiers::CegqiSingleInvMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } cegqiSingleInvMode CVC4_PUBLIC;
-#line 244 "../../../../../src/options/quantifiers_options"
+#line 252 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC cegqiSingleInvPartial__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cegqiSingleInvPartial CVC4_PUBLIC;
-#line 246 "../../../../../src/options/quantifiers_options"
+#line 254 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC cegqiSingleInvReconstruct__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cegqiSingleInvReconstruct CVC4_PUBLIC;
-#line 248 "../../../../../src/options/quantifiers_options"
+#line 256 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC cegqiSolMinCore__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cegqiSolMinCore CVC4_PUBLIC;
-#line 250 "../../../../../src/options/quantifiers_options"
+#line 258 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC cegqiSolMinInst__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cegqiSolMinInst CVC4_PUBLIC;
-#line 252 "../../../../../src/options/quantifiers_options"
+#line 260 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC cegqiSingleInvReconstructConst__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cegqiSingleInvReconstructConst CVC4_PUBLIC;
-#line 254 "../../../../../src/options/quantifiers_options"
+#line 262 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC cegqiSingleInvAbort__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cegqiSingleInvAbort CVC4_PUBLIC;
-#line 257 "../../../../../src/options/quantifiers_options"
+#line 265 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC sygusNormalForm__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sygusNormalForm CVC4_PUBLIC;
-#line 259 "../../../../../src/options/quantifiers_options"
+#line 267 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC sygusNormalFormArg__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sygusNormalFormArg CVC4_PUBLIC;
-#line 261 "../../../../../src/options/quantifiers_options"
+#line 269 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC sygusNormalFormGlobal__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sygusNormalFormGlobal CVC4_PUBLIC;
-#line 263 "../../../../../src/options/quantifiers_options"
+#line 271 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC sygusNormalFormGlobalGen__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sygusNormalFormGlobalGen CVC4_PUBLIC;
-#line 265 "../../../../../src/options/quantifiers_options"
+#line 273 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC sygusNormalFormGlobalArg__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sygusNormalFormGlobalArg CVC4_PUBLIC;
-#line 267 "../../../../../src/options/quantifiers_options"
+#line 275 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC sygusNormalFormGlobalContent__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sygusNormalFormGlobalContent CVC4_PUBLIC;
-#line 270 "../../../../../src/options/quantifiers_options"
+#line 278 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC sygusInvTemplMode__option_t { typedef CVC4::theory::quantifiers::SygusInvTemplMode type; type operator()() const; bool wasSetByUser() const; } sygusInvTemplMode CVC4_PUBLIC;
-#line 273 "../../../../../src/options/quantifiers_options"
+#line 280 "../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC sygusUnifCondSol__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sygusUnifCondSol CVC4_PUBLIC;
+#line 283 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC sygusDirectEval__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sygusDirectEval CVC4_PUBLIC;
-#line 277 "../../../../../src/options/quantifiers_options"
+#line 285 "../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC sygusCRefEval__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sygusCRefEval CVC4_PUBLIC;
+#line 289 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC cbqi__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } cbqi CVC4_PUBLIC;
-#line 279 "../../../../../src/options/quantifiers_options"
+#line 291 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC recurseCbqi__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } recurseCbqi CVC4_PUBLIC;
-#line 281 "../../../../../src/options/quantifiers_options"
+#line 293 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC cbqiSat__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } cbqiSat CVC4_PUBLIC;
-#line 283 "../../../../../src/options/quantifiers_options"
+#line 295 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC cbqiModel__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } cbqiModel CVC4_PUBLIC;
-#line 285 "../../../../../src/options/quantifiers_options"
+#line 297 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC cbqiAll__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } cbqiAll CVC4_PUBLIC;
-#line 287 "../../../../../src/options/quantifiers_options"
+#line 299 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC cbqiUseInfInt__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } cbqiUseInfInt CVC4_PUBLIC;
-#line 289 "../../../../../src/options/quantifiers_options"
+#line 301 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC cbqiUseInfReal__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } cbqiUseInfReal CVC4_PUBLIC;
-#line 291 "../../../../../src/options/quantifiers_options"
+#line 303 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC cbqiPreRegInst__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } cbqiPreRegInst CVC4_PUBLIC;
-#line 293 "../../../../../src/options/quantifiers_options"
+#line 305 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC cbqiMinBounds__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cbqiMinBounds CVC4_PUBLIC;
-#line 295 "../../../../../src/options/quantifiers_options"
+#line 307 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC cbqiRoundUpLowerLia__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cbqiRoundUpLowerLia CVC4_PUBLIC;
-#line 297 "../../../../../src/options/quantifiers_options"
+#line 309 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC cbqiMidpoint__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cbqiMidpoint CVC4_PUBLIC;
-#line 299 "../../../../../src/options/quantifiers_options"
+#line 311 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC cbqiNopt__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cbqiNopt CVC4_PUBLIC;
-#line 301 "../../../../../src/options/quantifiers_options"
+#line 313 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC cbqiLitDepend__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cbqiLitDepend CVC4_PUBLIC;
-#line 303 "../../../../../src/options/quantifiers_options"
+#line 315 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC cbqiInnermost__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } cbqiInnermost CVC4_PUBLIC;
-#line 305 "../../../../../src/options/quantifiers_options"
-extern struct CVC4_PUBLIC cbqiNestedQE__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cbqiNestedQE CVC4_PUBLIC;
-#line 308 "../../../../../src/options/quantifiers_options"
+#line 317 "../../../src/options/quantifiers_options"
+extern struct CVC4_PUBLIC cbqiNestedQE__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } cbqiNestedQE CVC4_PUBLIC;
+#line 320 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC quantEpr__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } quantEpr CVC4_PUBLIC;
-#line 310 "../../../../../src/options/quantifiers_options"
+#line 322 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC quantEprMatching__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } quantEprMatching CVC4_PUBLIC;
-#line 315 "../../../../../src/options/quantifiers_options"
+#line 327 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC localTheoryExt__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } localTheoryExt CVC4_PUBLIC;
-#line 317 "../../../../../src/options/quantifiers_options"
+#line 329 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC ltePartialInst__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ltePartialInst CVC4_PUBLIC;
-#line 319 "../../../../../src/options/quantifiers_options"
+#line 331 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC lteRestrictInstClosure__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } lteRestrictInstClosure CVC4_PUBLIC;
-#line 324 "../../../../../src/options/quantifiers_options"
+#line 336 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC quantAlphaEquiv__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } quantAlphaEquiv CVC4_PUBLIC;
-#line 326 "../../../../../src/options/quantifiers_options"
+#line 338 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC macrosQuant__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } macrosQuant CVC4_PUBLIC;
-#line 328 "../../../../../src/options/quantifiers_options"
+#line 340 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC macrosQuantMode__option_t { typedef CVC4::theory::quantifiers::MacrosQuantMode type; type operator()() const; bool wasSetByUser() const; } macrosQuantMode CVC4_PUBLIC;
-#line 330 "../../../../../src/options/quantifiers_options"
+#line 342 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC quantDynamicSplit__option_t { typedef CVC4::theory::quantifiers::QuantDSplitMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } quantDynamicSplit CVC4_PUBLIC;
-#line 332 "../../../../../src/options/quantifiers_options"
+#line 344 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC quantAntiSkolem__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } quantAntiSkolem CVC4_PUBLIC;
-#line 342 "../../../../../src/options/quantifiers_options"
+#line 354 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC quantEqualityEngine__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } quantEqualityEngine CVC4_PUBLIC;
-#line 347 "../../../../../src/options/quantifiers_options"
+#line 359 "../../../src/options/quantifiers_options"
 extern struct CVC4_PUBLIC trackInstLemmas__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } trackInstLemmas CVC4_PUBLIC;
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
-#line 13 "../../../../../src/options/quantifiers_options"
+#line 13 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::miniscopeQuant__option_t, const options::miniscopeQuant__option_t::type& x);
-#line 13 "../../../../../src/options/quantifiers_options"
+#line 13 "../../../src/options/quantifiers_options"
 template <> const options::miniscopeQuant__option_t::type& Options::operator[](options::miniscopeQuant__option_t) const;
-#line 13 "../../../../../src/options/quantifiers_options"
+#line 13 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::miniscopeQuant__option_t) const;
-#line 13 "../../../../../src/options/quantifiers_options"
+#line 13 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::miniscopeQuant__option_t, std::string option, bool value);
-#line 18 "../../../../../src/options/quantifiers_options"
+#line 18 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::miniscopeQuantFreeVar__option_t, const options::miniscopeQuantFreeVar__option_t::type& x);
-#line 18 "../../../../../src/options/quantifiers_options"
+#line 18 "../../../src/options/quantifiers_options"
 template <> const options::miniscopeQuantFreeVar__option_t::type& Options::operator[](options::miniscopeQuantFreeVar__option_t) const;
-#line 18 "../../../../../src/options/quantifiers_options"
+#line 18 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::miniscopeQuantFreeVar__option_t) const;
-#line 18 "../../../../../src/options/quantifiers_options"
+#line 18 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::miniscopeQuantFreeVar__option_t, std::string option, bool value);
-#line 20 "../../../../../src/options/quantifiers_options"
+#line 20 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::quantSplit__option_t, const options::quantSplit__option_t::type& x);
-#line 20 "../../../../../src/options/quantifiers_options"
+#line 20 "../../../src/options/quantifiers_options"
 template <> const options::quantSplit__option_t::type& Options::operator[](options::quantSplit__option_t) const;
-#line 20 "../../../../../src/options/quantifiers_options"
+#line 20 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantSplit__option_t) const;
-#line 20 "../../../../../src/options/quantifiers_options"
+#line 20 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::quantSplit__option_t, std::string option, bool value);
-#line 22 "../../../../../src/options/quantifiers_options"
+#line 22 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::prenexQuant__option_t, const options::prenexQuant__option_t::type& x);
-#line 22 "../../../../../src/options/quantifiers_options"
+#line 22 "../../../src/options/quantifiers_options"
 template <> const options::prenexQuant__option_t::type& Options::operator[](options::prenexQuant__option_t) const;
-#line 22 "../../../../../src/options/quantifiers_options"
+#line 22 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::prenexQuant__option_t) const;
-#line 22 "../../../../../src/options/quantifiers_options"
+#line 22 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::prenexQuant__option_t, std::string option, std::string value);
-#line 24 "../../../../../src/options/quantifiers_options"
+#line 24 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::prenexQuantUser__option_t, const options::prenexQuantUser__option_t::type& x);
-#line 24 "../../../../../src/options/quantifiers_options"
+#line 24 "../../../src/options/quantifiers_options"
 template <> const options::prenexQuantUser__option_t::type& Options::operator[](options::prenexQuantUser__option_t) const;
-#line 24 "../../../../../src/options/quantifiers_options"
+#line 24 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::prenexQuantUser__option_t) const;
-#line 24 "../../../../../src/options/quantifiers_options"
+#line 24 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::prenexQuantUser__option_t, std::string option, bool value);
-#line 29 "../../../../../src/options/quantifiers_options"
+#line 29 "../../../src/options/quantifiers_options"
 template <> const options::varElimQuant__option_t::type& Options::operator[](options::varElimQuant__option_t) const;
-#line 29 "../../../../../src/options/quantifiers_options"
+#line 29 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::varElimQuant__option_t) const;
-#line 29 "../../../../../src/options/quantifiers_options"
+#line 29 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::varElimQuant__option_t, std::string option, bool value);
-#line 31 "../../../../../src/options/quantifiers_options"
+#line 31 "../../../src/options/quantifiers_options"
 template <> const options::varIneqElimQuant__option_t::type& Options::operator[](options::varIneqElimQuant__option_t) const;
-#line 31 "../../../../../src/options/quantifiers_options"
+#line 31 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::varIneqElimQuant__option_t) const;
-#line 31 "../../../../../src/options/quantifiers_options"
+#line 31 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::varIneqElimQuant__option_t, std::string option, bool value);
-#line 33 "../../../../../src/options/quantifiers_options"
+#line 33 "../../../src/options/quantifiers_options"
 template <> const options::dtVarExpandQuant__option_t::type& Options::operator[](options::dtVarExpandQuant__option_t) const;
-#line 33 "../../../../../src/options/quantifiers_options"
+#line 33 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::dtVarExpandQuant__option_t) const;
-#line 33 "../../../../../src/options/quantifiers_options"
+#line 33 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::dtVarExpandQuant__option_t, std::string option, bool value);
-#line 36 "../../../../../src/options/quantifiers_options"
+#line 36 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::iteLiftQuant__option_t, const options::iteLiftQuant__option_t::type& x);
-#line 36 "../../../../../src/options/quantifiers_options"
+#line 36 "../../../src/options/quantifiers_options"
 template <> const options::iteLiftQuant__option_t::type& Options::operator[](options::iteLiftQuant__option_t) const;
-#line 36 "../../../../../src/options/quantifiers_options"
+#line 36 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::iteLiftQuant__option_t) const;
-#line 36 "../../../../../src/options/quantifiers_options"
+#line 36 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::iteLiftQuant__option_t, std::string option, std::string value);
-#line 38 "../../../../../src/options/quantifiers_options"
+#line 38 "../../../src/options/quantifiers_options"
 template <> const options::condVarSplitQuant__option_t::type& Options::operator[](options::condVarSplitQuant__option_t) const;
-#line 38 "../../../../../src/options/quantifiers_options"
+#line 38 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::condVarSplitQuant__option_t) const;
-#line 38 "../../../../../src/options/quantifiers_options"
+#line 38 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::condVarSplitQuant__option_t, std::string option, bool value);
-#line 40 "../../../../../src/options/quantifiers_options"
+#line 40 "../../../src/options/quantifiers_options"
 template <> const options::condVarSplitQuantAgg__option_t::type& Options::operator[](options::condVarSplitQuantAgg__option_t) const;
-#line 40 "../../../../../src/options/quantifiers_options"
+#line 40 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::condVarSplitQuantAgg__option_t) const;
-#line 40 "../../../../../src/options/quantifiers_options"
+#line 40 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::condVarSplitQuantAgg__option_t, std::string option, bool value);
-#line 42 "../../../../../src/options/quantifiers_options"
+#line 42 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::iteDtTesterSplitQuant__option_t, const options::iteDtTesterSplitQuant__option_t::type& x);
-#line 42 "../../../../../src/options/quantifiers_options"
+#line 42 "../../../src/options/quantifiers_options"
 template <> const options::iteDtTesterSplitQuant__option_t::type& Options::operator[](options::iteDtTesterSplitQuant__option_t) const;
-#line 42 "../../../../../src/options/quantifiers_options"
+#line 42 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::iteDtTesterSplitQuant__option_t) const;
-#line 42 "../../../../../src/options/quantifiers_options"
+#line 42 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::iteDtTesterSplitQuant__option_t, std::string option, bool value);
-#line 47 "../../../../../src/options/quantifiers_options"
+#line 47 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::preSkolemQuant__option_t, const options::preSkolemQuant__option_t::type& x);
-#line 47 "../../../../../src/options/quantifiers_options"
+#line 47 "../../../src/options/quantifiers_options"
 template <> const options::preSkolemQuant__option_t::type& Options::operator[](options::preSkolemQuant__option_t) const;
-#line 47 "../../../../../src/options/quantifiers_options"
+#line 47 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::preSkolemQuant__option_t) const;
-#line 47 "../../../../../src/options/quantifiers_options"
+#line 47 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::preSkolemQuant__option_t, std::string option, bool value);
-#line 49 "../../../../../src/options/quantifiers_options"
+#line 49 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::preSkolemQuantNested__option_t, const options::preSkolemQuantNested__option_t::type& x);
-#line 49 "../../../../../src/options/quantifiers_options"
+#line 49 "../../../src/options/quantifiers_options"
 template <> const options::preSkolemQuantNested__option_t::type& Options::operator[](options::preSkolemQuantNested__option_t) const;
-#line 49 "../../../../../src/options/quantifiers_options"
+#line 49 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::preSkolemQuantNested__option_t) const;
-#line 49 "../../../../../src/options/quantifiers_options"
+#line 49 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::preSkolemQuantNested__option_t, std::string option, bool value);
-#line 51 "../../../../../src/options/quantifiers_options"
+#line 51 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::preSkolemQuantAgg__option_t, const options::preSkolemQuantAgg__option_t::type& x);
-#line 51 "../../../../../src/options/quantifiers_options"
+#line 51 "../../../src/options/quantifiers_options"
 template <> const options::preSkolemQuantAgg__option_t::type& Options::operator[](options::preSkolemQuantAgg__option_t) const;
-#line 51 "../../../../../src/options/quantifiers_options"
+#line 51 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::preSkolemQuantAgg__option_t) const;
-#line 51 "../../../../../src/options/quantifiers_options"
+#line 51 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::preSkolemQuantAgg__option_t, std::string option, bool value);
-#line 53 "../../../../../src/options/quantifiers_options"
+#line 53 "../../../src/options/quantifiers_options"
 template <> const options::aggressiveMiniscopeQuant__option_t::type& Options::operator[](options::aggressiveMiniscopeQuant__option_t) const;
-#line 53 "../../../../../src/options/quantifiers_options"
+#line 53 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::aggressiveMiniscopeQuant__option_t) const;
-#line 53 "../../../../../src/options/quantifiers_options"
+#line 53 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::aggressiveMiniscopeQuant__option_t, std::string option, bool value);
-#line 55 "../../../../../src/options/quantifiers_options"
+#line 55 "../../../src/options/quantifiers_options"
 template <> const options::elimTautQuant__option_t::type& Options::operator[](options::elimTautQuant__option_t) const;
-#line 55 "../../../../../src/options/quantifiers_options"
+#line 55 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::elimTautQuant__option_t) const;
-#line 55 "../../../../../src/options/quantifiers_options"
+#line 55 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::elimTautQuant__option_t, std::string option, bool value);
-#line 57 "../../../../../src/options/quantifiers_options"
+#line 57 "../../../src/options/quantifiers_options"
+template <> void Options::set(options::elimExtArithQuant__option_t, const options::elimExtArithQuant__option_t::type& x);
+#line 57 "../../../src/options/quantifiers_options"
 template <> const options::elimExtArithQuant__option_t::type& Options::operator[](options::elimExtArithQuant__option_t) const;
-#line 57 "../../../../../src/options/quantifiers_options"
+#line 57 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::elimExtArithQuant__option_t) const;
-#line 57 "../../../../../src/options/quantifiers_options"
+#line 57 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::elimExtArithQuant__option_t, std::string option, bool value);
-#line 59 "../../../../../src/options/quantifiers_options"
+#line 59 "../../../src/options/quantifiers_options"
 template <> const options::condRewriteQuant__option_t::type& Options::operator[](options::condRewriteQuant__option_t) const;
-#line 59 "../../../../../src/options/quantifiers_options"
+#line 59 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::condRewriteQuant__option_t) const;
-#line 59 "../../../../../src/options/quantifiers_options"
+#line 59 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::condRewriteQuant__option_t, std::string option, bool value);
-#line 64 "../../../../../src/options/quantifiers_options"
+#line 64 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::eMatching__option_t, const options::eMatching__option_t::type& x);
-#line 64 "../../../../../src/options/quantifiers_options"
+#line 64 "../../../src/options/quantifiers_options"
 template <> const options::eMatching__option_t::type& Options::operator[](options::eMatching__option_t) const;
-#line 64 "../../../../../src/options/quantifiers_options"
+#line 64 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::eMatching__option_t) const;
-#line 64 "../../../../../src/options/quantifiers_options"
+#line 64 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::eMatching__option_t, std::string option, bool value);
-#line 67 "../../../../../src/options/quantifiers_options"
+#line 67 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::termDbMode__option_t, const options::termDbMode__option_t::type& x);
-#line 67 "../../../../../src/options/quantifiers_options"
+#line 67 "../../../src/options/quantifiers_options"
 template <> const options::termDbMode__option_t::type& Options::operator[](options::termDbMode__option_t) const;
-#line 67 "../../../../../src/options/quantifiers_options"
+#line 67 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::termDbMode__option_t) const;
-#line 67 "../../../../../src/options/quantifiers_options"
+#line 67 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::termDbMode__option_t, std::string option, std::string value);
-#line 69 "../../../../../src/options/quantifiers_options"
+#line 69 "../../../src/options/quantifiers_options"
 template <> const options::registerQuantBodyTerms__option_t::type& Options::operator[](options::registerQuantBodyTerms__option_t) const;
-#line 69 "../../../../../src/options/quantifiers_options"
+#line 69 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::registerQuantBodyTerms__option_t) const;
-#line 69 "../../../../../src/options/quantifiers_options"
+#line 69 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::registerQuantBodyTerms__option_t, std::string option, bool value);
-#line 71 "../../../../../src/options/quantifiers_options"
+#line 71 "../../../src/options/quantifiers_options"
 template <> const options::inferArithTriggerEq__option_t::type& Options::operator[](options::inferArithTriggerEq__option_t) const;
-#line 71 "../../../../../src/options/quantifiers_options"
+#line 71 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::inferArithTriggerEq__option_t) const;
-#line 71 "../../../../../src/options/quantifiers_options"
+#line 71 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::inferArithTriggerEq__option_t, std::string option, bool value);
-#line 73 "../../../../../src/options/quantifiers_options"
+#line 73 "../../../src/options/quantifiers_options"
 template <> const options::inferArithTriggerEqExp__option_t::type& Options::operator[](options::inferArithTriggerEqExp__option_t) const;
-#line 73 "../../../../../src/options/quantifiers_options"
+#line 73 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::inferArithTriggerEqExp__option_t) const;
-#line 73 "../../../../../src/options/quantifiers_options"
+#line 73 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::inferArithTriggerEqExp__option_t, std::string option, bool value);
-#line 76 "../../../../../src/options/quantifiers_options"
+#line 76 "../../../src/options/quantifiers_options"
 template <> const options::strictTriggers__option_t::type& Options::operator[](options::strictTriggers__option_t) const;
-#line 76 "../../../../../src/options/quantifiers_options"
+#line 76 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::strictTriggers__option_t) const;
-#line 76 "../../../../../src/options/quantifiers_options"
+#line 76 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::strictTriggers__option_t, std::string option, bool value);
-#line 78 "../../../../../src/options/quantifiers_options"
+#line 78 "../../../src/options/quantifiers_options"
 template <> const options::relevantTriggers__option_t::type& Options::operator[](options::relevantTriggers__option_t) const;
-#line 78 "../../../../../src/options/quantifiers_options"
+#line 78 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::relevantTriggers__option_t) const;
-#line 78 "../../../../../src/options/quantifiers_options"
+#line 78 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::relevantTriggers__option_t, std::string option, bool value);
-#line 80 "../../../../../src/options/quantifiers_options"
+#line 80 "../../../src/options/quantifiers_options"
 template <> const options::relationalTriggers__option_t::type& Options::operator[](options::relationalTriggers__option_t) const;
-#line 80 "../../../../../src/options/quantifiers_options"
+#line 80 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::relationalTriggers__option_t) const;
-#line 80 "../../../../../src/options/quantifiers_options"
+#line 80 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::relationalTriggers__option_t, std::string option, bool value);
-#line 82 "../../../../../src/options/quantifiers_options"
+#line 82 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::purifyTriggers__option_t, const options::purifyTriggers__option_t::type& x);
-#line 82 "../../../../../src/options/quantifiers_options"
+#line 82 "../../../src/options/quantifiers_options"
 template <> const options::purifyTriggers__option_t::type& Options::operator[](options::purifyTriggers__option_t) const;
-#line 82 "../../../../../src/options/quantifiers_options"
+#line 82 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::purifyTriggers__option_t) const;
-#line 82 "../../../../../src/options/quantifiers_options"
+#line 82 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::purifyTriggers__option_t, std::string option, bool value);
-#line 84 "../../../../../src/options/quantifiers_options"
+#line 84 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::purifyDtTriggers__option_t, const options::purifyDtTriggers__option_t::type& x);
-#line 84 "../../../../../src/options/quantifiers_options"
+#line 84 "../../../src/options/quantifiers_options"
 template <> const options::purifyDtTriggers__option_t::type& Options::operator[](options::purifyDtTriggers__option_t) const;
-#line 84 "../../../../../src/options/quantifiers_options"
+#line 84 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::purifyDtTriggers__option_t) const;
-#line 84 "../../../../../src/options/quantifiers_options"
+#line 84 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::purifyDtTriggers__option_t, std::string option, bool value);
-#line 86 "../../../../../src/options/quantifiers_options"
+#line 86 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::pureThTriggers__option_t, const options::pureThTriggers__option_t::type& x);
-#line 86 "../../../../../src/options/quantifiers_options"
+#line 86 "../../../src/options/quantifiers_options"
 template <> const options::pureThTriggers__option_t::type& Options::operator[](options::pureThTriggers__option_t) const;
-#line 86 "../../../../../src/options/quantifiers_options"
+#line 86 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::pureThTriggers__option_t) const;
-#line 86 "../../../../../src/options/quantifiers_options"
+#line 86 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::pureThTriggers__option_t, std::string option, bool value);
-#line 88 "../../../../../src/options/quantifiers_options"
+#line 88 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::partialTriggers__option_t, const options::partialTriggers__option_t::type& x);
-#line 88 "../../../../../src/options/quantifiers_options"
+#line 88 "../../../src/options/quantifiers_options"
 template <> const options::partialTriggers__option_t::type& Options::operator[](options::partialTriggers__option_t) const;
-#line 88 "../../../../../src/options/quantifiers_options"
+#line 88 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::partialTriggers__option_t) const;
-#line 88 "../../../../../src/options/quantifiers_options"
+#line 88 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::partialTriggers__option_t, std::string option, bool value);
-#line 90 "../../../../../src/options/quantifiers_options"
+#line 90 "../../../src/options/quantifiers_options"
 template <> const options::multiTriggerWhenSingle__option_t::type& Options::operator[](options::multiTriggerWhenSingle__option_t) const;
-#line 90 "../../../../../src/options/quantifiers_options"
+#line 90 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::multiTriggerWhenSingle__option_t) const;
-#line 90 "../../../../../src/options/quantifiers_options"
+#line 90 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::multiTriggerWhenSingle__option_t, std::string option, bool value);
-#line 92 "../../../../../src/options/quantifiers_options"
+#line 92 "../../../src/options/quantifiers_options"
 template <> const options::multiTriggerPriority__option_t::type& Options::operator[](options::multiTriggerPriority__option_t) const;
-#line 92 "../../../../../src/options/quantifiers_options"
+#line 92 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::multiTriggerPriority__option_t) const;
-#line 92 "../../../../../src/options/quantifiers_options"
+#line 92 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::multiTriggerPriority__option_t, std::string option, bool value);
-#line 94 "../../../../../src/options/quantifiers_options"
+#line 94 "../../../src/options/quantifiers_options"
+template <> const options::multiTriggerCache__option_t::type& Options::operator[](options::multiTriggerCache__option_t) const;
+#line 94 "../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::multiTriggerCache__option_t) const;
+#line 94 "../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::multiTriggerCache__option_t, std::string option, bool value);
+#line 96 "../../../src/options/quantifiers_options"
+template <> const options::multiTriggerLinear__option_t::type& Options::operator[](options::multiTriggerLinear__option_t) const;
+#line 96 "../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::multiTriggerLinear__option_t) const;
+#line 96 "../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::multiTriggerLinear__option_t, std::string option, bool value);
+#line 98 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::triggerSelMode__option_t, const options::triggerSelMode__option_t::type& x);
-#line 94 "../../../../../src/options/quantifiers_options"
+#line 98 "../../../src/options/quantifiers_options"
 template <> const options::triggerSelMode__option_t::type& Options::operator[](options::triggerSelMode__option_t) const;
-#line 94 "../../../../../src/options/quantifiers_options"
+#line 98 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::triggerSelMode__option_t) const;
-#line 94 "../../../../../src/options/quantifiers_options"
+#line 98 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::triggerSelMode__option_t, std::string option, std::string value);
-#line 96 "../../../../../src/options/quantifiers_options"
+#line 100 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::triggerActiveSelMode__option_t, const options::triggerActiveSelMode__option_t::type& x);
-#line 96 "../../../../../src/options/quantifiers_options"
+#line 100 "../../../src/options/quantifiers_options"
 template <> const options::triggerActiveSelMode__option_t::type& Options::operator[](options::triggerActiveSelMode__option_t) const;
-#line 96 "../../../../../src/options/quantifiers_options"
+#line 100 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::triggerActiveSelMode__option_t) const;
-#line 96 "../../../../../src/options/quantifiers_options"
+#line 100 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::triggerActiveSelMode__option_t, std::string option, std::string value);
-#line 98 "../../../../../src/options/quantifiers_options"
+#line 102 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::userPatternsQuant__option_t, const options::userPatternsQuant__option_t::type& x);
-#line 98 "../../../../../src/options/quantifiers_options"
+#line 102 "../../../src/options/quantifiers_options"
 template <> const options::userPatternsQuant__option_t::type& Options::operator[](options::userPatternsQuant__option_t) const;
-#line 98 "../../../../../src/options/quantifiers_options"
+#line 102 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::userPatternsQuant__option_t) const;
-#line 98 "../../../../../src/options/quantifiers_options"
+#line 102 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::userPatternsQuant__option_t, std::string option, std::string value);
-#line 100 "../../../../../src/options/quantifiers_options"
+#line 104 "../../../src/options/quantifiers_options"
 template <> const options::incrementTriggers__option_t::type& Options::operator[](options::incrementTriggers__option_t) const;
-#line 100 "../../../../../src/options/quantifiers_options"
+#line 104 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::incrementTriggers__option_t) const;
-#line 100 "../../../../../src/options/quantifiers_options"
+#line 104 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::incrementTriggers__option_t, std::string option, bool value);
-#line 103 "../../../../../src/options/quantifiers_options"
+#line 107 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::instWhenMode__option_t, const options::instWhenMode__option_t::type& x);
-#line 103 "../../../../../src/options/quantifiers_options"
+#line 107 "../../../src/options/quantifiers_options"
 template <> const options::instWhenMode__option_t::type& Options::operator[](options::instWhenMode__option_t) const;
-#line 103 "../../../../../src/options/quantifiers_options"
+#line 107 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::instWhenMode__option_t) const;
-#line 103 "../../../../../src/options/quantifiers_options"
+#line 107 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::instWhenMode__option_t, std::string option, std::string value);
-#line 105 "../../../../../src/options/quantifiers_options"
+#line 109 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::instWhenStrictInterleave__option_t, const options::instWhenStrictInterleave__option_t::type& x);
-#line 105 "../../../../../src/options/quantifiers_options"
+#line 109 "../../../src/options/quantifiers_options"
 template <> const options::instWhenStrictInterleave__option_t::type& Options::operator[](options::instWhenStrictInterleave__option_t) const;
-#line 105 "../../../../../src/options/quantifiers_options"
+#line 109 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::instWhenStrictInterleave__option_t) const;
-#line 105 "../../../../../src/options/quantifiers_options"
+#line 109 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::instWhenStrictInterleave__option_t, std::string option, bool value);
-#line 107 "../../../../../src/options/quantifiers_options"
+#line 111 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::instWhenPhase__option_t, const options::instWhenPhase__option_t::type& x);
-#line 107 "../../../../../src/options/quantifiers_options"
+#line 111 "../../../src/options/quantifiers_options"
 template <> const options::instWhenPhase__option_t::type& Options::operator[](options::instWhenPhase__option_t) const;
-#line 107 "../../../../../src/options/quantifiers_options"
+#line 111 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::instWhenPhase__option_t) const;
-#line 107 "../../../../../src/options/quantifiers_options"
+#line 111 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::instWhenPhase__option_t, std::string option, std::string value);
-#line 109 "../../../../../src/options/quantifiers_options"
+#line 113 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::instWhenTcFirst__option_t, const options::instWhenTcFirst__option_t::type& x);
-#line 109 "../../../../../src/options/quantifiers_options"
+#line 113 "../../../src/options/quantifiers_options"
 template <> const options::instWhenTcFirst__option_t::type& Options::operator[](options::instWhenTcFirst__option_t) const;
-#line 109 "../../../../../src/options/quantifiers_options"
+#line 113 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::instWhenTcFirst__option_t) const;
-#line 109 "../../../../../src/options/quantifiers_options"
+#line 113 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::instWhenTcFirst__option_t, std::string option, bool value);
-#line 112 "../../../../../src/options/quantifiers_options"
+#line 115 "../../../src/options/quantifiers_options"
+template <> const options::quantModelEe__option_t::type& Options::operator[](options::quantModelEe__option_t) const;
+#line 115 "../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::quantModelEe__option_t) const;
+#line 115 "../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::quantModelEe__option_t, std::string option, bool value);
+#line 118 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::instMaxLevel__option_t, const options::instMaxLevel__option_t::type& x);
-#line 112 "../../../../../src/options/quantifiers_options"
+#line 118 "../../../src/options/quantifiers_options"
 template <> const options::instMaxLevel__option_t::type& Options::operator[](options::instMaxLevel__option_t) const;
-#line 112 "../../../../../src/options/quantifiers_options"
+#line 118 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::instMaxLevel__option_t) const;
-#line 112 "../../../../../src/options/quantifiers_options"
+#line 118 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::instMaxLevel__option_t, std::string option, std::string value);
-#line 114 "../../../../../src/options/quantifiers_options"
+#line 120 "../../../src/options/quantifiers_options"
 template <> const options::instLevelInputOnly__option_t::type& Options::operator[](options::instLevelInputOnly__option_t) const;
-#line 114 "../../../../../src/options/quantifiers_options"
+#line 120 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::instLevelInputOnly__option_t) const;
-#line 114 "../../../../../src/options/quantifiers_options"
+#line 120 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::instLevelInputOnly__option_t, std::string option, bool value);
-#line 116 "../../../../../src/options/quantifiers_options"
+#line 122 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::quantRepMode__option_t, const options::quantRepMode__option_t::type& x);
-#line 116 "../../../../../src/options/quantifiers_options"
+#line 122 "../../../src/options/quantifiers_options"
 template <> const options::quantRepMode__option_t::type& Options::operator[](options::quantRepMode__option_t) const;
-#line 116 "../../../../../src/options/quantifiers_options"
+#line 122 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantRepMode__option_t) const;
-#line 116 "../../../../../src/options/quantifiers_options"
+#line 122 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::quantRepMode__option_t, std::string option, std::string value);
-#line 118 "../../../../../src/options/quantifiers_options"
+#line 124 "../../../src/options/quantifiers_options"
 template <> const options::instRelevantCond__option_t::type& Options::operator[](options::instRelevantCond__option_t) const;
-#line 118 "../../../../../src/options/quantifiers_options"
+#line 124 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::instRelevantCond__option_t) const;
-#line 118 "../../../../../src/options/quantifiers_options"
+#line 124 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::instRelevantCond__option_t, std::string option, bool value);
-#line 121 "../../../../../src/options/quantifiers_options"
+#line 127 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::fullSaturateQuant__option_t, const options::fullSaturateQuant__option_t::type& x);
-#line 121 "../../../../../src/options/quantifiers_options"
+#line 127 "../../../src/options/quantifiers_options"
 template <> const options::fullSaturateQuant__option_t::type& Options::operator[](options::fullSaturateQuant__option_t) const;
-#line 121 "../../../../../src/options/quantifiers_options"
+#line 127 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fullSaturateQuant__option_t) const;
-#line 121 "../../../../../src/options/quantifiers_options"
+#line 127 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::fullSaturateQuant__option_t, std::string option, bool value);
-#line 123 "../../../../../src/options/quantifiers_options"
+#line 129 "../../../src/options/quantifiers_options"
 template <> const options::fullSaturateQuantRd__option_t::type& Options::operator[](options::fullSaturateQuantRd__option_t) const;
-#line 123 "../../../../../src/options/quantifiers_options"
+#line 129 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fullSaturateQuantRd__option_t) const;
-#line 123 "../../../../../src/options/quantifiers_options"
+#line 129 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::fullSaturateQuantRd__option_t, std::string option, bool value);
-#line 125 "../../../../../src/options/quantifiers_options"
+#line 131 "../../../src/options/quantifiers_options"
 template <> const options::fullSaturateInst__option_t::type& Options::operator[](options::fullSaturateInst__option_t) const;
-#line 125 "../../../../../src/options/quantifiers_options"
+#line 131 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fullSaturateInst__option_t) const;
-#line 125 "../../../../../src/options/quantifiers_options"
+#line 131 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::fullSaturateInst__option_t, std::string option, bool value);
-#line 128 "../../../../../src/options/quantifiers_options"
+#line 134 "../../../src/options/quantifiers_options"
 template <> const options::literalMatchMode__option_t::type& Options::operator[](options::literalMatchMode__option_t) const;
-#line 128 "../../../../../src/options/quantifiers_options"
+#line 134 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::literalMatchMode__option_t) const;
-#line 128 "../../../../../src/options/quantifiers_options"
+#line 134 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::literalMatchMode__option_t, std::string option, std::string value);
-#line 133 "../../../../../src/options/quantifiers_options"
+#line 139 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::finiteModelFind__option_t, const options::finiteModelFind__option_t::type& x);
-#line 133 "../../../../../src/options/quantifiers_options"
+#line 139 "../../../src/options/quantifiers_options"
 template <> const options::finiteModelFind__option_t::type& Options::operator[](options::finiteModelFind__option_t) const;
-#line 133 "../../../../../src/options/quantifiers_options"
+#line 139 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::finiteModelFind__option_t) const;
-#line 133 "../../../../../src/options/quantifiers_options"
+#line 139 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::finiteModelFind__option_t, std::string option, bool value);
-#line 136 "../../../../../src/options/quantifiers_options"
+#line 142 "../../../src/options/quantifiers_options"
 template <> const options::quantFunWellDefined__option_t::type& Options::operator[](options::quantFunWellDefined__option_t) const;
-#line 136 "../../../../../src/options/quantifiers_options"
+#line 142 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantFunWellDefined__option_t) const;
-#line 136 "../../../../../src/options/quantifiers_options"
+#line 142 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::quantFunWellDefined__option_t, std::string option, bool value);
-#line 138 "../../../../../src/options/quantifiers_options"
+#line 144 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::fmfFunWellDefined__option_t, const options::fmfFunWellDefined__option_t::type& x);
-#line 138 "../../../../../src/options/quantifiers_options"
+#line 144 "../../../src/options/quantifiers_options"
 template <> const options::fmfFunWellDefined__option_t::type& Options::operator[](options::fmfFunWellDefined__option_t) const;
-#line 138 "../../../../../src/options/quantifiers_options"
+#line 144 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfFunWellDefined__option_t) const;
-#line 138 "../../../../../src/options/quantifiers_options"
+#line 144 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::fmfFunWellDefined__option_t, std::string option, bool value);
-#line 140 "../../../../../src/options/quantifiers_options"
+#line 146 "../../../src/options/quantifiers_options"
 template <> const options::fmfFunWellDefinedRelevant__option_t::type& Options::operator[](options::fmfFunWellDefinedRelevant__option_t) const;
-#line 140 "../../../../../src/options/quantifiers_options"
+#line 146 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfFunWellDefinedRelevant__option_t) const;
-#line 140 "../../../../../src/options/quantifiers_options"
+#line 146 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::fmfFunWellDefinedRelevant__option_t, std::string option, bool value);
-#line 142 "../../../../../src/options/quantifiers_options"
+#line 148 "../../../src/options/quantifiers_options"
 template <> const options::fmfEmptySorts__option_t::type& Options::operator[](options::fmfEmptySorts__option_t) const;
-#line 142 "../../../../../src/options/quantifiers_options"
+#line 148 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfEmptySorts__option_t) const;
-#line 142 "../../../../../src/options/quantifiers_options"
+#line 148 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::fmfEmptySorts__option_t, std::string option, bool value);
-#line 145 "../../../../../src/options/quantifiers_options"
+#line 151 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::mbqiMode__option_t, const options::mbqiMode__option_t::type& x);
-#line 145 "../../../../../src/options/quantifiers_options"
+#line 151 "../../../src/options/quantifiers_options"
 template <> const options::mbqiMode__option_t::type& Options::operator[](options::mbqiMode__option_t) const;
-#line 145 "../../../../../src/options/quantifiers_options"
+#line 151 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::mbqiMode__option_t) const;
-#line 145 "../../../../../src/options/quantifiers_options"
+#line 151 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::mbqiMode__option_t, std::string option, std::string value);
-#line 147 "../../../../../src/options/quantifiers_options"
+#line 153 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::fmfOneInstPerRound__option_t, const options::fmfOneInstPerRound__option_t::type& x);
-#line 147 "../../../../../src/options/quantifiers_options"
+#line 153 "../../../src/options/quantifiers_options"
 template <> const options::fmfOneInstPerRound__option_t::type& Options::operator[](options::fmfOneInstPerRound__option_t) const;
-#line 147 "../../../../../src/options/quantifiers_options"
+#line 153 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfOneInstPerRound__option_t) const;
-#line 147 "../../../../../src/options/quantifiers_options"
+#line 153 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::fmfOneInstPerRound__option_t, std::string option, bool value);
-#line 149 "../../../../../src/options/quantifiers_options"
+#line 155 "../../../src/options/quantifiers_options"
 template <> const options::fmfOneQuantPerRound__option_t::type& Options::operator[](options::fmfOneQuantPerRound__option_t) const;
-#line 149 "../../../../../src/options/quantifiers_options"
+#line 155 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfOneQuantPerRound__option_t) const;
-#line 149 "../../../../../src/options/quantifiers_options"
+#line 155 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::fmfOneQuantPerRound__option_t, std::string option, bool value);
-#line 152 "../../../../../src/options/quantifiers_options"
+#line 158 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::fmfInstEngine__option_t, const options::fmfInstEngine__option_t::type& x);
-#line 152 "../../../../../src/options/quantifiers_options"
+#line 158 "../../../src/options/quantifiers_options"
 template <> const options::fmfInstEngine__option_t::type& Options::operator[](options::fmfInstEngine__option_t) const;
-#line 152 "../../../../../src/options/quantifiers_options"
+#line 158 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfInstEngine__option_t) const;
-#line 152 "../../../../../src/options/quantifiers_options"
+#line 158 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::fmfInstEngine__option_t, std::string option, bool value);
-#line 154 "../../../../../src/options/quantifiers_options"
+#line 160 "../../../src/options/quantifiers_options"
 template <> const options::fmfInstGen__option_t::type& Options::operator[](options::fmfInstGen__option_t) const;
-#line 154 "../../../../../src/options/quantifiers_options"
+#line 160 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfInstGen__option_t) const;
-#line 154 "../../../../../src/options/quantifiers_options"
+#line 160 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::fmfInstGen__option_t, std::string option, bool value);
-#line 156 "../../../../../src/options/quantifiers_options"
+#line 162 "../../../src/options/quantifiers_options"
 template <> const options::fmfInstGenOneQuantPerRound__option_t::type& Options::operator[](options::fmfInstGenOneQuantPerRound__option_t) const;
-#line 156 "../../../../../src/options/quantifiers_options"
+#line 162 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfInstGenOneQuantPerRound__option_t) const;
-#line 156 "../../../../../src/options/quantifiers_options"
+#line 162 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::fmfInstGenOneQuantPerRound__option_t, std::string option, bool value);
-#line 158 "../../../../../src/options/quantifiers_options"
+#line 164 "../../../src/options/quantifiers_options"
 template <> const options::fmfFreshDistConst__option_t::type& Options::operator[](options::fmfFreshDistConst__option_t) const;
-#line 158 "../../../../../src/options/quantifiers_options"
+#line 164 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfFreshDistConst__option_t) const;
-#line 158 "../../../../../src/options/quantifiers_options"
+#line 164 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::fmfFreshDistConst__option_t, std::string option, bool value);
-#line 160 "../../../../../src/options/quantifiers_options"
+#line 166 "../../../src/options/quantifiers_options"
 template <> const options::fmfFmcSimple__option_t::type& Options::operator[](options::fmfFmcSimple__option_t) const;
-#line 160 "../../../../../src/options/quantifiers_options"
+#line 166 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfFmcSimple__option_t) const;
-#line 160 "../../../../../src/options/quantifiers_options"
+#line 166 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::fmfFmcSimple__option_t, std::string option, bool value);
-#line 162 "../../../../../src/options/quantifiers_options"
+#line 168 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::fmfBoundInt__option_t, const options::fmfBoundInt__option_t::type& x);
-#line 162 "../../../../../src/options/quantifiers_options"
+#line 168 "../../../src/options/quantifiers_options"
 template <> const options::fmfBoundInt__option_t::type& Options::operator[](options::fmfBoundInt__option_t) const;
-#line 162 "../../../../../src/options/quantifiers_options"
+#line 168 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfBoundInt__option_t) const;
-#line 162 "../../../../../src/options/quantifiers_options"
+#line 168 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::fmfBoundInt__option_t, std::string option, bool value);
-#line 164 "../../../../../src/options/quantifiers_options"
+#line 170 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::fmfBound__option_t, const options::fmfBound__option_t::type& x);
-#line 164 "../../../../../src/options/quantifiers_options"
+#line 170 "../../../src/options/quantifiers_options"
 template <> const options::fmfBound__option_t::type& Options::operator[](options::fmfBound__option_t) const;
-#line 164 "../../../../../src/options/quantifiers_options"
+#line 170 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfBound__option_t) const;
-#line 164 "../../../../../src/options/quantifiers_options"
+#line 170 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::fmfBound__option_t, std::string option, bool value);
-#line 166 "../../../../../src/options/quantifiers_options"
+#line 172 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::fmfBoundLazy__option_t, const options::fmfBoundLazy__option_t::type& x);
-#line 166 "../../../../../src/options/quantifiers_options"
+#line 172 "../../../src/options/quantifiers_options"
 template <> const options::fmfBoundLazy__option_t::type& Options::operator[](options::fmfBoundLazy__option_t) const;
-#line 166 "../../../../../src/options/quantifiers_options"
+#line 172 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfBoundLazy__option_t) const;
-#line 166 "../../../../../src/options/quantifiers_options"
+#line 172 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::fmfBoundLazy__option_t, std::string option, bool value);
-#line 168 "../../../../../src/options/quantifiers_options"
+#line 174 "../../../src/options/quantifiers_options"
 template <> const options::fmfBoundMinMode__option_t::type& Options::operator[](options::fmfBoundMinMode__option_t) const;
-#line 168 "../../../../../src/options/quantifiers_options"
+#line 174 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::fmfBoundMinMode__option_t) const;
-#line 168 "../../../../../src/options/quantifiers_options"
+#line 174 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::fmfBoundMinMode__option_t, std::string option, std::string value);
-#line 173 "../../../../../src/options/quantifiers_options"
+#line 179 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::quantConflictFind__option_t, const options::quantConflictFind__option_t::type& x);
-#line 173 "../../../../../src/options/quantifiers_options"
+#line 179 "../../../src/options/quantifiers_options"
 template <> const options::quantConflictFind__option_t::type& Options::operator[](options::quantConflictFind__option_t) const;
-#line 173 "../../../../../src/options/quantifiers_options"
+#line 179 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantConflictFind__option_t) const;
-#line 173 "../../../../../src/options/quantifiers_options"
+#line 179 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::quantConflictFind__option_t, std::string option, bool value);
-#line 175 "../../../../../src/options/quantifiers_options"
+#line 181 "../../../src/options/quantifiers_options"
 template <> const options::qcfMode__option_t::type& Options::operator[](options::qcfMode__option_t) const;
-#line 175 "../../../../../src/options/quantifiers_options"
+#line 181 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::qcfMode__option_t) const;
-#line 175 "../../../../../src/options/quantifiers_options"
+#line 181 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::qcfMode__option_t, std::string option, std::string value);
-#line 177 "../../../../../src/options/quantifiers_options"
+#line 183 "../../../src/options/quantifiers_options"
 template <> const options::qcfWhenMode__option_t::type& Options::operator[](options::qcfWhenMode__option_t) const;
-#line 177 "../../../../../src/options/quantifiers_options"
+#line 183 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::qcfWhenMode__option_t) const;
-#line 177 "../../../../../src/options/quantifiers_options"
+#line 183 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::qcfWhenMode__option_t, std::string option, std::string value);
-#line 179 "../../../../../src/options/quantifiers_options"
+#line 185 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::qcfTConstraint__option_t, const options::qcfTConstraint__option_t::type& x);
-#line 179 "../../../../../src/options/quantifiers_options"
+#line 185 "../../../src/options/quantifiers_options"
 template <> const options::qcfTConstraint__option_t::type& Options::operator[](options::qcfTConstraint__option_t) const;
-#line 179 "../../../../../src/options/quantifiers_options"
+#line 185 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::qcfTConstraint__option_t) const;
-#line 179 "../../../../../src/options/quantifiers_options"
+#line 185 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::qcfTConstraint__option_t, std::string option, bool value);
-#line 181 "../../../../../src/options/quantifiers_options"
+#line 187 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::qcfAllConflict__option_t, const options::qcfAllConflict__option_t::type& x);
-#line 181 "../../../../../src/options/quantifiers_options"
+#line 187 "../../../src/options/quantifiers_options"
 template <> const options::qcfAllConflict__option_t::type& Options::operator[](options::qcfAllConflict__option_t) const;
-#line 181 "../../../../../src/options/quantifiers_options"
+#line 187 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::qcfAllConflict__option_t) const;
-#line 181 "../../../../../src/options/quantifiers_options"
+#line 187 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::qcfAllConflict__option_t, std::string option, bool value);
-#line 183 "../../../../../src/options/quantifiers_options"
+#line 189 "../../../src/options/quantifiers_options"
 template <> const options::qcfNestedConflict__option_t::type& Options::operator[](options::qcfNestedConflict__option_t) const;
-#line 183 "../../../../../src/options/quantifiers_options"
+#line 189 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::qcfNestedConflict__option_t) const;
-#line 183 "../../../../../src/options/quantifiers_options"
+#line 189 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::qcfNestedConflict__option_t, std::string option, bool value);
-#line 185 "../../../../../src/options/quantifiers_options"
+#line 191 "../../../src/options/quantifiers_options"
 template <> const options::qcfVoExp__option_t::type& Options::operator[](options::qcfVoExp__option_t) const;
-#line 185 "../../../../../src/options/quantifiers_options"
+#line 191 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::qcfVoExp__option_t) const;
-#line 185 "../../../../../src/options/quantifiers_options"
+#line 191 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::qcfVoExp__option_t, std::string option, bool value);
-#line 188 "../../../../../src/options/quantifiers_options"
+#line 194 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::instNoEntail__option_t, const options::instNoEntail__option_t::type& x);
-#line 188 "../../../../../src/options/quantifiers_options"
+#line 194 "../../../src/options/quantifiers_options"
 template <> const options::instNoEntail__option_t::type& Options::operator[](options::instNoEntail__option_t) const;
-#line 188 "../../../../../src/options/quantifiers_options"
+#line 194 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::instNoEntail__option_t) const;
-#line 188 "../../../../../src/options/quantifiers_options"
+#line 194 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::instNoEntail__option_t, std::string option, bool value);
-#line 191 "../../../../../src/options/quantifiers_options"
+#line 196 "../../../src/options/quantifiers_options"
+template <> void Options::set(options::instNoModelTrue__option_t, const options::instNoModelTrue__option_t::type& x);
+#line 196 "../../../src/options/quantifiers_options"
+template <> const options::instNoModelTrue__option_t::type& Options::operator[](options::instNoModelTrue__option_t) const;
+#line 196 "../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::instNoModelTrue__option_t) const;
+#line 196 "../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::instNoModelTrue__option_t, std::string option, bool value);
+#line 199 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::instPropagate__option_t, const options::instPropagate__option_t::type& x);
-#line 191 "../../../../../src/options/quantifiers_options"
+#line 199 "../../../src/options/quantifiers_options"
 template <> const options::instPropagate__option_t::type& Options::operator[](options::instPropagate__option_t) const;
-#line 191 "../../../../../src/options/quantifiers_options"
+#line 199 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::instPropagate__option_t) const;
-#line 191 "../../../../../src/options/quantifiers_options"
+#line 199 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::instPropagate__option_t, std::string option, bool value);
-#line 194 "../../../../../src/options/quantifiers_options"
+#line 202 "../../../src/options/quantifiers_options"
 template <> const options::qcfEagerTest__option_t::type& Options::operator[](options::qcfEagerTest__option_t) const;
-#line 194 "../../../../../src/options/quantifiers_options"
+#line 202 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::qcfEagerTest__option_t) const;
-#line 194 "../../../../../src/options/quantifiers_options"
+#line 202 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::qcfEagerTest__option_t, std::string option, bool value);
-#line 196 "../../../../../src/options/quantifiers_options"
+#line 204 "../../../src/options/quantifiers_options"
 template <> const options::qcfEagerCheckRd__option_t::type& Options::operator[](options::qcfEagerCheckRd__option_t) const;
-#line 196 "../../../../../src/options/quantifiers_options"
+#line 204 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::qcfEagerCheckRd__option_t) const;
-#line 196 "../../../../../src/options/quantifiers_options"
+#line 204 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::qcfEagerCheckRd__option_t, std::string option, bool value);
-#line 198 "../../../../../src/options/quantifiers_options"
+#line 206 "../../../src/options/quantifiers_options"
 template <> const options::qcfSkipRd__option_t::type& Options::operator[](options::qcfSkipRd__option_t) const;
-#line 198 "../../../../../src/options/quantifiers_options"
+#line 206 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::qcfSkipRd__option_t) const;
-#line 198 "../../../../../src/options/quantifiers_options"
+#line 206 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::qcfSkipRd__option_t, std::string option, bool value);
-#line 203 "../../../../../src/options/quantifiers_options"
+#line 211 "../../../src/options/quantifiers_options"
 template <> const options::quantRewriteRules__option_t::type& Options::operator[](options::quantRewriteRules__option_t) const;
-#line 203 "../../../../../src/options/quantifiers_options"
+#line 211 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantRewriteRules__option_t) const;
-#line 203 "../../../../../src/options/quantifiers_options"
+#line 211 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::quantRewriteRules__option_t, std::string option, bool value);
-#line 205 "../../../../../src/options/quantifiers_options"
+#line 213 "../../../src/options/quantifiers_options"
 template <> const options::rrOneInstPerRound__option_t::type& Options::operator[](options::rrOneInstPerRound__option_t) const;
-#line 205 "../../../../../src/options/quantifiers_options"
+#line 213 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::rrOneInstPerRound__option_t) const;
-#line 205 "../../../../../src/options/quantifiers_options"
+#line 213 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::rrOneInstPerRound__option_t, std::string option, bool value);
-#line 210 "../../../../../src/options/quantifiers_options"
+#line 218 "../../../src/options/quantifiers_options"
 template <> const options::quantInduction__option_t::type& Options::operator[](options::quantInduction__option_t) const;
-#line 210 "../../../../../src/options/quantifiers_options"
+#line 218 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantInduction__option_t) const;
-#line 210 "../../../../../src/options/quantifiers_options"
+#line 218 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::quantInduction__option_t, std::string option, bool value);
-#line 212 "../../../../../src/options/quantifiers_options"
+#line 220 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::dtStcInduction__option_t, const options::dtStcInduction__option_t::type& x);
-#line 212 "../../../../../src/options/quantifiers_options"
+#line 220 "../../../src/options/quantifiers_options"
 template <> const options::dtStcInduction__option_t::type& Options::operator[](options::dtStcInduction__option_t) const;
-#line 212 "../../../../../src/options/quantifiers_options"
+#line 220 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::dtStcInduction__option_t) const;
-#line 212 "../../../../../src/options/quantifiers_options"
+#line 220 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::dtStcInduction__option_t, std::string option, bool value);
-#line 214 "../../../../../src/options/quantifiers_options"
+#line 222 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::intWfInduction__option_t, const options::intWfInduction__option_t::type& x);
-#line 214 "../../../../../src/options/quantifiers_options"
+#line 222 "../../../src/options/quantifiers_options"
 template <> const options::intWfInduction__option_t::type& Options::operator[](options::intWfInduction__option_t) const;
-#line 214 "../../../../../src/options/quantifiers_options"
+#line 222 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::intWfInduction__option_t) const;
-#line 214 "../../../../../src/options/quantifiers_options"
+#line 222 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::intWfInduction__option_t, std::string option, bool value);
-#line 216 "../../../../../src/options/quantifiers_options"
+#line 224 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::conjectureGen__option_t, const options::conjectureGen__option_t::type& x);
-#line 216 "../../../../../src/options/quantifiers_options"
+#line 224 "../../../src/options/quantifiers_options"
 template <> const options::conjectureGen__option_t::type& Options::operator[](options::conjectureGen__option_t) const;
-#line 216 "../../../../../src/options/quantifiers_options"
+#line 224 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::conjectureGen__option_t) const;
-#line 216 "../../../../../src/options/quantifiers_options"
+#line 224 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::conjectureGen__option_t, std::string option, bool value);
-#line 219 "../../../../../src/options/quantifiers_options"
+#line 227 "../../../src/options/quantifiers_options"
 template <> const options::conjectureGenPerRound__option_t::type& Options::operator[](options::conjectureGenPerRound__option_t) const;
-#line 219 "../../../../../src/options/quantifiers_options"
+#line 227 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::conjectureGenPerRound__option_t) const;
-#line 219 "../../../../../src/options/quantifiers_options"
+#line 227 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::conjectureGenPerRound__option_t, std::string option, std::string value);
-#line 221 "../../../../../src/options/quantifiers_options"
+#line 229 "../../../src/options/quantifiers_options"
 template <> const options::conjectureNoFilter__option_t::type& Options::operator[](options::conjectureNoFilter__option_t) const;
-#line 221 "../../../../../src/options/quantifiers_options"
+#line 229 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::conjectureNoFilter__option_t) const;
-#line 221 "../../../../../src/options/quantifiers_options"
+#line 229 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::conjectureNoFilter__option_t, std::string option, bool value);
-#line 223 "../../../../../src/options/quantifiers_options"
+#line 231 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::conjectureFilterActiveTerms__option_t, const options::conjectureFilterActiveTerms__option_t::type& x);
-#line 223 "../../../../../src/options/quantifiers_options"
+#line 231 "../../../src/options/quantifiers_options"
 template <> const options::conjectureFilterActiveTerms__option_t::type& Options::operator[](options::conjectureFilterActiveTerms__option_t) const;
-#line 223 "../../../../../src/options/quantifiers_options"
+#line 231 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::conjectureFilterActiveTerms__option_t) const;
-#line 223 "../../../../../src/options/quantifiers_options"
+#line 231 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::conjectureFilterActiveTerms__option_t, std::string option, bool value);
-#line 225 "../../../../../src/options/quantifiers_options"
+#line 233 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::conjectureFilterCanonical__option_t, const options::conjectureFilterCanonical__option_t::type& x);
-#line 225 "../../../../../src/options/quantifiers_options"
+#line 233 "../../../src/options/quantifiers_options"
 template <> const options::conjectureFilterCanonical__option_t::type& Options::operator[](options::conjectureFilterCanonical__option_t) const;
-#line 225 "../../../../../src/options/quantifiers_options"
+#line 233 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::conjectureFilterCanonical__option_t) const;
-#line 225 "../../../../../src/options/quantifiers_options"
+#line 233 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::conjectureFilterCanonical__option_t, std::string option, bool value);
-#line 227 "../../../../../src/options/quantifiers_options"
+#line 235 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::conjectureFilterModel__option_t, const options::conjectureFilterModel__option_t::type& x);
-#line 227 "../../../../../src/options/quantifiers_options"
+#line 235 "../../../src/options/quantifiers_options"
 template <> const options::conjectureFilterModel__option_t::type& Options::operator[](options::conjectureFilterModel__option_t) const;
-#line 227 "../../../../../src/options/quantifiers_options"
+#line 235 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::conjectureFilterModel__option_t) const;
-#line 227 "../../../../../src/options/quantifiers_options"
+#line 235 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::conjectureFilterModel__option_t, std::string option, bool value);
-#line 229 "../../../../../src/options/quantifiers_options"
+#line 237 "../../../src/options/quantifiers_options"
 template <> const options::conjectureGenGtEnum__option_t::type& Options::operator[](options::conjectureGenGtEnum__option_t) const;
-#line 229 "../../../../../src/options/quantifiers_options"
+#line 237 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::conjectureGenGtEnum__option_t) const;
-#line 229 "../../../../../src/options/quantifiers_options"
+#line 237 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::conjectureGenGtEnum__option_t, std::string option, std::string value);
-#line 231 "../../../../../src/options/quantifiers_options"
+#line 239 "../../../src/options/quantifiers_options"
 template <> const options::conjectureUeeIntro__option_t::type& Options::operator[](options::conjectureUeeIntro__option_t) const;
-#line 231 "../../../../../src/options/quantifiers_options"
+#line 239 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::conjectureUeeIntro__option_t) const;
-#line 231 "../../../../../src/options/quantifiers_options"
+#line 239 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::conjectureUeeIntro__option_t, std::string option, bool value);
-#line 233 "../../../../../src/options/quantifiers_options"
+#line 241 "../../../src/options/quantifiers_options"
 template <> const options::conjectureGenMaxDepth__option_t::type& Options::operator[](options::conjectureGenMaxDepth__option_t) const;
-#line 233 "../../../../../src/options/quantifiers_options"
+#line 241 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::conjectureGenMaxDepth__option_t) const;
-#line 233 "../../../../../src/options/quantifiers_options"
+#line 241 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::conjectureGenMaxDepth__option_t, std::string option, std::string value);
-#line 238 "../../../../../src/options/quantifiers_options"
+#line 246 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::ceGuidedInst__option_t, const options::ceGuidedInst__option_t::type& x);
-#line 238 "../../../../../src/options/quantifiers_options"
+#line 246 "../../../src/options/quantifiers_options"
 template <> const options::ceGuidedInst__option_t::type& Options::operator[](options::ceGuidedInst__option_t) const;
-#line 238 "../../../../../src/options/quantifiers_options"
+#line 246 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::ceGuidedInst__option_t) const;
-#line 238 "../../../../../src/options/quantifiers_options"
+#line 246 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::ceGuidedInst__option_t, std::string option, bool value);
-#line 240 "../../../../../src/options/quantifiers_options"
+#line 248 "../../../src/options/quantifiers_options"
 template <> const options::ceGuidedInstFair__option_t::type& Options::operator[](options::ceGuidedInstFair__option_t) const;
-#line 240 "../../../../../src/options/quantifiers_options"
+#line 248 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::ceGuidedInstFair__option_t) const;
-#line 240 "../../../../../src/options/quantifiers_options"
+#line 248 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::ceGuidedInstFair__option_t, std::string option, std::string value);
-#line 242 "../../../../../src/options/quantifiers_options"
+#line 250 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::cegqiSingleInvMode__option_t, const options::cegqiSingleInvMode__option_t::type& x);
-#line 242 "../../../../../src/options/quantifiers_options"
+#line 250 "../../../src/options/quantifiers_options"
 template <> const options::cegqiSingleInvMode__option_t::type& Options::operator[](options::cegqiSingleInvMode__option_t) const;
-#line 242 "../../../../../src/options/quantifiers_options"
+#line 250 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cegqiSingleInvMode__option_t) const;
-#line 242 "../../../../../src/options/quantifiers_options"
+#line 250 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::cegqiSingleInvMode__option_t, std::string option, std::string value);
-#line 244 "../../../../../src/options/quantifiers_options"
+#line 252 "../../../src/options/quantifiers_options"
 template <> const options::cegqiSingleInvPartial__option_t::type& Options::operator[](options::cegqiSingleInvPartial__option_t) const;
-#line 244 "../../../../../src/options/quantifiers_options"
+#line 252 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cegqiSingleInvPartial__option_t) const;
-#line 244 "../../../../../src/options/quantifiers_options"
+#line 252 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::cegqiSingleInvPartial__option_t, std::string option, bool value);
-#line 246 "../../../../../src/options/quantifiers_options"
+#line 254 "../../../src/options/quantifiers_options"
 template <> const options::cegqiSingleInvReconstruct__option_t::type& Options::operator[](options::cegqiSingleInvReconstruct__option_t) const;
-#line 246 "../../../../../src/options/quantifiers_options"
+#line 254 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cegqiSingleInvReconstruct__option_t) const;
-#line 246 "../../../../../src/options/quantifiers_options"
+#line 254 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::cegqiSingleInvReconstruct__option_t, std::string option, bool value);
-#line 248 "../../../../../src/options/quantifiers_options"
+#line 256 "../../../src/options/quantifiers_options"
 template <> const options::cegqiSolMinCore__option_t::type& Options::operator[](options::cegqiSolMinCore__option_t) const;
-#line 248 "../../../../../src/options/quantifiers_options"
+#line 256 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cegqiSolMinCore__option_t) const;
-#line 248 "../../../../../src/options/quantifiers_options"
+#line 256 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::cegqiSolMinCore__option_t, std::string option, bool value);
-#line 250 "../../../../../src/options/quantifiers_options"
+#line 258 "../../../src/options/quantifiers_options"
 template <> const options::cegqiSolMinInst__option_t::type& Options::operator[](options::cegqiSolMinInst__option_t) const;
-#line 250 "../../../../../src/options/quantifiers_options"
+#line 258 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cegqiSolMinInst__option_t) const;
-#line 250 "../../../../../src/options/quantifiers_options"
+#line 258 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::cegqiSolMinInst__option_t, std::string option, bool value);
-#line 252 "../../../../../src/options/quantifiers_options"
+#line 260 "../../../src/options/quantifiers_options"
 template <> const options::cegqiSingleInvReconstructConst__option_t::type& Options::operator[](options::cegqiSingleInvReconstructConst__option_t) const;
-#line 252 "../../../../../src/options/quantifiers_options"
+#line 260 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cegqiSingleInvReconstructConst__option_t) const;
-#line 252 "../../../../../src/options/quantifiers_options"
+#line 260 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::cegqiSingleInvReconstructConst__option_t, std::string option, bool value);
-#line 254 "../../../../../src/options/quantifiers_options"
+#line 262 "../../../src/options/quantifiers_options"
 template <> const options::cegqiSingleInvAbort__option_t::type& Options::operator[](options::cegqiSingleInvAbort__option_t) const;
-#line 254 "../../../../../src/options/quantifiers_options"
+#line 262 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cegqiSingleInvAbort__option_t) const;
-#line 254 "../../../../../src/options/quantifiers_options"
+#line 262 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::cegqiSingleInvAbort__option_t, std::string option, bool value);
-#line 257 "../../../../../src/options/quantifiers_options"
+#line 265 "../../../src/options/quantifiers_options"
 template <> const options::sygusNormalForm__option_t::type& Options::operator[](options::sygusNormalForm__option_t) const;
-#line 257 "../../../../../src/options/quantifiers_options"
+#line 265 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::sygusNormalForm__option_t) const;
-#line 257 "../../../../../src/options/quantifiers_options"
+#line 265 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::sygusNormalForm__option_t, std::string option, bool value);
-#line 259 "../../../../../src/options/quantifiers_options"
+#line 267 "../../../src/options/quantifiers_options"
 template <> const options::sygusNormalFormArg__option_t::type& Options::operator[](options::sygusNormalFormArg__option_t) const;
-#line 259 "../../../../../src/options/quantifiers_options"
+#line 267 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::sygusNormalFormArg__option_t) const;
-#line 259 "../../../../../src/options/quantifiers_options"
+#line 267 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::sygusNormalFormArg__option_t, std::string option, bool value);
-#line 261 "../../../../../src/options/quantifiers_options"
+#line 269 "../../../src/options/quantifiers_options"
 template <> const options::sygusNormalFormGlobal__option_t::type& Options::operator[](options::sygusNormalFormGlobal__option_t) const;
-#line 261 "../../../../../src/options/quantifiers_options"
+#line 269 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::sygusNormalFormGlobal__option_t) const;
-#line 261 "../../../../../src/options/quantifiers_options"
+#line 269 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::sygusNormalFormGlobal__option_t, std::string option, bool value);
-#line 263 "../../../../../src/options/quantifiers_options"
+#line 271 "../../../src/options/quantifiers_options"
 template <> const options::sygusNormalFormGlobalGen__option_t::type& Options::operator[](options::sygusNormalFormGlobalGen__option_t) const;
-#line 263 "../../../../../src/options/quantifiers_options"
+#line 271 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::sygusNormalFormGlobalGen__option_t) const;
-#line 263 "../../../../../src/options/quantifiers_options"
+#line 271 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::sygusNormalFormGlobalGen__option_t, std::string option, bool value);
-#line 265 "../../../../../src/options/quantifiers_options"
+#line 273 "../../../src/options/quantifiers_options"
 template <> const options::sygusNormalFormGlobalArg__option_t::type& Options::operator[](options::sygusNormalFormGlobalArg__option_t) const;
-#line 265 "../../../../../src/options/quantifiers_options"
+#line 273 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::sygusNormalFormGlobalArg__option_t) const;
-#line 265 "../../../../../src/options/quantifiers_options"
+#line 273 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::sygusNormalFormGlobalArg__option_t, std::string option, bool value);
-#line 267 "../../../../../src/options/quantifiers_options"
+#line 275 "../../../src/options/quantifiers_options"
 template <> const options::sygusNormalFormGlobalContent__option_t::type& Options::operator[](options::sygusNormalFormGlobalContent__option_t) const;
-#line 267 "../../../../../src/options/quantifiers_options"
+#line 275 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::sygusNormalFormGlobalContent__option_t) const;
-#line 267 "../../../../../src/options/quantifiers_options"
+#line 275 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::sygusNormalFormGlobalContent__option_t, std::string option, bool value);
-#line 270 "../../../../../src/options/quantifiers_options"
+#line 278 "../../../src/options/quantifiers_options"
 template <> const options::sygusInvTemplMode__option_t::type& Options::operator[](options::sygusInvTemplMode__option_t) const;
-#line 270 "../../../../../src/options/quantifiers_options"
+#line 278 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::sygusInvTemplMode__option_t) const;
-#line 270 "../../../../../src/options/quantifiers_options"
+#line 278 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::sygusInvTemplMode__option_t, std::string option, std::string value);
-#line 273 "../../../../../src/options/quantifiers_options"
+#line 280 "../../../src/options/quantifiers_options"
+template <> const options::sygusUnifCondSol__option_t::type& Options::operator[](options::sygusUnifCondSol__option_t) const;
+#line 280 "../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::sygusUnifCondSol__option_t) const;
+#line 280 "../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::sygusUnifCondSol__option_t, std::string option, bool value);
+#line 283 "../../../src/options/quantifiers_options"
 template <> const options::sygusDirectEval__option_t::type& Options::operator[](options::sygusDirectEval__option_t) const;
-#line 273 "../../../../../src/options/quantifiers_options"
+#line 283 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::sygusDirectEval__option_t) const;
-#line 273 "../../../../../src/options/quantifiers_options"
+#line 283 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::sygusDirectEval__option_t, std::string option, bool value);
-#line 277 "../../../../../src/options/quantifiers_options"
+#line 285 "../../../src/options/quantifiers_options"
+template <> const options::sygusCRefEval__option_t::type& Options::operator[](options::sygusCRefEval__option_t) const;
+#line 285 "../../../src/options/quantifiers_options"
+template <> bool Options::wasSetByUser(options::sygusCRefEval__option_t) const;
+#line 285 "../../../src/options/quantifiers_options"
+template <> void Options::assignBool(options::sygusCRefEval__option_t, std::string option, bool value);
+#line 289 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::cbqi__option_t, const options::cbqi__option_t::type& x);
-#line 277 "../../../../../src/options/quantifiers_options"
+#line 289 "../../../src/options/quantifiers_options"
 template <> const options::cbqi__option_t::type& Options::operator[](options::cbqi__option_t) const;
-#line 277 "../../../../../src/options/quantifiers_options"
+#line 289 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqi__option_t) const;
-#line 277 "../../../../../src/options/quantifiers_options"
+#line 289 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::cbqi__option_t, std::string option, bool value);
-#line 279 "../../../../../src/options/quantifiers_options"
+#line 291 "../../../src/options/quantifiers_options"
 template <> const options::recurseCbqi__option_t::type& Options::operator[](options::recurseCbqi__option_t) const;
-#line 279 "../../../../../src/options/quantifiers_options"
+#line 291 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::recurseCbqi__option_t) const;
-#line 279 "../../../../../src/options/quantifiers_options"
+#line 291 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::recurseCbqi__option_t, std::string option, bool value);
-#line 281 "../../../../../src/options/quantifiers_options"
+#line 293 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::cbqiSat__option_t, const options::cbqiSat__option_t::type& x);
-#line 281 "../../../../../src/options/quantifiers_options"
+#line 293 "../../../src/options/quantifiers_options"
 template <> const options::cbqiSat__option_t::type& Options::operator[](options::cbqiSat__option_t) const;
-#line 281 "../../../../../src/options/quantifiers_options"
+#line 293 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiSat__option_t) const;
-#line 281 "../../../../../src/options/quantifiers_options"
+#line 293 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::cbqiSat__option_t, std::string option, bool value);
-#line 283 "../../../../../src/options/quantifiers_options"
+#line 295 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::cbqiModel__option_t, const options::cbqiModel__option_t::type& x);
-#line 283 "../../../../../src/options/quantifiers_options"
+#line 295 "../../../src/options/quantifiers_options"
 template <> const options::cbqiModel__option_t::type& Options::operator[](options::cbqiModel__option_t) const;
-#line 283 "../../../../../src/options/quantifiers_options"
+#line 295 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiModel__option_t) const;
-#line 283 "../../../../../src/options/quantifiers_options"
+#line 295 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::cbqiModel__option_t, std::string option, bool value);
-#line 285 "../../../../../src/options/quantifiers_options"
+#line 297 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::cbqiAll__option_t, const options::cbqiAll__option_t::type& x);
-#line 285 "../../../../../src/options/quantifiers_options"
+#line 297 "../../../src/options/quantifiers_options"
 template <> const options::cbqiAll__option_t::type& Options::operator[](options::cbqiAll__option_t) const;
-#line 285 "../../../../../src/options/quantifiers_options"
+#line 297 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiAll__option_t) const;
-#line 285 "../../../../../src/options/quantifiers_options"
+#line 297 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::cbqiAll__option_t, std::string option, bool value);
-#line 287 "../../../../../src/options/quantifiers_options"
+#line 299 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::cbqiUseInfInt__option_t, const options::cbqiUseInfInt__option_t::type& x);
-#line 287 "../../../../../src/options/quantifiers_options"
+#line 299 "../../../src/options/quantifiers_options"
 template <> const options::cbqiUseInfInt__option_t::type& Options::operator[](options::cbqiUseInfInt__option_t) const;
-#line 287 "../../../../../src/options/quantifiers_options"
+#line 299 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiUseInfInt__option_t) const;
-#line 287 "../../../../../src/options/quantifiers_options"
+#line 299 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::cbqiUseInfInt__option_t, std::string option, bool value);
-#line 289 "../../../../../src/options/quantifiers_options"
+#line 301 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::cbqiUseInfReal__option_t, const options::cbqiUseInfReal__option_t::type& x);
-#line 289 "../../../../../src/options/quantifiers_options"
+#line 301 "../../../src/options/quantifiers_options"
 template <> const options::cbqiUseInfReal__option_t::type& Options::operator[](options::cbqiUseInfReal__option_t) const;
-#line 289 "../../../../../src/options/quantifiers_options"
+#line 301 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiUseInfReal__option_t) const;
-#line 289 "../../../../../src/options/quantifiers_options"
+#line 301 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::cbqiUseInfReal__option_t, std::string option, bool value);
-#line 291 "../../../../../src/options/quantifiers_options"
+#line 303 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::cbqiPreRegInst__option_t, const options::cbqiPreRegInst__option_t::type& x);
-#line 291 "../../../../../src/options/quantifiers_options"
+#line 303 "../../../src/options/quantifiers_options"
 template <> const options::cbqiPreRegInst__option_t::type& Options::operator[](options::cbqiPreRegInst__option_t) const;
-#line 291 "../../../../../src/options/quantifiers_options"
+#line 303 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiPreRegInst__option_t) const;
-#line 291 "../../../../../src/options/quantifiers_options"
+#line 303 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::cbqiPreRegInst__option_t, std::string option, bool value);
-#line 293 "../../../../../src/options/quantifiers_options"
+#line 305 "../../../src/options/quantifiers_options"
 template <> const options::cbqiMinBounds__option_t::type& Options::operator[](options::cbqiMinBounds__option_t) const;
-#line 293 "../../../../../src/options/quantifiers_options"
+#line 305 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiMinBounds__option_t) const;
-#line 293 "../../../../../src/options/quantifiers_options"
+#line 305 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::cbqiMinBounds__option_t, std::string option, bool value);
-#line 295 "../../../../../src/options/quantifiers_options"
+#line 307 "../../../src/options/quantifiers_options"
 template <> const options::cbqiRoundUpLowerLia__option_t::type& Options::operator[](options::cbqiRoundUpLowerLia__option_t) const;
-#line 295 "../../../../../src/options/quantifiers_options"
+#line 307 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiRoundUpLowerLia__option_t) const;
-#line 295 "../../../../../src/options/quantifiers_options"
+#line 307 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::cbqiRoundUpLowerLia__option_t, std::string option, bool value);
-#line 297 "../../../../../src/options/quantifiers_options"
+#line 309 "../../../src/options/quantifiers_options"
 template <> const options::cbqiMidpoint__option_t::type& Options::operator[](options::cbqiMidpoint__option_t) const;
-#line 297 "../../../../../src/options/quantifiers_options"
+#line 309 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiMidpoint__option_t) const;
-#line 297 "../../../../../src/options/quantifiers_options"
+#line 309 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::cbqiMidpoint__option_t, std::string option, bool value);
-#line 299 "../../../../../src/options/quantifiers_options"
+#line 311 "../../../src/options/quantifiers_options"
 template <> const options::cbqiNopt__option_t::type& Options::operator[](options::cbqiNopt__option_t) const;
-#line 299 "../../../../../src/options/quantifiers_options"
+#line 311 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiNopt__option_t) const;
-#line 299 "../../../../../src/options/quantifiers_options"
+#line 311 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::cbqiNopt__option_t, std::string option, bool value);
-#line 301 "../../../../../src/options/quantifiers_options"
+#line 313 "../../../src/options/quantifiers_options"
 template <> const options::cbqiLitDepend__option_t::type& Options::operator[](options::cbqiLitDepend__option_t) const;
-#line 301 "../../../../../src/options/quantifiers_options"
+#line 313 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiLitDepend__option_t) const;
-#line 301 "../../../../../src/options/quantifiers_options"
+#line 313 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::cbqiLitDepend__option_t, std::string option, bool value);
-#line 303 "../../../../../src/options/quantifiers_options"
+#line 315 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::cbqiInnermost__option_t, const options::cbqiInnermost__option_t::type& x);
-#line 303 "../../../../../src/options/quantifiers_options"
+#line 315 "../../../src/options/quantifiers_options"
 template <> const options::cbqiInnermost__option_t::type& Options::operator[](options::cbqiInnermost__option_t) const;
-#line 303 "../../../../../src/options/quantifiers_options"
+#line 315 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiInnermost__option_t) const;
-#line 303 "../../../../../src/options/quantifiers_options"
+#line 315 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::cbqiInnermost__option_t, std::string option, bool value);
-#line 305 "../../../../../src/options/quantifiers_options"
+#line 317 "../../../src/options/quantifiers_options"
+template <> void Options::set(options::cbqiNestedQE__option_t, const options::cbqiNestedQE__option_t::type& x);
+#line 317 "../../../src/options/quantifiers_options"
 template <> const options::cbqiNestedQE__option_t::type& Options::operator[](options::cbqiNestedQE__option_t) const;
-#line 305 "../../../../../src/options/quantifiers_options"
+#line 317 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::cbqiNestedQE__option_t) const;
-#line 305 "../../../../../src/options/quantifiers_options"
+#line 317 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::cbqiNestedQE__option_t, std::string option, bool value);
-#line 308 "../../../../../src/options/quantifiers_options"
+#line 320 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::quantEpr__option_t, const options::quantEpr__option_t::type& x);
-#line 308 "../../../../../src/options/quantifiers_options"
+#line 320 "../../../src/options/quantifiers_options"
 template <> const options::quantEpr__option_t::type& Options::operator[](options::quantEpr__option_t) const;
-#line 308 "../../../../../src/options/quantifiers_options"
+#line 320 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantEpr__option_t) const;
-#line 308 "../../../../../src/options/quantifiers_options"
+#line 320 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::quantEpr__option_t, std::string option, bool value);
-#line 310 "../../../../../src/options/quantifiers_options"
+#line 322 "../../../src/options/quantifiers_options"
 template <> const options::quantEprMatching__option_t::type& Options::operator[](options::quantEprMatching__option_t) const;
-#line 310 "../../../../../src/options/quantifiers_options"
+#line 322 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantEprMatching__option_t) const;
-#line 310 "../../../../../src/options/quantifiers_options"
+#line 322 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::quantEprMatching__option_t, std::string option, bool value);
-#line 315 "../../../../../src/options/quantifiers_options"
+#line 327 "../../../src/options/quantifiers_options"
 template <> const options::localTheoryExt__option_t::type& Options::operator[](options::localTheoryExt__option_t) const;
-#line 315 "../../../../../src/options/quantifiers_options"
+#line 327 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::localTheoryExt__option_t) const;
-#line 315 "../../../../../src/options/quantifiers_options"
+#line 327 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::localTheoryExt__option_t, std::string option, bool value);
-#line 317 "../../../../../src/options/quantifiers_options"
+#line 329 "../../../src/options/quantifiers_options"
 template <> const options::ltePartialInst__option_t::type& Options::operator[](options::ltePartialInst__option_t) const;
-#line 317 "../../../../../src/options/quantifiers_options"
+#line 329 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::ltePartialInst__option_t) const;
-#line 317 "../../../../../src/options/quantifiers_options"
+#line 329 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::ltePartialInst__option_t, std::string option, bool value);
-#line 319 "../../../../../src/options/quantifiers_options"
+#line 331 "../../../src/options/quantifiers_options"
 template <> const options::lteRestrictInstClosure__option_t::type& Options::operator[](options::lteRestrictInstClosure__option_t) const;
-#line 319 "../../../../../src/options/quantifiers_options"
+#line 331 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::lteRestrictInstClosure__option_t) const;
-#line 319 "../../../../../src/options/quantifiers_options"
+#line 331 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::lteRestrictInstClosure__option_t, std::string option, bool value);
-#line 324 "../../../../../src/options/quantifiers_options"
+#line 336 "../../../src/options/quantifiers_options"
 template <> const options::quantAlphaEquiv__option_t::type& Options::operator[](options::quantAlphaEquiv__option_t) const;
-#line 324 "../../../../../src/options/quantifiers_options"
+#line 336 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantAlphaEquiv__option_t) const;
-#line 324 "../../../../../src/options/quantifiers_options"
+#line 336 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::quantAlphaEquiv__option_t, std::string option, bool value);
-#line 326 "../../../../../src/options/quantifiers_options"
+#line 338 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::macrosQuant__option_t, const options::macrosQuant__option_t::type& x);
-#line 326 "../../../../../src/options/quantifiers_options"
+#line 338 "../../../src/options/quantifiers_options"
 template <> const options::macrosQuant__option_t::type& Options::operator[](options::macrosQuant__option_t) const;
-#line 326 "../../../../../src/options/quantifiers_options"
+#line 338 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::macrosQuant__option_t) const;
-#line 326 "../../../../../src/options/quantifiers_options"
+#line 338 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::macrosQuant__option_t, std::string option, bool value);
-#line 328 "../../../../../src/options/quantifiers_options"
+#line 340 "../../../src/options/quantifiers_options"
 template <> const options::macrosQuantMode__option_t::type& Options::operator[](options::macrosQuantMode__option_t) const;
-#line 328 "../../../../../src/options/quantifiers_options"
+#line 340 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::macrosQuantMode__option_t) const;
-#line 328 "../../../../../src/options/quantifiers_options"
+#line 340 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::macrosQuantMode__option_t, std::string option, std::string value);
-#line 330 "../../../../../src/options/quantifiers_options"
+#line 342 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::quantDynamicSplit__option_t, const options::quantDynamicSplit__option_t::type& x);
-#line 330 "../../../../../src/options/quantifiers_options"
+#line 342 "../../../src/options/quantifiers_options"
 template <> const options::quantDynamicSplit__option_t::type& Options::operator[](options::quantDynamicSplit__option_t) const;
-#line 330 "../../../../../src/options/quantifiers_options"
+#line 342 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantDynamicSplit__option_t) const;
-#line 330 "../../../../../src/options/quantifiers_options"
+#line 342 "../../../src/options/quantifiers_options"
 template <> void Options::assign(options::quantDynamicSplit__option_t, std::string option, std::string value);
-#line 332 "../../../../../src/options/quantifiers_options"
+#line 344 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::quantAntiSkolem__option_t, const options::quantAntiSkolem__option_t::type& x);
-#line 332 "../../../../../src/options/quantifiers_options"
+#line 344 "../../../src/options/quantifiers_options"
 template <> const options::quantAntiSkolem__option_t::type& Options::operator[](options::quantAntiSkolem__option_t) const;
-#line 332 "../../../../../src/options/quantifiers_options"
+#line 344 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantAntiSkolem__option_t) const;
-#line 332 "../../../../../src/options/quantifiers_options"
+#line 344 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::quantAntiSkolem__option_t, std::string option, bool value);
-#line 342 "../../../../../src/options/quantifiers_options"
+#line 354 "../../../src/options/quantifiers_options"
 template <> const options::quantEqualityEngine__option_t::type& Options::operator[](options::quantEqualityEngine__option_t) const;
-#line 342 "../../../../../src/options/quantifiers_options"
+#line 354 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::quantEqualityEngine__option_t) const;
-#line 342 "../../../../../src/options/quantifiers_options"
+#line 354 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::quantEqualityEngine__option_t, std::string option, bool value);
-#line 347 "../../../../../src/options/quantifiers_options"
+#line 359 "../../../src/options/quantifiers_options"
 template <> void Options::set(options::trackInstLemmas__option_t, const options::trackInstLemmas__option_t::type& x);
-#line 347 "../../../../../src/options/quantifiers_options"
+#line 359 "../../../src/options/quantifiers_options"
 template <> const options::trackInstLemmas__option_t::type& Options::operator[](options::trackInstLemmas__option_t) const;
-#line 347 "../../../../../src/options/quantifiers_options"
+#line 359 "../../../src/options/quantifiers_options"
 template <> bool Options::wasSetByUser(options::trackInstLemmas__option_t) const;
-#line 347 "../../../../../src/options/quantifiers_options"
+#line 359 "../../../src/options/quantifiers_options"
 template <> void Options::assignBool(options::trackInstLemmas__option_t, std::string option, bool value);
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
-#line 13 "../../../../../src/options/quantifiers_options"
+#line 13 "../../../src/options/quantifiers_options"
 inline miniscopeQuant__option_t::type miniscopeQuant__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 13 "../../../../../src/options/quantifiers_options"
+#line 13 "../../../src/options/quantifiers_options"
 inline bool miniscopeQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 13 "../../../../../src/options/quantifiers_options"
+#line 13 "../../../src/options/quantifiers_options"
 inline void miniscopeQuant__option_t::set(const miniscopeQuant__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 18 "../../../../../src/options/quantifiers_options"
+#line 18 "../../../src/options/quantifiers_options"
 inline miniscopeQuantFreeVar__option_t::type miniscopeQuantFreeVar__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 18 "../../../../../src/options/quantifiers_options"
+#line 18 "../../../src/options/quantifiers_options"
 inline bool miniscopeQuantFreeVar__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 18 "../../../../../src/options/quantifiers_options"
+#line 18 "../../../src/options/quantifiers_options"
 inline void miniscopeQuantFreeVar__option_t::set(const miniscopeQuantFreeVar__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 20 "../../../../../src/options/quantifiers_options"
+#line 20 "../../../src/options/quantifiers_options"
 inline quantSplit__option_t::type quantSplit__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 20 "../../../../../src/options/quantifiers_options"
+#line 20 "../../../src/options/quantifiers_options"
 inline bool quantSplit__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 20 "../../../../../src/options/quantifiers_options"
+#line 20 "../../../src/options/quantifiers_options"
 inline void quantSplit__option_t::set(const quantSplit__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 22 "../../../../../src/options/quantifiers_options"
+#line 22 "../../../src/options/quantifiers_options"
 inline prenexQuant__option_t::type prenexQuant__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 22 "../../../../../src/options/quantifiers_options"
+#line 22 "../../../src/options/quantifiers_options"
 inline bool prenexQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 22 "../../../../../src/options/quantifiers_options"
+#line 22 "../../../src/options/quantifiers_options"
 inline void prenexQuant__option_t::set(const prenexQuant__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 24 "../../../../../src/options/quantifiers_options"
+#line 24 "../../../src/options/quantifiers_options"
 inline prenexQuantUser__option_t::type prenexQuantUser__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 24 "../../../../../src/options/quantifiers_options"
+#line 24 "../../../src/options/quantifiers_options"
 inline bool prenexQuantUser__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 24 "../../../../../src/options/quantifiers_options"
+#line 24 "../../../src/options/quantifiers_options"
 inline void prenexQuantUser__option_t::set(const prenexQuantUser__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 29 "../../../../../src/options/quantifiers_options"
+#line 29 "../../../src/options/quantifiers_options"
 inline varElimQuant__option_t::type varElimQuant__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 29 "../../../../../src/options/quantifiers_options"
+#line 29 "../../../src/options/quantifiers_options"
 inline bool varElimQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 31 "../../../../../src/options/quantifiers_options"
+#line 31 "../../../src/options/quantifiers_options"
 inline varIneqElimQuant__option_t::type varIneqElimQuant__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 31 "../../../../../src/options/quantifiers_options"
+#line 31 "../../../src/options/quantifiers_options"
 inline bool varIneqElimQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 33 "../../../../../src/options/quantifiers_options"
+#line 33 "../../../src/options/quantifiers_options"
 inline dtVarExpandQuant__option_t::type dtVarExpandQuant__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 33 "../../../../../src/options/quantifiers_options"
+#line 33 "../../../src/options/quantifiers_options"
 inline bool dtVarExpandQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 36 "../../../../../src/options/quantifiers_options"
+#line 36 "../../../src/options/quantifiers_options"
 inline iteLiftQuant__option_t::type iteLiftQuant__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 36 "../../../../../src/options/quantifiers_options"
+#line 36 "../../../src/options/quantifiers_options"
 inline bool iteLiftQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 36 "../../../../../src/options/quantifiers_options"
+#line 36 "../../../src/options/quantifiers_options"
 inline void iteLiftQuant__option_t::set(const iteLiftQuant__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 38 "../../../../../src/options/quantifiers_options"
+#line 38 "../../../src/options/quantifiers_options"
 inline condVarSplitQuant__option_t::type condVarSplitQuant__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 38 "../../../../../src/options/quantifiers_options"
+#line 38 "../../../src/options/quantifiers_options"
 inline bool condVarSplitQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 40 "../../../../../src/options/quantifiers_options"
+#line 40 "../../../src/options/quantifiers_options"
 inline condVarSplitQuantAgg__option_t::type condVarSplitQuantAgg__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 40 "../../../../../src/options/quantifiers_options"
+#line 40 "../../../src/options/quantifiers_options"
 inline bool condVarSplitQuantAgg__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 42 "../../../../../src/options/quantifiers_options"
+#line 42 "../../../src/options/quantifiers_options"
 inline iteDtTesterSplitQuant__option_t::type iteDtTesterSplitQuant__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 42 "../../../../../src/options/quantifiers_options"
+#line 42 "../../../src/options/quantifiers_options"
 inline bool iteDtTesterSplitQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 42 "../../../../../src/options/quantifiers_options"
+#line 42 "../../../src/options/quantifiers_options"
 inline void iteDtTesterSplitQuant__option_t::set(const iteDtTesterSplitQuant__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 47 "../../../../../src/options/quantifiers_options"
+#line 47 "../../../src/options/quantifiers_options"
 inline preSkolemQuant__option_t::type preSkolemQuant__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 47 "../../../../../src/options/quantifiers_options"
+#line 47 "../../../src/options/quantifiers_options"
 inline bool preSkolemQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 47 "../../../../../src/options/quantifiers_options"
+#line 47 "../../../src/options/quantifiers_options"
 inline void preSkolemQuant__option_t::set(const preSkolemQuant__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 49 "../../../../../src/options/quantifiers_options"
+#line 49 "../../../src/options/quantifiers_options"
 inline preSkolemQuantNested__option_t::type preSkolemQuantNested__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 49 "../../../../../src/options/quantifiers_options"
+#line 49 "../../../src/options/quantifiers_options"
 inline bool preSkolemQuantNested__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 49 "../../../../../src/options/quantifiers_options"
+#line 49 "../../../src/options/quantifiers_options"
 inline void preSkolemQuantNested__option_t::set(const preSkolemQuantNested__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 51 "../../../../../src/options/quantifiers_options"
+#line 51 "../../../src/options/quantifiers_options"
 inline preSkolemQuantAgg__option_t::type preSkolemQuantAgg__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 51 "../../../../../src/options/quantifiers_options"
+#line 51 "../../../src/options/quantifiers_options"
 inline bool preSkolemQuantAgg__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 51 "../../../../../src/options/quantifiers_options"
+#line 51 "../../../src/options/quantifiers_options"
 inline void preSkolemQuantAgg__option_t::set(const preSkolemQuantAgg__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 53 "../../../../../src/options/quantifiers_options"
+#line 53 "../../../src/options/quantifiers_options"
 inline aggressiveMiniscopeQuant__option_t::type aggressiveMiniscopeQuant__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 53 "../../../../../src/options/quantifiers_options"
+#line 53 "../../../src/options/quantifiers_options"
 inline bool aggressiveMiniscopeQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 55 "../../../../../src/options/quantifiers_options"
+#line 55 "../../../src/options/quantifiers_options"
 inline elimTautQuant__option_t::type elimTautQuant__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 55 "../../../../../src/options/quantifiers_options"
+#line 55 "../../../src/options/quantifiers_options"
 inline bool elimTautQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 57 "../../../../../src/options/quantifiers_options"
+#line 57 "../../../src/options/quantifiers_options"
 inline elimExtArithQuant__option_t::type elimExtArithQuant__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 57 "../../../../../src/options/quantifiers_options"
+#line 57 "../../../src/options/quantifiers_options"
 inline bool elimExtArithQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 57 "../../../src/options/quantifiers_options"
+inline void elimExtArithQuant__option_t::set(const elimExtArithQuant__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 59 "../../../../../src/options/quantifiers_options"
+#line 59 "../../../src/options/quantifiers_options"
 inline condRewriteQuant__option_t::type condRewriteQuant__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 59 "../../../../../src/options/quantifiers_options"
+#line 59 "../../../src/options/quantifiers_options"
 inline bool condRewriteQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 64 "../../../../../src/options/quantifiers_options"
+#line 64 "../../../src/options/quantifiers_options"
 inline eMatching__option_t::type eMatching__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 64 "../../../../../src/options/quantifiers_options"
+#line 64 "../../../src/options/quantifiers_options"
 inline bool eMatching__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 64 "../../../../../src/options/quantifiers_options"
+#line 64 "../../../src/options/quantifiers_options"
 inline void eMatching__option_t::set(const eMatching__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 67 "../../../../../src/options/quantifiers_options"
+#line 67 "../../../src/options/quantifiers_options"
 inline termDbMode__option_t::type termDbMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 67 "../../../../../src/options/quantifiers_options"
+#line 67 "../../../src/options/quantifiers_options"
 inline bool termDbMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 67 "../../../../../src/options/quantifiers_options"
+#line 67 "../../../src/options/quantifiers_options"
 inline void termDbMode__option_t::set(const termDbMode__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 69 "../../../../../src/options/quantifiers_options"
+#line 69 "../../../src/options/quantifiers_options"
 inline registerQuantBodyTerms__option_t::type registerQuantBodyTerms__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 69 "../../../../../src/options/quantifiers_options"
+#line 69 "../../../src/options/quantifiers_options"
 inline bool registerQuantBodyTerms__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 71 "../../../../../src/options/quantifiers_options"
+#line 71 "../../../src/options/quantifiers_options"
 inline inferArithTriggerEq__option_t::type inferArithTriggerEq__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 71 "../../../../../src/options/quantifiers_options"
+#line 71 "../../../src/options/quantifiers_options"
 inline bool inferArithTriggerEq__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 73 "../../../../../src/options/quantifiers_options"
+#line 73 "../../../src/options/quantifiers_options"
 inline inferArithTriggerEqExp__option_t::type inferArithTriggerEqExp__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 73 "../../../../../src/options/quantifiers_options"
+#line 73 "../../../src/options/quantifiers_options"
 inline bool inferArithTriggerEqExp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 76 "../../../../../src/options/quantifiers_options"
+#line 76 "../../../src/options/quantifiers_options"
 inline strictTriggers__option_t::type strictTriggers__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 76 "../../../../../src/options/quantifiers_options"
+#line 76 "../../../src/options/quantifiers_options"
 inline bool strictTriggers__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 78 "../../../../../src/options/quantifiers_options"
+#line 78 "../../../src/options/quantifiers_options"
 inline relevantTriggers__option_t::type relevantTriggers__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 78 "../../../../../src/options/quantifiers_options"
+#line 78 "../../../src/options/quantifiers_options"
 inline bool relevantTriggers__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 80 "../../../../../src/options/quantifiers_options"
+#line 80 "../../../src/options/quantifiers_options"
 inline relationalTriggers__option_t::type relationalTriggers__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 80 "../../../../../src/options/quantifiers_options"
+#line 80 "../../../src/options/quantifiers_options"
 inline bool relationalTriggers__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 82 "../../../../../src/options/quantifiers_options"
+#line 82 "../../../src/options/quantifiers_options"
 inline purifyTriggers__option_t::type purifyTriggers__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 82 "../../../../../src/options/quantifiers_options"
+#line 82 "../../../src/options/quantifiers_options"
 inline bool purifyTriggers__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 82 "../../../../../src/options/quantifiers_options"
+#line 82 "../../../src/options/quantifiers_options"
 inline void purifyTriggers__option_t::set(const purifyTriggers__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 84 "../../../../../src/options/quantifiers_options"
+#line 84 "../../../src/options/quantifiers_options"
 inline purifyDtTriggers__option_t::type purifyDtTriggers__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 84 "../../../../../src/options/quantifiers_options"
+#line 84 "../../../src/options/quantifiers_options"
 inline bool purifyDtTriggers__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 84 "../../../../../src/options/quantifiers_options"
+#line 84 "../../../src/options/quantifiers_options"
 inline void purifyDtTriggers__option_t::set(const purifyDtTriggers__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 86 "../../../../../src/options/quantifiers_options"
+#line 86 "../../../src/options/quantifiers_options"
 inline pureThTriggers__option_t::type pureThTriggers__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 86 "../../../../../src/options/quantifiers_options"
+#line 86 "../../../src/options/quantifiers_options"
 inline bool pureThTriggers__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 86 "../../../../../src/options/quantifiers_options"
+#line 86 "../../../src/options/quantifiers_options"
 inline void pureThTriggers__option_t::set(const pureThTriggers__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 88 "../../../../../src/options/quantifiers_options"
+#line 88 "../../../src/options/quantifiers_options"
 inline partialTriggers__option_t::type partialTriggers__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 88 "../../../../../src/options/quantifiers_options"
+#line 88 "../../../src/options/quantifiers_options"
 inline bool partialTriggers__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 88 "../../../../../src/options/quantifiers_options"
+#line 88 "../../../src/options/quantifiers_options"
 inline void partialTriggers__option_t::set(const partialTriggers__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 90 "../../../../../src/options/quantifiers_options"
+#line 90 "../../../src/options/quantifiers_options"
 inline multiTriggerWhenSingle__option_t::type multiTriggerWhenSingle__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 90 "../../../../../src/options/quantifiers_options"
+#line 90 "../../../src/options/quantifiers_options"
 inline bool multiTriggerWhenSingle__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 92 "../../../../../src/options/quantifiers_options"
+#line 92 "../../../src/options/quantifiers_options"
 inline multiTriggerPriority__option_t::type multiTriggerPriority__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 92 "../../../../../src/options/quantifiers_options"
+#line 92 "../../../src/options/quantifiers_options"
 inline bool multiTriggerPriority__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 94 "../../../../../src/options/quantifiers_options"
+#line 94 "../../../src/options/quantifiers_options"
+inline multiTriggerCache__option_t::type multiTriggerCache__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 94 "../../../src/options/quantifiers_options"
+inline bool multiTriggerCache__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 96 "../../../src/options/quantifiers_options"
+inline multiTriggerLinear__option_t::type multiTriggerLinear__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 96 "../../../src/options/quantifiers_options"
+inline bool multiTriggerLinear__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 98 "../../../src/options/quantifiers_options"
 inline triggerSelMode__option_t::type triggerSelMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 94 "../../../../../src/options/quantifiers_options"
+#line 98 "../../../src/options/quantifiers_options"
 inline bool triggerSelMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 94 "../../../../../src/options/quantifiers_options"
+#line 98 "../../../src/options/quantifiers_options"
 inline void triggerSelMode__option_t::set(const triggerSelMode__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 96 "../../../../../src/options/quantifiers_options"
+#line 100 "../../../src/options/quantifiers_options"
 inline triggerActiveSelMode__option_t::type triggerActiveSelMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 96 "../../../../../src/options/quantifiers_options"
+#line 100 "../../../src/options/quantifiers_options"
 inline bool triggerActiveSelMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 96 "../../../../../src/options/quantifiers_options"
+#line 100 "../../../src/options/quantifiers_options"
 inline void triggerActiveSelMode__option_t::set(const triggerActiveSelMode__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 98 "../../../../../src/options/quantifiers_options"
+#line 102 "../../../src/options/quantifiers_options"
 inline userPatternsQuant__option_t::type userPatternsQuant__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 98 "../../../../../src/options/quantifiers_options"
+#line 102 "../../../src/options/quantifiers_options"
 inline bool userPatternsQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 98 "../../../../../src/options/quantifiers_options"
+#line 102 "../../../src/options/quantifiers_options"
 inline void userPatternsQuant__option_t::set(const userPatternsQuant__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 100 "../../../../../src/options/quantifiers_options"
+#line 104 "../../../src/options/quantifiers_options"
 inline incrementTriggers__option_t::type incrementTriggers__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 100 "../../../../../src/options/quantifiers_options"
+#line 104 "../../../src/options/quantifiers_options"
 inline bool incrementTriggers__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 103 "../../../../../src/options/quantifiers_options"
+#line 107 "../../../src/options/quantifiers_options"
 inline instWhenMode__option_t::type instWhenMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 103 "../../../../../src/options/quantifiers_options"
+#line 107 "../../../src/options/quantifiers_options"
 inline bool instWhenMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 103 "../../../../../src/options/quantifiers_options"
+#line 107 "../../../src/options/quantifiers_options"
 inline void instWhenMode__option_t::set(const instWhenMode__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 105 "../../../../../src/options/quantifiers_options"
+#line 109 "../../../src/options/quantifiers_options"
 inline instWhenStrictInterleave__option_t::type instWhenStrictInterleave__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 105 "../../../../../src/options/quantifiers_options"
+#line 109 "../../../src/options/quantifiers_options"
 inline bool instWhenStrictInterleave__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 105 "../../../../../src/options/quantifiers_options"
+#line 109 "../../../src/options/quantifiers_options"
 inline void instWhenStrictInterleave__option_t::set(const instWhenStrictInterleave__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 107 "../../../../../src/options/quantifiers_options"
+#line 111 "../../../src/options/quantifiers_options"
 inline instWhenPhase__option_t::type instWhenPhase__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 107 "../../../../../src/options/quantifiers_options"
+#line 111 "../../../src/options/quantifiers_options"
 inline bool instWhenPhase__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 107 "../../../../../src/options/quantifiers_options"
+#line 111 "../../../src/options/quantifiers_options"
 inline void instWhenPhase__option_t::set(const instWhenPhase__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 109 "../../../../../src/options/quantifiers_options"
+#line 113 "../../../src/options/quantifiers_options"
 inline instWhenTcFirst__option_t::type instWhenTcFirst__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 109 "../../../../../src/options/quantifiers_options"
+#line 113 "../../../src/options/quantifiers_options"
 inline bool instWhenTcFirst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 109 "../../../../../src/options/quantifiers_options"
+#line 113 "../../../src/options/quantifiers_options"
 inline void instWhenTcFirst__option_t::set(const instWhenTcFirst__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 112 "../../../../../src/options/quantifiers_options"
+#line 115 "../../../src/options/quantifiers_options"
+inline quantModelEe__option_t::type quantModelEe__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 115 "../../../src/options/quantifiers_options"
+inline bool quantModelEe__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 118 "../../../src/options/quantifiers_options"
 inline instMaxLevel__option_t::type instMaxLevel__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 112 "../../../../../src/options/quantifiers_options"
+#line 118 "../../../src/options/quantifiers_options"
 inline bool instMaxLevel__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 112 "../../../../../src/options/quantifiers_options"
+#line 118 "../../../src/options/quantifiers_options"
 inline void instMaxLevel__option_t::set(const instMaxLevel__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 114 "../../../../../src/options/quantifiers_options"
+#line 120 "../../../src/options/quantifiers_options"
 inline instLevelInputOnly__option_t::type instLevelInputOnly__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 114 "../../../../../src/options/quantifiers_options"
+#line 120 "../../../src/options/quantifiers_options"
 inline bool instLevelInputOnly__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 116 "../../../../../src/options/quantifiers_options"
+#line 122 "../../../src/options/quantifiers_options"
 inline quantRepMode__option_t::type quantRepMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 116 "../../../../../src/options/quantifiers_options"
+#line 122 "../../../src/options/quantifiers_options"
 inline bool quantRepMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 116 "../../../../../src/options/quantifiers_options"
+#line 122 "../../../src/options/quantifiers_options"
 inline void quantRepMode__option_t::set(const quantRepMode__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 118 "../../../../../src/options/quantifiers_options"
+#line 124 "../../../src/options/quantifiers_options"
 inline instRelevantCond__option_t::type instRelevantCond__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 118 "../../../../../src/options/quantifiers_options"
+#line 124 "../../../src/options/quantifiers_options"
 inline bool instRelevantCond__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 121 "../../../../../src/options/quantifiers_options"
+#line 127 "../../../src/options/quantifiers_options"
 inline fullSaturateQuant__option_t::type fullSaturateQuant__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 121 "../../../../../src/options/quantifiers_options"
+#line 127 "../../../src/options/quantifiers_options"
 inline bool fullSaturateQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 121 "../../../../../src/options/quantifiers_options"
+#line 127 "../../../src/options/quantifiers_options"
 inline void fullSaturateQuant__option_t::set(const fullSaturateQuant__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 123 "../../../../../src/options/quantifiers_options"
+#line 129 "../../../src/options/quantifiers_options"
 inline fullSaturateQuantRd__option_t::type fullSaturateQuantRd__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 123 "../../../../../src/options/quantifiers_options"
+#line 129 "../../../src/options/quantifiers_options"
 inline bool fullSaturateQuantRd__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 125 "../../../../../src/options/quantifiers_options"
+#line 131 "../../../src/options/quantifiers_options"
 inline fullSaturateInst__option_t::type fullSaturateInst__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 125 "../../../../../src/options/quantifiers_options"
+#line 131 "../../../src/options/quantifiers_options"
 inline bool fullSaturateInst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 128 "../../../../../src/options/quantifiers_options"
+#line 134 "../../../src/options/quantifiers_options"
 inline literalMatchMode__option_t::type literalMatchMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 128 "../../../../../src/options/quantifiers_options"
+#line 134 "../../../src/options/quantifiers_options"
 inline bool literalMatchMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 133 "../../../../../src/options/quantifiers_options"
+#line 139 "../../../src/options/quantifiers_options"
 inline finiteModelFind__option_t::type finiteModelFind__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 133 "../../../../../src/options/quantifiers_options"
+#line 139 "../../../src/options/quantifiers_options"
 inline bool finiteModelFind__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 133 "../../../../../src/options/quantifiers_options"
+#line 139 "../../../src/options/quantifiers_options"
 inline void finiteModelFind__option_t::set(const finiteModelFind__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 136 "../../../../../src/options/quantifiers_options"
+#line 142 "../../../src/options/quantifiers_options"
 inline quantFunWellDefined__option_t::type quantFunWellDefined__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 136 "../../../../../src/options/quantifiers_options"
+#line 142 "../../../src/options/quantifiers_options"
 inline bool quantFunWellDefined__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 138 "../../../../../src/options/quantifiers_options"
+#line 144 "../../../src/options/quantifiers_options"
 inline fmfFunWellDefined__option_t::type fmfFunWellDefined__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 138 "../../../../../src/options/quantifiers_options"
+#line 144 "../../../src/options/quantifiers_options"
 inline bool fmfFunWellDefined__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 138 "../../../../../src/options/quantifiers_options"
+#line 144 "../../../src/options/quantifiers_options"
 inline void fmfFunWellDefined__option_t::set(const fmfFunWellDefined__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 140 "../../../../../src/options/quantifiers_options"
+#line 146 "../../../src/options/quantifiers_options"
 inline fmfFunWellDefinedRelevant__option_t::type fmfFunWellDefinedRelevant__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 140 "../../../../../src/options/quantifiers_options"
+#line 146 "../../../src/options/quantifiers_options"
 inline bool fmfFunWellDefinedRelevant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 142 "../../../../../src/options/quantifiers_options"
+#line 148 "../../../src/options/quantifiers_options"
 inline fmfEmptySorts__option_t::type fmfEmptySorts__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 142 "../../../../../src/options/quantifiers_options"
+#line 148 "../../../src/options/quantifiers_options"
 inline bool fmfEmptySorts__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 145 "../../../../../src/options/quantifiers_options"
+#line 151 "../../../src/options/quantifiers_options"
 inline mbqiMode__option_t::type mbqiMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 145 "../../../../../src/options/quantifiers_options"
+#line 151 "../../../src/options/quantifiers_options"
 inline bool mbqiMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 145 "../../../../../src/options/quantifiers_options"
+#line 151 "../../../src/options/quantifiers_options"
 inline void mbqiMode__option_t::set(const mbqiMode__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 147 "../../../../../src/options/quantifiers_options"
+#line 153 "../../../src/options/quantifiers_options"
 inline fmfOneInstPerRound__option_t::type fmfOneInstPerRound__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 147 "../../../../../src/options/quantifiers_options"
+#line 153 "../../../src/options/quantifiers_options"
 inline bool fmfOneInstPerRound__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 147 "../../../../../src/options/quantifiers_options"
+#line 153 "../../../src/options/quantifiers_options"
 inline void fmfOneInstPerRound__option_t::set(const fmfOneInstPerRound__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 149 "../../../../../src/options/quantifiers_options"
+#line 155 "../../../src/options/quantifiers_options"
 inline fmfOneQuantPerRound__option_t::type fmfOneQuantPerRound__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 149 "../../../../../src/options/quantifiers_options"
+#line 155 "../../../src/options/quantifiers_options"
 inline bool fmfOneQuantPerRound__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 152 "../../../../../src/options/quantifiers_options"
+#line 158 "../../../src/options/quantifiers_options"
 inline fmfInstEngine__option_t::type fmfInstEngine__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 152 "../../../../../src/options/quantifiers_options"
+#line 158 "../../../src/options/quantifiers_options"
 inline bool fmfInstEngine__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 152 "../../../../../src/options/quantifiers_options"
+#line 158 "../../../src/options/quantifiers_options"
 inline void fmfInstEngine__option_t::set(const fmfInstEngine__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 154 "../../../../../src/options/quantifiers_options"
+#line 160 "../../../src/options/quantifiers_options"
 inline fmfInstGen__option_t::type fmfInstGen__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 154 "../../../../../src/options/quantifiers_options"
+#line 160 "../../../src/options/quantifiers_options"
 inline bool fmfInstGen__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 156 "../../../../../src/options/quantifiers_options"
+#line 162 "../../../src/options/quantifiers_options"
 inline fmfInstGenOneQuantPerRound__option_t::type fmfInstGenOneQuantPerRound__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 156 "../../../../../src/options/quantifiers_options"
+#line 162 "../../../src/options/quantifiers_options"
 inline bool fmfInstGenOneQuantPerRound__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 158 "../../../../../src/options/quantifiers_options"
+#line 164 "../../../src/options/quantifiers_options"
 inline fmfFreshDistConst__option_t::type fmfFreshDistConst__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 158 "../../../../../src/options/quantifiers_options"
+#line 164 "../../../src/options/quantifiers_options"
 inline bool fmfFreshDistConst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 160 "../../../../../src/options/quantifiers_options"
+#line 166 "../../../src/options/quantifiers_options"
 inline fmfFmcSimple__option_t::type fmfFmcSimple__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 160 "../../../../../src/options/quantifiers_options"
+#line 166 "../../../src/options/quantifiers_options"
 inline bool fmfFmcSimple__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 162 "../../../../../src/options/quantifiers_options"
+#line 168 "../../../src/options/quantifiers_options"
 inline fmfBoundInt__option_t::type fmfBoundInt__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 162 "../../../../../src/options/quantifiers_options"
+#line 168 "../../../src/options/quantifiers_options"
 inline bool fmfBoundInt__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 162 "../../../../../src/options/quantifiers_options"
+#line 168 "../../../src/options/quantifiers_options"
 inline void fmfBoundInt__option_t::set(const fmfBoundInt__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 164 "../../../../../src/options/quantifiers_options"
+#line 170 "../../../src/options/quantifiers_options"
 inline fmfBound__option_t::type fmfBound__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 164 "../../../../../src/options/quantifiers_options"
+#line 170 "../../../src/options/quantifiers_options"
 inline bool fmfBound__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 164 "../../../../../src/options/quantifiers_options"
+#line 170 "../../../src/options/quantifiers_options"
 inline void fmfBound__option_t::set(const fmfBound__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 166 "../../../../../src/options/quantifiers_options"
+#line 172 "../../../src/options/quantifiers_options"
 inline fmfBoundLazy__option_t::type fmfBoundLazy__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 166 "../../../../../src/options/quantifiers_options"
+#line 172 "../../../src/options/quantifiers_options"
 inline bool fmfBoundLazy__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 166 "../../../../../src/options/quantifiers_options"
+#line 172 "../../../src/options/quantifiers_options"
 inline void fmfBoundLazy__option_t::set(const fmfBoundLazy__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 168 "../../../../../src/options/quantifiers_options"
+#line 174 "../../../src/options/quantifiers_options"
 inline fmfBoundMinMode__option_t::type fmfBoundMinMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 168 "../../../../../src/options/quantifiers_options"
+#line 174 "../../../src/options/quantifiers_options"
 inline bool fmfBoundMinMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 173 "../../../../../src/options/quantifiers_options"
+#line 179 "../../../src/options/quantifiers_options"
 inline quantConflictFind__option_t::type quantConflictFind__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 173 "../../../../../src/options/quantifiers_options"
+#line 179 "../../../src/options/quantifiers_options"
 inline bool quantConflictFind__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 173 "../../../../../src/options/quantifiers_options"
+#line 179 "../../../src/options/quantifiers_options"
 inline void quantConflictFind__option_t::set(const quantConflictFind__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 175 "../../../../../src/options/quantifiers_options"
+#line 181 "../../../src/options/quantifiers_options"
 inline qcfMode__option_t::type qcfMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 175 "../../../../../src/options/quantifiers_options"
+#line 181 "../../../src/options/quantifiers_options"
 inline bool qcfMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 177 "../../../../../src/options/quantifiers_options"
+#line 183 "../../../src/options/quantifiers_options"
 inline qcfWhenMode__option_t::type qcfWhenMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 177 "../../../../../src/options/quantifiers_options"
+#line 183 "../../../src/options/quantifiers_options"
 inline bool qcfWhenMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 179 "../../../../../src/options/quantifiers_options"
+#line 185 "../../../src/options/quantifiers_options"
 inline qcfTConstraint__option_t::type qcfTConstraint__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 179 "../../../../../src/options/quantifiers_options"
+#line 185 "../../../src/options/quantifiers_options"
 inline bool qcfTConstraint__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 179 "../../../../../src/options/quantifiers_options"
+#line 185 "../../../src/options/quantifiers_options"
 inline void qcfTConstraint__option_t::set(const qcfTConstraint__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 181 "../../../../../src/options/quantifiers_options"
+#line 187 "../../../src/options/quantifiers_options"
 inline qcfAllConflict__option_t::type qcfAllConflict__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 181 "../../../../../src/options/quantifiers_options"
+#line 187 "../../../src/options/quantifiers_options"
 inline bool qcfAllConflict__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 181 "../../../../../src/options/quantifiers_options"
+#line 187 "../../../src/options/quantifiers_options"
 inline void qcfAllConflict__option_t::set(const qcfAllConflict__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 183 "../../../../../src/options/quantifiers_options"
+#line 189 "../../../src/options/quantifiers_options"
 inline qcfNestedConflict__option_t::type qcfNestedConflict__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 183 "../../../../../src/options/quantifiers_options"
+#line 189 "../../../src/options/quantifiers_options"
 inline bool qcfNestedConflict__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 185 "../../../../../src/options/quantifiers_options"
+#line 191 "../../../src/options/quantifiers_options"
 inline qcfVoExp__option_t::type qcfVoExp__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 185 "../../../../../src/options/quantifiers_options"
+#line 191 "../../../src/options/quantifiers_options"
 inline bool qcfVoExp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 188 "../../../../../src/options/quantifiers_options"
+#line 194 "../../../src/options/quantifiers_options"
 inline instNoEntail__option_t::type instNoEntail__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 188 "../../../../../src/options/quantifiers_options"
+#line 194 "../../../src/options/quantifiers_options"
 inline bool instNoEntail__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 188 "../../../../../src/options/quantifiers_options"
+#line 194 "../../../src/options/quantifiers_options"
 inline void instNoEntail__option_t::set(const instNoEntail__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 191 "../../../../../src/options/quantifiers_options"
+#line 196 "../../../src/options/quantifiers_options"
+inline instNoModelTrue__option_t::type instNoModelTrue__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 196 "../../../src/options/quantifiers_options"
+inline bool instNoModelTrue__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 196 "../../../src/options/quantifiers_options"
+inline void instNoModelTrue__option_t::set(const instNoModelTrue__option_t::type& v) { Options::current()->set(*this, v); }
+
+#line 199 "../../../src/options/quantifiers_options"
 inline instPropagate__option_t::type instPropagate__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 191 "../../../../../src/options/quantifiers_options"
+#line 199 "../../../src/options/quantifiers_options"
 inline bool instPropagate__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 191 "../../../../../src/options/quantifiers_options"
+#line 199 "../../../src/options/quantifiers_options"
 inline void instPropagate__option_t::set(const instPropagate__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 194 "../../../../../src/options/quantifiers_options"
+#line 202 "../../../src/options/quantifiers_options"
 inline qcfEagerTest__option_t::type qcfEagerTest__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 194 "../../../../../src/options/quantifiers_options"
+#line 202 "../../../src/options/quantifiers_options"
 inline bool qcfEagerTest__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 196 "../../../../../src/options/quantifiers_options"
+#line 204 "../../../src/options/quantifiers_options"
 inline qcfEagerCheckRd__option_t::type qcfEagerCheckRd__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 196 "../../../../../src/options/quantifiers_options"
+#line 204 "../../../src/options/quantifiers_options"
 inline bool qcfEagerCheckRd__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 198 "../../../../../src/options/quantifiers_options"
+#line 206 "../../../src/options/quantifiers_options"
 inline qcfSkipRd__option_t::type qcfSkipRd__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 198 "../../../../../src/options/quantifiers_options"
+#line 206 "../../../src/options/quantifiers_options"
 inline bool qcfSkipRd__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 203 "../../../../../src/options/quantifiers_options"
+#line 211 "../../../src/options/quantifiers_options"
 inline quantRewriteRules__option_t::type quantRewriteRules__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 203 "../../../../../src/options/quantifiers_options"
+#line 211 "../../../src/options/quantifiers_options"
 inline bool quantRewriteRules__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 205 "../../../../../src/options/quantifiers_options"
+#line 213 "../../../src/options/quantifiers_options"
 inline rrOneInstPerRound__option_t::type rrOneInstPerRound__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 205 "../../../../../src/options/quantifiers_options"
+#line 213 "../../../src/options/quantifiers_options"
 inline bool rrOneInstPerRound__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 210 "../../../../../src/options/quantifiers_options"
+#line 218 "../../../src/options/quantifiers_options"
 inline quantInduction__option_t::type quantInduction__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 210 "../../../../../src/options/quantifiers_options"
+#line 218 "../../../src/options/quantifiers_options"
 inline bool quantInduction__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 212 "../../../../../src/options/quantifiers_options"
+#line 220 "../../../src/options/quantifiers_options"
 inline dtStcInduction__option_t::type dtStcInduction__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 212 "../../../../../src/options/quantifiers_options"
+#line 220 "../../../src/options/quantifiers_options"
 inline bool dtStcInduction__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 212 "../../../../../src/options/quantifiers_options"
+#line 220 "../../../src/options/quantifiers_options"
 inline void dtStcInduction__option_t::set(const dtStcInduction__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 214 "../../../../../src/options/quantifiers_options"
+#line 222 "../../../src/options/quantifiers_options"
 inline intWfInduction__option_t::type intWfInduction__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 214 "../../../../../src/options/quantifiers_options"
+#line 222 "../../../src/options/quantifiers_options"
 inline bool intWfInduction__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 214 "../../../../../src/options/quantifiers_options"
+#line 222 "../../../src/options/quantifiers_options"
 inline void intWfInduction__option_t::set(const intWfInduction__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 216 "../../../../../src/options/quantifiers_options"
+#line 224 "../../../src/options/quantifiers_options"
 inline conjectureGen__option_t::type conjectureGen__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 216 "../../../../../src/options/quantifiers_options"
+#line 224 "../../../src/options/quantifiers_options"
 inline bool conjectureGen__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 216 "../../../../../src/options/quantifiers_options"
+#line 224 "../../../src/options/quantifiers_options"
 inline void conjectureGen__option_t::set(const conjectureGen__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 219 "../../../../../src/options/quantifiers_options"
+#line 227 "../../../src/options/quantifiers_options"
 inline conjectureGenPerRound__option_t::type conjectureGenPerRound__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 219 "../../../../../src/options/quantifiers_options"
+#line 227 "../../../src/options/quantifiers_options"
 inline bool conjectureGenPerRound__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 221 "../../../../../src/options/quantifiers_options"
+#line 229 "../../../src/options/quantifiers_options"
 inline conjectureNoFilter__option_t::type conjectureNoFilter__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 221 "../../../../../src/options/quantifiers_options"
+#line 229 "../../../src/options/quantifiers_options"
 inline bool conjectureNoFilter__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 223 "../../../../../src/options/quantifiers_options"
+#line 231 "../../../src/options/quantifiers_options"
 inline conjectureFilterActiveTerms__option_t::type conjectureFilterActiveTerms__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 223 "../../../../../src/options/quantifiers_options"
+#line 231 "../../../src/options/quantifiers_options"
 inline bool conjectureFilterActiveTerms__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 223 "../../../../../src/options/quantifiers_options"
+#line 231 "../../../src/options/quantifiers_options"
 inline void conjectureFilterActiveTerms__option_t::set(const conjectureFilterActiveTerms__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 225 "../../../../../src/options/quantifiers_options"
+#line 233 "../../../src/options/quantifiers_options"
 inline conjectureFilterCanonical__option_t::type conjectureFilterCanonical__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 225 "../../../../../src/options/quantifiers_options"
+#line 233 "../../../src/options/quantifiers_options"
 inline bool conjectureFilterCanonical__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 225 "../../../../../src/options/quantifiers_options"
+#line 233 "../../../src/options/quantifiers_options"
 inline void conjectureFilterCanonical__option_t::set(const conjectureFilterCanonical__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 227 "../../../../../src/options/quantifiers_options"
+#line 235 "../../../src/options/quantifiers_options"
 inline conjectureFilterModel__option_t::type conjectureFilterModel__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 227 "../../../../../src/options/quantifiers_options"
+#line 235 "../../../src/options/quantifiers_options"
 inline bool conjectureFilterModel__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 227 "../../../../../src/options/quantifiers_options"
+#line 235 "../../../src/options/quantifiers_options"
 inline void conjectureFilterModel__option_t::set(const conjectureFilterModel__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 229 "../../../../../src/options/quantifiers_options"
+#line 237 "../../../src/options/quantifiers_options"
 inline conjectureGenGtEnum__option_t::type conjectureGenGtEnum__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 229 "../../../../../src/options/quantifiers_options"
+#line 237 "../../../src/options/quantifiers_options"
 inline bool conjectureGenGtEnum__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 231 "../../../../../src/options/quantifiers_options"
+#line 239 "../../../src/options/quantifiers_options"
 inline conjectureUeeIntro__option_t::type conjectureUeeIntro__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 231 "../../../../../src/options/quantifiers_options"
+#line 239 "../../../src/options/quantifiers_options"
 inline bool conjectureUeeIntro__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 233 "../../../../../src/options/quantifiers_options"
+#line 241 "../../../src/options/quantifiers_options"
 inline conjectureGenMaxDepth__option_t::type conjectureGenMaxDepth__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 233 "../../../../../src/options/quantifiers_options"
+#line 241 "../../../src/options/quantifiers_options"
 inline bool conjectureGenMaxDepth__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 238 "../../../../../src/options/quantifiers_options"
+#line 246 "../../../src/options/quantifiers_options"
 inline ceGuidedInst__option_t::type ceGuidedInst__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 238 "../../../../../src/options/quantifiers_options"
+#line 246 "../../../src/options/quantifiers_options"
 inline bool ceGuidedInst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 238 "../../../../../src/options/quantifiers_options"
+#line 246 "../../../src/options/quantifiers_options"
 inline void ceGuidedInst__option_t::set(const ceGuidedInst__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 240 "../../../../../src/options/quantifiers_options"
+#line 248 "../../../src/options/quantifiers_options"
 inline ceGuidedInstFair__option_t::type ceGuidedInstFair__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 240 "../../../../../src/options/quantifiers_options"
+#line 248 "../../../src/options/quantifiers_options"
 inline bool ceGuidedInstFair__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 242 "../../../../../src/options/quantifiers_options"
+#line 250 "../../../src/options/quantifiers_options"
 inline cegqiSingleInvMode__option_t::type cegqiSingleInvMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 242 "../../../../../src/options/quantifiers_options"
+#line 250 "../../../src/options/quantifiers_options"
 inline bool cegqiSingleInvMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 242 "../../../../../src/options/quantifiers_options"
+#line 250 "../../../src/options/quantifiers_options"
 inline void cegqiSingleInvMode__option_t::set(const cegqiSingleInvMode__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 244 "../../../../../src/options/quantifiers_options"
+#line 252 "../../../src/options/quantifiers_options"
 inline cegqiSingleInvPartial__option_t::type cegqiSingleInvPartial__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 244 "../../../../../src/options/quantifiers_options"
+#line 252 "../../../src/options/quantifiers_options"
 inline bool cegqiSingleInvPartial__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 246 "../../../../../src/options/quantifiers_options"
+#line 254 "../../../src/options/quantifiers_options"
 inline cegqiSingleInvReconstruct__option_t::type cegqiSingleInvReconstruct__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 246 "../../../../../src/options/quantifiers_options"
+#line 254 "../../../src/options/quantifiers_options"
 inline bool cegqiSingleInvReconstruct__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 248 "../../../../../src/options/quantifiers_options"
+#line 256 "../../../src/options/quantifiers_options"
 inline cegqiSolMinCore__option_t::type cegqiSolMinCore__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 248 "../../../../../src/options/quantifiers_options"
+#line 256 "../../../src/options/quantifiers_options"
 inline bool cegqiSolMinCore__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 250 "../../../../../src/options/quantifiers_options"
+#line 258 "../../../src/options/quantifiers_options"
 inline cegqiSolMinInst__option_t::type cegqiSolMinInst__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 250 "../../../../../src/options/quantifiers_options"
+#line 258 "../../../src/options/quantifiers_options"
 inline bool cegqiSolMinInst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 252 "../../../../../src/options/quantifiers_options"
+#line 260 "../../../src/options/quantifiers_options"
 inline cegqiSingleInvReconstructConst__option_t::type cegqiSingleInvReconstructConst__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 252 "../../../../../src/options/quantifiers_options"
+#line 260 "../../../src/options/quantifiers_options"
 inline bool cegqiSingleInvReconstructConst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 254 "../../../../../src/options/quantifiers_options"
+#line 262 "../../../src/options/quantifiers_options"
 inline cegqiSingleInvAbort__option_t::type cegqiSingleInvAbort__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 254 "../../../../../src/options/quantifiers_options"
+#line 262 "../../../src/options/quantifiers_options"
 inline bool cegqiSingleInvAbort__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 257 "../../../../../src/options/quantifiers_options"
+#line 265 "../../../src/options/quantifiers_options"
 inline sygusNormalForm__option_t::type sygusNormalForm__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 257 "../../../../../src/options/quantifiers_options"
+#line 265 "../../../src/options/quantifiers_options"
 inline bool sygusNormalForm__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 259 "../../../../../src/options/quantifiers_options"
+#line 267 "../../../src/options/quantifiers_options"
 inline sygusNormalFormArg__option_t::type sygusNormalFormArg__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 259 "../../../../../src/options/quantifiers_options"
+#line 267 "../../../src/options/quantifiers_options"
 inline bool sygusNormalFormArg__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 261 "../../../../../src/options/quantifiers_options"
+#line 269 "../../../src/options/quantifiers_options"
 inline sygusNormalFormGlobal__option_t::type sygusNormalFormGlobal__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 261 "../../../../../src/options/quantifiers_options"
+#line 269 "../../../src/options/quantifiers_options"
 inline bool sygusNormalFormGlobal__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 263 "../../../../../src/options/quantifiers_options"
+#line 271 "../../../src/options/quantifiers_options"
 inline sygusNormalFormGlobalGen__option_t::type sygusNormalFormGlobalGen__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 263 "../../../../../src/options/quantifiers_options"
+#line 271 "../../../src/options/quantifiers_options"
 inline bool sygusNormalFormGlobalGen__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 265 "../../../../../src/options/quantifiers_options"
+#line 273 "../../../src/options/quantifiers_options"
 inline sygusNormalFormGlobalArg__option_t::type sygusNormalFormGlobalArg__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 265 "../../../../../src/options/quantifiers_options"
+#line 273 "../../../src/options/quantifiers_options"
 inline bool sygusNormalFormGlobalArg__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 267 "../../../../../src/options/quantifiers_options"
+#line 275 "../../../src/options/quantifiers_options"
 inline sygusNormalFormGlobalContent__option_t::type sygusNormalFormGlobalContent__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 267 "../../../../../src/options/quantifiers_options"
+#line 275 "../../../src/options/quantifiers_options"
 inline bool sygusNormalFormGlobalContent__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 270 "../../../../../src/options/quantifiers_options"
+#line 278 "../../../src/options/quantifiers_options"
 inline sygusInvTemplMode__option_t::type sygusInvTemplMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 270 "../../../../../src/options/quantifiers_options"
+#line 278 "../../../src/options/quantifiers_options"
 inline bool sygusInvTemplMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 273 "../../../../../src/options/quantifiers_options"
+#line 280 "../../../src/options/quantifiers_options"
+inline sygusUnifCondSol__option_t::type sygusUnifCondSol__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 280 "../../../src/options/quantifiers_options"
+inline bool sygusUnifCondSol__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 283 "../../../src/options/quantifiers_options"
 inline sygusDirectEval__option_t::type sygusDirectEval__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 273 "../../../../../src/options/quantifiers_options"
+#line 283 "../../../src/options/quantifiers_options"
 inline bool sygusDirectEval__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 277 "../../../../../src/options/quantifiers_options"
+#line 285 "../../../src/options/quantifiers_options"
+inline sygusCRefEval__option_t::type sygusCRefEval__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 285 "../../../src/options/quantifiers_options"
+inline bool sygusCRefEval__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 289 "../../../src/options/quantifiers_options"
 inline cbqi__option_t::type cbqi__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 277 "../../../../../src/options/quantifiers_options"
+#line 289 "../../../src/options/quantifiers_options"
 inline bool cbqi__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 277 "../../../../../src/options/quantifiers_options"
+#line 289 "../../../src/options/quantifiers_options"
 inline void cbqi__option_t::set(const cbqi__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 279 "../../../../../src/options/quantifiers_options"
+#line 291 "../../../src/options/quantifiers_options"
 inline recurseCbqi__option_t::type recurseCbqi__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 279 "../../../../../src/options/quantifiers_options"
+#line 291 "../../../src/options/quantifiers_options"
 inline bool recurseCbqi__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 281 "../../../../../src/options/quantifiers_options"
+#line 293 "../../../src/options/quantifiers_options"
 inline cbqiSat__option_t::type cbqiSat__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 281 "../../../../../src/options/quantifiers_options"
+#line 293 "../../../src/options/quantifiers_options"
 inline bool cbqiSat__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 281 "../../../../../src/options/quantifiers_options"
+#line 293 "../../../src/options/quantifiers_options"
 inline void cbqiSat__option_t::set(const cbqiSat__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 283 "../../../../../src/options/quantifiers_options"
+#line 295 "../../../src/options/quantifiers_options"
 inline cbqiModel__option_t::type cbqiModel__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 283 "../../../../../src/options/quantifiers_options"
+#line 295 "../../../src/options/quantifiers_options"
 inline bool cbqiModel__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 283 "../../../../../src/options/quantifiers_options"
+#line 295 "../../../src/options/quantifiers_options"
 inline void cbqiModel__option_t::set(const cbqiModel__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 285 "../../../../../src/options/quantifiers_options"
+#line 297 "../../../src/options/quantifiers_options"
 inline cbqiAll__option_t::type cbqiAll__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 285 "../../../../../src/options/quantifiers_options"
+#line 297 "../../../src/options/quantifiers_options"
 inline bool cbqiAll__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 285 "../../../../../src/options/quantifiers_options"
+#line 297 "../../../src/options/quantifiers_options"
 inline void cbqiAll__option_t::set(const cbqiAll__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 287 "../../../../../src/options/quantifiers_options"
+#line 299 "../../../src/options/quantifiers_options"
 inline cbqiUseInfInt__option_t::type cbqiUseInfInt__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 287 "../../../../../src/options/quantifiers_options"
+#line 299 "../../../src/options/quantifiers_options"
 inline bool cbqiUseInfInt__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 287 "../../../../../src/options/quantifiers_options"
+#line 299 "../../../src/options/quantifiers_options"
 inline void cbqiUseInfInt__option_t::set(const cbqiUseInfInt__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 289 "../../../../../src/options/quantifiers_options"
+#line 301 "../../../src/options/quantifiers_options"
 inline cbqiUseInfReal__option_t::type cbqiUseInfReal__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 289 "../../../../../src/options/quantifiers_options"
+#line 301 "../../../src/options/quantifiers_options"
 inline bool cbqiUseInfReal__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 289 "../../../../../src/options/quantifiers_options"
+#line 301 "../../../src/options/quantifiers_options"
 inline void cbqiUseInfReal__option_t::set(const cbqiUseInfReal__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 291 "../../../../../src/options/quantifiers_options"
+#line 303 "../../../src/options/quantifiers_options"
 inline cbqiPreRegInst__option_t::type cbqiPreRegInst__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 291 "../../../../../src/options/quantifiers_options"
+#line 303 "../../../src/options/quantifiers_options"
 inline bool cbqiPreRegInst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 291 "../../../../../src/options/quantifiers_options"
+#line 303 "../../../src/options/quantifiers_options"
 inline void cbqiPreRegInst__option_t::set(const cbqiPreRegInst__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 293 "../../../../../src/options/quantifiers_options"
+#line 305 "../../../src/options/quantifiers_options"
 inline cbqiMinBounds__option_t::type cbqiMinBounds__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 293 "../../../../../src/options/quantifiers_options"
+#line 305 "../../../src/options/quantifiers_options"
 inline bool cbqiMinBounds__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 295 "../../../../../src/options/quantifiers_options"
+#line 307 "../../../src/options/quantifiers_options"
 inline cbqiRoundUpLowerLia__option_t::type cbqiRoundUpLowerLia__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 295 "../../../../../src/options/quantifiers_options"
+#line 307 "../../../src/options/quantifiers_options"
 inline bool cbqiRoundUpLowerLia__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 297 "../../../../../src/options/quantifiers_options"
+#line 309 "../../../src/options/quantifiers_options"
 inline cbqiMidpoint__option_t::type cbqiMidpoint__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 297 "../../../../../src/options/quantifiers_options"
+#line 309 "../../../src/options/quantifiers_options"
 inline bool cbqiMidpoint__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 299 "../../../../../src/options/quantifiers_options"
+#line 311 "../../../src/options/quantifiers_options"
 inline cbqiNopt__option_t::type cbqiNopt__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 299 "../../../../../src/options/quantifiers_options"
+#line 311 "../../../src/options/quantifiers_options"
 inline bool cbqiNopt__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 301 "../../../../../src/options/quantifiers_options"
+#line 313 "../../../src/options/quantifiers_options"
 inline cbqiLitDepend__option_t::type cbqiLitDepend__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 301 "../../../../../src/options/quantifiers_options"
+#line 313 "../../../src/options/quantifiers_options"
 inline bool cbqiLitDepend__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 303 "../../../../../src/options/quantifiers_options"
+#line 315 "../../../src/options/quantifiers_options"
 inline cbqiInnermost__option_t::type cbqiInnermost__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 303 "../../../../../src/options/quantifiers_options"
+#line 315 "../../../src/options/quantifiers_options"
 inline bool cbqiInnermost__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 303 "../../../../../src/options/quantifiers_options"
+#line 315 "../../../src/options/quantifiers_options"
 inline void cbqiInnermost__option_t::set(const cbqiInnermost__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 305 "../../../../../src/options/quantifiers_options"
+#line 317 "../../../src/options/quantifiers_options"
 inline cbqiNestedQE__option_t::type cbqiNestedQE__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 305 "../../../../../src/options/quantifiers_options"
+#line 317 "../../../src/options/quantifiers_options"
 inline bool cbqiNestedQE__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+#line 317 "../../../src/options/quantifiers_options"
+inline void cbqiNestedQE__option_t::set(const cbqiNestedQE__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 308 "../../../../../src/options/quantifiers_options"
+#line 320 "../../../src/options/quantifiers_options"
 inline quantEpr__option_t::type quantEpr__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 308 "../../../../../src/options/quantifiers_options"
+#line 320 "../../../src/options/quantifiers_options"
 inline bool quantEpr__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 308 "../../../../../src/options/quantifiers_options"
+#line 320 "../../../src/options/quantifiers_options"
 inline void quantEpr__option_t::set(const quantEpr__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 310 "../../../../../src/options/quantifiers_options"
+#line 322 "../../../src/options/quantifiers_options"
 inline quantEprMatching__option_t::type quantEprMatching__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 310 "../../../../../src/options/quantifiers_options"
+#line 322 "../../../src/options/quantifiers_options"
 inline bool quantEprMatching__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 315 "../../../../../src/options/quantifiers_options"
+#line 327 "../../../src/options/quantifiers_options"
 inline localTheoryExt__option_t::type localTheoryExt__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 315 "../../../../../src/options/quantifiers_options"
+#line 327 "../../../src/options/quantifiers_options"
 inline bool localTheoryExt__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 317 "../../../../../src/options/quantifiers_options"
+#line 329 "../../../src/options/quantifiers_options"
 inline ltePartialInst__option_t::type ltePartialInst__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 317 "../../../../../src/options/quantifiers_options"
+#line 329 "../../../src/options/quantifiers_options"
 inline bool ltePartialInst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 319 "../../../../../src/options/quantifiers_options"
+#line 331 "../../../src/options/quantifiers_options"
 inline lteRestrictInstClosure__option_t::type lteRestrictInstClosure__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 319 "../../../../../src/options/quantifiers_options"
+#line 331 "../../../src/options/quantifiers_options"
 inline bool lteRestrictInstClosure__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 324 "../../../../../src/options/quantifiers_options"
+#line 336 "../../../src/options/quantifiers_options"
 inline quantAlphaEquiv__option_t::type quantAlphaEquiv__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 324 "../../../../../src/options/quantifiers_options"
+#line 336 "../../../src/options/quantifiers_options"
 inline bool quantAlphaEquiv__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 326 "../../../../../src/options/quantifiers_options"
+#line 338 "../../../src/options/quantifiers_options"
 inline macrosQuant__option_t::type macrosQuant__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 326 "../../../../../src/options/quantifiers_options"
+#line 338 "../../../src/options/quantifiers_options"
 inline bool macrosQuant__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 326 "../../../../../src/options/quantifiers_options"
+#line 338 "../../../src/options/quantifiers_options"
 inline void macrosQuant__option_t::set(const macrosQuant__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 328 "../../../../../src/options/quantifiers_options"
+#line 340 "../../../src/options/quantifiers_options"
 inline macrosQuantMode__option_t::type macrosQuantMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 328 "../../../../../src/options/quantifiers_options"
+#line 340 "../../../src/options/quantifiers_options"
 inline bool macrosQuantMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 330 "../../../../../src/options/quantifiers_options"
+#line 342 "../../../src/options/quantifiers_options"
 inline quantDynamicSplit__option_t::type quantDynamicSplit__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 330 "../../../../../src/options/quantifiers_options"
+#line 342 "../../../src/options/quantifiers_options"
 inline bool quantDynamicSplit__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 330 "../../../../../src/options/quantifiers_options"
+#line 342 "../../../src/options/quantifiers_options"
 inline void quantDynamicSplit__option_t::set(const quantDynamicSplit__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 332 "../../../../../src/options/quantifiers_options"
+#line 344 "../../../src/options/quantifiers_options"
 inline quantAntiSkolem__option_t::type quantAntiSkolem__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 332 "../../../../../src/options/quantifiers_options"
+#line 344 "../../../src/options/quantifiers_options"
 inline bool quantAntiSkolem__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 332 "../../../../../src/options/quantifiers_options"
+#line 344 "../../../src/options/quantifiers_options"
 inline void quantAntiSkolem__option_t::set(const quantAntiSkolem__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 342 "../../../../../src/options/quantifiers_options"
+#line 354 "../../../src/options/quantifiers_options"
 inline quantEqualityEngine__option_t::type quantEqualityEngine__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 342 "../../../../../src/options/quantifiers_options"
+#line 354 "../../../src/options/quantifiers_options"
 inline bool quantEqualityEngine__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 347 "../../../../../src/options/quantifiers_options"
+#line 359 "../../../src/options/quantifiers_options"
 inline trackInstLemmas__option_t::type trackInstLemmas__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 347 "../../../../../src/options/quantifiers_options"
+#line 359 "../../../src/options/quantifiers_options"
 inline bool trackInstLemmas__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 347 "../../../../../src/options/quantifiers_options"
+#line 359 "../../../src/options/quantifiers_options"
 inline void trackInstLemmas__option_t::set(const trackInstLemmas__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/sep_options.cpp b/src/options/sep_options.cpp
index ccb08cb..03bdbbf 100644
--- a/src/options/sep_options.cpp
+++ b/src/options/sep_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -19,50 +19,50 @@
 namespace CVC4 {
 
 
-#line 8 "../../../../../src/options/sep_options"
+#line 8 "../../../src/options/sep_options"
 template <> const options::sepCheckNeg__option_t::type& Options::operator[](options::sepCheckNeg__option_t) const { return d_holder->sepCheckNeg; }
-#line 8 "../../../../../src/options/sep_options"
+#line 8 "../../../src/options/sep_options"
 template <> bool Options::wasSetByUser(options::sepCheckNeg__option_t) const { return d_holder->sepCheckNeg__setByUser__; }
-#line 11 "../../../../../src/options/sep_options"
+#line 11 "../../../src/options/sep_options"
 template <> const options::sepExp__option_t::type& Options::operator[](options::sepExp__option_t) const { return d_holder->sepExp; }
-#line 11 "../../../../../src/options/sep_options"
+#line 11 "../../../src/options/sep_options"
 template <> bool Options::wasSetByUser(options::sepExp__option_t) const { return d_holder->sepExp__setByUser__; }
-#line 13 "../../../../../src/options/sep_options"
+#line 13 "../../../src/options/sep_options"
 template <> const options::sepMinimalRefine__option_t::type& Options::operator[](options::sepMinimalRefine__option_t) const { return d_holder->sepMinimalRefine; }
-#line 13 "../../../../../src/options/sep_options"
+#line 13 "../../../src/options/sep_options"
 template <> bool Options::wasSetByUser(options::sepMinimalRefine__option_t) const { return d_holder->sepMinimalRefine__setByUser__; }
-#line 15 "../../../../../src/options/sep_options"
+#line 15 "../../../src/options/sep_options"
 template <> const options::sepDisequalC__option_t::type& Options::operator[](options::sepDisequalC__option_t) const { return d_holder->sepDisequalC; }
-#line 15 "../../../../../src/options/sep_options"
+#line 15 "../../../src/options/sep_options"
 template <> bool Options::wasSetByUser(options::sepDisequalC__option_t) const { return d_holder->sepDisequalC__setByUser__; }
-#line 18 "../../../../../src/options/sep_options"
+#line 18 "../../../src/options/sep_options"
 template <> const options::sepPreSkolemEmp__option_t::type& Options::operator[](options::sepPreSkolemEmp__option_t) const { return d_holder->sepPreSkolemEmp; }
-#line 18 "../../../../../src/options/sep_options"
+#line 18 "../../../src/options/sep_options"
 template <> bool Options::wasSetByUser(options::sepPreSkolemEmp__option_t) const { return d_holder->sepPreSkolemEmp__setByUser__; }
-#line 21 "../../../../../src/options/sep_options"
+#line 21 "../../../src/options/sep_options"
 template <> const options::sepChildRefine__option_t::type& Options::operator[](options::sepChildRefine__option_t) const { return d_holder->sepChildRefine; }
-#line 21 "../../../../../src/options/sep_options"
+#line 21 "../../../src/options/sep_options"
 template <> bool Options::wasSetByUser(options::sepChildRefine__option_t) const { return d_holder->sepChildRefine__setByUser__; }
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/sep_options"
+#line 8 "../../../src/options/sep_options"
 struct sepCheckNeg__option_t sepCheckNeg;
-#line 11 "../../../../../src/options/sep_options"
+#line 11 "../../../src/options/sep_options"
 struct sepExp__option_t sepExp;
-#line 13 "../../../../../src/options/sep_options"
+#line 13 "../../../src/options/sep_options"
 struct sepMinimalRefine__option_t sepMinimalRefine;
-#line 15 "../../../../../src/options/sep_options"
+#line 15 "../../../src/options/sep_options"
 struct sepDisequalC__option_t sepDisequalC;
-#line 18 "../../../../../src/options/sep_options"
+#line 18 "../../../src/options/sep_options"
 struct sepPreSkolemEmp__option_t sepPreSkolemEmp;
-#line 21 "../../../../../src/options/sep_options"
+#line 21 "../../../src/options/sep_options"
 struct sepChildRefine__option_t sepChildRefine;
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/sep_options.h b/src/options/sep_options.h
index 2fef78a..57fd0ec 100644
--- a/src/options/sep_options.h
+++ b/src/options/sep_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -22,7 +22,7 @@
 #include "options/options.h"
 
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__SEP__FOR_OPTION_HOLDER \
   sepCheckNeg__option_t::type sepCheckNeg; \
@@ -38,104 +38,104 @@
   sepChildRefine__option_t::type sepChildRefine; \
   bool sepChildRefine__setByUser__;
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/sep_options"
+#line 8 "../../../src/options/sep_options"
 extern struct CVC4_PUBLIC sepCheckNeg__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sepCheckNeg CVC4_PUBLIC;
-#line 11 "../../../../../src/options/sep_options"
+#line 11 "../../../src/options/sep_options"
 extern struct CVC4_PUBLIC sepExp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sepExp CVC4_PUBLIC;
-#line 13 "../../../../../src/options/sep_options"
+#line 13 "../../../src/options/sep_options"
 extern struct CVC4_PUBLIC sepMinimalRefine__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sepMinimalRefine CVC4_PUBLIC;
-#line 15 "../../../../../src/options/sep_options"
+#line 15 "../../../src/options/sep_options"
 extern struct CVC4_PUBLIC sepDisequalC__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sepDisequalC CVC4_PUBLIC;
-#line 18 "../../../../../src/options/sep_options"
+#line 18 "../../../src/options/sep_options"
 extern struct CVC4_PUBLIC sepPreSkolemEmp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sepPreSkolemEmp CVC4_PUBLIC;
-#line 21 "../../../../../src/options/sep_options"
+#line 21 "../../../src/options/sep_options"
 extern struct CVC4_PUBLIC sepChildRefine__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } sepChildRefine CVC4_PUBLIC;
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
-#line 8 "../../../../../src/options/sep_options"
+#line 8 "../../../src/options/sep_options"
 template <> const options::sepCheckNeg__option_t::type& Options::operator[](options::sepCheckNeg__option_t) const;
-#line 8 "../../../../../src/options/sep_options"
+#line 8 "../../../src/options/sep_options"
 template <> bool Options::wasSetByUser(options::sepCheckNeg__option_t) const;
-#line 8 "../../../../../src/options/sep_options"
+#line 8 "../../../src/options/sep_options"
 template <> void Options::assignBool(options::sepCheckNeg__option_t, std::string option, bool value);
-#line 11 "../../../../../src/options/sep_options"
+#line 11 "../../../src/options/sep_options"
 template <> const options::sepExp__option_t::type& Options::operator[](options::sepExp__option_t) const;
-#line 11 "../../../../../src/options/sep_options"
+#line 11 "../../../src/options/sep_options"
 template <> bool Options::wasSetByUser(options::sepExp__option_t) const;
-#line 11 "../../../../../src/options/sep_options"
+#line 11 "../../../src/options/sep_options"
 template <> void Options::assignBool(options::sepExp__option_t, std::string option, bool value);
-#line 13 "../../../../../src/options/sep_options"
+#line 13 "../../../src/options/sep_options"
 template <> const options::sepMinimalRefine__option_t::type& Options::operator[](options::sepMinimalRefine__option_t) const;
-#line 13 "../../../../../src/options/sep_options"
+#line 13 "../../../src/options/sep_options"
 template <> bool Options::wasSetByUser(options::sepMinimalRefine__option_t) const;
-#line 13 "../../../../../src/options/sep_options"
+#line 13 "../../../src/options/sep_options"
 template <> void Options::assignBool(options::sepMinimalRefine__option_t, std::string option, bool value);
-#line 15 "../../../../../src/options/sep_options"
+#line 15 "../../../src/options/sep_options"
 template <> const options::sepDisequalC__option_t::type& Options::operator[](options::sepDisequalC__option_t) const;
-#line 15 "../../../../../src/options/sep_options"
+#line 15 "../../../src/options/sep_options"
 template <> bool Options::wasSetByUser(options::sepDisequalC__option_t) const;
-#line 15 "../../../../../src/options/sep_options"
+#line 15 "../../../src/options/sep_options"
 template <> void Options::assignBool(options::sepDisequalC__option_t, std::string option, bool value);
-#line 18 "../../../../../src/options/sep_options"
+#line 18 "../../../src/options/sep_options"
 template <> const options::sepPreSkolemEmp__option_t::type& Options::operator[](options::sepPreSkolemEmp__option_t) const;
-#line 18 "../../../../../src/options/sep_options"
+#line 18 "../../../src/options/sep_options"
 template <> bool Options::wasSetByUser(options::sepPreSkolemEmp__option_t) const;
-#line 18 "../../../../../src/options/sep_options"
+#line 18 "../../../src/options/sep_options"
 template <> void Options::assignBool(options::sepPreSkolemEmp__option_t, std::string option, bool value);
-#line 21 "../../../../../src/options/sep_options"
+#line 21 "../../../src/options/sep_options"
 template <> const options::sepChildRefine__option_t::type& Options::operator[](options::sepChildRefine__option_t) const;
-#line 21 "../../../../../src/options/sep_options"
+#line 21 "../../../src/options/sep_options"
 template <> bool Options::wasSetByUser(options::sepChildRefine__option_t) const;
-#line 21 "../../../../../src/options/sep_options"
+#line 21 "../../../src/options/sep_options"
 template <> void Options::assignBool(options::sepChildRefine__option_t, std::string option, bool value);
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/sep_options"
+#line 8 "../../../src/options/sep_options"
 inline sepCheckNeg__option_t::type sepCheckNeg__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 8 "../../../../../src/options/sep_options"
+#line 8 "../../../src/options/sep_options"
 inline bool sepCheckNeg__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 11 "../../../../../src/options/sep_options"
+#line 11 "../../../src/options/sep_options"
 inline sepExp__option_t::type sepExp__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 11 "../../../../../src/options/sep_options"
+#line 11 "../../../src/options/sep_options"
 inline bool sepExp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 13 "../../../../../src/options/sep_options"
+#line 13 "../../../src/options/sep_options"
 inline sepMinimalRefine__option_t::type sepMinimalRefine__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 13 "../../../../../src/options/sep_options"
+#line 13 "../../../src/options/sep_options"
 inline bool sepMinimalRefine__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 15 "../../../../../src/options/sep_options"
+#line 15 "../../../src/options/sep_options"
 inline sepDisequalC__option_t::type sepDisequalC__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 15 "../../../../../src/options/sep_options"
+#line 15 "../../../src/options/sep_options"
 inline bool sepDisequalC__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 18 "../../../../../src/options/sep_options"
+#line 18 "../../../src/options/sep_options"
 inline sepPreSkolemEmp__option_t::type sepPreSkolemEmp__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 18 "../../../../../src/options/sep_options"
+#line 18 "../../../src/options/sep_options"
 inline bool sepPreSkolemEmp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 21 "../../../../../src/options/sep_options"
+#line 21 "../../../src/options/sep_options"
 inline sepChildRefine__option_t::type sepChildRefine__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 21 "../../../../../src/options/sep_options"
+#line 21 "../../../src/options/sep_options"
 inline bool sepChildRefine__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/set_language.cpp b/src/options/set_language.cpp
index 32d3d73..18546b2 100644
--- a/src/options/set_language.cpp
+++ b/src/options/set_language.cpp
@@ -2,9 +2,9 @@
 /*! \file set_language.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/set_language.h b/src/options/set_language.h
index c27bb51..e3db0c4 100644
--- a/src/options/set_language.h
+++ b/src/options/set_language.h
@@ -2,9 +2,9 @@
 /*! \file set_language.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/sets_options b/src/options/sets_options
index 1c7e12a..3e093cb 100644
--- a/src/options/sets_options
+++ b/src/options/sets_options
@@ -14,4 +14,7 @@ option setsInferAsLemmas --sets-infer-as-lemmas bool :default true
 option setsRelEager --sets-rel-eager bool :default true
  standard effort checks for relations
  
+option setsExt --sets-ext bool :default false
+ enable extended symbols such as complement and universe in theory of sets
+ 
 endmodule
diff --git a/src/options/sets_options.cpp b/src/options/sets_options.cpp
index 5409350..9652c87 100644
--- a/src/options/sets_options.cpp
+++ b/src/options/sets_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -19,32 +19,38 @@
 namespace CVC4 {
 
 
-#line 8 "../../../../../src/options/sets_options"
+#line 8 "../../../src/options/sets_options"
 template <> const options::setsProxyLemmas__option_t::type& Options::operator[](options::setsProxyLemmas__option_t) const { return d_holder->setsProxyLemmas; }
-#line 8 "../../../../../src/options/sets_options"
+#line 8 "../../../src/options/sets_options"
 template <> bool Options::wasSetByUser(options::setsProxyLemmas__option_t) const { return d_holder->setsProxyLemmas__setByUser__; }
-#line 11 "../../../../../src/options/sets_options"
+#line 11 "../../../src/options/sets_options"
 template <> const options::setsInferAsLemmas__option_t::type& Options::operator[](options::setsInferAsLemmas__option_t) const { return d_holder->setsInferAsLemmas; }
-#line 11 "../../../../../src/options/sets_options"
+#line 11 "../../../src/options/sets_options"
 template <> bool Options::wasSetByUser(options::setsInferAsLemmas__option_t) const { return d_holder->setsInferAsLemmas__setByUser__; }
-#line 14 "../../../../../src/options/sets_options"
+#line 14 "../../../src/options/sets_options"
 template <> const options::setsRelEager__option_t::type& Options::operator[](options::setsRelEager__option_t) const { return d_holder->setsRelEager; }
-#line 14 "../../../../../src/options/sets_options"
+#line 14 "../../../src/options/sets_options"
 template <> bool Options::wasSetByUser(options::setsRelEager__option_t) const { return d_holder->setsRelEager__setByUser__; }
+#line 17 "../../../src/options/sets_options"
+template <> const options::setsExt__option_t::type& Options::operator[](options::setsExt__option_t) const { return d_holder->setsExt; }
+#line 17 "../../../src/options/sets_options"
+template <> bool Options::wasSetByUser(options::setsExt__option_t) const { return d_holder->setsExt__setByUser__; }
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/sets_options"
+#line 8 "../../../src/options/sets_options"
 struct setsProxyLemmas__option_t setsProxyLemmas;
-#line 11 "../../../../../src/options/sets_options"
+#line 11 "../../../src/options/sets_options"
 struct setsInferAsLemmas__option_t setsInferAsLemmas;
-#line 14 "../../../../../src/options/sets_options"
+#line 14 "../../../src/options/sets_options"
 struct setsRelEager__option_t setsRelEager;
+#line 17 "../../../src/options/sets_options"
+struct setsExt__option_t setsExt;
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/sets_options.h b/src/options/sets_options.h
index 1e284d6..eb107dc 100644
--- a/src/options/sets_options.h
+++ b/src/options/sets_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -22,7 +22,7 @@
 #include "options/options.h"
 
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__SETS__FOR_OPTION_HOLDER \
   setsProxyLemmas__option_t::type setsProxyLemmas; \
@@ -30,67 +30,82 @@
   setsInferAsLemmas__option_t::type setsInferAsLemmas; \
   bool setsInferAsLemmas__setByUser__; \
   setsRelEager__option_t::type setsRelEager; \
-  bool setsRelEager__setByUser__;
+  bool setsRelEager__setByUser__; \
+  setsExt__option_t::type setsExt; \
+  bool setsExt__setByUser__;
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/sets_options"
+#line 8 "../../../src/options/sets_options"
 extern struct CVC4_PUBLIC setsProxyLemmas__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } setsProxyLemmas CVC4_PUBLIC;
-#line 11 "../../../../../src/options/sets_options"
+#line 11 "../../../src/options/sets_options"
 extern struct CVC4_PUBLIC setsInferAsLemmas__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } setsInferAsLemmas CVC4_PUBLIC;
-#line 14 "../../../../../src/options/sets_options"
+#line 14 "../../../src/options/sets_options"
 extern struct CVC4_PUBLIC setsRelEager__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } setsRelEager CVC4_PUBLIC;
+#line 17 "../../../src/options/sets_options"
+extern struct CVC4_PUBLIC setsExt__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } setsExt CVC4_PUBLIC;
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
-#line 8 "../../../../../src/options/sets_options"
+#line 8 "../../../src/options/sets_options"
 template <> const options::setsProxyLemmas__option_t::type& Options::operator[](options::setsProxyLemmas__option_t) const;
-#line 8 "../../../../../src/options/sets_options"
+#line 8 "../../../src/options/sets_options"
 template <> bool Options::wasSetByUser(options::setsProxyLemmas__option_t) const;
-#line 8 "../../../../../src/options/sets_options"
+#line 8 "../../../src/options/sets_options"
 template <> void Options::assignBool(options::setsProxyLemmas__option_t, std::string option, bool value);
-#line 11 "../../../../../src/options/sets_options"
+#line 11 "../../../src/options/sets_options"
 template <> const options::setsInferAsLemmas__option_t::type& Options::operator[](options::setsInferAsLemmas__option_t) const;
-#line 11 "../../../../../src/options/sets_options"
+#line 11 "../../../src/options/sets_options"
 template <> bool Options::wasSetByUser(options::setsInferAsLemmas__option_t) const;
-#line 11 "../../../../../src/options/sets_options"
+#line 11 "../../../src/options/sets_options"
 template <> void Options::assignBool(options::setsInferAsLemmas__option_t, std::string option, bool value);
-#line 14 "../../../../../src/options/sets_options"
+#line 14 "../../../src/options/sets_options"
 template <> const options::setsRelEager__option_t::type& Options::operator[](options::setsRelEager__option_t) const;
-#line 14 "../../../../../src/options/sets_options"
+#line 14 "../../../src/options/sets_options"
 template <> bool Options::wasSetByUser(options::setsRelEager__option_t) const;
-#line 14 "../../../../../src/options/sets_options"
+#line 14 "../../../src/options/sets_options"
 template <> void Options::assignBool(options::setsRelEager__option_t, std::string option, bool value);
+#line 17 "../../../src/options/sets_options"
+template <> const options::setsExt__option_t::type& Options::operator[](options::setsExt__option_t) const;
+#line 17 "../../../src/options/sets_options"
+template <> bool Options::wasSetByUser(options::setsExt__option_t) const;
+#line 17 "../../../src/options/sets_options"
+template <> void Options::assignBool(options::setsExt__option_t, std::string option, bool value);
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/sets_options"
+#line 8 "../../../src/options/sets_options"
 inline setsProxyLemmas__option_t::type setsProxyLemmas__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 8 "../../../../../src/options/sets_options"
+#line 8 "../../../src/options/sets_options"
 inline bool setsProxyLemmas__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 11 "../../../../../src/options/sets_options"
+#line 11 "../../../src/options/sets_options"
 inline setsInferAsLemmas__option_t::type setsInferAsLemmas__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 11 "../../../../../src/options/sets_options"
+#line 11 "../../../src/options/sets_options"
 inline bool setsInferAsLemmas__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 14 "../../../../../src/options/sets_options"
+#line 14 "../../../src/options/sets_options"
 inline setsRelEager__option_t::type setsRelEager__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 14 "../../../../../src/options/sets_options"
+#line 14 "../../../src/options/sets_options"
 inline bool setsRelEager__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 17 "../../../src/options/sets_options"
+inline setsExt__option_t::type setsExt__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 17 "../../../src/options/sets_options"
+inline bool setsExt__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/simplification_mode.cpp b/src/options/simplification_mode.cpp
index 7189dac..1a3470b 100644
--- a/src/options/simplification_mode.cpp
+++ b/src/options/simplification_mode.cpp
@@ -2,9 +2,9 @@
 /*! \file simplification_mode.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/simplification_mode.h b/src/options/simplification_mode.h
index d1170f9..4bf9166 100644
--- a/src/options/simplification_mode.h
+++ b/src/options/simplification_mode.h
@@ -2,9 +2,9 @@
 /*! \file simplification_mode.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/smt_options b/src/options/smt_options
index 7471193..5f50ed2 100644
--- a/src/options/smt_options
+++ b/src/options/smt_options
@@ -47,6 +47,8 @@ option checkUnsatCores check-unsat-cores --check-unsat-cores bool :link --produc
  after UNSAT/VALID, produce and check an unsat core (expensive)
 option dumpUnsatCores --dump-unsat-cores bool :default false :link --produce-unsat-cores :link-smt produce-unsat-cores :notify notifyBeforeSearch
  output unsat cores after every UNSAT/VALID response
+option dumpUnsatCoresFull dump-unsat-cores-full --dump-unsat-cores-full bool :default false :link --dump-unsat-cores :link-smt dump-unsat-cores :notify notifyBeforeSearch
+ dump the full unsat core, including unlabeled assertions
 
 option produceAssignments produce-assignments --produce-assignments bool :default false :notify notifyBeforeSearch
  support the get-assignment command
@@ -108,42 +110,42 @@ common-option cpuTime cpu-time --cpu-time bool :default false
 
 # Resource spending options for SPARK
 expert-option rewriteStep rewrite-step --rewrite-step unsigned :default 1
- ammount of resources spent for each rewrite step
+ amount of resources spent for each rewrite step
 
 expert-option theoryCheckStep theory-check-step --theory-check-step unsigned :default 1
- ammount of resources spent for each theory check call
+ amount of resources spent for each theory check call
 
 expert-option decisionStep decision-step --decision-step unsigned :default 1
- ammount of getNext decision calls in the decision engine
- 
+ amount of getNext decision calls in the decision engine
+
 expert-option bitblastStep bitblast-step --bitblast-step unsigned :default 1
- ammount of resources spent for each bitblast step
- 
+ amount of resources spent for each bitblast step
+
 expert-option parseStep parse-step --parse-step unsigned :default 1
- ammount of resources spent for each command/expression parsing
- 
+ amount of resources spent for each command/expression parsing
+
 expert-option lemmaStep lemma-step --lemma-step unsigned :default 1
- ammount of resources spent when adding lemmas
- 
+ amount of resources spent when adding lemmas
+
 expert-option restartStep restart-step --restart-step unsigned :default 1
- ammount of resources spent for each theory restart
- 
+ amount of resources spent for each theory restart
+
 expert-option cnfStep cnf-step --cnf-step unsigned :default 1
- ammount of resources spent for each call to cnf conversion
- 
+ amount of resources spent for each call to cnf conversion
+
 expert-option preprocessStep preprocess-step --preprocess-step unsigned :default 1
- ammount of resources spent for each preprocessing step in SmtEngine
- 
+ amount of resources spent for each preprocessing step in SmtEngine
+
 expert-option quantifierStep quantifier-step --quantifier-step unsigned :default 1
- ammount of resources spent for quantifier instantiations
- 
+ amount of resources spent for quantifier instantiations
+
 expert-option satConflictStep sat-conflict-step --sat-conflict-step unsigned :default 1
- ammount of resources spent for each sat conflict (main sat solver)
- 
+ amount of resources spent for each sat conflict (main sat solver)
+
 expert-option bvSatConflictStep bv-sat-conflict-step --bv-sat-conflict-step unsigned :default 1
- ammount of resources spent for each sat conflict (bitvectors)
- 
- 
+ amount of resources spent for each sat conflict (bitvectors)
+
+
 expert-option rewriteApplyToConst rewrite-apply-to-const --rewrite-apply-to-const bool :default false
  eliminate function applications, rewriting e.g. f(5) to a new symbol f_5
 
@@ -162,4 +164,7 @@ option forceNoLimitCpuWhileDump --force-no-limit-cpu-while-dump bool :default fa
 undocumented-option solveIntAsBV --solve-int-as-bv uint32_t :default 0
  attempt to solve a pure integer satisfiable problem by bitblasting in sufficient bitwidth (experimental)
 
+undocumented-option solveRealAsInt --solve-real-as-int bool :default false
+ attempt to solve a pure real satisfiable problem as a integer problem (for non-linear)
+
 endmodule
diff --git a/src/options/smt_options.cpp b/src/options/smt_options.cpp
index 65c636c..c35bcdb 100644
--- a/src/options/smt_options.cpp
+++ b/src/options/smt_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -19,382 +19,394 @@
 namespace CVC4 {
 
 
-#line 8 "../../../../../src/options/smt_options"
+#line 8 "../../../src/options/smt_options"
 template <> const options::dumpModeString__option_t::type& Options::operator[](options::dumpModeString__option_t) const { return d_holder->dumpModeString; }
-#line 8 "../../../../../src/options/smt_options"
+#line 8 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::dumpModeString__option_t) const { return d_holder->dumpModeString__setByUser__; }
-#line 10 "../../../../../src/options/smt_options"
+#line 10 "../../../src/options/smt_options"
 template <> const options::dumpToFileName__option_t::type& Options::operator[](options::dumpToFileName__option_t) const { return d_holder->dumpToFileName; }
-#line 10 "../../../../../src/options/smt_options"
+#line 10 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::dumpToFileName__option_t) const { return d_holder->dumpToFileName__setByUser__; }
-#line 13 "../../../../../src/options/smt_options"
+#line 13 "../../../src/options/smt_options"
 template <> const options::forceLogicString__option_t::type& Options::operator[](options::forceLogicString__option_t) const { return d_holder->forceLogicString; }
-#line 13 "../../../../../src/options/smt_options"
+#line 13 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::forceLogicString__option_t) const { return d_holder->forceLogicString__setByUser__; }
-#line 16 "../../../../../src/options/smt_options"
+#line 16 "../../../src/options/smt_options"
 template <> void Options::set(options::simplificationMode__option_t, const options::simplificationMode__option_t::type& x) { d_holder->simplificationMode = x; }
-#line 16 "../../../../../src/options/smt_options"
+#line 16 "../../../src/options/smt_options"
 template <> const options::simplificationMode__option_t::type& Options::operator[](options::simplificationMode__option_t) const { return d_holder->simplificationMode; }
-#line 16 "../../../../../src/options/smt_options"
+#line 16 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::simplificationMode__option_t) const { return d_holder->simplificationMode__setByUser__; }
-#line 21 "../../../../../src/options/smt_options"
+#line 21 "../../../src/options/smt_options"
 template <> const options::doStaticLearning__option_t::type& Options::operator[](options::doStaticLearning__option_t) const { return d_holder->doStaticLearning; }
-#line 21 "../../../../../src/options/smt_options"
+#line 21 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::doStaticLearning__option_t) const { return d_holder->doStaticLearning__setByUser__; }
-#line 24 "../../../../../src/options/smt_options"
+#line 24 "../../../src/options/smt_options"
 template <> const options::expandDefinitions__option_t::type& Options::operator[](options::expandDefinitions__option_t) const { return d_holder->expandDefinitions; }
-#line 24 "../../../../../src/options/smt_options"
+#line 24 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::expandDefinitions__option_t) const { return d_holder->expandDefinitions__setByUser__; }
-#line 26 "../../../../../src/options/smt_options"
+#line 26 "../../../src/options/smt_options"
 template <> const options::produceModels__option_t::type& Options::operator[](options::produceModels__option_t) const { return d_holder->produceModels; }
-#line 26 "../../../../../src/options/smt_options"
+#line 26 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::produceModels__option_t) const { return d_holder->produceModels__setByUser__; }
-#line 28 "../../../../../src/options/smt_options"
+#line 28 "../../../src/options/smt_options"
 template <> const options::checkModels__option_t::type& Options::operator[](options::checkModels__option_t) const { return d_holder->checkModels; }
-#line 28 "../../../../../src/options/smt_options"
+#line 28 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::checkModels__option_t) const { return d_holder->checkModels__setByUser__; }
-#line 30 "../../../../../src/options/smt_options"
+#line 30 "../../../src/options/smt_options"
 template <> const options::dumpModels__option_t::type& Options::operator[](options::dumpModels__option_t) const { return d_holder->dumpModels; }
-#line 30 "../../../../../src/options/smt_options"
+#line 30 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::dumpModels__option_t) const { return d_holder->dumpModels__setByUser__; }
-#line 32 "../../../../../src/options/smt_options"
+#line 32 "../../../src/options/smt_options"
 template <> const options::omitDontCares__option_t::type& Options::operator[](options::omitDontCares__option_t) const { return d_holder->omitDontCares; }
-#line 32 "../../../../../src/options/smt_options"
+#line 32 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::omitDontCares__option_t) const { return d_holder->omitDontCares__setByUser__; }
-#line 34 "../../../../../src/options/smt_options"
+#line 34 "../../../src/options/smt_options"
 template <> const options::proof__option_t::type& Options::operator[](options::proof__option_t) const { return d_holder->proof; }
-#line 34 "../../../../../src/options/smt_options"
+#line 34 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::proof__option_t) const { return d_holder->proof__setByUser__; }
-#line 36 "../../../../../src/options/smt_options"
+#line 36 "../../../src/options/smt_options"
 template <> void Options::set(options::checkProofs__option_t, const options::checkProofs__option_t::type& x) { d_holder->checkProofs = x; }
-#line 36 "../../../../../src/options/smt_options"
+#line 36 "../../../src/options/smt_options"
 template <> const options::checkProofs__option_t::type& Options::operator[](options::checkProofs__option_t) const { return d_holder->checkProofs; }
-#line 36 "../../../../../src/options/smt_options"
+#line 36 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::checkProofs__option_t) const { return d_holder->checkProofs__setByUser__; }
-#line 38 "../../../../../src/options/smt_options"
+#line 38 "../../../src/options/smt_options"
 template <> const options::dumpProofs__option_t::type& Options::operator[](options::dumpProofs__option_t) const { return d_holder->dumpProofs; }
-#line 38 "../../../../../src/options/smt_options"
+#line 38 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::dumpProofs__option_t) const { return d_holder->dumpProofs__setByUser__; }
-#line 40 "../../../../../src/options/smt_options"
+#line 40 "../../../src/options/smt_options"
 template <> const options::dumpInstantiations__option_t::type& Options::operator[](options::dumpInstantiations__option_t) const { return d_holder->dumpInstantiations; }
-#line 40 "../../../../../src/options/smt_options"
+#line 40 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::dumpInstantiations__option_t) const { return d_holder->dumpInstantiations__setByUser__; }
-#line 42 "../../../../../src/options/smt_options"
+#line 42 "../../../src/options/smt_options"
 template <> void Options::set(options::dumpSynth__option_t, const options::dumpSynth__option_t::type& x) { d_holder->dumpSynth = x; }
-#line 42 "../../../../../src/options/smt_options"
+#line 42 "../../../src/options/smt_options"
 template <> const options::dumpSynth__option_t::type& Options::operator[](options::dumpSynth__option_t) const { return d_holder->dumpSynth; }
-#line 42 "../../../../../src/options/smt_options"
+#line 42 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::dumpSynth__option_t) const { return d_holder->dumpSynth__setByUser__; }
-#line 44 "../../../../../src/options/smt_options"
+#line 44 "../../../src/options/smt_options"
 template <> const options::unsatCores__option_t::type& Options::operator[](options::unsatCores__option_t) const { return d_holder->unsatCores; }
-#line 44 "../../../../../src/options/smt_options"
+#line 44 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::unsatCores__option_t) const { return d_holder->unsatCores__setByUser__; }
-#line 46 "../../../../../src/options/smt_options"
+#line 46 "../../../src/options/smt_options"
 template <> void Options::set(options::checkUnsatCores__option_t, const options::checkUnsatCores__option_t::type& x) { d_holder->checkUnsatCores = x; }
-#line 46 "../../../../../src/options/smt_options"
+#line 46 "../../../src/options/smt_options"
 template <> const options::checkUnsatCores__option_t::type& Options::operator[](options::checkUnsatCores__option_t) const { return d_holder->checkUnsatCores; }
-#line 46 "../../../../../src/options/smt_options"
+#line 46 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::checkUnsatCores__option_t) const { return d_holder->checkUnsatCores__setByUser__; }
-#line 48 "../../../../../src/options/smt_options"
+#line 48 "../../../src/options/smt_options"
 template <> const options::dumpUnsatCores__option_t::type& Options::operator[](options::dumpUnsatCores__option_t) const { return d_holder->dumpUnsatCores; }
-#line 48 "../../../../../src/options/smt_options"
+#line 48 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::dumpUnsatCores__option_t) const { return d_holder->dumpUnsatCores__setByUser__; }
-#line 51 "../../../../../src/options/smt_options"
+#line 50 "../../../src/options/smt_options"
+template <> const options::dumpUnsatCoresFull__option_t::type& Options::operator[](options::dumpUnsatCoresFull__option_t) const { return d_holder->dumpUnsatCoresFull; }
+#line 50 "../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::dumpUnsatCoresFull__option_t) const { return d_holder->dumpUnsatCoresFull__setByUser__; }
+#line 53 "../../../src/options/smt_options"
 template <> const options::produceAssignments__option_t::type& Options::operator[](options::produceAssignments__option_t) const { return d_holder->produceAssignments; }
-#line 51 "../../../../../src/options/smt_options"
+#line 53 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::produceAssignments__option_t) const { return d_holder->produceAssignments__setByUser__; }
-#line 54 "../../../../../src/options/smt_options"
+#line 56 "../../../src/options/smt_options"
 template <> void Options::set(options::interactiveMode__option_t, const options::interactiveMode__option_t::type& x) { d_holder->interactiveMode = x; }
-#line 54 "../../../../../src/options/smt_options"
+#line 56 "../../../src/options/smt_options"
 template <> const options::interactiveMode__option_t::type& Options::operator[](options::interactiveMode__option_t) const { return d_holder->interactiveMode; }
-#line 54 "../../../../../src/options/smt_options"
+#line 56 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::interactiveMode__option_t) const { return d_holder->interactiveMode__setByUser__; }
-#line 56 "../../../../../src/options/smt_options"
+#line 58 "../../../src/options/smt_options"
 template <> void Options::set(options::produceAssertions__option_t, const options::produceAssertions__option_t::type& x) { d_holder->produceAssertions = x; }
-#line 56 "../../../../../src/options/smt_options"
+#line 58 "../../../src/options/smt_options"
 template <> const options::produceAssertions__option_t::type& Options::operator[](options::produceAssertions__option_t) const { return d_holder->produceAssertions; }
-#line 56 "../../../../../src/options/smt_options"
+#line 58 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::produceAssertions__option_t) const { return d_holder->produceAssertions__setByUser__; }
-#line 59 "../../../../../src/options/smt_options"
+#line 61 "../../../src/options/smt_options"
 template <> void Options::set(options::doITESimp__option_t, const options::doITESimp__option_t::type& x) { d_holder->doITESimp = x; }
-#line 59 "../../../../../src/options/smt_options"
+#line 61 "../../../src/options/smt_options"
 template <> const options::doITESimp__option_t::type& Options::operator[](options::doITESimp__option_t) const { return d_holder->doITESimp; }
-#line 59 "../../../../../src/options/smt_options"
+#line 61 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::doITESimp__option_t) const { return d_holder->doITESimp__setByUser__; }
-#line 62 "../../../../../src/options/smt_options"
+#line 64 "../../../src/options/smt_options"
 template <> void Options::set(options::doITESimpOnRepeat__option_t, const options::doITESimpOnRepeat__option_t::type& x) { d_holder->doITESimpOnRepeat = x; }
-#line 62 "../../../../../src/options/smt_options"
+#line 64 "../../../src/options/smt_options"
 template <> const options::doITESimpOnRepeat__option_t::type& Options::operator[](options::doITESimpOnRepeat__option_t) const { return d_holder->doITESimpOnRepeat; }
-#line 62 "../../../../../src/options/smt_options"
+#line 64 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::doITESimpOnRepeat__option_t) const { return d_holder->doITESimpOnRepeat__setByUser__; }
-#line 65 "../../../../../src/options/smt_options"
+#line 67 "../../../src/options/smt_options"
 template <> void Options::set(options::simplifyWithCareEnabled__option_t, const options::simplifyWithCareEnabled__option_t::type& x) { d_holder->simplifyWithCareEnabled = x; }
-#line 65 "../../../../../src/options/smt_options"
+#line 67 "../../../src/options/smt_options"
 template <> const options::simplifyWithCareEnabled__option_t::type& Options::operator[](options::simplifyWithCareEnabled__option_t) const { return d_holder->simplifyWithCareEnabled; }
-#line 65 "../../../../../src/options/smt_options"
+#line 67 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::simplifyWithCareEnabled__option_t) const { return d_holder->simplifyWithCareEnabled__setByUser__; }
-#line 68 "../../../../../src/options/smt_options"
+#line 70 "../../../src/options/smt_options"
 template <> void Options::set(options::compressItes__option_t, const options::compressItes__option_t::type& x) { d_holder->compressItes = x; }
-#line 68 "../../../../../src/options/smt_options"
+#line 70 "../../../src/options/smt_options"
 template <> const options::compressItes__option_t::type& Options::operator[](options::compressItes__option_t) const { return d_holder->compressItes; }
-#line 68 "../../../../../src/options/smt_options"
+#line 70 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::compressItes__option_t) const { return d_holder->compressItes__setByUser__; }
-#line 71 "../../../../../src/options/smt_options"
+#line 73 "../../../src/options/smt_options"
 template <> void Options::set(options::unconstrainedSimp__option_t, const options::unconstrainedSimp__option_t::type& x) { d_holder->unconstrainedSimp = x; }
-#line 71 "../../../../../src/options/smt_options"
+#line 73 "../../../src/options/smt_options"
 template <> const options::unconstrainedSimp__option_t::type& Options::operator[](options::unconstrainedSimp__option_t) const { return d_holder->unconstrainedSimp; }
-#line 71 "../../../../../src/options/smt_options"
+#line 73 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::unconstrainedSimp__option_t) const { return d_holder->unconstrainedSimp__setByUser__; }
-#line 74 "../../../../../src/options/smt_options"
+#line 76 "../../../src/options/smt_options"
 template <> void Options::set(options::repeatSimp__option_t, const options::repeatSimp__option_t::type& x) { d_holder->repeatSimp = x; }
-#line 74 "../../../../../src/options/smt_options"
+#line 76 "../../../src/options/smt_options"
 template <> const options::repeatSimp__option_t::type& Options::operator[](options::repeatSimp__option_t) const { return d_holder->repeatSimp; }
-#line 74 "../../../../../src/options/smt_options"
+#line 76 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::repeatSimp__option_t) const { return d_holder->repeatSimp__setByUser__; }
-#line 77 "../../../../../src/options/smt_options"
+#line 79 "../../../src/options/smt_options"
 template <> const options::zombieHuntThreshold__option_t::type& Options::operator[](options::zombieHuntThreshold__option_t) const { return d_holder->zombieHuntThreshold; }
-#line 77 "../../../../../src/options/smt_options"
+#line 79 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::zombieHuntThreshold__option_t) const { return d_holder->zombieHuntThreshold__setByUser__; }
-#line 80 "../../../../../src/options/smt_options"
+#line 82 "../../../src/options/smt_options"
 template <> void Options::set(options::sortInference__option_t, const options::sortInference__option_t::type& x) { d_holder->sortInference = x; }
-#line 80 "../../../../../src/options/smt_options"
+#line 82 "../../../src/options/smt_options"
 template <> const options::sortInference__option_t::type& Options::operator[](options::sortInference__option_t) const { return d_holder->sortInference; }
-#line 80 "../../../../../src/options/smt_options"
+#line 82 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::sortInference__option_t) const { return d_holder->sortInference__setByUser__; }
-#line 83 "../../../../../src/options/smt_options"
+#line 85 "../../../src/options/smt_options"
 template <> const options::incrementalSolving__option_t::type& Options::operator[](options::incrementalSolving__option_t) const { return d_holder->incrementalSolving; }
-#line 83 "../../../../../src/options/smt_options"
+#line 85 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::incrementalSolving__option_t) const { return d_holder->incrementalSolving__setByUser__; }
-#line 86 "../../../../../src/options/smt_options"
+#line 88 "../../../src/options/smt_options"
 template <> const options::abstractValues__option_t::type& Options::operator[](options::abstractValues__option_t) const { return d_holder->abstractValues; }
-#line 86 "../../../../../src/options/smt_options"
+#line 88 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::abstractValues__option_t) const { return d_holder->abstractValues__setByUser__; }
-#line 88 "../../../../../src/options/smt_options"
+#line 90 "../../../src/options/smt_options"
 template <> const options::modelUninterpDtEnum__option_t::type& Options::operator[](options::modelUninterpDtEnum__option_t) const { return d_holder->modelUninterpDtEnum; }
-#line 88 "../../../../../src/options/smt_options"
+#line 90 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::modelUninterpDtEnum__option_t) const { return d_holder->modelUninterpDtEnum__setByUser__; }
-#line 91 "../../../../../src/options/smt_options"
+#line 93 "../../../src/options/smt_options"
 template <> const options::regularChannelName__option_t::type& Options::operator[](options::regularChannelName__option_t) const { return d_holder->regularChannelName; }
-#line 91 "../../../../../src/options/smt_options"
+#line 93 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::regularChannelName__option_t) const { return d_holder->regularChannelName__setByUser__; }
-#line 93 "../../../../../src/options/smt_options"
+#line 95 "../../../src/options/smt_options"
 template <> const options::diagnosticChannelName__option_t::type& Options::operator[](options::diagnosticChannelName__option_t) const { return d_holder->diagnosticChannelName; }
-#line 93 "../../../../../src/options/smt_options"
+#line 95 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::diagnosticChannelName__option_t) const { return d_holder->diagnosticChannelName__setByUser__; }
-#line 96 "../../../../../src/options/smt_options"
+#line 98 "../../../src/options/smt_options"
 template <> const options::cumulativeMillisecondLimit__option_t::type& Options::operator[](options::cumulativeMillisecondLimit__option_t) const { return d_holder->cumulativeMillisecondLimit; }
-#line 96 "../../../../../src/options/smt_options"
+#line 98 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::cumulativeMillisecondLimit__option_t) const { return d_holder->cumulativeMillisecondLimit__setByUser__; }
-#line 98 "../../../../../src/options/smt_options"
+#line 100 "../../../src/options/smt_options"
 template <> const options::perCallMillisecondLimit__option_t::type& Options::operator[](options::perCallMillisecondLimit__option_t) const { return d_holder->perCallMillisecondLimit; }
-#line 98 "../../../../../src/options/smt_options"
+#line 100 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::perCallMillisecondLimit__option_t) const { return d_holder->perCallMillisecondLimit__setByUser__; }
-#line 100 "../../../../../src/options/smt_options"
+#line 102 "../../../src/options/smt_options"
 template <> const options::cumulativeResourceLimit__option_t::type& Options::operator[](options::cumulativeResourceLimit__option_t) const { return d_holder->cumulativeResourceLimit; }
-#line 100 "../../../../../src/options/smt_options"
+#line 102 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::cumulativeResourceLimit__option_t) const { return d_holder->cumulativeResourceLimit__setByUser__; }
-#line 102 "../../../../../src/options/smt_options"
+#line 104 "../../../src/options/smt_options"
 template <> const options::perCallResourceLimit__option_t::type& Options::operator[](options::perCallResourceLimit__option_t) const { return d_holder->perCallResourceLimit; }
-#line 102 "../../../../../src/options/smt_options"
+#line 104 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::perCallResourceLimit__option_t) const { return d_holder->perCallResourceLimit__setByUser__; }
-#line 104 "../../../../../src/options/smt_options"
+#line 106 "../../../src/options/smt_options"
 template <> const options::hardLimit__option_t::type& Options::operator[](options::hardLimit__option_t) const { return d_holder->hardLimit; }
-#line 104 "../../../../../src/options/smt_options"
+#line 106 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::hardLimit__option_t) const { return d_holder->hardLimit__setByUser__; }
-#line 106 "../../../../../src/options/smt_options"
+#line 108 "../../../src/options/smt_options"
 template <> const options::cpuTime__option_t::type& Options::operator[](options::cpuTime__option_t) const { return d_holder->cpuTime; }
-#line 106 "../../../../../src/options/smt_options"
+#line 108 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::cpuTime__option_t) const { return d_holder->cpuTime__setByUser__; }
-#line 110 "../../../../../src/options/smt_options"
+#line 112 "../../../src/options/smt_options"
 template <> const options::rewriteStep__option_t::type& Options::operator[](options::rewriteStep__option_t) const { return d_holder->rewriteStep; }
-#line 110 "../../../../../src/options/smt_options"
+#line 112 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::rewriteStep__option_t) const { return d_holder->rewriteStep__setByUser__; }
-#line 113 "../../../../../src/options/smt_options"
+#line 115 "../../../src/options/smt_options"
 template <> const options::theoryCheckStep__option_t::type& Options::operator[](options::theoryCheckStep__option_t) const { return d_holder->theoryCheckStep; }
-#line 113 "../../../../../src/options/smt_options"
+#line 115 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::theoryCheckStep__option_t) const { return d_holder->theoryCheckStep__setByUser__; }
-#line 116 "../../../../../src/options/smt_options"
+#line 118 "../../../src/options/smt_options"
 template <> const options::decisionStep__option_t::type& Options::operator[](options::decisionStep__option_t) const { return d_holder->decisionStep; }
-#line 116 "../../../../../src/options/smt_options"
+#line 118 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::decisionStep__option_t) const { return d_holder->decisionStep__setByUser__; }
-#line 119 "../../../../../src/options/smt_options"
+#line 121 "../../../src/options/smt_options"
 template <> const options::bitblastStep__option_t::type& Options::operator[](options::bitblastStep__option_t) const { return d_holder->bitblastStep; }
-#line 119 "../../../../../src/options/smt_options"
+#line 121 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::bitblastStep__option_t) const { return d_holder->bitblastStep__setByUser__; }
-#line 122 "../../../../../src/options/smt_options"
+#line 124 "../../../src/options/smt_options"
 template <> const options::parseStep__option_t::type& Options::operator[](options::parseStep__option_t) const { return d_holder->parseStep; }
-#line 122 "../../../../../src/options/smt_options"
+#line 124 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::parseStep__option_t) const { return d_holder->parseStep__setByUser__; }
-#line 125 "../../../../../src/options/smt_options"
+#line 127 "../../../src/options/smt_options"
 template <> const options::lemmaStep__option_t::type& Options::operator[](options::lemmaStep__option_t) const { return d_holder->lemmaStep; }
-#line 125 "../../../../../src/options/smt_options"
+#line 127 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::lemmaStep__option_t) const { return d_holder->lemmaStep__setByUser__; }
-#line 128 "../../../../../src/options/smt_options"
+#line 130 "../../../src/options/smt_options"
 template <> const options::restartStep__option_t::type& Options::operator[](options::restartStep__option_t) const { return d_holder->restartStep; }
-#line 128 "../../../../../src/options/smt_options"
+#line 130 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::restartStep__option_t) const { return d_holder->restartStep__setByUser__; }
-#line 131 "../../../../../src/options/smt_options"
+#line 133 "../../../src/options/smt_options"
 template <> const options::cnfStep__option_t::type& Options::operator[](options::cnfStep__option_t) const { return d_holder->cnfStep; }
-#line 131 "../../../../../src/options/smt_options"
+#line 133 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::cnfStep__option_t) const { return d_holder->cnfStep__setByUser__; }
-#line 134 "../../../../../src/options/smt_options"
+#line 136 "../../../src/options/smt_options"
 template <> const options::preprocessStep__option_t::type& Options::operator[](options::preprocessStep__option_t) const { return d_holder->preprocessStep; }
-#line 134 "../../../../../src/options/smt_options"
+#line 136 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::preprocessStep__option_t) const { return d_holder->preprocessStep__setByUser__; }
-#line 137 "../../../../../src/options/smt_options"
+#line 139 "../../../src/options/smt_options"
 template <> const options::quantifierStep__option_t::type& Options::operator[](options::quantifierStep__option_t) const { return d_holder->quantifierStep; }
-#line 137 "../../../../../src/options/smt_options"
+#line 139 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::quantifierStep__option_t) const { return d_holder->quantifierStep__setByUser__; }
-#line 140 "../../../../../src/options/smt_options"
+#line 142 "../../../src/options/smt_options"
 template <> const options::satConflictStep__option_t::type& Options::operator[](options::satConflictStep__option_t) const { return d_holder->satConflictStep; }
-#line 140 "../../../../../src/options/smt_options"
+#line 142 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::satConflictStep__option_t) const { return d_holder->satConflictStep__setByUser__; }
-#line 143 "../../../../../src/options/smt_options"
+#line 145 "../../../src/options/smt_options"
 template <> const options::bvSatConflictStep__option_t::type& Options::operator[](options::bvSatConflictStep__option_t) const { return d_holder->bvSatConflictStep; }
-#line 143 "../../../../../src/options/smt_options"
+#line 145 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::bvSatConflictStep__option_t) const { return d_holder->bvSatConflictStep__setByUser__; }
-#line 147 "../../../../../src/options/smt_options"
+#line 149 "../../../src/options/smt_options"
 template <> const options::rewriteApplyToConst__option_t::type& Options::operator[](options::rewriteApplyToConst__option_t) const { return d_holder->rewriteApplyToConst; }
-#line 147 "../../../../../src/options/smt_options"
+#line 149 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::rewriteApplyToConst__option_t) const { return d_holder->rewriteApplyToConst__setByUser__; }
-#line 152 "../../../../../src/options/smt_options"
+#line 154 "../../../src/options/smt_options"
 template <> const options::replayInputFilename__option_t::type& Options::operator[](options::replayInputFilename__option_t) const { return d_holder->replayInputFilename; }
-#line 152 "../../../../../src/options/smt_options"
+#line 154 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::replayInputFilename__option_t) const { return d_holder->replayInputFilename__setByUser__; }
-#line 156 "../../../../../src/options/smt_options"
+#line 158 "../../../src/options/smt_options"
 template <> const options::replayLogFilename__option_t::type& Options::operator[](options::replayLogFilename__option_t) const { return d_holder->replayLogFilename; }
-#line 156 "../../../../../src/options/smt_options"
+#line 158 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::replayLogFilename__option_t) const { return d_holder->replayLogFilename__setByUser__; }
-#line 159 "../../../../../src/options/smt_options"
+#line 161 "../../../src/options/smt_options"
 template <> const options::forceNoLimitCpuWhileDump__option_t::type& Options::operator[](options::forceNoLimitCpuWhileDump__option_t) const { return d_holder->forceNoLimitCpuWhileDump; }
-#line 159 "../../../../../src/options/smt_options"
+#line 161 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::forceNoLimitCpuWhileDump__option_t) const { return d_holder->forceNoLimitCpuWhileDump__setByUser__; }
-#line 162 "../../../../../src/options/smt_options"
+#line 164 "../../../src/options/smt_options"
 template <> const options::solveIntAsBV__option_t::type& Options::operator[](options::solveIntAsBV__option_t) const { return d_holder->solveIntAsBV; }
-#line 162 "../../../../../src/options/smt_options"
+#line 164 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::solveIntAsBV__option_t) const { return d_holder->solveIntAsBV__setByUser__; }
+#line 167 "../../../src/options/smt_options"
+template <> const options::solveRealAsInt__option_t::type& Options::operator[](options::solveRealAsInt__option_t) const { return d_holder->solveRealAsInt; }
+#line 167 "../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::solveRealAsInt__option_t) const { return d_holder->solveRealAsInt__setByUser__; }
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/smt_options"
+#line 8 "../../../src/options/smt_options"
 struct dumpModeString__option_t dumpModeString;
-#line 10 "../../../../../src/options/smt_options"
+#line 10 "../../../src/options/smt_options"
 struct dumpToFileName__option_t dumpToFileName;
-#line 13 "../../../../../src/options/smt_options"
+#line 13 "../../../src/options/smt_options"
 struct forceLogicString__option_t forceLogicString;
-#line 16 "../../../../../src/options/smt_options"
+#line 16 "../../../src/options/smt_options"
 struct simplificationMode__option_t simplificationMode;
-#line 21 "../../../../../src/options/smt_options"
+#line 21 "../../../src/options/smt_options"
 struct doStaticLearning__option_t doStaticLearning;
-#line 24 "../../../../../src/options/smt_options"
+#line 24 "../../../src/options/smt_options"
 struct expandDefinitions__option_t expandDefinitions;
-#line 26 "../../../../../src/options/smt_options"
+#line 26 "../../../src/options/smt_options"
 struct produceModels__option_t produceModels;
-#line 28 "../../../../../src/options/smt_options"
+#line 28 "../../../src/options/smt_options"
 struct checkModels__option_t checkModels;
-#line 30 "../../../../../src/options/smt_options"
+#line 30 "../../../src/options/smt_options"
 struct dumpModels__option_t dumpModels;
-#line 32 "../../../../../src/options/smt_options"
+#line 32 "../../../src/options/smt_options"
 struct omitDontCares__option_t omitDontCares;
-#line 34 "../../../../../src/options/smt_options"
+#line 34 "../../../src/options/smt_options"
 struct proof__option_t proof;
-#line 36 "../../../../../src/options/smt_options"
+#line 36 "../../../src/options/smt_options"
 struct checkProofs__option_t checkProofs;
-#line 38 "../../../../../src/options/smt_options"
+#line 38 "../../../src/options/smt_options"
 struct dumpProofs__option_t dumpProofs;
-#line 40 "../../../../../src/options/smt_options"
+#line 40 "../../../src/options/smt_options"
 struct dumpInstantiations__option_t dumpInstantiations;
-#line 42 "../../../../../src/options/smt_options"
+#line 42 "../../../src/options/smt_options"
 struct dumpSynth__option_t dumpSynth;
-#line 44 "../../../../../src/options/smt_options"
+#line 44 "../../../src/options/smt_options"
 struct unsatCores__option_t unsatCores;
-#line 46 "../../../../../src/options/smt_options"
+#line 46 "../../../src/options/smt_options"
 struct checkUnsatCores__option_t checkUnsatCores;
-#line 48 "../../../../../src/options/smt_options"
+#line 48 "../../../src/options/smt_options"
 struct dumpUnsatCores__option_t dumpUnsatCores;
-#line 51 "../../../../../src/options/smt_options"
+#line 50 "../../../src/options/smt_options"
+struct dumpUnsatCoresFull__option_t dumpUnsatCoresFull;
+#line 53 "../../../src/options/smt_options"
 struct produceAssignments__option_t produceAssignments;
-#line 54 "../../../../../src/options/smt_options"
+#line 56 "../../../src/options/smt_options"
 struct interactiveMode__option_t interactiveMode;
-#line 56 "../../../../../src/options/smt_options"
+#line 58 "../../../src/options/smt_options"
 struct produceAssertions__option_t produceAssertions;
-#line 59 "../../../../../src/options/smt_options"
+#line 61 "../../../src/options/smt_options"
 struct doITESimp__option_t doITESimp;
-#line 62 "../../../../../src/options/smt_options"
+#line 64 "../../../src/options/smt_options"
 struct doITESimpOnRepeat__option_t doITESimpOnRepeat;
-#line 65 "../../../../../src/options/smt_options"
+#line 67 "../../../src/options/smt_options"
 struct simplifyWithCareEnabled__option_t simplifyWithCareEnabled;
-#line 68 "../../../../../src/options/smt_options"
+#line 70 "../../../src/options/smt_options"
 struct compressItes__option_t compressItes;
-#line 71 "../../../../../src/options/smt_options"
+#line 73 "../../../src/options/smt_options"
 struct unconstrainedSimp__option_t unconstrainedSimp;
-#line 74 "../../../../../src/options/smt_options"
+#line 76 "../../../src/options/smt_options"
 struct repeatSimp__option_t repeatSimp;
-#line 77 "../../../../../src/options/smt_options"
+#line 79 "../../../src/options/smt_options"
 struct zombieHuntThreshold__option_t zombieHuntThreshold;
-#line 80 "../../../../../src/options/smt_options"
+#line 82 "../../../src/options/smt_options"
 struct sortInference__option_t sortInference;
-#line 83 "../../../../../src/options/smt_options"
+#line 85 "../../../src/options/smt_options"
 struct incrementalSolving__option_t incrementalSolving;
-#line 86 "../../../../../src/options/smt_options"
+#line 88 "../../../src/options/smt_options"
 struct abstractValues__option_t abstractValues;
-#line 88 "../../../../../src/options/smt_options"
+#line 90 "../../../src/options/smt_options"
 struct modelUninterpDtEnum__option_t modelUninterpDtEnum;
-#line 91 "../../../../../src/options/smt_options"
+#line 93 "../../../src/options/smt_options"
 struct regularChannelName__option_t regularChannelName;
-#line 93 "../../../../../src/options/smt_options"
+#line 95 "../../../src/options/smt_options"
 struct diagnosticChannelName__option_t diagnosticChannelName;
-#line 96 "../../../../../src/options/smt_options"
+#line 98 "../../../src/options/smt_options"
 struct cumulativeMillisecondLimit__option_t cumulativeMillisecondLimit;
-#line 98 "../../../../../src/options/smt_options"
+#line 100 "../../../src/options/smt_options"
 struct perCallMillisecondLimit__option_t perCallMillisecondLimit;
-#line 100 "../../../../../src/options/smt_options"
+#line 102 "../../../src/options/smt_options"
 struct cumulativeResourceLimit__option_t cumulativeResourceLimit;
-#line 102 "../../../../../src/options/smt_options"
+#line 104 "../../../src/options/smt_options"
 struct perCallResourceLimit__option_t perCallResourceLimit;
-#line 104 "../../../../../src/options/smt_options"
+#line 106 "../../../src/options/smt_options"
 struct hardLimit__option_t hardLimit;
-#line 106 "../../../../../src/options/smt_options"
+#line 108 "../../../src/options/smt_options"
 struct cpuTime__option_t cpuTime;
-#line 110 "../../../../../src/options/smt_options"
+#line 112 "../../../src/options/smt_options"
 struct rewriteStep__option_t rewriteStep;
-#line 113 "../../../../../src/options/smt_options"
+#line 115 "../../../src/options/smt_options"
 struct theoryCheckStep__option_t theoryCheckStep;
-#line 116 "../../../../../src/options/smt_options"
+#line 118 "../../../src/options/smt_options"
 struct decisionStep__option_t decisionStep;
-#line 119 "../../../../../src/options/smt_options"
+#line 121 "../../../src/options/smt_options"
 struct bitblastStep__option_t bitblastStep;
-#line 122 "../../../../../src/options/smt_options"
+#line 124 "../../../src/options/smt_options"
 struct parseStep__option_t parseStep;
-#line 125 "../../../../../src/options/smt_options"
+#line 127 "../../../src/options/smt_options"
 struct lemmaStep__option_t lemmaStep;
-#line 128 "../../../../../src/options/smt_options"
+#line 130 "../../../src/options/smt_options"
 struct restartStep__option_t restartStep;
-#line 131 "../../../../../src/options/smt_options"
+#line 133 "../../../src/options/smt_options"
 struct cnfStep__option_t cnfStep;
-#line 134 "../../../../../src/options/smt_options"
+#line 136 "../../../src/options/smt_options"
 struct preprocessStep__option_t preprocessStep;
-#line 137 "../../../../../src/options/smt_options"
+#line 139 "../../../src/options/smt_options"
 struct quantifierStep__option_t quantifierStep;
-#line 140 "../../../../../src/options/smt_options"
+#line 142 "../../../src/options/smt_options"
 struct satConflictStep__option_t satConflictStep;
-#line 143 "../../../../../src/options/smt_options"
+#line 145 "../../../src/options/smt_options"
 struct bvSatConflictStep__option_t bvSatConflictStep;
-#line 147 "../../../../../src/options/smt_options"
+#line 149 "../../../src/options/smt_options"
 struct rewriteApplyToConst__option_t rewriteApplyToConst;
-#line 152 "../../../../../src/options/smt_options"
+#line 154 "../../../src/options/smt_options"
 struct replayInputFilename__option_t replayInputFilename;
-#line 156 "../../../../../src/options/smt_options"
+#line 158 "../../../src/options/smt_options"
 struct replayLogFilename__option_t replayLogFilename;
-#line 159 "../../../../../src/options/smt_options"
+#line 161 "../../../src/options/smt_options"
 struct forceNoLimitCpuWhileDump__option_t forceNoLimitCpuWhileDump;
-#line 162 "../../../../../src/options/smt_options"
+#line 164 "../../../src/options/smt_options"
 struct solveIntAsBV__option_t solveIntAsBV;
+#line 167 "../../../src/options/smt_options"
+struct solveRealAsInt__option_t solveRealAsInt;
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/smt_options.h b/src/options/smt_options.h
index a4152c0..41c183a 100644
--- a/src/options/smt_options.h
+++ b/src/options/smt_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -21,10 +21,10 @@
 
 #include "options/options.h"
 
-#line 16 "../../../../../src/options/smt_options"
+#line 16 "../../../src/options/smt_options"
 #include "options/simplification_mode.h"
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__SMT__FOR_OPTION_HOLDER \
   dumpModeString__option_t::type dumpModeString; \
@@ -63,6 +63,8 @@
   bool checkUnsatCores__setByUser__; \
   dumpUnsatCores__option_t::type dumpUnsatCores; \
   bool dumpUnsatCores__setByUser__; \
+  dumpUnsatCoresFull__option_t::type dumpUnsatCoresFull; \
+  bool dumpUnsatCoresFull__setByUser__; \
   produceAssignments__option_t::type produceAssignments; \
   bool produceAssignments__setByUser__; \
   interactiveMode__option_t::type interactiveMode; \
@@ -140,821 +142,849 @@
   forceNoLimitCpuWhileDump__option_t::type forceNoLimitCpuWhileDump; \
   bool forceNoLimitCpuWhileDump__setByUser__; \
   solveIntAsBV__option_t::type solveIntAsBV; \
-  bool solveIntAsBV__setByUser__;
+  bool solveIntAsBV__setByUser__; \
+  solveRealAsInt__option_t::type solveRealAsInt; \
+  bool solveRealAsInt__setByUser__;
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/smt_options"
+#line 8 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC dumpModeString__option_t { typedef std::string type; type operator()() const; bool wasSetByUser() const; } dumpModeString CVC4_PUBLIC;
-#line 10 "../../../../../src/options/smt_options"
+#line 10 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC dumpToFileName__option_t { typedef std::string type; type operator()() const; bool wasSetByUser() const; } dumpToFileName CVC4_PUBLIC;
-#line 13 "../../../../../src/options/smt_options"
+#line 13 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC forceLogicString__option_t { typedef std::string type; type operator()() const; bool wasSetByUser() const; } forceLogicString CVC4_PUBLIC;
-#line 16 "../../../../../src/options/smt_options"
+#line 16 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC simplificationMode__option_t { typedef SimplificationMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } simplificationMode CVC4_PUBLIC;
-#line 21 "../../../../../src/options/smt_options"
+#line 21 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC doStaticLearning__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } doStaticLearning CVC4_PUBLIC;
-#line 24 "../../../../../src/options/smt_options"
+#line 24 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC expandDefinitions__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } expandDefinitions CVC4_PUBLIC;
-#line 26 "../../../../../src/options/smt_options"
+#line 26 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC produceModels__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } produceModels CVC4_PUBLIC;
-#line 28 "../../../../../src/options/smt_options"
+#line 28 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC checkModels__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } checkModels CVC4_PUBLIC;
-#line 30 "../../../../../src/options/smt_options"
+#line 30 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC dumpModels__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dumpModels CVC4_PUBLIC;
-#line 32 "../../../../../src/options/smt_options"
+#line 32 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC omitDontCares__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } omitDontCares CVC4_PUBLIC;
-#line 34 "../../../../../src/options/smt_options"
+#line 34 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC proof__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } proof CVC4_PUBLIC;
-#line 36 "../../../../../src/options/smt_options"
+#line 36 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC checkProofs__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } checkProofs CVC4_PUBLIC;
-#line 38 "../../../../../src/options/smt_options"
+#line 38 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC dumpProofs__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dumpProofs CVC4_PUBLIC;
-#line 40 "../../../../../src/options/smt_options"
+#line 40 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC dumpInstantiations__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dumpInstantiations CVC4_PUBLIC;
-#line 42 "../../../../../src/options/smt_options"
+#line 42 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC dumpSynth__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } dumpSynth CVC4_PUBLIC;
-#line 44 "../../../../../src/options/smt_options"
+#line 44 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC unsatCores__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } unsatCores CVC4_PUBLIC;
-#line 46 "../../../../../src/options/smt_options"
+#line 46 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC checkUnsatCores__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } checkUnsatCores CVC4_PUBLIC;
-#line 48 "../../../../../src/options/smt_options"
+#line 48 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC dumpUnsatCores__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dumpUnsatCores CVC4_PUBLIC;
-#line 51 "../../../../../src/options/smt_options"
+#line 50 "../../../src/options/smt_options"
+extern struct CVC4_PUBLIC dumpUnsatCoresFull__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } dumpUnsatCoresFull CVC4_PUBLIC;
+#line 53 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC produceAssignments__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } produceAssignments CVC4_PUBLIC;
-#line 54 "../../../../../src/options/smt_options"
+#line 56 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC interactiveMode__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } interactiveMode CVC4_PUBLIC;
-#line 56 "../../../../../src/options/smt_options"
+#line 58 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC produceAssertions__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } produceAssertions CVC4_PUBLIC;
-#line 59 "../../../../../src/options/smt_options"
+#line 61 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC doITESimp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } doITESimp CVC4_PUBLIC;
-#line 62 "../../../../../src/options/smt_options"
+#line 64 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC doITESimpOnRepeat__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } doITESimpOnRepeat CVC4_PUBLIC;
-#line 65 "../../../../../src/options/smt_options"
+#line 67 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC simplifyWithCareEnabled__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } simplifyWithCareEnabled CVC4_PUBLIC;
-#line 68 "../../../../../src/options/smt_options"
+#line 70 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC compressItes__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } compressItes CVC4_PUBLIC;
-#line 71 "../../../../../src/options/smt_options"
+#line 73 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC unconstrainedSimp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } unconstrainedSimp CVC4_PUBLIC;
-#line 74 "../../../../../src/options/smt_options"
+#line 76 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC repeatSimp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } repeatSimp CVC4_PUBLIC;
-#line 77 "../../../../../src/options/smt_options"
+#line 79 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC zombieHuntThreshold__option_t { typedef uint32_t type; type operator()() const; bool wasSetByUser() const; } zombieHuntThreshold CVC4_PUBLIC;
-#line 80 "../../../../../src/options/smt_options"
+#line 82 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC sortInference__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } sortInference CVC4_PUBLIC;
-#line 83 "../../../../../src/options/smt_options"
+#line 85 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC incrementalSolving__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } incrementalSolving CVC4_PUBLIC;
-#line 86 "../../../../../src/options/smt_options"
+#line 88 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC abstractValues__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } abstractValues CVC4_PUBLIC;
-#line 88 "../../../../../src/options/smt_options"
+#line 90 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC modelUninterpDtEnum__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } modelUninterpDtEnum CVC4_PUBLIC;
-#line 91 "../../../../../src/options/smt_options"
+#line 93 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC regularChannelName__option_t { typedef std::string type; type operator()() const; bool wasSetByUser() const; } regularChannelName CVC4_PUBLIC;
-#line 93 "../../../../../src/options/smt_options"
+#line 95 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC diagnosticChannelName__option_t { typedef std::string type; type operator()() const; bool wasSetByUser() const; } diagnosticChannelName CVC4_PUBLIC;
-#line 96 "../../../../../src/options/smt_options"
+#line 98 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC cumulativeMillisecondLimit__option_t { typedef unsigned long type; type operator()() const; bool wasSetByUser() const; } cumulativeMillisecondLimit CVC4_PUBLIC;
-#line 98 "../../../../../src/options/smt_options"
+#line 100 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC perCallMillisecondLimit__option_t { typedef unsigned long type; type operator()() const; bool wasSetByUser() const; } perCallMillisecondLimit CVC4_PUBLIC;
-#line 100 "../../../../../src/options/smt_options"
+#line 102 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC cumulativeResourceLimit__option_t { typedef unsigned long type; type operator()() const; bool wasSetByUser() const; } cumulativeResourceLimit CVC4_PUBLIC;
-#line 102 "../../../../../src/options/smt_options"
+#line 104 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC perCallResourceLimit__option_t { typedef unsigned long type; type operator()() const; bool wasSetByUser() const; } perCallResourceLimit CVC4_PUBLIC;
-#line 104 "../../../../../src/options/smt_options"
+#line 106 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC hardLimit__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } hardLimit CVC4_PUBLIC;
-#line 106 "../../../../../src/options/smt_options"
+#line 108 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC cpuTime__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } cpuTime CVC4_PUBLIC;
-#line 110 "../../../../../src/options/smt_options"
+#line 112 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC rewriteStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } rewriteStep CVC4_PUBLIC;
-#line 113 "../../../../../src/options/smt_options"
+#line 115 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC theoryCheckStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } theoryCheckStep CVC4_PUBLIC;
-#line 116 "../../../../../src/options/smt_options"
+#line 118 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC decisionStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } decisionStep CVC4_PUBLIC;
-#line 119 "../../../../../src/options/smt_options"
+#line 121 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC bitblastStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } bitblastStep CVC4_PUBLIC;
-#line 122 "../../../../../src/options/smt_options"
+#line 124 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC parseStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } parseStep CVC4_PUBLIC;
-#line 125 "../../../../../src/options/smt_options"
+#line 127 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC lemmaStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } lemmaStep CVC4_PUBLIC;
-#line 128 "../../../../../src/options/smt_options"
+#line 130 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC restartStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } restartStep CVC4_PUBLIC;
-#line 131 "../../../../../src/options/smt_options"
+#line 133 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC cnfStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } cnfStep CVC4_PUBLIC;
-#line 134 "../../../../../src/options/smt_options"
+#line 136 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC preprocessStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } preprocessStep CVC4_PUBLIC;
-#line 137 "../../../../../src/options/smt_options"
+#line 139 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC quantifierStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } quantifierStep CVC4_PUBLIC;
-#line 140 "../../../../../src/options/smt_options"
+#line 142 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC satConflictStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } satConflictStep CVC4_PUBLIC;
-#line 143 "../../../../../src/options/smt_options"
+#line 145 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC bvSatConflictStep__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } bvSatConflictStep CVC4_PUBLIC;
-#line 147 "../../../../../src/options/smt_options"
+#line 149 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC rewriteApplyToConst__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } rewriteApplyToConst CVC4_PUBLIC;
-#line 152 "../../../../../src/options/smt_options"
+#line 154 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC replayInputFilename__option_t { typedef std::string type; type operator()() const; bool wasSetByUser() const; } replayInputFilename CVC4_PUBLIC;
-#line 156 "../../../../../src/options/smt_options"
+#line 158 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC replayLogFilename__option_t { typedef std::string type; type operator()() const; bool wasSetByUser() const; } replayLogFilename CVC4_PUBLIC;
-#line 159 "../../../../../src/options/smt_options"
+#line 161 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC forceNoLimitCpuWhileDump__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } forceNoLimitCpuWhileDump CVC4_PUBLIC;
-#line 162 "../../../../../src/options/smt_options"
+#line 164 "../../../src/options/smt_options"
 extern struct CVC4_PUBLIC solveIntAsBV__option_t { typedef uint32_t type; type operator()() const; bool wasSetByUser() const; } solveIntAsBV CVC4_PUBLIC;
+#line 167 "../../../src/options/smt_options"
+extern struct CVC4_PUBLIC solveRealAsInt__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } solveRealAsInt CVC4_PUBLIC;
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
-#line 8 "../../../../../src/options/smt_options"
+#line 8 "../../../src/options/smt_options"
 template <> const options::dumpModeString__option_t::type& Options::operator[](options::dumpModeString__option_t) const;
-#line 8 "../../../../../src/options/smt_options"
+#line 8 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::dumpModeString__option_t) const;
-#line 8 "../../../../../src/options/smt_options"
+#line 8 "../../../src/options/smt_options"
 template <> void Options::assign(options::dumpModeString__option_t, std::string option, std::string value);
-#line 10 "../../../../../src/options/smt_options"
+#line 10 "../../../src/options/smt_options"
 template <> const options::dumpToFileName__option_t::type& Options::operator[](options::dumpToFileName__option_t) const;
-#line 10 "../../../../../src/options/smt_options"
+#line 10 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::dumpToFileName__option_t) const;
-#line 10 "../../../../../src/options/smt_options"
+#line 10 "../../../src/options/smt_options"
 template <> void Options::assign(options::dumpToFileName__option_t, std::string option, std::string value);
-#line 13 "../../../../../src/options/smt_options"
+#line 13 "../../../src/options/smt_options"
 template <> const options::forceLogicString__option_t::type& Options::operator[](options::forceLogicString__option_t) const;
-#line 13 "../../../../../src/options/smt_options"
+#line 13 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::forceLogicString__option_t) const;
-#line 13 "../../../../../src/options/smt_options"
+#line 13 "../../../src/options/smt_options"
 template <> void Options::assign(options::forceLogicString__option_t, std::string option, std::string value);
-#line 16 "../../../../../src/options/smt_options"
+#line 16 "../../../src/options/smt_options"
 template <> void Options::set(options::simplificationMode__option_t, const options::simplificationMode__option_t::type& x);
-#line 16 "../../../../../src/options/smt_options"
+#line 16 "../../../src/options/smt_options"
 template <> const options::simplificationMode__option_t::type& Options::operator[](options::simplificationMode__option_t) const;
-#line 16 "../../../../../src/options/smt_options"
+#line 16 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::simplificationMode__option_t) const;
-#line 16 "../../../../../src/options/smt_options"
+#line 16 "../../../src/options/smt_options"
 template <> void Options::assign(options::simplificationMode__option_t, std::string option, std::string value);
-#line 21 "../../../../../src/options/smt_options"
+#line 21 "../../../src/options/smt_options"
 template <> const options::doStaticLearning__option_t::type& Options::operator[](options::doStaticLearning__option_t) const;
-#line 21 "../../../../../src/options/smt_options"
+#line 21 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::doStaticLearning__option_t) const;
-#line 21 "../../../../../src/options/smt_options"
+#line 21 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::doStaticLearning__option_t, std::string option, bool value);
-#line 24 "../../../../../src/options/smt_options"
+#line 24 "../../../src/options/smt_options"
 template <> const options::expandDefinitions__option_t::type& Options::operator[](options::expandDefinitions__option_t) const;
-#line 24 "../../../../../src/options/smt_options"
+#line 24 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::expandDefinitions__option_t) const;
-#line 24 "../../../../../src/options/smt_options"
+#line 24 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::expandDefinitions__option_t, std::string option, bool value);
-#line 26 "../../../../../src/options/smt_options"
+#line 26 "../../../src/options/smt_options"
 template <> const options::produceModels__option_t::type& Options::operator[](options::produceModels__option_t) const;
-#line 26 "../../../../../src/options/smt_options"
+#line 26 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::produceModels__option_t) const;
-#line 26 "../../../../../src/options/smt_options"
+#line 26 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::produceModels__option_t, std::string option, bool value);
-#line 28 "../../../../../src/options/smt_options"
+#line 28 "../../../src/options/smt_options"
 template <> const options::checkModels__option_t::type& Options::operator[](options::checkModels__option_t) const;
-#line 28 "../../../../../src/options/smt_options"
+#line 28 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::checkModels__option_t) const;
-#line 28 "../../../../../src/options/smt_options"
+#line 28 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::checkModels__option_t, std::string option, bool value);
-#line 30 "../../../../../src/options/smt_options"
+#line 30 "../../../src/options/smt_options"
 template <> const options::dumpModels__option_t::type& Options::operator[](options::dumpModels__option_t) const;
-#line 30 "../../../../../src/options/smt_options"
+#line 30 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::dumpModels__option_t) const;
-#line 30 "../../../../../src/options/smt_options"
+#line 30 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::dumpModels__option_t, std::string option, bool value);
-#line 32 "../../../../../src/options/smt_options"
+#line 32 "../../../src/options/smt_options"
 template <> const options::omitDontCares__option_t::type& Options::operator[](options::omitDontCares__option_t) const;
-#line 32 "../../../../../src/options/smt_options"
+#line 32 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::omitDontCares__option_t) const;
-#line 32 "../../../../../src/options/smt_options"
+#line 32 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::omitDontCares__option_t, std::string option, bool value);
-#line 34 "../../../../../src/options/smt_options"
+#line 34 "../../../src/options/smt_options"
 template <> const options::proof__option_t::type& Options::operator[](options::proof__option_t) const;
-#line 34 "../../../../../src/options/smt_options"
+#line 34 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::proof__option_t) const;
-#line 34 "../../../../../src/options/smt_options"
+#line 34 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::proof__option_t, std::string option, bool value);
-#line 36 "../../../../../src/options/smt_options"
+#line 36 "../../../src/options/smt_options"
 template <> void Options::set(options::checkProofs__option_t, const options::checkProofs__option_t::type& x);
-#line 36 "../../../../../src/options/smt_options"
+#line 36 "../../../src/options/smt_options"
 template <> const options::checkProofs__option_t::type& Options::operator[](options::checkProofs__option_t) const;
-#line 36 "../../../../../src/options/smt_options"
+#line 36 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::checkProofs__option_t) const;
-#line 36 "../../../../../src/options/smt_options"
+#line 36 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::checkProofs__option_t, std::string option, bool value);
-#line 38 "../../../../../src/options/smt_options"
+#line 38 "../../../src/options/smt_options"
 template <> const options::dumpProofs__option_t::type& Options::operator[](options::dumpProofs__option_t) const;
-#line 38 "../../../../../src/options/smt_options"
+#line 38 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::dumpProofs__option_t) const;
-#line 38 "../../../../../src/options/smt_options"
+#line 38 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::dumpProofs__option_t, std::string option, bool value);
-#line 40 "../../../../../src/options/smt_options"
+#line 40 "../../../src/options/smt_options"
 template <> const options::dumpInstantiations__option_t::type& Options::operator[](options::dumpInstantiations__option_t) const;
-#line 40 "../../../../../src/options/smt_options"
+#line 40 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::dumpInstantiations__option_t) const;
-#line 40 "../../../../../src/options/smt_options"
+#line 40 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::dumpInstantiations__option_t, std::string option, bool value);
-#line 42 "../../../../../src/options/smt_options"
+#line 42 "../../../src/options/smt_options"
 template <> void Options::set(options::dumpSynth__option_t, const options::dumpSynth__option_t::type& x);
-#line 42 "../../../../../src/options/smt_options"
+#line 42 "../../../src/options/smt_options"
 template <> const options::dumpSynth__option_t::type& Options::operator[](options::dumpSynth__option_t) const;
-#line 42 "../../../../../src/options/smt_options"
+#line 42 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::dumpSynth__option_t) const;
-#line 42 "../../../../../src/options/smt_options"
+#line 42 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::dumpSynth__option_t, std::string option, bool value);
-#line 44 "../../../../../src/options/smt_options"
+#line 44 "../../../src/options/smt_options"
 template <> const options::unsatCores__option_t::type& Options::operator[](options::unsatCores__option_t) const;
-#line 44 "../../../../../src/options/smt_options"
+#line 44 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::unsatCores__option_t) const;
-#line 44 "../../../../../src/options/smt_options"
+#line 44 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::unsatCores__option_t, std::string option, bool value);
-#line 46 "../../../../../src/options/smt_options"
+#line 46 "../../../src/options/smt_options"
 template <> void Options::set(options::checkUnsatCores__option_t, const options::checkUnsatCores__option_t::type& x);
-#line 46 "../../../../../src/options/smt_options"
+#line 46 "../../../src/options/smt_options"
 template <> const options::checkUnsatCores__option_t::type& Options::operator[](options::checkUnsatCores__option_t) const;
-#line 46 "../../../../../src/options/smt_options"
+#line 46 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::checkUnsatCores__option_t) const;
-#line 46 "../../../../../src/options/smt_options"
+#line 46 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::checkUnsatCores__option_t, std::string option, bool value);
-#line 48 "../../../../../src/options/smt_options"
+#line 48 "../../../src/options/smt_options"
 template <> const options::dumpUnsatCores__option_t::type& Options::operator[](options::dumpUnsatCores__option_t) const;
-#line 48 "../../../../../src/options/smt_options"
+#line 48 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::dumpUnsatCores__option_t) const;
-#line 48 "../../../../../src/options/smt_options"
+#line 48 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::dumpUnsatCores__option_t, std::string option, bool value);
-#line 51 "../../../../../src/options/smt_options"
+#line 50 "../../../src/options/smt_options"
+template <> const options::dumpUnsatCoresFull__option_t::type& Options::operator[](options::dumpUnsatCoresFull__option_t) const;
+#line 50 "../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::dumpUnsatCoresFull__option_t) const;
+#line 50 "../../../src/options/smt_options"
+template <> void Options::assignBool(options::dumpUnsatCoresFull__option_t, std::string option, bool value);
+#line 53 "../../../src/options/smt_options"
 template <> const options::produceAssignments__option_t::type& Options::operator[](options::produceAssignments__option_t) const;
-#line 51 "../../../../../src/options/smt_options"
+#line 53 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::produceAssignments__option_t) const;
-#line 51 "../../../../../src/options/smt_options"
+#line 53 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::produceAssignments__option_t, std::string option, bool value);
-#line 54 "../../../../../src/options/smt_options"
+#line 56 "../../../src/options/smt_options"
 template <> void Options::set(options::interactiveMode__option_t, const options::interactiveMode__option_t::type& x);
-#line 54 "../../../../../src/options/smt_options"
+#line 56 "../../../src/options/smt_options"
 template <> const options::interactiveMode__option_t::type& Options::operator[](options::interactiveMode__option_t) const;
-#line 54 "../../../../../src/options/smt_options"
+#line 56 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::interactiveMode__option_t) const;
-#line 54 "../../../../../src/options/smt_options"
+#line 56 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::interactiveMode__option_t, std::string option, bool value);
-#line 56 "../../../../../src/options/smt_options"
+#line 58 "../../../src/options/smt_options"
 template <> void Options::set(options::produceAssertions__option_t, const options::produceAssertions__option_t::type& x);
-#line 56 "../../../../../src/options/smt_options"
+#line 58 "../../../src/options/smt_options"
 template <> const options::produceAssertions__option_t::type& Options::operator[](options::produceAssertions__option_t) const;
-#line 56 "../../../../../src/options/smt_options"
+#line 58 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::produceAssertions__option_t) const;
-#line 56 "../../../../../src/options/smt_options"
+#line 58 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::produceAssertions__option_t, std::string option, bool value);
-#line 59 "../../../../../src/options/smt_options"
+#line 61 "../../../src/options/smt_options"
 template <> void Options::set(options::doITESimp__option_t, const options::doITESimp__option_t::type& x);
-#line 59 "../../../../../src/options/smt_options"
+#line 61 "../../../src/options/smt_options"
 template <> const options::doITESimp__option_t::type& Options::operator[](options::doITESimp__option_t) const;
-#line 59 "../../../../../src/options/smt_options"
+#line 61 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::doITESimp__option_t) const;
-#line 59 "../../../../../src/options/smt_options"
+#line 61 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::doITESimp__option_t, std::string option, bool value);
-#line 62 "../../../../../src/options/smt_options"
+#line 64 "../../../src/options/smt_options"
 template <> void Options::set(options::doITESimpOnRepeat__option_t, const options::doITESimpOnRepeat__option_t::type& x);
-#line 62 "../../../../../src/options/smt_options"
+#line 64 "../../../src/options/smt_options"
 template <> const options::doITESimpOnRepeat__option_t::type& Options::operator[](options::doITESimpOnRepeat__option_t) const;
-#line 62 "../../../../../src/options/smt_options"
+#line 64 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::doITESimpOnRepeat__option_t) const;
-#line 62 "../../../../../src/options/smt_options"
+#line 64 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::doITESimpOnRepeat__option_t, std::string option, bool value);
-#line 65 "../../../../../src/options/smt_options"
+#line 67 "../../../src/options/smt_options"
 template <> void Options::set(options::simplifyWithCareEnabled__option_t, const options::simplifyWithCareEnabled__option_t::type& x);
-#line 65 "../../../../../src/options/smt_options"
+#line 67 "../../../src/options/smt_options"
 template <> const options::simplifyWithCareEnabled__option_t::type& Options::operator[](options::simplifyWithCareEnabled__option_t) const;
-#line 65 "../../../../../src/options/smt_options"
+#line 67 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::simplifyWithCareEnabled__option_t) const;
-#line 65 "../../../../../src/options/smt_options"
+#line 67 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::simplifyWithCareEnabled__option_t, std::string option, bool value);
-#line 68 "../../../../../src/options/smt_options"
+#line 70 "../../../src/options/smt_options"
 template <> void Options::set(options::compressItes__option_t, const options::compressItes__option_t::type& x);
-#line 68 "../../../../../src/options/smt_options"
+#line 70 "../../../src/options/smt_options"
 template <> const options::compressItes__option_t::type& Options::operator[](options::compressItes__option_t) const;
-#line 68 "../../../../../src/options/smt_options"
+#line 70 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::compressItes__option_t) const;
-#line 68 "../../../../../src/options/smt_options"
+#line 70 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::compressItes__option_t, std::string option, bool value);
-#line 71 "../../../../../src/options/smt_options"
+#line 73 "../../../src/options/smt_options"
 template <> void Options::set(options::unconstrainedSimp__option_t, const options::unconstrainedSimp__option_t::type& x);
-#line 71 "../../../../../src/options/smt_options"
+#line 73 "../../../src/options/smt_options"
 template <> const options::unconstrainedSimp__option_t::type& Options::operator[](options::unconstrainedSimp__option_t) const;
-#line 71 "../../../../../src/options/smt_options"
+#line 73 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::unconstrainedSimp__option_t) const;
-#line 71 "../../../../../src/options/smt_options"
+#line 73 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::unconstrainedSimp__option_t, std::string option, bool value);
-#line 74 "../../../../../src/options/smt_options"
+#line 76 "../../../src/options/smt_options"
 template <> void Options::set(options::repeatSimp__option_t, const options::repeatSimp__option_t::type& x);
-#line 74 "../../../../../src/options/smt_options"
+#line 76 "../../../src/options/smt_options"
 template <> const options::repeatSimp__option_t::type& Options::operator[](options::repeatSimp__option_t) const;
-#line 74 "../../../../../src/options/smt_options"
+#line 76 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::repeatSimp__option_t) const;
-#line 74 "../../../../../src/options/smt_options"
+#line 76 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::repeatSimp__option_t, std::string option, bool value);
-#line 77 "../../../../../src/options/smt_options"
+#line 79 "../../../src/options/smt_options"
 template <> const options::zombieHuntThreshold__option_t::type& Options::operator[](options::zombieHuntThreshold__option_t) const;
-#line 77 "../../../../../src/options/smt_options"
+#line 79 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::zombieHuntThreshold__option_t) const;
-#line 77 "../../../../../src/options/smt_options"
+#line 79 "../../../src/options/smt_options"
 template <> void Options::assign(options::zombieHuntThreshold__option_t, std::string option, std::string value);
-#line 80 "../../../../../src/options/smt_options"
+#line 82 "../../../src/options/smt_options"
 template <> void Options::set(options::sortInference__option_t, const options::sortInference__option_t::type& x);
-#line 80 "../../../../../src/options/smt_options"
+#line 82 "../../../src/options/smt_options"
 template <> const options::sortInference__option_t::type& Options::operator[](options::sortInference__option_t) const;
-#line 80 "../../../../../src/options/smt_options"
+#line 82 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::sortInference__option_t) const;
-#line 80 "../../../../../src/options/smt_options"
+#line 82 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::sortInference__option_t, std::string option, bool value);
-#line 83 "../../../../../src/options/smt_options"
+#line 85 "../../../src/options/smt_options"
 template <> const options::incrementalSolving__option_t::type& Options::operator[](options::incrementalSolving__option_t) const;
-#line 83 "../../../../../src/options/smt_options"
+#line 85 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::incrementalSolving__option_t) const;
-#line 83 "../../../../../src/options/smt_options"
+#line 85 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::incrementalSolving__option_t, std::string option, bool value);
-#line 86 "../../../../../src/options/smt_options"
+#line 88 "../../../src/options/smt_options"
 template <> const options::abstractValues__option_t::type& Options::operator[](options::abstractValues__option_t) const;
-#line 86 "../../../../../src/options/smt_options"
+#line 88 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::abstractValues__option_t) const;
-#line 86 "../../../../../src/options/smt_options"
+#line 88 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::abstractValues__option_t, std::string option, bool value);
-#line 88 "../../../../../src/options/smt_options"
+#line 90 "../../../src/options/smt_options"
 template <> const options::modelUninterpDtEnum__option_t::type& Options::operator[](options::modelUninterpDtEnum__option_t) const;
-#line 88 "../../../../../src/options/smt_options"
+#line 90 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::modelUninterpDtEnum__option_t) const;
-#line 88 "../../../../../src/options/smt_options"
+#line 90 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::modelUninterpDtEnum__option_t, std::string option, bool value);
-#line 91 "../../../../../src/options/smt_options"
+#line 93 "../../../src/options/smt_options"
 template <> const options::regularChannelName__option_t::type& Options::operator[](options::regularChannelName__option_t) const;
-#line 91 "../../../../../src/options/smt_options"
+#line 93 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::regularChannelName__option_t) const;
-#line 91 "../../../../../src/options/smt_options"
+#line 93 "../../../src/options/smt_options"
 template <> void Options::assign(options::regularChannelName__option_t, std::string option, std::string value);
-#line 93 "../../../../../src/options/smt_options"
+#line 95 "../../../src/options/smt_options"
 template <> const options::diagnosticChannelName__option_t::type& Options::operator[](options::diagnosticChannelName__option_t) const;
-#line 93 "../../../../../src/options/smt_options"
+#line 95 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::diagnosticChannelName__option_t) const;
-#line 93 "../../../../../src/options/smt_options"
+#line 95 "../../../src/options/smt_options"
 template <> void Options::assign(options::diagnosticChannelName__option_t, std::string option, std::string value);
-#line 96 "../../../../../src/options/smt_options"
+#line 98 "../../../src/options/smt_options"
 template <> const options::cumulativeMillisecondLimit__option_t::type& Options::operator[](options::cumulativeMillisecondLimit__option_t) const;
-#line 96 "../../../../../src/options/smt_options"
+#line 98 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::cumulativeMillisecondLimit__option_t) const;
-#line 96 "../../../../../src/options/smt_options"
+#line 98 "../../../src/options/smt_options"
 template <> void Options::assign(options::cumulativeMillisecondLimit__option_t, std::string option, std::string value);
-#line 98 "../../../../../src/options/smt_options"
+#line 100 "../../../src/options/smt_options"
 template <> const options::perCallMillisecondLimit__option_t::type& Options::operator[](options::perCallMillisecondLimit__option_t) const;
-#line 98 "../../../../../src/options/smt_options"
+#line 100 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::perCallMillisecondLimit__option_t) const;
-#line 98 "../../../../../src/options/smt_options"
+#line 100 "../../../src/options/smt_options"
 template <> void Options::assign(options::perCallMillisecondLimit__option_t, std::string option, std::string value);
-#line 100 "../../../../../src/options/smt_options"
+#line 102 "../../../src/options/smt_options"
 template <> const options::cumulativeResourceLimit__option_t::type& Options::operator[](options::cumulativeResourceLimit__option_t) const;
-#line 100 "../../../../../src/options/smt_options"
+#line 102 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::cumulativeResourceLimit__option_t) const;
-#line 100 "../../../../../src/options/smt_options"
+#line 102 "../../../src/options/smt_options"
 template <> void Options::assign(options::cumulativeResourceLimit__option_t, std::string option, std::string value);
-#line 102 "../../../../../src/options/smt_options"
+#line 104 "../../../src/options/smt_options"
 template <> const options::perCallResourceLimit__option_t::type& Options::operator[](options::perCallResourceLimit__option_t) const;
-#line 102 "../../../../../src/options/smt_options"
+#line 104 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::perCallResourceLimit__option_t) const;
-#line 102 "../../../../../src/options/smt_options"
+#line 104 "../../../src/options/smt_options"
 template <> void Options::assign(options::perCallResourceLimit__option_t, std::string option, std::string value);
-#line 104 "../../../../../src/options/smt_options"
+#line 106 "../../../src/options/smt_options"
 template <> const options::hardLimit__option_t::type& Options::operator[](options::hardLimit__option_t) const;
-#line 104 "../../../../../src/options/smt_options"
+#line 106 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::hardLimit__option_t) const;
-#line 104 "../../../../../src/options/smt_options"
+#line 106 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::hardLimit__option_t, std::string option, bool value);
-#line 106 "../../../../../src/options/smt_options"
+#line 108 "../../../src/options/smt_options"
 template <> const options::cpuTime__option_t::type& Options::operator[](options::cpuTime__option_t) const;
-#line 106 "../../../../../src/options/smt_options"
+#line 108 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::cpuTime__option_t) const;
-#line 106 "../../../../../src/options/smt_options"
+#line 108 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::cpuTime__option_t, std::string option, bool value);
-#line 110 "../../../../../src/options/smt_options"
+#line 112 "../../../src/options/smt_options"
 template <> const options::rewriteStep__option_t::type& Options::operator[](options::rewriteStep__option_t) const;
-#line 110 "../../../../../src/options/smt_options"
+#line 112 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::rewriteStep__option_t) const;
-#line 110 "../../../../../src/options/smt_options"
+#line 112 "../../../src/options/smt_options"
 template <> void Options::assign(options::rewriteStep__option_t, std::string option, std::string value);
-#line 113 "../../../../../src/options/smt_options"
+#line 115 "../../../src/options/smt_options"
 template <> const options::theoryCheckStep__option_t::type& Options::operator[](options::theoryCheckStep__option_t) const;
-#line 113 "../../../../../src/options/smt_options"
+#line 115 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::theoryCheckStep__option_t) const;
-#line 113 "../../../../../src/options/smt_options"
+#line 115 "../../../src/options/smt_options"
 template <> void Options::assign(options::theoryCheckStep__option_t, std::string option, std::string value);
-#line 116 "../../../../../src/options/smt_options"
+#line 118 "../../../src/options/smt_options"
 template <> const options::decisionStep__option_t::type& Options::operator[](options::decisionStep__option_t) const;
-#line 116 "../../../../../src/options/smt_options"
+#line 118 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::decisionStep__option_t) const;
-#line 116 "../../../../../src/options/smt_options"
+#line 118 "../../../src/options/smt_options"
 template <> void Options::assign(options::decisionStep__option_t, std::string option, std::string value);
-#line 119 "../../../../../src/options/smt_options"
+#line 121 "../../../src/options/smt_options"
 template <> const options::bitblastStep__option_t::type& Options::operator[](options::bitblastStep__option_t) const;
-#line 119 "../../../../../src/options/smt_options"
+#line 121 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::bitblastStep__option_t) const;
-#line 119 "../../../../../src/options/smt_options"
+#line 121 "../../../src/options/smt_options"
 template <> void Options::assign(options::bitblastStep__option_t, std::string option, std::string value);
-#line 122 "../../../../../src/options/smt_options"
+#line 124 "../../../src/options/smt_options"
 template <> const options::parseStep__option_t::type& Options::operator[](options::parseStep__option_t) const;
-#line 122 "../../../../../src/options/smt_options"
+#line 124 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::parseStep__option_t) const;
-#line 122 "../../../../../src/options/smt_options"
+#line 124 "../../../src/options/smt_options"
 template <> void Options::assign(options::parseStep__option_t, std::string option, std::string value);
-#line 125 "../../../../../src/options/smt_options"
+#line 127 "../../../src/options/smt_options"
 template <> const options::lemmaStep__option_t::type& Options::operator[](options::lemmaStep__option_t) const;
-#line 125 "../../../../../src/options/smt_options"
+#line 127 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::lemmaStep__option_t) const;
-#line 125 "../../../../../src/options/smt_options"
+#line 127 "../../../src/options/smt_options"
 template <> void Options::assign(options::lemmaStep__option_t, std::string option, std::string value);
-#line 128 "../../../../../src/options/smt_options"
+#line 130 "../../../src/options/smt_options"
 template <> const options::restartStep__option_t::type& Options::operator[](options::restartStep__option_t) const;
-#line 128 "../../../../../src/options/smt_options"
+#line 130 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::restartStep__option_t) const;
-#line 128 "../../../../../src/options/smt_options"
+#line 130 "../../../src/options/smt_options"
 template <> void Options::assign(options::restartStep__option_t, std::string option, std::string value);
-#line 131 "../../../../../src/options/smt_options"
+#line 133 "../../../src/options/smt_options"
 template <> const options::cnfStep__option_t::type& Options::operator[](options::cnfStep__option_t) const;
-#line 131 "../../../../../src/options/smt_options"
+#line 133 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::cnfStep__option_t) const;
-#line 131 "../../../../../src/options/smt_options"
+#line 133 "../../../src/options/smt_options"
 template <> void Options::assign(options::cnfStep__option_t, std::string option, std::string value);
-#line 134 "../../../../../src/options/smt_options"
+#line 136 "../../../src/options/smt_options"
 template <> const options::preprocessStep__option_t::type& Options::operator[](options::preprocessStep__option_t) const;
-#line 134 "../../../../../src/options/smt_options"
+#line 136 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::preprocessStep__option_t) const;
-#line 134 "../../../../../src/options/smt_options"
+#line 136 "../../../src/options/smt_options"
 template <> void Options::assign(options::preprocessStep__option_t, std::string option, std::string value);
-#line 137 "../../../../../src/options/smt_options"
+#line 139 "../../../src/options/smt_options"
 template <> const options::quantifierStep__option_t::type& Options::operator[](options::quantifierStep__option_t) const;
-#line 137 "../../../../../src/options/smt_options"
+#line 139 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::quantifierStep__option_t) const;
-#line 137 "../../../../../src/options/smt_options"
+#line 139 "../../../src/options/smt_options"
 template <> void Options::assign(options::quantifierStep__option_t, std::string option, std::string value);
-#line 140 "../../../../../src/options/smt_options"
+#line 142 "../../../src/options/smt_options"
 template <> const options::satConflictStep__option_t::type& Options::operator[](options::satConflictStep__option_t) const;
-#line 140 "../../../../../src/options/smt_options"
+#line 142 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::satConflictStep__option_t) const;
-#line 140 "../../../../../src/options/smt_options"
+#line 142 "../../../src/options/smt_options"
 template <> void Options::assign(options::satConflictStep__option_t, std::string option, std::string value);
-#line 143 "../../../../../src/options/smt_options"
+#line 145 "../../../src/options/smt_options"
 template <> const options::bvSatConflictStep__option_t::type& Options::operator[](options::bvSatConflictStep__option_t) const;
-#line 143 "../../../../../src/options/smt_options"
+#line 145 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::bvSatConflictStep__option_t) const;
-#line 143 "../../../../../src/options/smt_options"
+#line 145 "../../../src/options/smt_options"
 template <> void Options::assign(options::bvSatConflictStep__option_t, std::string option, std::string value);
-#line 147 "../../../../../src/options/smt_options"
+#line 149 "../../../src/options/smt_options"
 template <> const options::rewriteApplyToConst__option_t::type& Options::operator[](options::rewriteApplyToConst__option_t) const;
-#line 147 "../../../../../src/options/smt_options"
+#line 149 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::rewriteApplyToConst__option_t) const;
-#line 147 "../../../../../src/options/smt_options"
+#line 149 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::rewriteApplyToConst__option_t, std::string option, bool value);
-#line 152 "../../../../../src/options/smt_options"
+#line 154 "../../../src/options/smt_options"
 template <> const options::replayInputFilename__option_t::type& Options::operator[](options::replayInputFilename__option_t) const;
-#line 152 "../../../../../src/options/smt_options"
+#line 154 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::replayInputFilename__option_t) const;
-#line 152 "../../../../../src/options/smt_options"
+#line 154 "../../../src/options/smt_options"
 template <> void Options::assign(options::replayInputFilename__option_t, std::string option, std::string value);
-#line 156 "../../../../../src/options/smt_options"
+#line 158 "../../../src/options/smt_options"
 template <> const options::replayLogFilename__option_t::type& Options::operator[](options::replayLogFilename__option_t) const;
-#line 156 "../../../../../src/options/smt_options"
+#line 158 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::replayLogFilename__option_t) const;
-#line 156 "../../../../../src/options/smt_options"
+#line 158 "../../../src/options/smt_options"
 template <> void Options::assign(options::replayLogFilename__option_t, std::string option, std::string value);
-#line 159 "../../../../../src/options/smt_options"
+#line 161 "../../../src/options/smt_options"
 template <> const options::forceNoLimitCpuWhileDump__option_t::type& Options::operator[](options::forceNoLimitCpuWhileDump__option_t) const;
-#line 159 "../../../../../src/options/smt_options"
+#line 161 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::forceNoLimitCpuWhileDump__option_t) const;
-#line 159 "../../../../../src/options/smt_options"
+#line 161 "../../../src/options/smt_options"
 template <> void Options::assignBool(options::forceNoLimitCpuWhileDump__option_t, std::string option, bool value);
-#line 162 "../../../../../src/options/smt_options"
+#line 164 "../../../src/options/smt_options"
 template <> const options::solveIntAsBV__option_t::type& Options::operator[](options::solveIntAsBV__option_t) const;
-#line 162 "../../../../../src/options/smt_options"
+#line 164 "../../../src/options/smt_options"
 template <> bool Options::wasSetByUser(options::solveIntAsBV__option_t) const;
-#line 162 "../../../../../src/options/smt_options"
+#line 164 "../../../src/options/smt_options"
 template <> void Options::assign(options::solveIntAsBV__option_t, std::string option, std::string value);
+#line 167 "../../../src/options/smt_options"
+template <> const options::solveRealAsInt__option_t::type& Options::operator[](options::solveRealAsInt__option_t) const;
+#line 167 "../../../src/options/smt_options"
+template <> bool Options::wasSetByUser(options::solveRealAsInt__option_t) const;
+#line 167 "../../../src/options/smt_options"
+template <> void Options::assignBool(options::solveRealAsInt__option_t, std::string option, bool value);
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/smt_options"
+#line 8 "../../../src/options/smt_options"
 inline dumpModeString__option_t::type dumpModeString__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 8 "../../../../../src/options/smt_options"
+#line 8 "../../../src/options/smt_options"
 inline bool dumpModeString__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 10 "../../../../../src/options/smt_options"
+#line 10 "../../../src/options/smt_options"
 inline dumpToFileName__option_t::type dumpToFileName__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 10 "../../../../../src/options/smt_options"
+#line 10 "../../../src/options/smt_options"
 inline bool dumpToFileName__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 13 "../../../../../src/options/smt_options"
+#line 13 "../../../src/options/smt_options"
 inline forceLogicString__option_t::type forceLogicString__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 13 "../../../../../src/options/smt_options"
+#line 13 "../../../src/options/smt_options"
 inline bool forceLogicString__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 16 "../../../../../src/options/smt_options"
+#line 16 "../../../src/options/smt_options"
 inline simplificationMode__option_t::type simplificationMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 16 "../../../../../src/options/smt_options"
+#line 16 "../../../src/options/smt_options"
 inline bool simplificationMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 16 "../../../../../src/options/smt_options"
+#line 16 "../../../src/options/smt_options"
 inline void simplificationMode__option_t::set(const simplificationMode__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 21 "../../../../../src/options/smt_options"
+#line 21 "../../../src/options/smt_options"
 inline doStaticLearning__option_t::type doStaticLearning__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 21 "../../../../../src/options/smt_options"
+#line 21 "../../../src/options/smt_options"
 inline bool doStaticLearning__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 24 "../../../../../src/options/smt_options"
+#line 24 "../../../src/options/smt_options"
 inline expandDefinitions__option_t::type expandDefinitions__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 24 "../../../../../src/options/smt_options"
+#line 24 "../../../src/options/smt_options"
 inline bool expandDefinitions__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 26 "../../../../../src/options/smt_options"
+#line 26 "../../../src/options/smt_options"
 inline produceModels__option_t::type produceModels__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 26 "../../../../../src/options/smt_options"
+#line 26 "../../../src/options/smt_options"
 inline bool produceModels__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 28 "../../../../../src/options/smt_options"
+#line 28 "../../../src/options/smt_options"
 inline checkModels__option_t::type checkModels__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 28 "../../../../../src/options/smt_options"
+#line 28 "../../../src/options/smt_options"
 inline bool checkModels__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 30 "../../../../../src/options/smt_options"
+#line 30 "../../../src/options/smt_options"
 inline dumpModels__option_t::type dumpModels__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 30 "../../../../../src/options/smt_options"
+#line 30 "../../../src/options/smt_options"
 inline bool dumpModels__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 32 "../../../../../src/options/smt_options"
+#line 32 "../../../src/options/smt_options"
 inline omitDontCares__option_t::type omitDontCares__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 32 "../../../../../src/options/smt_options"
+#line 32 "../../../src/options/smt_options"
 inline bool omitDontCares__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 34 "../../../../../src/options/smt_options"
+#line 34 "../../../src/options/smt_options"
 inline proof__option_t::type proof__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 34 "../../../../../src/options/smt_options"
+#line 34 "../../../src/options/smt_options"
 inline bool proof__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 36 "../../../../../src/options/smt_options"
+#line 36 "../../../src/options/smt_options"
 inline checkProofs__option_t::type checkProofs__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 36 "../../../../../src/options/smt_options"
+#line 36 "../../../src/options/smt_options"
 inline bool checkProofs__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 36 "../../../../../src/options/smt_options"
+#line 36 "../../../src/options/smt_options"
 inline void checkProofs__option_t::set(const checkProofs__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 38 "../../../../../src/options/smt_options"
+#line 38 "../../../src/options/smt_options"
 inline dumpProofs__option_t::type dumpProofs__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 38 "../../../../../src/options/smt_options"
+#line 38 "../../../src/options/smt_options"
 inline bool dumpProofs__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 40 "../../../../../src/options/smt_options"
+#line 40 "../../../src/options/smt_options"
 inline dumpInstantiations__option_t::type dumpInstantiations__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 40 "../../../../../src/options/smt_options"
+#line 40 "../../../src/options/smt_options"
 inline bool dumpInstantiations__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 42 "../../../../../src/options/smt_options"
+#line 42 "../../../src/options/smt_options"
 inline dumpSynth__option_t::type dumpSynth__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 42 "../../../../../src/options/smt_options"
+#line 42 "../../../src/options/smt_options"
 inline bool dumpSynth__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 42 "../../../../../src/options/smt_options"
+#line 42 "../../../src/options/smt_options"
 inline void dumpSynth__option_t::set(const dumpSynth__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 44 "../../../../../src/options/smt_options"
+#line 44 "../../../src/options/smt_options"
 inline unsatCores__option_t::type unsatCores__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 44 "../../../../../src/options/smt_options"
+#line 44 "../../../src/options/smt_options"
 inline bool unsatCores__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 46 "../../../../../src/options/smt_options"
+#line 46 "../../../src/options/smt_options"
 inline checkUnsatCores__option_t::type checkUnsatCores__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 46 "../../../../../src/options/smt_options"
+#line 46 "../../../src/options/smt_options"
 inline bool checkUnsatCores__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 46 "../../../../../src/options/smt_options"
+#line 46 "../../../src/options/smt_options"
 inline void checkUnsatCores__option_t::set(const checkUnsatCores__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 48 "../../../../../src/options/smt_options"
+#line 48 "../../../src/options/smt_options"
 inline dumpUnsatCores__option_t::type dumpUnsatCores__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 48 "../../../../../src/options/smt_options"
+#line 48 "../../../src/options/smt_options"
 inline bool dumpUnsatCores__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 51 "../../../../../src/options/smt_options"
+#line 50 "../../../src/options/smt_options"
+inline dumpUnsatCoresFull__option_t::type dumpUnsatCoresFull__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 50 "../../../src/options/smt_options"
+inline bool dumpUnsatCoresFull__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 53 "../../../src/options/smt_options"
 inline produceAssignments__option_t::type produceAssignments__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 51 "../../../../../src/options/smt_options"
+#line 53 "../../../src/options/smt_options"
 inline bool produceAssignments__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 54 "../../../../../src/options/smt_options"
+#line 56 "../../../src/options/smt_options"
 inline interactiveMode__option_t::type interactiveMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 54 "../../../../../src/options/smt_options"
+#line 56 "../../../src/options/smt_options"
 inline bool interactiveMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 54 "../../../../../src/options/smt_options"
+#line 56 "../../../src/options/smt_options"
 inline void interactiveMode__option_t::set(const interactiveMode__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 56 "../../../../../src/options/smt_options"
+#line 58 "../../../src/options/smt_options"
 inline produceAssertions__option_t::type produceAssertions__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 56 "../../../../../src/options/smt_options"
+#line 58 "../../../src/options/smt_options"
 inline bool produceAssertions__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 56 "../../../../../src/options/smt_options"
+#line 58 "../../../src/options/smt_options"
 inline void produceAssertions__option_t::set(const produceAssertions__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 59 "../../../../../src/options/smt_options"
+#line 61 "../../../src/options/smt_options"
 inline doITESimp__option_t::type doITESimp__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 59 "../../../../../src/options/smt_options"
+#line 61 "../../../src/options/smt_options"
 inline bool doITESimp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 59 "../../../../../src/options/smt_options"
+#line 61 "../../../src/options/smt_options"
 inline void doITESimp__option_t::set(const doITESimp__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 62 "../../../../../src/options/smt_options"
+#line 64 "../../../src/options/smt_options"
 inline doITESimpOnRepeat__option_t::type doITESimpOnRepeat__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 62 "../../../../../src/options/smt_options"
+#line 64 "../../../src/options/smt_options"
 inline bool doITESimpOnRepeat__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 62 "../../../../../src/options/smt_options"
+#line 64 "../../../src/options/smt_options"
 inline void doITESimpOnRepeat__option_t::set(const doITESimpOnRepeat__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 65 "../../../../../src/options/smt_options"
+#line 67 "../../../src/options/smt_options"
 inline simplifyWithCareEnabled__option_t::type simplifyWithCareEnabled__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 65 "../../../../../src/options/smt_options"
+#line 67 "../../../src/options/smt_options"
 inline bool simplifyWithCareEnabled__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 65 "../../../../../src/options/smt_options"
+#line 67 "../../../src/options/smt_options"
 inline void simplifyWithCareEnabled__option_t::set(const simplifyWithCareEnabled__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 68 "../../../../../src/options/smt_options"
+#line 70 "../../../src/options/smt_options"
 inline compressItes__option_t::type compressItes__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 68 "../../../../../src/options/smt_options"
+#line 70 "../../../src/options/smt_options"
 inline bool compressItes__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 68 "../../../../../src/options/smt_options"
+#line 70 "../../../src/options/smt_options"
 inline void compressItes__option_t::set(const compressItes__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 71 "../../../../../src/options/smt_options"
+#line 73 "../../../src/options/smt_options"
 inline unconstrainedSimp__option_t::type unconstrainedSimp__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 71 "../../../../../src/options/smt_options"
+#line 73 "../../../src/options/smt_options"
 inline bool unconstrainedSimp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 71 "../../../../../src/options/smt_options"
+#line 73 "../../../src/options/smt_options"
 inline void unconstrainedSimp__option_t::set(const unconstrainedSimp__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 74 "../../../../../src/options/smt_options"
+#line 76 "../../../src/options/smt_options"
 inline repeatSimp__option_t::type repeatSimp__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 74 "../../../../../src/options/smt_options"
+#line 76 "../../../src/options/smt_options"
 inline bool repeatSimp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 74 "../../../../../src/options/smt_options"
+#line 76 "../../../src/options/smt_options"
 inline void repeatSimp__option_t::set(const repeatSimp__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 77 "../../../../../src/options/smt_options"
+#line 79 "../../../src/options/smt_options"
 inline zombieHuntThreshold__option_t::type zombieHuntThreshold__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 77 "../../../../../src/options/smt_options"
+#line 79 "../../../src/options/smt_options"
 inline bool zombieHuntThreshold__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 80 "../../../../../src/options/smt_options"
+#line 82 "../../../src/options/smt_options"
 inline sortInference__option_t::type sortInference__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 80 "../../../../../src/options/smt_options"
+#line 82 "../../../src/options/smt_options"
 inline bool sortInference__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 80 "../../../../../src/options/smt_options"
+#line 82 "../../../src/options/smt_options"
 inline void sortInference__option_t::set(const sortInference__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 83 "../../../../../src/options/smt_options"
+#line 85 "../../../src/options/smt_options"
 inline incrementalSolving__option_t::type incrementalSolving__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 83 "../../../../../src/options/smt_options"
+#line 85 "../../../src/options/smt_options"
 inline bool incrementalSolving__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 86 "../../../../../src/options/smt_options"
+#line 88 "../../../src/options/smt_options"
 inline abstractValues__option_t::type abstractValues__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 86 "../../../../../src/options/smt_options"
+#line 88 "../../../src/options/smt_options"
 inline bool abstractValues__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 88 "../../../../../src/options/smt_options"
+#line 90 "../../../src/options/smt_options"
 inline modelUninterpDtEnum__option_t::type modelUninterpDtEnum__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 88 "../../../../../src/options/smt_options"
+#line 90 "../../../src/options/smt_options"
 inline bool modelUninterpDtEnum__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 91 "../../../../../src/options/smt_options"
+#line 93 "../../../src/options/smt_options"
 inline regularChannelName__option_t::type regularChannelName__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 91 "../../../../../src/options/smt_options"
+#line 93 "../../../src/options/smt_options"
 inline bool regularChannelName__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 93 "../../../../../src/options/smt_options"
+#line 95 "../../../src/options/smt_options"
 inline diagnosticChannelName__option_t::type diagnosticChannelName__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 93 "../../../../../src/options/smt_options"
+#line 95 "../../../src/options/smt_options"
 inline bool diagnosticChannelName__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 96 "../../../../../src/options/smt_options"
+#line 98 "../../../src/options/smt_options"
 inline cumulativeMillisecondLimit__option_t::type cumulativeMillisecondLimit__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 96 "../../../../../src/options/smt_options"
+#line 98 "../../../src/options/smt_options"
 inline bool cumulativeMillisecondLimit__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 98 "../../../../../src/options/smt_options"
+#line 100 "../../../src/options/smt_options"
 inline perCallMillisecondLimit__option_t::type perCallMillisecondLimit__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 98 "../../../../../src/options/smt_options"
+#line 100 "../../../src/options/smt_options"
 inline bool perCallMillisecondLimit__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 100 "../../../../../src/options/smt_options"
+#line 102 "../../../src/options/smt_options"
 inline cumulativeResourceLimit__option_t::type cumulativeResourceLimit__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 100 "../../../../../src/options/smt_options"
+#line 102 "../../../src/options/smt_options"
 inline bool cumulativeResourceLimit__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 102 "../../../../../src/options/smt_options"
+#line 104 "../../../src/options/smt_options"
 inline perCallResourceLimit__option_t::type perCallResourceLimit__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 102 "../../../../../src/options/smt_options"
+#line 104 "../../../src/options/smt_options"
 inline bool perCallResourceLimit__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 104 "../../../../../src/options/smt_options"
+#line 106 "../../../src/options/smt_options"
 inline hardLimit__option_t::type hardLimit__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 104 "../../../../../src/options/smt_options"
+#line 106 "../../../src/options/smt_options"
 inline bool hardLimit__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 106 "../../../../../src/options/smt_options"
+#line 108 "../../../src/options/smt_options"
 inline cpuTime__option_t::type cpuTime__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 106 "../../../../../src/options/smt_options"
+#line 108 "../../../src/options/smt_options"
 inline bool cpuTime__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 110 "../../../../../src/options/smt_options"
+#line 112 "../../../src/options/smt_options"
 inline rewriteStep__option_t::type rewriteStep__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 110 "../../../../../src/options/smt_options"
+#line 112 "../../../src/options/smt_options"
 inline bool rewriteStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 113 "../../../../../src/options/smt_options"
+#line 115 "../../../src/options/smt_options"
 inline theoryCheckStep__option_t::type theoryCheckStep__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 113 "../../../../../src/options/smt_options"
+#line 115 "../../../src/options/smt_options"
 inline bool theoryCheckStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 116 "../../../../../src/options/smt_options"
+#line 118 "../../../src/options/smt_options"
 inline decisionStep__option_t::type decisionStep__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 116 "../../../../../src/options/smt_options"
+#line 118 "../../../src/options/smt_options"
 inline bool decisionStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 119 "../../../../../src/options/smt_options"
+#line 121 "../../../src/options/smt_options"
 inline bitblastStep__option_t::type bitblastStep__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 119 "../../../../../src/options/smt_options"
+#line 121 "../../../src/options/smt_options"
 inline bool bitblastStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 122 "../../../../../src/options/smt_options"
+#line 124 "../../../src/options/smt_options"
 inline parseStep__option_t::type parseStep__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 122 "../../../../../src/options/smt_options"
+#line 124 "../../../src/options/smt_options"
 inline bool parseStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 125 "../../../../../src/options/smt_options"
+#line 127 "../../../src/options/smt_options"
 inline lemmaStep__option_t::type lemmaStep__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 125 "../../../../../src/options/smt_options"
+#line 127 "../../../src/options/smt_options"
 inline bool lemmaStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 128 "../../../../../src/options/smt_options"
+#line 130 "../../../src/options/smt_options"
 inline restartStep__option_t::type restartStep__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 128 "../../../../../src/options/smt_options"
+#line 130 "../../../src/options/smt_options"
 inline bool restartStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 131 "../../../../../src/options/smt_options"
+#line 133 "../../../src/options/smt_options"
 inline cnfStep__option_t::type cnfStep__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 131 "../../../../../src/options/smt_options"
+#line 133 "../../../src/options/smt_options"
 inline bool cnfStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 134 "../../../../../src/options/smt_options"
+#line 136 "../../../src/options/smt_options"
 inline preprocessStep__option_t::type preprocessStep__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 134 "../../../../../src/options/smt_options"
+#line 136 "../../../src/options/smt_options"
 inline bool preprocessStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 137 "../../../../../src/options/smt_options"
+#line 139 "../../../src/options/smt_options"
 inline quantifierStep__option_t::type quantifierStep__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 137 "../../../../../src/options/smt_options"
+#line 139 "../../../src/options/smt_options"
 inline bool quantifierStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 140 "../../../../../src/options/smt_options"
+#line 142 "../../../src/options/smt_options"
 inline satConflictStep__option_t::type satConflictStep__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 140 "../../../../../src/options/smt_options"
+#line 142 "../../../src/options/smt_options"
 inline bool satConflictStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 143 "../../../../../src/options/smt_options"
+#line 145 "../../../src/options/smt_options"
 inline bvSatConflictStep__option_t::type bvSatConflictStep__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 143 "../../../../../src/options/smt_options"
+#line 145 "../../../src/options/smt_options"
 inline bool bvSatConflictStep__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 147 "../../../../../src/options/smt_options"
+#line 149 "../../../src/options/smt_options"
 inline rewriteApplyToConst__option_t::type rewriteApplyToConst__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 147 "../../../../../src/options/smt_options"
+#line 149 "../../../src/options/smt_options"
 inline bool rewriteApplyToConst__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 152 "../../../../../src/options/smt_options"
+#line 154 "../../../src/options/smt_options"
 inline replayInputFilename__option_t::type replayInputFilename__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 152 "../../../../../src/options/smt_options"
+#line 154 "../../../src/options/smt_options"
 inline bool replayInputFilename__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 156 "../../../../../src/options/smt_options"
+#line 158 "../../../src/options/smt_options"
 inline replayLogFilename__option_t::type replayLogFilename__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 156 "../../../../../src/options/smt_options"
+#line 158 "../../../src/options/smt_options"
 inline bool replayLogFilename__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 159 "../../../../../src/options/smt_options"
+#line 161 "../../../src/options/smt_options"
 inline forceNoLimitCpuWhileDump__option_t::type forceNoLimitCpuWhileDump__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 159 "../../../../../src/options/smt_options"
+#line 161 "../../../src/options/smt_options"
 inline bool forceNoLimitCpuWhileDump__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 162 "../../../../../src/options/smt_options"
+#line 164 "../../../src/options/smt_options"
 inline solveIntAsBV__option_t::type solveIntAsBV__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 162 "../../../../../src/options/smt_options"
+#line 164 "../../../src/options/smt_options"
 inline bool solveIntAsBV__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 167 "../../../src/options/smt_options"
+inline solveRealAsInt__option_t::type solveRealAsInt__option_t::operator()() const { return (*Options::current())[*this]; }
+#line 167 "../../../src/options/smt_options"
+inline bool solveRealAsInt__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
+
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/strings_options.cpp b/src/options/strings_options.cpp
index c015847..9d262f9 100644
--- a/src/options/strings_options.cpp
+++ b/src/options/strings_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -19,168 +19,168 @@
 namespace CVC4 {
 
 
-#line 8 "../../../../../src/options/strings_options"
+#line 8 "../../../src/options/strings_options"
 template <> void Options::set(options::stringExp__option_t, const options::stringExp__option_t::type& x) { d_holder->stringExp = x; }
-#line 8 "../../../../../src/options/strings_options"
+#line 8 "../../../src/options/strings_options"
 template <> const options::stringExp__option_t::type& Options::operator[](options::stringExp__option_t) const { return d_holder->stringExp; }
-#line 8 "../../../../../src/options/strings_options"
+#line 8 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringExp__option_t) const { return d_holder->stringExp__setByUser__; }
-#line 12 "../../../../../src/options/strings_options"
+#line 12 "../../../src/options/strings_options"
 template <> const options::stringLB__option_t::type& Options::operator[](options::stringLB__option_t) const { return d_holder->stringLB; }
-#line 12 "../../../../../src/options/strings_options"
+#line 12 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringLB__option_t) const { return d_holder->stringLB__setByUser__; }
-#line 16 "../../../../../src/options/strings_options"
+#line 16 "../../../src/options/strings_options"
 template <> const options::stdASCII__option_t::type& Options::operator[](options::stdASCII__option_t) const { return d_holder->stdASCII; }
-#line 16 "../../../../../src/options/strings_options"
+#line 16 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stdASCII__option_t) const { return d_holder->stdASCII__setByUser__; }
-#line 19 "../../../../../src/options/strings_options"
+#line 19 "../../../src/options/strings_options"
 template <> void Options::set(options::stringFMF__option_t, const options::stringFMF__option_t::type& x) { d_holder->stringFMF = x; }
-#line 19 "../../../../../src/options/strings_options"
+#line 19 "../../../src/options/strings_options"
 template <> const options::stringFMF__option_t::type& Options::operator[](options::stringFMF__option_t) const { return d_holder->stringFMF; }
-#line 19 "../../../../../src/options/strings_options"
+#line 19 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringFMF__option_t) const { return d_holder->stringFMF__setByUser__; }
-#line 22 "../../../../../src/options/strings_options"
+#line 22 "../../../src/options/strings_options"
 template <> const options::stringEager__option_t::type& Options::operator[](options::stringEager__option_t) const { return d_holder->stringEager; }
-#line 22 "../../../../../src/options/strings_options"
+#line 22 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringEager__option_t) const { return d_holder->stringEager__setByUser__; }
-#line 25 "../../../../../src/options/strings_options"
+#line 25 "../../../src/options/strings_options"
 template <> const options::stringEIT__option_t::type& Options::operator[](options::stringEIT__option_t) const { return d_holder->stringEIT; }
-#line 25 "../../../../../src/options/strings_options"
+#line 25 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringEIT__option_t) const { return d_holder->stringEIT__setByUser__; }
-#line 28 "../../../../../src/options/strings_options"
+#line 28 "../../../src/options/strings_options"
 template <> const options::stringOpt1__option_t::type& Options::operator[](options::stringOpt1__option_t) const { return d_holder->stringOpt1; }
-#line 28 "../../../../../src/options/strings_options"
+#line 28 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringOpt1__option_t) const { return d_holder->stringOpt1__setByUser__; }
-#line 31 "../../../../../src/options/strings_options"
+#line 31 "../../../src/options/strings_options"
 template <> const options::stringOpt2__option_t::type& Options::operator[](options::stringOpt2__option_t) const { return d_holder->stringOpt2; }
-#line 31 "../../../../../src/options/strings_options"
+#line 31 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringOpt2__option_t) const { return d_holder->stringOpt2__setByUser__; }
-#line 34 "../../../../../src/options/strings_options"
+#line 34 "../../../src/options/strings_options"
 template <> const options::stringIgnNegMembership__option_t::type& Options::operator[](options::stringIgnNegMembership__option_t) const { return d_holder->stringIgnNegMembership; }
-#line 34 "../../../../../src/options/strings_options"
+#line 34 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringIgnNegMembership__option_t) const { return d_holder->stringIgnNegMembership__setByUser__; }
-#line 40 "../../../../../src/options/strings_options"
+#line 40 "../../../src/options/strings_options"
 template <> const options::stringLazyPreproc__option_t::type& Options::operator[](options::stringLazyPreproc__option_t) const { return d_holder->stringLazyPreproc; }
-#line 40 "../../../../../src/options/strings_options"
+#line 40 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringLazyPreproc__option_t) const { return d_holder->stringLazyPreproc__setByUser__; }
-#line 43 "../../../../../src/options/strings_options"
+#line 43 "../../../src/options/strings_options"
 template <> const options::stringLenGeqZ__option_t::type& Options::operator[](options::stringLenGeqZ__option_t) const { return d_holder->stringLenGeqZ; }
-#line 43 "../../../../../src/options/strings_options"
+#line 43 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringLenGeqZ__option_t) const { return d_holder->stringLenGeqZ__setByUser__; }
-#line 46 "../../../../../src/options/strings_options"
+#line 46 "../../../src/options/strings_options"
 template <> const options::stringLenNorm__option_t::type& Options::operator[](options::stringLenNorm__option_t) const { return d_holder->stringLenNorm; }
-#line 46 "../../../../../src/options/strings_options"
+#line 46 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringLenNorm__option_t) const { return d_holder->stringLenNorm__setByUser__; }
-#line 48 "../../../../../src/options/strings_options"
+#line 48 "../../../src/options/strings_options"
 template <> const options::stringSplitEmp__option_t::type& Options::operator[](options::stringSplitEmp__option_t) const { return d_holder->stringSplitEmp; }
-#line 48 "../../../../../src/options/strings_options"
+#line 48 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringSplitEmp__option_t) const { return d_holder->stringSplitEmp__setByUser__; }
-#line 50 "../../../../../src/options/strings_options"
+#line 50 "../../../src/options/strings_options"
 template <> const options::stringInferSym__option_t::type& Options::operator[](options::stringInferSym__option_t) const { return d_holder->stringInferSym; }
-#line 50 "../../../../../src/options/strings_options"
+#line 50 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringInferSym__option_t) const { return d_holder->stringInferSym__setByUser__; }
-#line 52 "../../../../../src/options/strings_options"
+#line 52 "../../../src/options/strings_options"
 template <> const options::stringEagerLen__option_t::type& Options::operator[](options::stringEagerLen__option_t) const { return d_holder->stringEagerLen; }
-#line 52 "../../../../../src/options/strings_options"
+#line 52 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringEagerLen__option_t) const { return d_holder->stringEagerLen__setByUser__; }
-#line 54 "../../../../../src/options/strings_options"
+#line 54 "../../../src/options/strings_options"
 template <> const options::stringCheckEntailLen__option_t::type& Options::operator[](options::stringCheckEntailLen__option_t) const { return d_holder->stringCheckEntailLen; }
-#line 54 "../../../../../src/options/strings_options"
+#line 54 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringCheckEntailLen__option_t) const { return d_holder->stringCheckEntailLen__setByUser__; }
-#line 56 "../../../../../src/options/strings_options"
+#line 56 "../../../src/options/strings_options"
 template <> const options::stringProcessLoop__option_t::type& Options::operator[](options::stringProcessLoop__option_t) const { return d_holder->stringProcessLoop; }
-#line 56 "../../../../../src/options/strings_options"
+#line 56 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringProcessLoop__option_t) const { return d_holder->stringProcessLoop__setByUser__; }
-#line 58 "../../../../../src/options/strings_options"
+#line 58 "../../../src/options/strings_options"
 template <> const options::stringAbortLoop__option_t::type& Options::operator[](options::stringAbortLoop__option_t) const { return d_holder->stringAbortLoop; }
-#line 58 "../../../../../src/options/strings_options"
+#line 58 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringAbortLoop__option_t) const { return d_holder->stringAbortLoop__setByUser__; }
-#line 60 "../../../../../src/options/strings_options"
+#line 60 "../../../src/options/strings_options"
 template <> const options::stringInferAsLemmas__option_t::type& Options::operator[](options::stringInferAsLemmas__option_t) const { return d_holder->stringInferAsLemmas; }
-#line 60 "../../../../../src/options/strings_options"
+#line 60 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringInferAsLemmas__option_t) const { return d_holder->stringInferAsLemmas__setByUser__; }
-#line 62 "../../../../../src/options/strings_options"
+#line 62 "../../../src/options/strings_options"
 template <> const options::stringRExplainLemmas__option_t::type& Options::operator[](options::stringRExplainLemmas__option_t) const { return d_holder->stringRExplainLemmas; }
-#line 62 "../../../../../src/options/strings_options"
+#line 62 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringRExplainLemmas__option_t) const { return d_holder->stringRExplainLemmas__setByUser__; }
-#line 64 "../../../../../src/options/strings_options"
+#line 64 "../../../src/options/strings_options"
 template <> const options::stringMinPrefixExplain__option_t::type& Options::operator[](options::stringMinPrefixExplain__option_t) const { return d_holder->stringMinPrefixExplain; }
-#line 64 "../../../../../src/options/strings_options"
+#line 64 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringMinPrefixExplain__option_t) const { return d_holder->stringMinPrefixExplain__setByUser__; }
-#line 66 "../../../../../src/options/strings_options"
+#line 66 "../../../src/options/strings_options"
 template <> const options::stringGuessModel__option_t::type& Options::operator[](options::stringGuessModel__option_t) const { return d_holder->stringGuessModel; }
-#line 66 "../../../../../src/options/strings_options"
+#line 66 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringGuessModel__option_t) const { return d_holder->stringGuessModel__setByUser__; }
-#line 68 "../../../../../src/options/strings_options"
+#line 68 "../../../src/options/strings_options"
 template <> const options::stringUfReduct__option_t::type& Options::operator[](options::stringUfReduct__option_t) const { return d_holder->stringUfReduct; }
-#line 68 "../../../../../src/options/strings_options"
+#line 68 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringUfReduct__option_t) const { return d_holder->stringUfReduct__setByUser__; }
-#line 70 "../../../../../src/options/strings_options"
+#line 70 "../../../src/options/strings_options"
 template <> const options::stringBinaryCsp__option_t::type& Options::operator[](options::stringBinaryCsp__option_t) const { return d_holder->stringBinaryCsp; }
-#line 70 "../../../../../src/options/strings_options"
+#line 70 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringBinaryCsp__option_t) const { return d_holder->stringBinaryCsp__setByUser__; }
-#line 72 "../../../../../src/options/strings_options"
+#line 72 "../../../src/options/strings_options"
 template <> const options::stringLenPropCsp__option_t::type& Options::operator[](options::stringLenPropCsp__option_t) const { return d_holder->stringLenPropCsp; }
-#line 72 "../../../../../src/options/strings_options"
+#line 72 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringLenPropCsp__option_t) const { return d_holder->stringLenPropCsp__setByUser__; }
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/strings_options"
+#line 8 "../../../src/options/strings_options"
 struct stringExp__option_t stringExp;
-#line 12 "../../../../../src/options/strings_options"
+#line 12 "../../../src/options/strings_options"
 struct stringLB__option_t stringLB;
-#line 16 "../../../../../src/options/strings_options"
+#line 16 "../../../src/options/strings_options"
 struct stdASCII__option_t stdASCII;
-#line 19 "../../../../../src/options/strings_options"
+#line 19 "../../../src/options/strings_options"
 struct stringFMF__option_t stringFMF;
-#line 22 "../../../../../src/options/strings_options"
+#line 22 "../../../src/options/strings_options"
 struct stringEager__option_t stringEager;
-#line 25 "../../../../../src/options/strings_options"
+#line 25 "../../../src/options/strings_options"
 struct stringEIT__option_t stringEIT;
-#line 28 "../../../../../src/options/strings_options"
+#line 28 "../../../src/options/strings_options"
 struct stringOpt1__option_t stringOpt1;
-#line 31 "../../../../../src/options/strings_options"
+#line 31 "../../../src/options/strings_options"
 struct stringOpt2__option_t stringOpt2;
-#line 34 "../../../../../src/options/strings_options"
+#line 34 "../../../src/options/strings_options"
 struct stringIgnNegMembership__option_t stringIgnNegMembership;
-#line 40 "../../../../../src/options/strings_options"
+#line 40 "../../../src/options/strings_options"
 struct stringLazyPreproc__option_t stringLazyPreproc;
-#line 43 "../../../../../src/options/strings_options"
+#line 43 "../../../src/options/strings_options"
 struct stringLenGeqZ__option_t stringLenGeqZ;
-#line 46 "../../../../../src/options/strings_options"
+#line 46 "../../../src/options/strings_options"
 struct stringLenNorm__option_t stringLenNorm;
-#line 48 "../../../../../src/options/strings_options"
+#line 48 "../../../src/options/strings_options"
 struct stringSplitEmp__option_t stringSplitEmp;
-#line 50 "../../../../../src/options/strings_options"
+#line 50 "../../../src/options/strings_options"
 struct stringInferSym__option_t stringInferSym;
-#line 52 "../../../../../src/options/strings_options"
+#line 52 "../../../src/options/strings_options"
 struct stringEagerLen__option_t stringEagerLen;
-#line 54 "../../../../../src/options/strings_options"
+#line 54 "../../../src/options/strings_options"
 struct stringCheckEntailLen__option_t stringCheckEntailLen;
-#line 56 "../../../../../src/options/strings_options"
+#line 56 "../../../src/options/strings_options"
 struct stringProcessLoop__option_t stringProcessLoop;
-#line 58 "../../../../../src/options/strings_options"
+#line 58 "../../../src/options/strings_options"
 struct stringAbortLoop__option_t stringAbortLoop;
-#line 60 "../../../../../src/options/strings_options"
+#line 60 "../../../src/options/strings_options"
 struct stringInferAsLemmas__option_t stringInferAsLemmas;
-#line 62 "../../../../../src/options/strings_options"
+#line 62 "../../../src/options/strings_options"
 struct stringRExplainLemmas__option_t stringRExplainLemmas;
-#line 64 "../../../../../src/options/strings_options"
+#line 64 "../../../src/options/strings_options"
 struct stringMinPrefixExplain__option_t stringMinPrefixExplain;
-#line 66 "../../../../../src/options/strings_options"
+#line 66 "../../../src/options/strings_options"
 struct stringGuessModel__option_t stringGuessModel;
-#line 68 "../../../../../src/options/strings_options"
+#line 68 "../../../src/options/strings_options"
 struct stringUfReduct__option_t stringUfReduct;
-#line 70 "../../../../../src/options/strings_options"
+#line 70 "../../../src/options/strings_options"
 struct stringBinaryCsp__option_t stringBinaryCsp;
-#line 72 "../../../../../src/options/strings_options"
+#line 72 "../../../src/options/strings_options"
 struct stringLenPropCsp__option_t stringLenPropCsp;
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/strings_options.h b/src/options/strings_options.h
index e4a6817..9e7334c 100644
--- a/src/options/strings_options.h
+++ b/src/options/strings_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -22,7 +22,7 @@
 #include "options/options.h"
 
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__STRINGS__FOR_OPTION_HOLDER \
   stringExp__option_t::type stringExp; \
@@ -76,359 +76,359 @@
   stringLenPropCsp__option_t::type stringLenPropCsp; \
   bool stringLenPropCsp__setByUser__;
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/strings_options"
+#line 8 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringExp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } stringExp CVC4_PUBLIC;
-#line 12 "../../../../../src/options/strings_options"
+#line 12 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringLB__option_t { typedef unsigned type; type operator()() const; bool wasSetByUser() const; } stringLB CVC4_PUBLIC;
-#line 16 "../../../../../src/options/strings_options"
+#line 16 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stdASCII__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stdASCII CVC4_PUBLIC;
-#line 19 "../../../../../src/options/strings_options"
+#line 19 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringFMF__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } stringFMF CVC4_PUBLIC;
-#line 22 "../../../../../src/options/strings_options"
+#line 22 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringEager__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringEager CVC4_PUBLIC;
-#line 25 "../../../../../src/options/strings_options"
+#line 25 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringEIT__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringEIT CVC4_PUBLIC;
-#line 28 "../../../../../src/options/strings_options"
+#line 28 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringOpt1__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringOpt1 CVC4_PUBLIC;
-#line 31 "../../../../../src/options/strings_options"
+#line 31 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringOpt2__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringOpt2 CVC4_PUBLIC;
-#line 34 "../../../../../src/options/strings_options"
+#line 34 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringIgnNegMembership__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringIgnNegMembership CVC4_PUBLIC;
-#line 40 "../../../../../src/options/strings_options"
+#line 40 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringLazyPreproc__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringLazyPreproc CVC4_PUBLIC;
-#line 43 "../../../../../src/options/strings_options"
+#line 43 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringLenGeqZ__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringLenGeqZ CVC4_PUBLIC;
-#line 46 "../../../../../src/options/strings_options"
+#line 46 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringLenNorm__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringLenNorm CVC4_PUBLIC;
-#line 48 "../../../../../src/options/strings_options"
+#line 48 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringSplitEmp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringSplitEmp CVC4_PUBLIC;
-#line 50 "../../../../../src/options/strings_options"
+#line 50 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringInferSym__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringInferSym CVC4_PUBLIC;
-#line 52 "../../../../../src/options/strings_options"
+#line 52 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringEagerLen__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringEagerLen CVC4_PUBLIC;
-#line 54 "../../../../../src/options/strings_options"
+#line 54 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringCheckEntailLen__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringCheckEntailLen CVC4_PUBLIC;
-#line 56 "../../../../../src/options/strings_options"
+#line 56 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringProcessLoop__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringProcessLoop CVC4_PUBLIC;
-#line 58 "../../../../../src/options/strings_options"
+#line 58 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringAbortLoop__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringAbortLoop CVC4_PUBLIC;
-#line 60 "../../../../../src/options/strings_options"
+#line 60 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringInferAsLemmas__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringInferAsLemmas CVC4_PUBLIC;
-#line 62 "../../../../../src/options/strings_options"
+#line 62 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringRExplainLemmas__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringRExplainLemmas CVC4_PUBLIC;
-#line 64 "../../../../../src/options/strings_options"
+#line 64 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringMinPrefixExplain__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringMinPrefixExplain CVC4_PUBLIC;
-#line 66 "../../../../../src/options/strings_options"
+#line 66 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringGuessModel__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringGuessModel CVC4_PUBLIC;
-#line 68 "../../../../../src/options/strings_options"
+#line 68 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringUfReduct__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringUfReduct CVC4_PUBLIC;
-#line 70 "../../../../../src/options/strings_options"
+#line 70 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringBinaryCsp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringBinaryCsp CVC4_PUBLIC;
-#line 72 "../../../../../src/options/strings_options"
+#line 72 "../../../src/options/strings_options"
 extern struct CVC4_PUBLIC stringLenPropCsp__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } stringLenPropCsp CVC4_PUBLIC;
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
-#line 8 "../../../../../src/options/strings_options"
+#line 8 "../../../src/options/strings_options"
 template <> void Options::set(options::stringExp__option_t, const options::stringExp__option_t::type& x);
-#line 8 "../../../../../src/options/strings_options"
+#line 8 "../../../src/options/strings_options"
 template <> const options::stringExp__option_t::type& Options::operator[](options::stringExp__option_t) const;
-#line 8 "../../../../../src/options/strings_options"
+#line 8 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringExp__option_t) const;
-#line 8 "../../../../../src/options/strings_options"
+#line 8 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringExp__option_t, std::string option, bool value);
-#line 12 "../../../../../src/options/strings_options"
+#line 12 "../../../src/options/strings_options"
 template <> const options::stringLB__option_t::type& Options::operator[](options::stringLB__option_t) const;
-#line 12 "../../../../../src/options/strings_options"
+#line 12 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringLB__option_t) const;
-#line 12 "../../../../../src/options/strings_options"
+#line 12 "../../../src/options/strings_options"
 template <> void Options::assign(options::stringLB__option_t, std::string option, std::string value);
-#line 16 "../../../../../src/options/strings_options"
+#line 16 "../../../src/options/strings_options"
 template <> const options::stdASCII__option_t::type& Options::operator[](options::stdASCII__option_t) const;
-#line 16 "../../../../../src/options/strings_options"
+#line 16 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stdASCII__option_t) const;
-#line 16 "../../../../../src/options/strings_options"
+#line 16 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stdASCII__option_t, std::string option, bool value);
-#line 19 "../../../../../src/options/strings_options"
+#line 19 "../../../src/options/strings_options"
 template <> void Options::set(options::stringFMF__option_t, const options::stringFMF__option_t::type& x);
-#line 19 "../../../../../src/options/strings_options"
+#line 19 "../../../src/options/strings_options"
 template <> const options::stringFMF__option_t::type& Options::operator[](options::stringFMF__option_t) const;
-#line 19 "../../../../../src/options/strings_options"
+#line 19 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringFMF__option_t) const;
-#line 19 "../../../../../src/options/strings_options"
+#line 19 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringFMF__option_t, std::string option, bool value);
-#line 22 "../../../../../src/options/strings_options"
+#line 22 "../../../src/options/strings_options"
 template <> const options::stringEager__option_t::type& Options::operator[](options::stringEager__option_t) const;
-#line 22 "../../../../../src/options/strings_options"
+#line 22 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringEager__option_t) const;
-#line 22 "../../../../../src/options/strings_options"
+#line 22 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringEager__option_t, std::string option, bool value);
-#line 25 "../../../../../src/options/strings_options"
+#line 25 "../../../src/options/strings_options"
 template <> const options::stringEIT__option_t::type& Options::operator[](options::stringEIT__option_t) const;
-#line 25 "../../../../../src/options/strings_options"
+#line 25 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringEIT__option_t) const;
-#line 25 "../../../../../src/options/strings_options"
+#line 25 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringEIT__option_t, std::string option, bool value);
-#line 28 "../../../../../src/options/strings_options"
+#line 28 "../../../src/options/strings_options"
 template <> const options::stringOpt1__option_t::type& Options::operator[](options::stringOpt1__option_t) const;
-#line 28 "../../../../../src/options/strings_options"
+#line 28 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringOpt1__option_t) const;
-#line 28 "../../../../../src/options/strings_options"
+#line 28 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringOpt1__option_t, std::string option, bool value);
-#line 31 "../../../../../src/options/strings_options"
+#line 31 "../../../src/options/strings_options"
 template <> const options::stringOpt2__option_t::type& Options::operator[](options::stringOpt2__option_t) const;
-#line 31 "../../../../../src/options/strings_options"
+#line 31 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringOpt2__option_t) const;
-#line 31 "../../../../../src/options/strings_options"
+#line 31 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringOpt2__option_t, std::string option, bool value);
-#line 34 "../../../../../src/options/strings_options"
+#line 34 "../../../src/options/strings_options"
 template <> const options::stringIgnNegMembership__option_t::type& Options::operator[](options::stringIgnNegMembership__option_t) const;
-#line 34 "../../../../../src/options/strings_options"
+#line 34 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringIgnNegMembership__option_t) const;
-#line 34 "../../../../../src/options/strings_options"
+#line 34 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringIgnNegMembership__option_t, std::string option, bool value);
-#line 40 "../../../../../src/options/strings_options"
+#line 40 "../../../src/options/strings_options"
 template <> const options::stringLazyPreproc__option_t::type& Options::operator[](options::stringLazyPreproc__option_t) const;
-#line 40 "../../../../../src/options/strings_options"
+#line 40 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringLazyPreproc__option_t) const;
-#line 40 "../../../../../src/options/strings_options"
+#line 40 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringLazyPreproc__option_t, std::string option, bool value);
-#line 43 "../../../../../src/options/strings_options"
+#line 43 "../../../src/options/strings_options"
 template <> const options::stringLenGeqZ__option_t::type& Options::operator[](options::stringLenGeqZ__option_t) const;
-#line 43 "../../../../../src/options/strings_options"
+#line 43 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringLenGeqZ__option_t) const;
-#line 43 "../../../../../src/options/strings_options"
+#line 43 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringLenGeqZ__option_t, std::string option, bool value);
-#line 46 "../../../../../src/options/strings_options"
+#line 46 "../../../src/options/strings_options"
 template <> const options::stringLenNorm__option_t::type& Options::operator[](options::stringLenNorm__option_t) const;
-#line 46 "../../../../../src/options/strings_options"
+#line 46 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringLenNorm__option_t) const;
-#line 46 "../../../../../src/options/strings_options"
+#line 46 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringLenNorm__option_t, std::string option, bool value);
-#line 48 "../../../../../src/options/strings_options"
+#line 48 "../../../src/options/strings_options"
 template <> const options::stringSplitEmp__option_t::type& Options::operator[](options::stringSplitEmp__option_t) const;
-#line 48 "../../../../../src/options/strings_options"
+#line 48 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringSplitEmp__option_t) const;
-#line 48 "../../../../../src/options/strings_options"
+#line 48 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringSplitEmp__option_t, std::string option, bool value);
-#line 50 "../../../../../src/options/strings_options"
+#line 50 "../../../src/options/strings_options"
 template <> const options::stringInferSym__option_t::type& Options::operator[](options::stringInferSym__option_t) const;
-#line 50 "../../../../../src/options/strings_options"
+#line 50 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringInferSym__option_t) const;
-#line 50 "../../../../../src/options/strings_options"
+#line 50 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringInferSym__option_t, std::string option, bool value);
-#line 52 "../../../../../src/options/strings_options"
+#line 52 "../../../src/options/strings_options"
 template <> const options::stringEagerLen__option_t::type& Options::operator[](options::stringEagerLen__option_t) const;
-#line 52 "../../../../../src/options/strings_options"
+#line 52 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringEagerLen__option_t) const;
-#line 52 "../../../../../src/options/strings_options"
+#line 52 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringEagerLen__option_t, std::string option, bool value);
-#line 54 "../../../../../src/options/strings_options"
+#line 54 "../../../src/options/strings_options"
 template <> const options::stringCheckEntailLen__option_t::type& Options::operator[](options::stringCheckEntailLen__option_t) const;
-#line 54 "../../../../../src/options/strings_options"
+#line 54 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringCheckEntailLen__option_t) const;
-#line 54 "../../../../../src/options/strings_options"
+#line 54 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringCheckEntailLen__option_t, std::string option, bool value);
-#line 56 "../../../../../src/options/strings_options"
+#line 56 "../../../src/options/strings_options"
 template <> const options::stringProcessLoop__option_t::type& Options::operator[](options::stringProcessLoop__option_t) const;
-#line 56 "../../../../../src/options/strings_options"
+#line 56 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringProcessLoop__option_t) const;
-#line 56 "../../../../../src/options/strings_options"
+#line 56 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringProcessLoop__option_t, std::string option, bool value);
-#line 58 "../../../../../src/options/strings_options"
+#line 58 "../../../src/options/strings_options"
 template <> const options::stringAbortLoop__option_t::type& Options::operator[](options::stringAbortLoop__option_t) const;
-#line 58 "../../../../../src/options/strings_options"
+#line 58 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringAbortLoop__option_t) const;
-#line 58 "../../../../../src/options/strings_options"
+#line 58 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringAbortLoop__option_t, std::string option, bool value);
-#line 60 "../../../../../src/options/strings_options"
+#line 60 "../../../src/options/strings_options"
 template <> const options::stringInferAsLemmas__option_t::type& Options::operator[](options::stringInferAsLemmas__option_t) const;
-#line 60 "../../../../../src/options/strings_options"
+#line 60 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringInferAsLemmas__option_t) const;
-#line 60 "../../../../../src/options/strings_options"
+#line 60 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringInferAsLemmas__option_t, std::string option, bool value);
-#line 62 "../../../../../src/options/strings_options"
+#line 62 "../../../src/options/strings_options"
 template <> const options::stringRExplainLemmas__option_t::type& Options::operator[](options::stringRExplainLemmas__option_t) const;
-#line 62 "../../../../../src/options/strings_options"
+#line 62 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringRExplainLemmas__option_t) const;
-#line 62 "../../../../../src/options/strings_options"
+#line 62 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringRExplainLemmas__option_t, std::string option, bool value);
-#line 64 "../../../../../src/options/strings_options"
+#line 64 "../../../src/options/strings_options"
 template <> const options::stringMinPrefixExplain__option_t::type& Options::operator[](options::stringMinPrefixExplain__option_t) const;
-#line 64 "../../../../../src/options/strings_options"
+#line 64 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringMinPrefixExplain__option_t) const;
-#line 64 "../../../../../src/options/strings_options"
+#line 64 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringMinPrefixExplain__option_t, std::string option, bool value);
-#line 66 "../../../../../src/options/strings_options"
+#line 66 "../../../src/options/strings_options"
 template <> const options::stringGuessModel__option_t::type& Options::operator[](options::stringGuessModel__option_t) const;
-#line 66 "../../../../../src/options/strings_options"
+#line 66 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringGuessModel__option_t) const;
-#line 66 "../../../../../src/options/strings_options"
+#line 66 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringGuessModel__option_t, std::string option, bool value);
-#line 68 "../../../../../src/options/strings_options"
+#line 68 "../../../src/options/strings_options"
 template <> const options::stringUfReduct__option_t::type& Options::operator[](options::stringUfReduct__option_t) const;
-#line 68 "../../../../../src/options/strings_options"
+#line 68 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringUfReduct__option_t) const;
-#line 68 "../../../../../src/options/strings_options"
+#line 68 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringUfReduct__option_t, std::string option, bool value);
-#line 70 "../../../../../src/options/strings_options"
+#line 70 "../../../src/options/strings_options"
 template <> const options::stringBinaryCsp__option_t::type& Options::operator[](options::stringBinaryCsp__option_t) const;
-#line 70 "../../../../../src/options/strings_options"
+#line 70 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringBinaryCsp__option_t) const;
-#line 70 "../../../../../src/options/strings_options"
+#line 70 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringBinaryCsp__option_t, std::string option, bool value);
-#line 72 "../../../../../src/options/strings_options"
+#line 72 "../../../src/options/strings_options"
 template <> const options::stringLenPropCsp__option_t::type& Options::operator[](options::stringLenPropCsp__option_t) const;
-#line 72 "../../../../../src/options/strings_options"
+#line 72 "../../../src/options/strings_options"
 template <> bool Options::wasSetByUser(options::stringLenPropCsp__option_t) const;
-#line 72 "../../../../../src/options/strings_options"
+#line 72 "../../../src/options/strings_options"
 template <> void Options::assignBool(options::stringLenPropCsp__option_t, std::string option, bool value);
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/strings_options"
+#line 8 "../../../src/options/strings_options"
 inline stringExp__option_t::type stringExp__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 8 "../../../../../src/options/strings_options"
+#line 8 "../../../src/options/strings_options"
 inline bool stringExp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 8 "../../../../../src/options/strings_options"
+#line 8 "../../../src/options/strings_options"
 inline void stringExp__option_t::set(const stringExp__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 12 "../../../../../src/options/strings_options"
+#line 12 "../../../src/options/strings_options"
 inline stringLB__option_t::type stringLB__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 12 "../../../../../src/options/strings_options"
+#line 12 "../../../src/options/strings_options"
 inline bool stringLB__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 16 "../../../../../src/options/strings_options"
+#line 16 "../../../src/options/strings_options"
 inline stdASCII__option_t::type stdASCII__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 16 "../../../../../src/options/strings_options"
+#line 16 "../../../src/options/strings_options"
 inline bool stdASCII__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 19 "../../../../../src/options/strings_options"
+#line 19 "../../../src/options/strings_options"
 inline stringFMF__option_t::type stringFMF__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 19 "../../../../../src/options/strings_options"
+#line 19 "../../../src/options/strings_options"
 inline bool stringFMF__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 19 "../../../../../src/options/strings_options"
+#line 19 "../../../src/options/strings_options"
 inline void stringFMF__option_t::set(const stringFMF__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 22 "../../../../../src/options/strings_options"
+#line 22 "../../../src/options/strings_options"
 inline stringEager__option_t::type stringEager__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 22 "../../../../../src/options/strings_options"
+#line 22 "../../../src/options/strings_options"
 inline bool stringEager__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 25 "../../../../../src/options/strings_options"
+#line 25 "../../../src/options/strings_options"
 inline stringEIT__option_t::type stringEIT__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 25 "../../../../../src/options/strings_options"
+#line 25 "../../../src/options/strings_options"
 inline bool stringEIT__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 28 "../../../../../src/options/strings_options"
+#line 28 "../../../src/options/strings_options"
 inline stringOpt1__option_t::type stringOpt1__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 28 "../../../../../src/options/strings_options"
+#line 28 "../../../src/options/strings_options"
 inline bool stringOpt1__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 31 "../../../../../src/options/strings_options"
+#line 31 "../../../src/options/strings_options"
 inline stringOpt2__option_t::type stringOpt2__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 31 "../../../../../src/options/strings_options"
+#line 31 "../../../src/options/strings_options"
 inline bool stringOpt2__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 34 "../../../../../src/options/strings_options"
+#line 34 "../../../src/options/strings_options"
 inline stringIgnNegMembership__option_t::type stringIgnNegMembership__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 34 "../../../../../src/options/strings_options"
+#line 34 "../../../src/options/strings_options"
 inline bool stringIgnNegMembership__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 40 "../../../../../src/options/strings_options"
+#line 40 "../../../src/options/strings_options"
 inline stringLazyPreproc__option_t::type stringLazyPreproc__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 40 "../../../../../src/options/strings_options"
+#line 40 "../../../src/options/strings_options"
 inline bool stringLazyPreproc__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 43 "../../../../../src/options/strings_options"
+#line 43 "../../../src/options/strings_options"
 inline stringLenGeqZ__option_t::type stringLenGeqZ__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 43 "../../../../../src/options/strings_options"
+#line 43 "../../../src/options/strings_options"
 inline bool stringLenGeqZ__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 46 "../../../../../src/options/strings_options"
+#line 46 "../../../src/options/strings_options"
 inline stringLenNorm__option_t::type stringLenNorm__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 46 "../../../../../src/options/strings_options"
+#line 46 "../../../src/options/strings_options"
 inline bool stringLenNorm__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 48 "../../../../../src/options/strings_options"
+#line 48 "../../../src/options/strings_options"
 inline stringSplitEmp__option_t::type stringSplitEmp__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 48 "../../../../../src/options/strings_options"
+#line 48 "../../../src/options/strings_options"
 inline bool stringSplitEmp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 50 "../../../../../src/options/strings_options"
+#line 50 "../../../src/options/strings_options"
 inline stringInferSym__option_t::type stringInferSym__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 50 "../../../../../src/options/strings_options"
+#line 50 "../../../src/options/strings_options"
 inline bool stringInferSym__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 52 "../../../../../src/options/strings_options"
+#line 52 "../../../src/options/strings_options"
 inline stringEagerLen__option_t::type stringEagerLen__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 52 "../../../../../src/options/strings_options"
+#line 52 "../../../src/options/strings_options"
 inline bool stringEagerLen__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 54 "../../../../../src/options/strings_options"
+#line 54 "../../../src/options/strings_options"
 inline stringCheckEntailLen__option_t::type stringCheckEntailLen__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 54 "../../../../../src/options/strings_options"
+#line 54 "../../../src/options/strings_options"
 inline bool stringCheckEntailLen__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 56 "../../../../../src/options/strings_options"
+#line 56 "../../../src/options/strings_options"
 inline stringProcessLoop__option_t::type stringProcessLoop__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 56 "../../../../../src/options/strings_options"
+#line 56 "../../../src/options/strings_options"
 inline bool stringProcessLoop__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 58 "../../../../../src/options/strings_options"
+#line 58 "../../../src/options/strings_options"
 inline stringAbortLoop__option_t::type stringAbortLoop__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 58 "../../../../../src/options/strings_options"
+#line 58 "../../../src/options/strings_options"
 inline bool stringAbortLoop__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 60 "../../../../../src/options/strings_options"
+#line 60 "../../../src/options/strings_options"
 inline stringInferAsLemmas__option_t::type stringInferAsLemmas__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 60 "../../../../../src/options/strings_options"
+#line 60 "../../../src/options/strings_options"
 inline bool stringInferAsLemmas__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 62 "../../../../../src/options/strings_options"
+#line 62 "../../../src/options/strings_options"
 inline stringRExplainLemmas__option_t::type stringRExplainLemmas__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 62 "../../../../../src/options/strings_options"
+#line 62 "../../../src/options/strings_options"
 inline bool stringRExplainLemmas__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 64 "../../../../../src/options/strings_options"
+#line 64 "../../../src/options/strings_options"
 inline stringMinPrefixExplain__option_t::type stringMinPrefixExplain__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 64 "../../../../../src/options/strings_options"
+#line 64 "../../../src/options/strings_options"
 inline bool stringMinPrefixExplain__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 66 "../../../../../src/options/strings_options"
+#line 66 "../../../src/options/strings_options"
 inline stringGuessModel__option_t::type stringGuessModel__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 66 "../../../../../src/options/strings_options"
+#line 66 "../../../src/options/strings_options"
 inline bool stringGuessModel__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 68 "../../../../../src/options/strings_options"
+#line 68 "../../../src/options/strings_options"
 inline stringUfReduct__option_t::type stringUfReduct__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 68 "../../../../../src/options/strings_options"
+#line 68 "../../../src/options/strings_options"
 inline bool stringUfReduct__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 70 "../../../../../src/options/strings_options"
+#line 70 "../../../src/options/strings_options"
 inline stringBinaryCsp__option_t::type stringBinaryCsp__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 70 "../../../../../src/options/strings_options"
+#line 70 "../../../src/options/strings_options"
 inline bool stringBinaryCsp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 72 "../../../../../src/options/strings_options"
+#line 72 "../../../src/options/strings_options"
 inline stringLenPropCsp__option_t::type stringLenPropCsp__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 72 "../../../../../src/options/strings_options"
+#line 72 "../../../src/options/strings_options"
 inline bool stringLenPropCsp__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/theory_options.cpp b/src/options/theory_options.cpp
index b6e2cac..d113efb 100644
--- a/src/options/theory_options.cpp
+++ b/src/options/theory_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -19,28 +19,28 @@
 namespace CVC4 {
 
 
-#line 8 "../../../../../src/options/theory_options"
+#line 8 "../../../src/options/theory_options"
 template <> void Options::set(options::theoryOfMode__option_t, const options::theoryOfMode__option_t::type& x) { d_holder->theoryOfMode = x; }
-#line 8 "../../../../../src/options/theory_options"
+#line 8 "../../../src/options/theory_options"
 template <> const options::theoryOfMode__option_t::type& Options::operator[](options::theoryOfMode__option_t) const { return d_holder->theoryOfMode; }
-#line 8 "../../../../../src/options/theory_options"
+#line 8 "../../../src/options/theory_options"
 template <> bool Options::wasSetByUser(options::theoryOfMode__option_t) const { return d_holder->theoryOfMode__setByUser__; }
-#line 11 "../../../../../src/options/theory_options"
+#line 11 "../../../src/options/theory_options"
 template <> const options::useTheoryList__option_t::type& Options::operator[](options::useTheoryList__option_t) const { return d_holder->useTheoryList; }
-#line 11 "../../../../../src/options/theory_options"
+#line 11 "../../../src/options/theory_options"
 template <> bool Options::wasSetByUser(options::useTheoryList__option_t) const { return d_holder->useTheoryList__setByUser__; }
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/theory_options"
+#line 8 "../../../src/options/theory_options"
 struct theoryOfMode__option_t theoryOfMode;
-#line 11 "../../../../../src/options/theory_options"
+#line 11 "../../../src/options/theory_options"
 struct useTheoryList__option_t useTheoryList;
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/theory_options.h b/src/options/theory_options.h
index d6b55c7..e697bec 100644
--- a/src/options/theory_options.h
+++ b/src/options/theory_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -21,10 +21,10 @@
 
 #include "options/options.h"
 
-#line 8 "../../../../../src/options/theory_options"
+#line 8 "../../../src/options/theory_options"
 #include "options/theoryof_mode.h"
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__THEORY__FOR_OPTION_HOLDER \
   theoryOfMode__option_t::type theoryOfMode; \
@@ -32,56 +32,56 @@
   useTheoryList__option_t::type useTheoryList; \
   bool useTheoryList__setByUser__;
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/theory_options"
+#line 8 "../../../src/options/theory_options"
 extern struct CVC4_PUBLIC theoryOfMode__option_t { typedef CVC4::theory::TheoryOfMode type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } theoryOfMode CVC4_PUBLIC;
-#line 11 "../../../../../src/options/theory_options"
+#line 11 "../../../src/options/theory_options"
 extern struct CVC4_PUBLIC useTheoryList__option_t { typedef std::string type; type operator()() const; bool wasSetByUser() const; } useTheoryList CVC4_PUBLIC;
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
-#line 8 "../../../../../src/options/theory_options"
+#line 8 "../../../src/options/theory_options"
 template <> void Options::set(options::theoryOfMode__option_t, const options::theoryOfMode__option_t::type& x);
-#line 8 "../../../../../src/options/theory_options"
+#line 8 "../../../src/options/theory_options"
 template <> const options::theoryOfMode__option_t::type& Options::operator[](options::theoryOfMode__option_t) const;
-#line 8 "../../../../../src/options/theory_options"
+#line 8 "../../../src/options/theory_options"
 template <> bool Options::wasSetByUser(options::theoryOfMode__option_t) const;
-#line 8 "../../../../../src/options/theory_options"
+#line 8 "../../../src/options/theory_options"
 template <> void Options::assign(options::theoryOfMode__option_t, std::string option, std::string value);
-#line 11 "../../../../../src/options/theory_options"
+#line 11 "../../../src/options/theory_options"
 template <> const options::useTheoryList__option_t::type& Options::operator[](options::useTheoryList__option_t) const;
-#line 11 "../../../../../src/options/theory_options"
+#line 11 "../../../src/options/theory_options"
 template <> bool Options::wasSetByUser(options::useTheoryList__option_t) const;
-#line 11 "../../../../../src/options/theory_options"
+#line 11 "../../../src/options/theory_options"
 template <> void Options::assign(options::useTheoryList__option_t, std::string option, std::string value);
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/theory_options"
+#line 8 "../../../src/options/theory_options"
 inline theoryOfMode__option_t::type theoryOfMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 8 "../../../../../src/options/theory_options"
+#line 8 "../../../src/options/theory_options"
 inline bool theoryOfMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 8 "../../../../../src/options/theory_options"
+#line 8 "../../../src/options/theory_options"
 inline void theoryOfMode__option_t::set(const theoryOfMode__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 11 "../../../../../src/options/theory_options"
+#line 11 "../../../src/options/theory_options"
 inline useTheoryList__option_t::type useTheoryList__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 11 "../../../../../src/options/theory_options"
+#line 11 "../../../src/options/theory_options"
 inline bool useTheoryList__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/theoryof_mode.cpp b/src/options/theoryof_mode.cpp
index cf71780..9eb2be1 100644
--- a/src/options/theoryof_mode.cpp
+++ b/src/options/theoryof_mode.cpp
@@ -2,9 +2,9 @@
 /*! \file theoryof_mode.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/theoryof_mode.h b/src/options/theoryof_mode.h
index 98f05a1..f999a60 100644
--- a/src/options/theoryof_mode.h
+++ b/src/options/theoryof_mode.h
@@ -2,9 +2,9 @@
 /*! \file theoryof_mode.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Tim King
+ **   Dejan Jovanovic, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/options/uf_options.cpp b/src/options/uf_options.cpp
index ab5904c..48ae246 100644
--- a/src/options/uf_options.cpp
+++ b/src/options/uf_options.cpp
@@ -2,9 +2,9 @@
 /*! \file base_options_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -19,114 +19,114 @@
 namespace CVC4 {
 
 
-#line 8 "../../../../../src/options/uf_options"
+#line 8 "../../../src/options/uf_options"
 template <> void Options::set(options::ufSymmetryBreaker__option_t, const options::ufSymmetryBreaker__option_t::type& x) { d_holder->ufSymmetryBreaker = x; }
-#line 8 "../../../../../src/options/uf_options"
+#line 8 "../../../src/options/uf_options"
 template <> const options::ufSymmetryBreaker__option_t::type& Options::operator[](options::ufSymmetryBreaker__option_t) const { return d_holder->ufSymmetryBreaker; }
-#line 8 "../../../../../src/options/uf_options"
+#line 8 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufSymmetryBreaker__option_t) const { return d_holder->ufSymmetryBreaker__setByUser__; }
-#line 11 "../../../../../src/options/uf_options"
+#line 11 "../../../src/options/uf_options"
 template <> const options::condenseFunctionValues__option_t::type& Options::operator[](options::condenseFunctionValues__option_t) const { return d_holder->condenseFunctionValues; }
-#line 11 "../../../../../src/options/uf_options"
+#line 11 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::condenseFunctionValues__option_t) const { return d_holder->condenseFunctionValues__setByUser__; }
-#line 14 "../../../../../src/options/uf_options"
+#line 14 "../../../src/options/uf_options"
 template <> const options::ufssRegions__option_t::type& Options::operator[](options::ufssRegions__option_t) const { return d_holder->ufssRegions; }
-#line 14 "../../../../../src/options/uf_options"
+#line 14 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssRegions__option_t) const { return d_holder->ufssRegions__setByUser__; }
-#line 16 "../../../../../src/options/uf_options"
+#line 16 "../../../src/options/uf_options"
 template <> const options::ufssEagerSplits__option_t::type& Options::operator[](options::ufssEagerSplits__option_t) const { return d_holder->ufssEagerSplits; }
-#line 16 "../../../../../src/options/uf_options"
+#line 16 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssEagerSplits__option_t) const { return d_holder->ufssEagerSplits__setByUser__; }
-#line 18 "../../../../../src/options/uf_options"
+#line 18 "../../../src/options/uf_options"
 template <> const options::ufssTotality__option_t::type& Options::operator[](options::ufssTotality__option_t) const { return d_holder->ufssTotality; }
-#line 18 "../../../../../src/options/uf_options"
+#line 18 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssTotality__option_t) const { return d_holder->ufssTotality__setByUser__; }
-#line 20 "../../../../../src/options/uf_options"
+#line 20 "../../../src/options/uf_options"
 template <> const options::ufssTotalityLimited__option_t::type& Options::operator[](options::ufssTotalityLimited__option_t) const { return d_holder->ufssTotalityLimited; }
-#line 20 "../../../../../src/options/uf_options"
+#line 20 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssTotalityLimited__option_t) const { return d_holder->ufssTotalityLimited__setByUser__; }
-#line 22 "../../../../../src/options/uf_options"
+#line 22 "../../../src/options/uf_options"
 template <> const options::ufssTotalitySymBreak__option_t::type& Options::operator[](options::ufssTotalitySymBreak__option_t) const { return d_holder->ufssTotalitySymBreak; }
-#line 22 "../../../../../src/options/uf_options"
+#line 22 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssTotalitySymBreak__option_t) const { return d_holder->ufssTotalitySymBreak__setByUser__; }
-#line 24 "../../../../../src/options/uf_options"
+#line 24 "../../../src/options/uf_options"
 template <> const options::ufssAbortCardinality__option_t::type& Options::operator[](options::ufssAbortCardinality__option_t) const { return d_holder->ufssAbortCardinality; }
-#line 24 "../../../../../src/options/uf_options"
+#line 24 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssAbortCardinality__option_t) const { return d_holder->ufssAbortCardinality__setByUser__; }
-#line 26 "../../../../../src/options/uf_options"
+#line 26 "../../../src/options/uf_options"
 template <> const options::ufssExplainedCliques__option_t::type& Options::operator[](options::ufssExplainedCliques__option_t) const { return d_holder->ufssExplainedCliques; }
-#line 26 "../../../../../src/options/uf_options"
+#line 26 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssExplainedCliques__option_t) const { return d_holder->ufssExplainedCliques__setByUser__; }
-#line 28 "../../../../../src/options/uf_options"
+#line 28 "../../../src/options/uf_options"
 template <> const options::ufssSimpleCliques__option_t::type& Options::operator[](options::ufssSimpleCliques__option_t) const { return d_holder->ufssSimpleCliques; }
-#line 28 "../../../../../src/options/uf_options"
+#line 28 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssSimpleCliques__option_t) const { return d_holder->ufssSimpleCliques__setByUser__; }
-#line 30 "../../../../../src/options/uf_options"
+#line 30 "../../../src/options/uf_options"
 template <> const options::ufssDiseqPropagation__option_t::type& Options::operator[](options::ufssDiseqPropagation__option_t) const { return d_holder->ufssDiseqPropagation; }
-#line 30 "../../../../../src/options/uf_options"
+#line 30 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssDiseqPropagation__option_t) const { return d_holder->ufssDiseqPropagation__setByUser__; }
-#line 32 "../../../../../src/options/uf_options"
+#line 32 "../../../src/options/uf_options"
 template <> const options::ufssMode__option_t::type& Options::operator[](options::ufssMode__option_t) const { return d_holder->ufssMode; }
-#line 32 "../../../../../src/options/uf_options"
+#line 32 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssMode__option_t) const { return d_holder->ufssMode__setByUser__; }
-#line 34 "../../../../../src/options/uf_options"
+#line 34 "../../../src/options/uf_options"
 template <> const options::ufssCliqueSplits__option_t::type& Options::operator[](options::ufssCliqueSplits__option_t) const { return d_holder->ufssCliqueSplits; }
-#line 34 "../../../../../src/options/uf_options"
+#line 34 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssCliqueSplits__option_t) const { return d_holder->ufssCliqueSplits__setByUser__; }
-#line 37 "../../../../../src/options/uf_options"
+#line 37 "../../../src/options/uf_options"
 template <> const options::ufssSymBreak__option_t::type& Options::operator[](options::ufssSymBreak__option_t) const { return d_holder->ufssSymBreak; }
-#line 37 "../../../../../src/options/uf_options"
+#line 37 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssSymBreak__option_t) const { return d_holder->ufssSymBreak__setByUser__; }
-#line 39 "../../../../../src/options/uf_options"
+#line 39 "../../../src/options/uf_options"
 template <> const options::ufssFairness__option_t::type& Options::operator[](options::ufssFairness__option_t) const { return d_holder->ufssFairness; }
-#line 39 "../../../../../src/options/uf_options"
+#line 39 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssFairness__option_t) const { return d_holder->ufssFairness__setByUser__; }
-#line 41 "../../../../../src/options/uf_options"
+#line 41 "../../../src/options/uf_options"
 template <> void Options::set(options::ufssFairnessMonotone__option_t, const options::ufssFairnessMonotone__option_t::type& x) { d_holder->ufssFairnessMonotone = x; }
-#line 41 "../../../../../src/options/uf_options"
+#line 41 "../../../src/options/uf_options"
 template <> const options::ufssFairnessMonotone__option_t::type& Options::operator[](options::ufssFairnessMonotone__option_t) const { return d_holder->ufssFairnessMonotone; }
-#line 41 "../../../../../src/options/uf_options"
+#line 41 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssFairnessMonotone__option_t) const { return d_holder->ufssFairnessMonotone__setByUser__; }
 
-#line 24 "../../../../../src/options/base_options_template.cpp"
+#line 24 "../../../src/options/base_options_template.cpp"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/uf_options"
+#line 8 "../../../src/options/uf_options"
 struct ufSymmetryBreaker__option_t ufSymmetryBreaker;
-#line 11 "../../../../../src/options/uf_options"
+#line 11 "../../../src/options/uf_options"
 struct condenseFunctionValues__option_t condenseFunctionValues;
-#line 14 "../../../../../src/options/uf_options"
+#line 14 "../../../src/options/uf_options"
 struct ufssRegions__option_t ufssRegions;
-#line 16 "../../../../../src/options/uf_options"
+#line 16 "../../../src/options/uf_options"
 struct ufssEagerSplits__option_t ufssEagerSplits;
-#line 18 "../../../../../src/options/uf_options"
+#line 18 "../../../src/options/uf_options"
 struct ufssTotality__option_t ufssTotality;
-#line 20 "../../../../../src/options/uf_options"
+#line 20 "../../../src/options/uf_options"
 struct ufssTotalityLimited__option_t ufssTotalityLimited;
-#line 22 "../../../../../src/options/uf_options"
+#line 22 "../../../src/options/uf_options"
 struct ufssTotalitySymBreak__option_t ufssTotalitySymBreak;
-#line 24 "../../../../../src/options/uf_options"
+#line 24 "../../../src/options/uf_options"
 struct ufssAbortCardinality__option_t ufssAbortCardinality;
-#line 26 "../../../../../src/options/uf_options"
+#line 26 "../../../src/options/uf_options"
 struct ufssExplainedCliques__option_t ufssExplainedCliques;
-#line 28 "../../../../../src/options/uf_options"
+#line 28 "../../../src/options/uf_options"
 struct ufssSimpleCliques__option_t ufssSimpleCliques;
-#line 30 "../../../../../src/options/uf_options"
+#line 30 "../../../src/options/uf_options"
 struct ufssDiseqPropagation__option_t ufssDiseqPropagation;
-#line 32 "../../../../../src/options/uf_options"
+#line 32 "../../../src/options/uf_options"
 struct ufssMode__option_t ufssMode;
-#line 34 "../../../../../src/options/uf_options"
+#line 34 "../../../src/options/uf_options"
 struct ufssCliqueSplits__option_t ufssCliqueSplits;
-#line 37 "../../../../../src/options/uf_options"
+#line 37 "../../../src/options/uf_options"
 struct ufssSymBreak__option_t ufssSymBreak;
-#line 39 "../../../../../src/options/uf_options"
+#line 39 "../../../src/options/uf_options"
 struct ufssFairness__option_t ufssFairness;
-#line 41 "../../../../../src/options/uf_options"
+#line 41 "../../../src/options/uf_options"
 struct ufssFairnessMonotone__option_t ufssFairnessMonotone;
 
-#line 30 "../../../../../src/options/base_options_template.cpp"
+#line 30 "../../../src/options/base_options_template.cpp"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/uf_options.h b/src/options/uf_options.h
index 52aa340..25bdb52 100644
--- a/src/options/uf_options.h
+++ b/src/options/uf_options.h
@@ -2,9 +2,9 @@
 /*! \file base_options_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -21,10 +21,10 @@
 
 #include "options/options.h"
 
-#line 32 "../../../../../src/options/uf_options"
+#line 32 "../../../src/options/uf_options"
 #include "options/ufss_mode.h"
 
-#line 26 "../../../../../src/options/base_options_template.h"
+#line 26 "../../../src/options/base_options_template.h"
 
 #define CVC4_OPTIONS__UF__FOR_OPTION_HOLDER \
   ufSymmetryBreaker__option_t::type ufSymmetryBreaker; \
@@ -60,242 +60,242 @@
   ufssFairnessMonotone__option_t::type ufssFairnessMonotone; \
   bool ufssFairnessMonotone__setByUser__;
 
-#line 30 "../../../../../src/options/base_options_template.h"
+#line 30 "../../../src/options/base_options_template.h"
 
 namespace CVC4 {
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/uf_options"
+#line 8 "../../../src/options/uf_options"
 extern struct CVC4_PUBLIC ufSymmetryBreaker__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } ufSymmetryBreaker CVC4_PUBLIC;
-#line 11 "../../../../../src/options/uf_options"
+#line 11 "../../../src/options/uf_options"
 extern struct CVC4_PUBLIC condenseFunctionValues__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } condenseFunctionValues CVC4_PUBLIC;
-#line 14 "../../../../../src/options/uf_options"
+#line 14 "../../../src/options/uf_options"
 extern struct CVC4_PUBLIC ufssRegions__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ufssRegions CVC4_PUBLIC;
-#line 16 "../../../../../src/options/uf_options"
+#line 16 "../../../src/options/uf_options"
 extern struct CVC4_PUBLIC ufssEagerSplits__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ufssEagerSplits CVC4_PUBLIC;
-#line 18 "../../../../../src/options/uf_options"
+#line 18 "../../../src/options/uf_options"
 extern struct CVC4_PUBLIC ufssTotality__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ufssTotality CVC4_PUBLIC;
-#line 20 "../../../../../src/options/uf_options"
+#line 20 "../../../src/options/uf_options"
 extern struct CVC4_PUBLIC ufssTotalityLimited__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } ufssTotalityLimited CVC4_PUBLIC;
-#line 22 "../../../../../src/options/uf_options"
+#line 22 "../../../src/options/uf_options"
 extern struct CVC4_PUBLIC ufssTotalitySymBreak__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ufssTotalitySymBreak CVC4_PUBLIC;
-#line 24 "../../../../../src/options/uf_options"
+#line 24 "../../../src/options/uf_options"
 extern struct CVC4_PUBLIC ufssAbortCardinality__option_t { typedef int type; type operator()() const; bool wasSetByUser() const; } ufssAbortCardinality CVC4_PUBLIC;
-#line 26 "../../../../../src/options/uf_options"
+#line 26 "../../../src/options/uf_options"
 extern struct CVC4_PUBLIC ufssExplainedCliques__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ufssExplainedCliques CVC4_PUBLIC;
-#line 28 "../../../../../src/options/uf_options"
+#line 28 "../../../src/options/uf_options"
 extern struct CVC4_PUBLIC ufssSimpleCliques__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ufssSimpleCliques CVC4_PUBLIC;
-#line 30 "../../../../../src/options/uf_options"
+#line 30 "../../../src/options/uf_options"
 extern struct CVC4_PUBLIC ufssDiseqPropagation__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ufssDiseqPropagation CVC4_PUBLIC;
-#line 32 "../../../../../src/options/uf_options"
+#line 32 "../../../src/options/uf_options"
 extern struct CVC4_PUBLIC ufssMode__option_t { typedef CVC4::theory::uf::UfssMode type; type operator()() const; bool wasSetByUser() const; } ufssMode CVC4_PUBLIC;
-#line 34 "../../../../../src/options/uf_options"
+#line 34 "../../../src/options/uf_options"
 extern struct CVC4_PUBLIC ufssCliqueSplits__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ufssCliqueSplits CVC4_PUBLIC;
-#line 37 "../../../../../src/options/uf_options"
+#line 37 "../../../src/options/uf_options"
 extern struct CVC4_PUBLIC ufssSymBreak__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ufssSymBreak CVC4_PUBLIC;
-#line 39 "../../../../../src/options/uf_options"
+#line 39 "../../../src/options/uf_options"
 extern struct CVC4_PUBLIC ufssFairness__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; } ufssFairness CVC4_PUBLIC;
-#line 41 "../../../../../src/options/uf_options"
+#line 41 "../../../src/options/uf_options"
 extern struct CVC4_PUBLIC ufssFairnessMonotone__option_t { typedef bool type; type operator()() const; bool wasSetByUser() const; void set(const type& v); } ufssFairnessMonotone CVC4_PUBLIC;
 
-#line 38 "../../../../../src/options/base_options_template.h"
+#line 38 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
 
-#line 8 "../../../../../src/options/uf_options"
+#line 8 "../../../src/options/uf_options"
 template <> void Options::set(options::ufSymmetryBreaker__option_t, const options::ufSymmetryBreaker__option_t::type& x);
-#line 8 "../../../../../src/options/uf_options"
+#line 8 "../../../src/options/uf_options"
 template <> const options::ufSymmetryBreaker__option_t::type& Options::operator[](options::ufSymmetryBreaker__option_t) const;
-#line 8 "../../../../../src/options/uf_options"
+#line 8 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufSymmetryBreaker__option_t) const;
-#line 8 "../../../../../src/options/uf_options"
+#line 8 "../../../src/options/uf_options"
 template <> void Options::assignBool(options::ufSymmetryBreaker__option_t, std::string option, bool value);
-#line 11 "../../../../../src/options/uf_options"
+#line 11 "../../../src/options/uf_options"
 template <> const options::condenseFunctionValues__option_t::type& Options::operator[](options::condenseFunctionValues__option_t) const;
-#line 11 "../../../../../src/options/uf_options"
+#line 11 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::condenseFunctionValues__option_t) const;
-#line 11 "../../../../../src/options/uf_options"
+#line 11 "../../../src/options/uf_options"
 template <> void Options::assignBool(options::condenseFunctionValues__option_t, std::string option, bool value);
-#line 14 "../../../../../src/options/uf_options"
+#line 14 "../../../src/options/uf_options"
 template <> const options::ufssRegions__option_t::type& Options::operator[](options::ufssRegions__option_t) const;
-#line 14 "../../../../../src/options/uf_options"
+#line 14 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssRegions__option_t) const;
-#line 14 "../../../../../src/options/uf_options"
+#line 14 "../../../src/options/uf_options"
 template <> void Options::assignBool(options::ufssRegions__option_t, std::string option, bool value);
-#line 16 "../../../../../src/options/uf_options"
+#line 16 "../../../src/options/uf_options"
 template <> const options::ufssEagerSplits__option_t::type& Options::operator[](options::ufssEagerSplits__option_t) const;
-#line 16 "../../../../../src/options/uf_options"
+#line 16 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssEagerSplits__option_t) const;
-#line 16 "../../../../../src/options/uf_options"
+#line 16 "../../../src/options/uf_options"
 template <> void Options::assignBool(options::ufssEagerSplits__option_t, std::string option, bool value);
-#line 18 "../../../../../src/options/uf_options"
+#line 18 "../../../src/options/uf_options"
 template <> const options::ufssTotality__option_t::type& Options::operator[](options::ufssTotality__option_t) const;
-#line 18 "../../../../../src/options/uf_options"
+#line 18 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssTotality__option_t) const;
-#line 18 "../../../../../src/options/uf_options"
+#line 18 "../../../src/options/uf_options"
 template <> void Options::assignBool(options::ufssTotality__option_t, std::string option, bool value);
-#line 20 "../../../../../src/options/uf_options"
+#line 20 "../../../src/options/uf_options"
 template <> const options::ufssTotalityLimited__option_t::type& Options::operator[](options::ufssTotalityLimited__option_t) const;
-#line 20 "../../../../../src/options/uf_options"
+#line 20 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssTotalityLimited__option_t) const;
-#line 20 "../../../../../src/options/uf_options"
+#line 20 "../../../src/options/uf_options"
 template <> void Options::assign(options::ufssTotalityLimited__option_t, std::string option, std::string value);
-#line 22 "../../../../../src/options/uf_options"
+#line 22 "../../../src/options/uf_options"
 template <> const options::ufssTotalitySymBreak__option_t::type& Options::operator[](options::ufssTotalitySymBreak__option_t) const;
-#line 22 "../../../../../src/options/uf_options"
+#line 22 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssTotalitySymBreak__option_t) const;
-#line 22 "../../../../../src/options/uf_options"
+#line 22 "../../../src/options/uf_options"
 template <> void Options::assignBool(options::ufssTotalitySymBreak__option_t, std::string option, bool value);
-#line 24 "../../../../../src/options/uf_options"
+#line 24 "../../../src/options/uf_options"
 template <> const options::ufssAbortCardinality__option_t::type& Options::operator[](options::ufssAbortCardinality__option_t) const;
-#line 24 "../../../../../src/options/uf_options"
+#line 24 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssAbortCardinality__option_t) const;
-#line 24 "../../../../../src/options/uf_options"
+#line 24 "../../../src/options/uf_options"
 template <> void Options::assign(options::ufssAbortCardinality__option_t, std::string option, std::string value);
-#line 26 "../../../../../src/options/uf_options"
+#line 26 "../../../src/options/uf_options"
 template <> const options::ufssExplainedCliques__option_t::type& Options::operator[](options::ufssExplainedCliques__option_t) const;
-#line 26 "../../../../../src/options/uf_options"
+#line 26 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssExplainedCliques__option_t) const;
-#line 26 "../../../../../src/options/uf_options"
+#line 26 "../../../src/options/uf_options"
 template <> void Options::assignBool(options::ufssExplainedCliques__option_t, std::string option, bool value);
-#line 28 "../../../../../src/options/uf_options"
+#line 28 "../../../src/options/uf_options"
 template <> const options::ufssSimpleCliques__option_t::type& Options::operator[](options::ufssSimpleCliques__option_t) const;
-#line 28 "../../../../../src/options/uf_options"
+#line 28 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssSimpleCliques__option_t) const;
-#line 28 "../../../../../src/options/uf_options"
+#line 28 "../../../src/options/uf_options"
 template <> void Options::assignBool(options::ufssSimpleCliques__option_t, std::string option, bool value);
-#line 30 "../../../../../src/options/uf_options"
+#line 30 "../../../src/options/uf_options"
 template <> const options::ufssDiseqPropagation__option_t::type& Options::operator[](options::ufssDiseqPropagation__option_t) const;
-#line 30 "../../../../../src/options/uf_options"
+#line 30 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssDiseqPropagation__option_t) const;
-#line 30 "../../../../../src/options/uf_options"
+#line 30 "../../../src/options/uf_options"
 template <> void Options::assignBool(options::ufssDiseqPropagation__option_t, std::string option, bool value);
-#line 32 "../../../../../src/options/uf_options"
+#line 32 "../../../src/options/uf_options"
 template <> const options::ufssMode__option_t::type& Options::operator[](options::ufssMode__option_t) const;
-#line 32 "../../../../../src/options/uf_options"
+#line 32 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssMode__option_t) const;
-#line 32 "../../../../../src/options/uf_options"
+#line 32 "../../../src/options/uf_options"
 template <> void Options::assign(options::ufssMode__option_t, std::string option, std::string value);
-#line 34 "../../../../../src/options/uf_options"
+#line 34 "../../../src/options/uf_options"
 template <> const options::ufssCliqueSplits__option_t::type& Options::operator[](options::ufssCliqueSplits__option_t) const;
-#line 34 "../../../../../src/options/uf_options"
+#line 34 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssCliqueSplits__option_t) const;
-#line 34 "../../../../../src/options/uf_options"
+#line 34 "../../../src/options/uf_options"
 template <> void Options::assignBool(options::ufssCliqueSplits__option_t, std::string option, bool value);
-#line 37 "../../../../../src/options/uf_options"
+#line 37 "../../../src/options/uf_options"
 template <> const options::ufssSymBreak__option_t::type& Options::operator[](options::ufssSymBreak__option_t) const;
-#line 37 "../../../../../src/options/uf_options"
+#line 37 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssSymBreak__option_t) const;
-#line 37 "../../../../../src/options/uf_options"
+#line 37 "../../../src/options/uf_options"
 template <> void Options::assignBool(options::ufssSymBreak__option_t, std::string option, bool value);
-#line 39 "../../../../../src/options/uf_options"
+#line 39 "../../../src/options/uf_options"
 template <> const options::ufssFairness__option_t::type& Options::operator[](options::ufssFairness__option_t) const;
-#line 39 "../../../../../src/options/uf_options"
+#line 39 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssFairness__option_t) const;
-#line 39 "../../../../../src/options/uf_options"
+#line 39 "../../../src/options/uf_options"
 template <> void Options::assignBool(options::ufssFairness__option_t, std::string option, bool value);
-#line 41 "../../../../../src/options/uf_options"
+#line 41 "../../../src/options/uf_options"
 template <> void Options::set(options::ufssFairnessMonotone__option_t, const options::ufssFairnessMonotone__option_t::type& x);
-#line 41 "../../../../../src/options/uf_options"
+#line 41 "../../../src/options/uf_options"
 template <> const options::ufssFairnessMonotone__option_t::type& Options::operator[](options::ufssFairnessMonotone__option_t) const;
-#line 41 "../../../../../src/options/uf_options"
+#line 41 "../../../src/options/uf_options"
 template <> bool Options::wasSetByUser(options::ufssFairnessMonotone__option_t) const;
-#line 41 "../../../../../src/options/uf_options"
+#line 41 "../../../src/options/uf_options"
 template <> void Options::assignBool(options::ufssFairnessMonotone__option_t, std::string option, bool value);
 
-#line 44 "../../../../../src/options/base_options_template.h"
+#line 44 "../../../src/options/base_options_template.h"
 
 namespace options {
 
 
-#line 8 "../../../../../src/options/uf_options"
+#line 8 "../../../src/options/uf_options"
 inline ufSymmetryBreaker__option_t::type ufSymmetryBreaker__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 8 "../../../../../src/options/uf_options"
+#line 8 "../../../src/options/uf_options"
 inline bool ufSymmetryBreaker__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 8 "../../../../../src/options/uf_options"
+#line 8 "../../../src/options/uf_options"
 inline void ufSymmetryBreaker__option_t::set(const ufSymmetryBreaker__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 11 "../../../../../src/options/uf_options"
+#line 11 "../../../src/options/uf_options"
 inline condenseFunctionValues__option_t::type condenseFunctionValues__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 11 "../../../../../src/options/uf_options"
+#line 11 "../../../src/options/uf_options"
 inline bool condenseFunctionValues__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 14 "../../../../../src/options/uf_options"
+#line 14 "../../../src/options/uf_options"
 inline ufssRegions__option_t::type ufssRegions__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 14 "../../../../../src/options/uf_options"
+#line 14 "../../../src/options/uf_options"
 inline bool ufssRegions__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 16 "../../../../../src/options/uf_options"
+#line 16 "../../../src/options/uf_options"
 inline ufssEagerSplits__option_t::type ufssEagerSplits__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 16 "../../../../../src/options/uf_options"
+#line 16 "../../../src/options/uf_options"
 inline bool ufssEagerSplits__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 18 "../../../../../src/options/uf_options"
+#line 18 "../../../src/options/uf_options"
 inline ufssTotality__option_t::type ufssTotality__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 18 "../../../../../src/options/uf_options"
+#line 18 "../../../src/options/uf_options"
 inline bool ufssTotality__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 20 "../../../../../src/options/uf_options"
+#line 20 "../../../src/options/uf_options"
 inline ufssTotalityLimited__option_t::type ufssTotalityLimited__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 20 "../../../../../src/options/uf_options"
+#line 20 "../../../src/options/uf_options"
 inline bool ufssTotalityLimited__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 22 "../../../../../src/options/uf_options"
+#line 22 "../../../src/options/uf_options"
 inline ufssTotalitySymBreak__option_t::type ufssTotalitySymBreak__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 22 "../../../../../src/options/uf_options"
+#line 22 "../../../src/options/uf_options"
 inline bool ufssTotalitySymBreak__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 24 "../../../../../src/options/uf_options"
+#line 24 "../../../src/options/uf_options"
 inline ufssAbortCardinality__option_t::type ufssAbortCardinality__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 24 "../../../../../src/options/uf_options"
+#line 24 "../../../src/options/uf_options"
 inline bool ufssAbortCardinality__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 26 "../../../../../src/options/uf_options"
+#line 26 "../../../src/options/uf_options"
 inline ufssExplainedCliques__option_t::type ufssExplainedCliques__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 26 "../../../../../src/options/uf_options"
+#line 26 "../../../src/options/uf_options"
 inline bool ufssExplainedCliques__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 28 "../../../../../src/options/uf_options"
+#line 28 "../../../src/options/uf_options"
 inline ufssSimpleCliques__option_t::type ufssSimpleCliques__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 28 "../../../../../src/options/uf_options"
+#line 28 "../../../src/options/uf_options"
 inline bool ufssSimpleCliques__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 30 "../../../../../src/options/uf_options"
+#line 30 "../../../src/options/uf_options"
 inline ufssDiseqPropagation__option_t::type ufssDiseqPropagation__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 30 "../../../../../src/options/uf_options"
+#line 30 "../../../src/options/uf_options"
 inline bool ufssDiseqPropagation__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 32 "../../../../../src/options/uf_options"
+#line 32 "../../../src/options/uf_options"
 inline ufssMode__option_t::type ufssMode__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 32 "../../../../../src/options/uf_options"
+#line 32 "../../../src/options/uf_options"
 inline bool ufssMode__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 34 "../../../../../src/options/uf_options"
+#line 34 "../../../src/options/uf_options"
 inline ufssCliqueSplits__option_t::type ufssCliqueSplits__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 34 "../../../../../src/options/uf_options"
+#line 34 "../../../src/options/uf_options"
 inline bool ufssCliqueSplits__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 37 "../../../../../src/options/uf_options"
+#line 37 "../../../src/options/uf_options"
 inline ufssSymBreak__option_t::type ufssSymBreak__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 37 "../../../../../src/options/uf_options"
+#line 37 "../../../src/options/uf_options"
 inline bool ufssSymBreak__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 39 "../../../../../src/options/uf_options"
+#line 39 "../../../src/options/uf_options"
 inline ufssFairness__option_t::type ufssFairness__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 39 "../../../../../src/options/uf_options"
+#line 39 "../../../src/options/uf_options"
 inline bool ufssFairness__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
 
-#line 41 "../../../../../src/options/uf_options"
+#line 41 "../../../src/options/uf_options"
 inline ufssFairnessMonotone__option_t::type ufssFairnessMonotone__option_t::operator()() const { return (*Options::current())[*this]; }
-#line 41 "../../../../../src/options/uf_options"
+#line 41 "../../../src/options/uf_options"
 inline bool ufssFairnessMonotone__option_t::wasSetByUser() const { return Options::current()->wasSetByUser(*this); }
-#line 41 "../../../../../src/options/uf_options"
+#line 41 "../../../src/options/uf_options"
 inline void ufssFairnessMonotone__option_t::set(const ufssFairnessMonotone__option_t::type& v) { Options::current()->set(*this, v); }
 
-#line 50 "../../../../../src/options/base_options_template.h"
+#line 50 "../../../src/options/base_options_template.h"
 
 }/* CVC4::options namespace */
 
diff --git a/src/options/ufss_mode.h b/src/options/ufss_mode.h
index 4a4b8b4..4cbf18c 100644
--- a/src/options/ufss_mode.h
+++ b/src/options/ufss_mode.h
@@ -2,9 +2,9 @@
 /*! \file ufss_mode.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/Makefile.am b/src/parser/Makefile.am
index ca10de6..a316019 100644
--- a/src/parser/Makefile.am
+++ b/src/parser/Makefile.am
@@ -46,6 +46,8 @@ libcvc4parser_la_SOURCES = \
 	bounded_token_factory.h \
 	input.cpp \
 	input.h \
+	line_buffer.cpp \
+	line_buffer.h \
 	memory_mapped_input_buffer.cpp \
 	memory_mapped_input_buffer.h \
 	parser.cpp \
diff --git a/src/parser/Makefile.in b/src/parser/Makefile.in
index d207cdb..d73245a 100644
--- a/src/parser/Makefile.in
+++ b/src/parser/Makefile.in
@@ -150,7 +150,7 @@ libcvc4parser_la_DEPENDENCIES = @builddir@/smt1/libparsersmt1.la \
 	@builddir@/../lib/libreplacements.la
 am_libcvc4parser_la_OBJECTS = antlr_input.lo antlr_input_imports.lo \
 	antlr_line_buffered_input.lo bounded_token_buffer.lo \
-	bounded_token_factory.lo input.lo \
+	bounded_token_factory.lo input.lo line_buffer.lo \
 	memory_mapped_input_buffer.lo parser.lo parser_builder.lo
 libcvc4parser_la_OBJECTS = $(am_libcvc4parser_la_OBJECTS)
 AM_V_lt = $(am__v_lt_ at AM_V@)
@@ -318,6 +318,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -580,6 +581,8 @@ libcvc4parser_la_SOURCES = \
 	bounded_token_factory.h \
 	input.cpp \
 	input.h \
+	line_buffer.cpp \
+	line_buffer.h \
 	memory_mapped_input_buffer.cpp \
 	memory_mapped_input_buffer.h \
 	parser.cpp \
@@ -680,6 +683,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bounded_token_buffer.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bounded_token_factory.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/input.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/line_buffer.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/memory_mapped_input_buffer.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/parser.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/parser_builder.Plo at am__quote@
diff --git a/src/parser/antlr_input.cpp b/src/parser/antlr_input.cpp
index 6edb23a..9151749 100644
--- a/src/parser/antlr_input.cpp
+++ b/src/parser/antlr_input.cpp
@@ -2,9 +2,9 @@
 /*! \file antlr_input.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Christopher L. Conway, Kshitij Bansal, Tim King
+ **   Christopher L. Conway, Kshitij Bansal, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -50,23 +50,26 @@ namespace parser {
 // These functions exactly wrap the antlr3 source inconsistencies.
 // These are the only location CVC4_ANTLR3_OLD_INPUT_STREAM ifdefs appear.
 // No other sanity checking happens;
-pANTLR3_INPUT_STREAM newAntlr3BufferedStream(std::istream& input, const std::string& name);
+pANTLR3_INPUT_STREAM newAntlr3BufferedStream(std::istream& input,
+                                             const std::string& name,
+                                             LineBuffer* line_buffer);
 pANTLR3_INPUT_STREAM newAntlr3FileStream(const std::string& name);
 pANTLR3_INPUT_STREAM newAntrl3InPlaceStream(pANTLR3_UINT8 basep,
                                             uint32_t size,
                                             const std::string& name);
 
-pANTLR3_INPUT_STREAM
-newAntlr3BufferedStream(std::istream& input, const std::string& name){
+pANTLR3_INPUT_STREAM newAntlr3BufferedStream(std::istream& input,
+                                             const std::string& name,
+                                             LineBuffer* line_buffer) {
   pANTLR3_INPUT_STREAM inputStream = NULL;
   pANTLR3_UINT8 name_duplicate = (pANTLR3_UINT8) strdup(name.c_str());
 
 #ifdef CVC4_ANTLR3_OLD_INPUT_STREAM
   inputStream =
-    antlr3LineBufferedStreamNew(input, 0, name_duplicate);
+      antlr3LineBufferedStreamNew(input, 0, name_duplicate, line_buffer);
 #else /* CVC4_ANTLR3_OLD_INPUT_STREAM */
-  inputStream =
-    antlr3LineBufferedStreamNew(input, ANTLR3_ENC_8BIT, name_duplicate);
+  inputStream = antlr3LineBufferedStreamNew(input, ANTLR3_ENC_8BIT,
+                                            name_duplicate, line_buffer);
 #endif /* CVC4_ANTLR3_OLD_INPUT_STREAM */
 
   free(name_duplicate);
@@ -107,14 +110,14 @@ pANTLR3_INPUT_STREAM newAntrl3InPlaceStream(pANTLR3_UINT8 basep,
   return inputStream;
 }
 
-AntlrInputStream::AntlrInputStream(std::string name,
-                                   pANTLR3_INPUT_STREAM input,
+AntlrInputStream::AntlrInputStream(std::string name, pANTLR3_INPUT_STREAM input,
                                    bool fileIsTemporary,
-                                   pANTLR3_UINT8 inputString) :
-  InputStream(name, fileIsTemporary),
-  d_input(input),
-  d_inputString(inputString)
-{
+                                   pANTLR3_UINT8 inputString,
+                                   LineBuffer* line_buffer)
+    : InputStream(name, fileIsTemporary),
+      d_input(input),
+      d_inputString(inputString),
+      d_line_buffer(line_buffer) {
   assert( input != NULL );
   input->fileName = input->strFactory->newStr8(input->strFactory, (pANTLR3_UINT8)name.c_str());
 }
@@ -124,6 +127,9 @@ AntlrInputStream::~AntlrInputStream() {
   if(d_inputString != NULL){
     free(d_inputString);
   }
+  if (d_line_buffer != NULL) {
+    delete d_line_buffer;
+  }
 }
 
 pANTLR3_INPUT_STREAM AntlrInputStream::getAntlr3InputStream() const {
@@ -150,7 +156,7 @@ AntlrInputStream::newFileInputStream(const std::string& name,
   if(input == NULL) {
     throw InputStreamException("Couldn't open file: " + name);
   }
-  return new AntlrInputStream( name, input, false, NULL );
+  return new AntlrInputStream(name, input, false, NULL, NULL);
 }
 
 
@@ -162,9 +168,11 @@ AntlrInputStream::newStreamInputStream(std::istream& input,
 
   pANTLR3_INPUT_STREAM inputStream = NULL;
   pANTLR3_UINT8 inputStringCopy = NULL;
+  LineBuffer* line_buffer = NULL;
 
   if(lineBuffered) {
-    inputStream = newAntlr3BufferedStream(input, name);
+    line_buffer = new LineBuffer(&input);
+    inputStream = newAntlr3BufferedStream(input, name, line_buffer);
   } else {
 
     // Since these are all NULL on entry, realloc will be called
@@ -207,7 +215,8 @@ AntlrInputStream::newStreamInputStream(std::istream& input,
     throw InputStreamException("Couldn't initialize input: " + name);
   }
 
-  return new AntlrInputStream( name, inputStream, false, inputStringCopy );
+  return new AntlrInputStream(name, inputStream, false, inputStringCopy,
+                              line_buffer);
 }
 
 
@@ -230,7 +239,7 @@ AntlrInputStream::newStringInputStream(const std::string& input,
   if( inputStream==NULL ) {
     throw InputStreamException("Couldn't initialize string input: '" + input + "'");
   }
-  return new AntlrInputStream( name, inputStream, false, input_duplicate );
+  return new AntlrInputStream(name, inputStream, false, input_duplicate, NULL);
 }
 
 AntlrInput* AntlrInput::newInput(InputLanguage lang, AntlrInputStream& inputStream) {
@@ -249,6 +258,7 @@ AntlrInput* AntlrInput::newInput(InputLanguage lang, AntlrInputStream& inputStre
 
   case LANG_SMTLIB_V2_0:
   case LANG_SMTLIB_V2_5:
+  case LANG_SMTLIB_V2_6:
     input = new Smt2Input(inputStream, lang);
     break;
 
diff --git a/src/parser/antlr_input.h b/src/parser/antlr_input.h
index 8e5e828..afede6b 100644
--- a/src/parser/antlr_input.h
+++ b/src/parser/antlr_input.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Christopher L. Conway, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -35,12 +35,12 @@
 #include "base/output.h"
 #include "parser/bounded_token_buffer.h"
 #include "parser/input.h"
+#include "parser/line_buffer.h"
 #include "parser/parser_exception.h"
 #include "util/bitvector.h"
 #include "util/integer.h"
 #include "util/rational.h"
 
-
 namespace CVC4 {
 
 class Command;
@@ -62,10 +62,11 @@ private:
    */
   pANTLR3_UINT8 d_inputString;
 
-  AntlrInputStream(std::string name,
-                   pANTLR3_INPUT_STREAM input,
-                   bool fileIsTemporary,
-                   pANTLR3_UINT8 inputString);
+  LineBuffer* d_line_buffer;
+
+  AntlrInputStream(std::string name, pANTLR3_INPUT_STREAM input,
+                   bool fileIsTemporary, pANTLR3_UINT8 inputString,
+                   LineBuffer* line_buffer);
 
   /* This is private and unimplemented, because you should never use it. */
   AntlrInputStream(const AntlrInputStream& inputStream) CVC4_UNDEFINED;
@@ -201,9 +202,6 @@ public:
   /** Get a bitvector constant from the text of the number and the size token */
   static BitVector tokenToBitvector(pANTLR3_COMMON_TOKEN number, pANTLR3_COMMON_TOKEN size);
 
-  /** Retrieve the remaining text in this input. */
-  std::string getUnparsedText();
-
   /** Get the ANTLR3 lexer for this input. */
   pANTLR3_LEXER getAntlr3Lexer() { return d_lexer; }
 
@@ -243,14 +241,6 @@ protected:
   virtual void setParser(Parser& parser);
 };/* class AntlrInput */
 
-inline std::string AntlrInput::getUnparsedText() {
-  const char *base = (const char *)d_antlr3InputStream->data;
-  const char *cur = (const char *)d_antlr3InputStream->nextChar;
-
-  return std::string(cur, d_antlr3InputStream->sizeBuf - (cur - base));
-}
-
-
 inline std::string AntlrInput::tokenText(pANTLR3_COMMON_TOKEN token) {
   if( token->type == ANTLR3_TOKEN_EOF ) {
     return "<<EOF>>";
diff --git a/src/parser/antlr_input_imports.cpp b/src/parser/antlr_input_imports.cpp
index e74d838..3f0a119 100644
--- a/src/parser/antlr_input_imports.cpp
+++ b/src/parser/antlr_input_imports.cpp
@@ -1,15 +1,13 @@
 /*********************                                                        */
 /*! \file antlr_input_imports.cpp
  ** \verbatim
- ** Original author: cconway
- ** Major contributors: none
- ** Minor contributors (to current version): none
- ** This file is part of the CVC4 prototype.
- ** Copyright (c) 2009, 2010  The Analysis of Computer Systems Group (ACSys)
- ** Courant Institute of Mathematical Sciences
- ** New York University
- ** See the file COPYING in the top-level source directory for licensing
- ** information.\endverbatim
+ ** Top contributors (to current version):
+ **   Christopher L. Conway, Francois Bobot, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
  **
  ** \brief [[ Add one-line brief description here ]]
  **
diff --git a/src/parser/antlr_line_buffered_input.cpp b/src/parser/antlr_line_buffered_input.cpp
index 22bbaf1..8a4bcde 100644
--- a/src/parser/antlr_line_buffered_input.cpp
+++ b/src/parser/antlr_line_buffered_input.cpp
@@ -2,17 +2,30 @@
 /*! \file antlr_line_buffered_input.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Andres Noetzli, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
  **
- ** \brief [[ Add one-line brief description here ]]
+ ** \brief A custom ANTLR input stream that reads from the input stream lazily
  **
- ** [[ Add lengthier description here ]]
- ** \todo document this file
+ ** WARNING: edits to this and related files should be done carefully due to the
+ *interaction with ANTLR internals.
+ **
+ ** This overwrites the _LA and the consume functions of the ANTLR input stream
+ ** to use a LineBuffer instead of accessing a buffer. The lines are kept in
+ ** memory to make sure that existing tokens remain valid (tokens store pointers
+ ** to the corresponding input). We do not overwrite mark(), etc.
+ *because
+ ** we can use the line number and the position within that line to index into
+ *the
+ ** line buffer and the default markers already store and restore that
+ ** information. The line buffer guarantees that lines are consecutive in
+ ** memory, so ANTLR3_INPUT_STREAM::getLineBuf() should work as intended and
+ ** tokens themselves are consecutive in memory (we are assuming that tokens
+ ** are not split across multiple lines).
  **/
 
 // We rely on the inclusion of #include <antlr3.h> in
@@ -32,7 +45,8 @@
 namespace CVC4 {
 namespace parser {
 
-static pANTLR3_INPUT_STREAM    antlr3CreateLineBufferedStream(std::istream& in);
+static pANTLR3_INPUT_STREAM antlr3CreateLineBufferedStream(
+    std::istream& in, LineBuffer* line_buffer);
 
 static void
 setupInputStream(pANTLR3_INPUT_STREAM input)
@@ -206,111 +220,133 @@ setupInputStream(pANTLR3_INPUT_STREAM input)
 #endif /* 0 */
 }
 
-static ANTLR3_UCHAR
-myLA(pANTLR3_INT_STREAM is, ANTLR3_INT32 la) {
-    pANTLR3_INPUT_STREAM input;
+static ANTLR3_UCHAR bufferedInputLA(pANTLR3_INT_STREAM is, ANTLR3_INT32 la) {
+  pANTLR3_INPUT_STREAM input = ((pANTLR3_INPUT_STREAM)(is->super));
+  CVC4::parser::pANTLR3_LINE_BUFFERED_INPUT_STREAM line_buffered_input =
+      (CVC4::parser::pANTLR3_LINE_BUFFERED_INPUT_STREAM)input;
+  uint8_t* result = line_buffered_input->line_buffer->getPtrWithOffset(
+      input->line, input->charPositionInLine, la - 1);
+  return (result != NULL) ? *result : ANTLR3_CHARSTREAM_EOF;
+}
 
-    input   = ((pANTLR3_INPUT_STREAM) (is->super));
+static void bufferedInputRewind(pANTLR3_INT_STREAM is, ANTLR3_MARKER mark) {
+  // This function is essentially the same as the original
+  // antlr38BitRewind() but does not do any seek. The seek in the
+  // original function does not do anything and also calls
+  // antlr38BitSeek() instead of the overloaded seek() function, which
+  // leads to subtle bugs.
+  pANTLR3_LEX_STATE state;
+  pANTLR3_INPUT_STREAM input;
+
+  input = ((pANTLR3_INPUT_STREAM)is->super);
+
+  // Perform any clean up of the marks
+  input->istream->release(input->istream, mark);
+
+  // Find the supplied mark state
+  state = (pANTLR3_LEX_STATE)input->markers->get(input->markers,
+                                                 (ANTLR3_UINT32)(mark - 1));
+  if (state == NULL) {
+    return;
+  }
+
+  // Reset the information in the mark
+  input->charPositionInLine = state->charPositionInLine;
+  input->currentLine = state->currentLine;
+  input->line = state->line;
+  input->nextChar = state->nextChar;
+}
 
-    Debug("pipe") << "LA" << std::endl;
-    if	(( ((pANTLR3_UINT8)input->nextChar) + la - 1) >= (((pANTLR3_UINT8)input->data) + input->sizeBuf))
-    {
-      std::istream& in = *((CVC4::parser::pANTLR3_LINE_BUFFERED_INPUT_STREAM)input)->in;
-      //MGD
-      // in.clear();
-      if(!in) {
-        Debug("pipe") << "EOF" << std::endl;
-        return	ANTLR3_CHARSTREAM_EOF;
-      }
-      Debug("pipe") << "READ" << std::endl;
-      if(input->data == NULL) {
-        Debug("pipe") << "ALLOC" << std::endl;
-        input->data = malloc(1024);
-        input->nextChar = input->data;
-      } else {
-        Debug("pipe") << "REALLOC" << std::endl;
-        size_t pos = (char*)input->nextChar - (char*)input->data;
-        input->data = realloc(input->data, input->sizeBuf + 1024);
-        input->nextChar = (char*)input->data + pos;
-      }
-      in.getline((((char*)input->data) + input->sizeBuf), 1024);
-      while(in.fail() && !in.eof()) {
-        Debug("pipe") << "input string too long, reallocating" << std::endl;
-        input->sizeBuf += strlen(((char*)input->data) + input->sizeBuf);
-        size_t pos = (char*)input->nextChar - (char*)input->data;
-        input->data = realloc(input->data, input->sizeBuf + 1024);
-        input->nextChar = (char*)input->data + pos;
-        in.clear();
-        in.getline((((char*)input->data) + input->sizeBuf), 1024);
-      }
-      input->sizeBuf += strlen(((char*)input->data) + input->sizeBuf);
-      assert(*(((char*)input->data) + input->sizeBuf) == '\0');
-      Debug("pipe") << "SIZEBUF now " << input->sizeBuf << std::endl;
-      *(((char*)input->data) + input->sizeBuf) = '\n';
-      ++input->sizeBuf;
+static void bufferedInputConsume(pANTLR3_INT_STREAM is) {
+  pANTLR3_INPUT_STREAM input = ((pANTLR3_INPUT_STREAM)(is->super));
+  CVC4::parser::pANTLR3_LINE_BUFFERED_INPUT_STREAM line_buffered_input =
+      (CVC4::parser::pANTLR3_LINE_BUFFERED_INPUT_STREAM)input;
+
+  uint8_t* current = line_buffered_input->line_buffer->getPtr(
+      input->line, input->charPositionInLine);
+  if (current != NULL) {
+    input->charPositionInLine++;
+
+    if (*current == LineBuffer::NewLineChar) {
+      // Reset for start of a new line of input
+      input->line++;
+      input->charPositionInLine = 0;
+      input->currentLine = line_buffered_input->line_buffer->getPtr(
+          input->line, input->charPositionInLine);
+      Debug("pipe") << "-- newline!" << std::endl;
     }
 
-    Debug("pipe") << "READ POINTER[" << la << "] AT: >>" << std::string(((char*)input->nextChar), input->sizeBuf - (((char*)input->nextChar) - (char*)input->data)) << "<< returning '" << (char)(*((pANTLR3_UINT8)input->nextChar + la - 1)) << "' (" << (unsigned)(*((pANTLR3_UINT8)input->nextChar + la - 1)) << ")" << std::endl;
-    return	(ANTLR3_UCHAR)(*((pANTLR3_UINT8)input->nextChar + la - 1));
+    input->nextChar = line_buffered_input->line_buffer->getPtr(
+        input->line, input->charPositionInLine);
+  }
 }
 
-
-static void
-myConsume(pANTLR3_INT_STREAM is)
-{
-    pANTLR3_INPUT_STREAM input;
-
-    input   = ((pANTLR3_INPUT_STREAM) (is->super));
-
-    Debug("pipe") << "consume! '" << *(char*)input->nextChar << "' (" << (unsigned)*(char*)input->nextChar << ")" << std::endl;
-    if	((pANTLR3_UINT8)(input->nextChar) < (((pANTLR3_UINT8)input->data) + input->sizeBuf))
-    {
-	/* Indicate one more character in this line
-	 */
-	input->charPositionInLine++;
-
-	if  ((ANTLR3_UCHAR)(*((pANTLR3_UINT8)input->nextChar)) == input->newlineChar)
-	{
-	    /* Reset for start of a new line of input
-	     */
-	    input->line++;
-	    input->charPositionInLine	= 0;
-	    input->currentLine		= (void *)(((pANTLR3_UINT8)input->nextChar) + 1);
-            Debug("pipe") << "-- newline!" << std::endl;
-	}
-
-	/* Increment to next character position
-	 */
-	input->nextChar = (void *)(((pANTLR3_UINT8)input->nextChar) + 1);
-        Debug("pipe") << "-- advance nextChar! looking at '" << *(char*)input->nextChar << "' (" << (unsigned)*(char*)input->nextChar << ")" << std::endl;
-    } else Debug("pipe") << "-- nothing!" << std::endl;
+static void bufferedInputSeek(pANTLR3_INT_STREAM is, ANTLR3_MARKER seekPoint) {
+  // In contrast to the original antlr38BitSeek() function, we only
+  // support seeking forward (seeking backwards is only supported for
+  // rewinding in the original code, which we do not do when rewinding,
+  // so this should be fine).
+  pANTLR3_INPUT_STREAM input = ((pANTLR3_INPUT_STREAM)(is->super));
+  pANTLR3_LINE_BUFFERED_INPUT_STREAM line_buffered_input =
+      (CVC4::parser::pANTLR3_LINE_BUFFERED_INPUT_STREAM)input;
+
+  // Check that we are not seeking backwards.
+  assert(!line_buffered_input->line_buffer->isPtrBefore(
+      (uint8_t*)seekPoint, input->line, input->charPositionInLine));
+
+  ssize_t count = (ssize_t)(seekPoint - (ANTLR3_MARKER)(input->nextChar));
+  while (count > 0) {
+    is->consume(is);
+    count--;
+  }
 }
 
-pANTLR3_INPUT_STREAM
-antlr3LineBufferedStreamNew(std::istream& in, ANTLR3_UINT32 encoding, pANTLR3_UINT8 name)
-{
-    pANTLR3_INPUT_STREAM    input;
-
-    if(!in) {
-      return NULL;
-    }
+static ANTLR3_UINT32 bufferedInputSize(pANTLR3_INPUT_STREAM input) {
+  // Not supported for this type of stream
+  assert(false);
+  return 0;
+}
 
-    // First order of business is to set up the stream and install the data pointer.
-    // Then we will work out the encoding and byte order and adjust the API functions that are installed for the
-    // default 8Bit stream accordingly.
-    //
-    input   = antlr3CreateLineBufferedStream(in);
-    if  (input == NULL)
-    {
-        return NULL;
-    }
+static void bufferedInputSetNewLineChar(pANTLR3_INPUT_STREAM input,
+                                        ANTLR3_UINT32 newlineChar) {
+  // Not supported for this type of stream
+  assert(false);
+}
 
-    // Size (in bytes) of the given 'string'
-    //
-    input->sizeBuf		= 0;
+static void bufferedInputSetUcaseLA(pANTLR3_INPUT_STREAM input,
+                                    ANTLR3_BOOLEAN flag) {
+  // Not supported for this type of stream
+  assert(false);
+}
 
-    input->istream->_LA		= myLA;
-    input->istream->consume	= myConsume;
+pANTLR3_INPUT_STREAM antlr3LineBufferedStreamNew(std::istream& in,
+                                                 ANTLR3_UINT32 encoding,
+                                                 pANTLR3_UINT8 name,
+                                                 LineBuffer* line_buffer) {
+  pANTLR3_INPUT_STREAM input;
+
+  if (!in) {
+    return NULL;
+  }
+
+  // First order of business is to set up the stream and install the data
+  // pointer.
+  // Then we will work out the encoding and byte order and adjust the API
+  // functions that are installed for the
+  // default 8Bit stream accordingly.
+  //
+  input = antlr3CreateLineBufferedStream(in, line_buffer);
+  if (input == NULL) {
+    return NULL;
+  }
+
+  input->istream->_LA = bufferedInputLA;
+  input->istream->consume = bufferedInputConsume;
+  input->istream->seek = bufferedInputSeek;
+  input->istream->rewind = bufferedInputRewind;
+  input->size = bufferedInputSize;
+  input->SetNewLineChar = bufferedInputSetNewLineChar;
+  input->setUcaseLA = bufferedInputSetUcaseLA;
 
 #ifndef CVC4_ANTLR3_OLD_INPUT_STREAM
     // We have the data in memory now so we can deal with it according to
@@ -326,53 +362,60 @@ antlr3LineBufferedStreamNew(std::istream& in, ANTLR3_UINT32 encoding, pANTLR3_UI
 
     // Now we can set up the file name
     //
-    input->istream->streamName	= input->strFactory->newStr8(input->strFactory, name);
-    input->fileName		= input->istream->streamName;
+    input->istream->streamName =
+        input->strFactory->newStr8(input->strFactory, name);
+    input->fileName = input->istream->streamName;
 
     return input;
 }
 
-static pANTLR3_INPUT_STREAM
-antlr3CreateLineBufferedStream(std::istream& in)
-{
-	// Pointer to the input stream we are going to create
-	//
-	pANTLR3_INPUT_STREAM    input;
-
-	if	(!in)
-	{
-		return NULL;
-	}
-
-	// Allocate memory for the input stream structure
-	//
-	input   = (pANTLR3_INPUT_STREAM)
-		ANTLR3_CALLOC(1, sizeof(ANTLR3_LINE_BUFFERED_INPUT_STREAM));
-
-	if	(input == NULL)
-	{
-		return	NULL;
-	}
-
-	// Structure was allocated correctly, now we can install the pointer
-	//
-        input->data             = malloc(1024);
-        input->isAllocated	= ANTLR3_FALSE;
-
-        ((pANTLR3_LINE_BUFFERED_INPUT_STREAM)input)->in = ∈
-	// Call the common 8 bit input stream handler
-	// initialization.
-	//
+static pANTLR3_INPUT_STREAM antlr3CreateLineBufferedStream(
+    std::istream& in, LineBuffer* line_buffer) {
+  // Pointer to the input stream we are going to create
+  //
+  pANTLR3_INPUT_STREAM input;
+
+  if (!in) {
+    return NULL;
+  }
+
+  // Allocate memory for the input stream structure
+  //
+  input = (pANTLR3_INPUT_STREAM)ANTLR3_CALLOC(
+      1, sizeof(ANTLR3_LINE_BUFFERED_INPUT_STREAM));
+
+  if (input == NULL) {
+    return NULL;
+  }
+
+  // Structure was allocated correctly, now we can install the pointer
+  //
+  input->data = NULL;
+  input->isAllocated = ANTLR3_FALSE;
+
+  ((pANTLR3_LINE_BUFFERED_INPUT_STREAM)input)->in = ∈
+  ((pANTLR3_LINE_BUFFERED_INPUT_STREAM)input)->line_buffer = line_buffer;
+// Call the common 8 bit input stream handler
+// initialization.
+//
 #ifdef CVC4_ANTLR3_OLD_INPUT_STREAM
-	antlr3AsciiSetupStream(input, ANTLR3_CHARSTREAM);
+  antlr3AsciiSetupStream(input, ANTLR3_CHARSTREAM);
 #else /* CVC4_ANTLR3_OLD_INPUT_STREAM */
-	antlr38BitSetupStream(input);
-        // In some libantlr3c 3.4-beta versions, this call is not included in the above.
-        // This is probably an erroneously-deleted line in the libantlr3c source since 3.2.
-	antlr3GenericSetupStream(input);
+  antlr38BitSetupStream(input);
+  // In some libantlr3c 3.4-beta versions, this call is not included in the
+  // above.
+  // This is probably an erroneously-deleted line in the libantlr3c source since
+  // 3.2.
+  antlr3GenericSetupStream(input);
 #endif /* CVC4_ANTLR3_OLD_INPUT_STREAM */
 
-        return  input;
+  input->sizeBuf = 0;
+  input->newlineChar = LineBuffer::NewLineChar;
+  input->charPositionInLine = 0;
+  input->line = 0;
+  input->nextChar = line_buffer->getPtr(0, 0);
+  input->currentLine = line_buffer->getPtr(0, 0);
+  return input;
 }
 
 }/* CVC4::parser namespace */
diff --git a/src/parser/antlr_line_buffered_input.h b/src/parser/antlr_line_buffered_input.h
index 2c01a9b..bdff4b6 100644
--- a/src/parser/antlr_line_buffered_input.h
+++ b/src/parser/antlr_line_buffered_input.h
@@ -2,17 +2,22 @@
 /*! \file antlr_line_buffered_input.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Andres Noetzli, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
  **
- ** \brief [[ Add one-line brief description here ]]
+ ** \brief A custom ANTLR input stream that reads from the input stream lazily
  **
- ** [[ Add lengthier description here ]]
- ** \todo document this file
+ ** By default, ANTLR expects the whole input to be in a single, consecutive
+ ** buffer. When doing incremental solving and the input is coming from the
+ ** standard input, this is problematic because CVC4 might receive new input
+ ** based on the result of solving the existing input.
+ **
+ ** This file overwrites the _LA and the consume functions of the input streamto
+ ** achieve that and stores the lines received so far in a LineBuffer.
  **/
 
 // These headers should be the first two included.
@@ -27,16 +32,21 @@
 
 #include <istream>
 
+#include "parser/line_buffer.h"
+
 namespace CVC4 {
 namespace parser {
 
 typedef struct ANTLR3_LINE_BUFFERED_INPUT_STREAM {
   ANTLR3_INPUT_STREAM antlr;
   std::istream* in;
+  LineBuffer* line_buffer;
 } *pANTLR3_LINE_BUFFERED_INPUT_STREAM;
 
-pANTLR3_INPUT_STREAM
-antlr3LineBufferedStreamNew(std::istream& in, ANTLR3_UINT32 encoding, pANTLR3_UINT8 name);
+pANTLR3_INPUT_STREAM antlr3LineBufferedStreamNew(std::istream& in,
+                                                 ANTLR3_UINT32 encoding,
+                                                 pANTLR3_UINT8 name,
+                                                 LineBuffer* line_buffer);
 
 }/* CVC4::parser namespace */
 }/* CVC4 namespace */
diff --git a/src/parser/antlr_tracing.h b/src/parser/antlr_tracing.h
index 93a7817..a1d2811 100644
--- a/src/parser/antlr_tracing.h
+++ b/src/parser/antlr_tracing.h
@@ -2,9 +2,9 @@
 /*! \file antlr_tracing.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/antlr_undefines.h b/src/parser/antlr_undefines.h
index edf64c8..fa80e51 100644
--- a/src/parser/antlr_undefines.h
+++ b/src/parser/antlr_undefines.h
@@ -2,9 +2,9 @@
 /*! \file antlr_undefines.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/bounded_token_buffer.cpp b/src/parser/bounded_token_buffer.cpp
index 31a2219..7fb29b9 100644
--- a/src/parser/bounded_token_buffer.cpp
+++ b/src/parser/bounded_token_buffer.cpp
@@ -2,9 +2,9 @@
 /*! \file bounded_token_buffer.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Christopher L. Conway, Morgan Deters, Tim King
+ **   Christopher L. Conway, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/bounded_token_buffer.h b/src/parser/bounded_token_buffer.h
index 947b33f..4fc62d4 100644
--- a/src/parser/bounded_token_buffer.h
+++ b/src/parser/bounded_token_buffer.h
@@ -2,9 +2,9 @@
 /*! \file bounded_token_buffer.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Christopher L. Conway, Morgan Deters, Tim King
+ **   Christopher L. Conway, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/bounded_token_factory.cpp b/src/parser/bounded_token_factory.cpp
index 1c5a009..81be2e5 100644
--- a/src/parser/bounded_token_factory.cpp
+++ b/src/parser/bounded_token_factory.cpp
@@ -2,9 +2,9 @@
 /*! \file bounded_token_factory.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Christopher L. Conway, Morgan Deters, Tim King
+ **   Christopher L. Conway, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/bounded_token_factory.h b/src/parser/bounded_token_factory.h
index 8535d49..c2d3417 100644
--- a/src/parser/bounded_token_factory.h
+++ b/src/parser/bounded_token_factory.h
@@ -2,9 +2,9 @@
 /*! \file bounded_token_factory.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Christopher L. Conway, Morgan Deters, Tim King
+ **   Christopher L. Conway, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/cvc/Cvc.g b/src/parser/cvc/Cvc.g
index fb03040..622fa9c 100644
--- a/src/parser/cvc/Cvc.g
+++ b/src/parser/cvc/Cvc.g
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Christopher L. Conway, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -209,6 +209,8 @@ tokens {
   TRANSPOSE_TOK = 'TRANSPOSE';
   PRODUCT_TOK = 'PRODUCT';
   TRANSCLOSURE_TOK = 'TCLOSURE';
+  IDEN_TOK = 'IDEN';
+  JOIN_IMAGE_TOK = 'JOIN_IMAGE';  
 
   // Strings
 
@@ -324,6 +326,8 @@ int getOperatorPrecedence(int type) {
   case JOIN_TOK:
   case TRANSPOSE_TOK:
   case PRODUCT_TOK:
+  case IDEN_TOK:
+  case JOIN_IMAGE_TOK:  
   case TRANSCLOSURE_TOK: return 24;
   case LEQ_TOK:
   case LT_TOK:
@@ -365,6 +369,7 @@ Kind getOperatorKind(int type, bool& negate) {
   
   case PRODUCT_TOK: return kind::PRODUCT;
   case JOIN_TOK: return kind::JOIN;
+  case JOIN_IMAGE_TOK: return kind::JOIN_IMAGE;  
 
     // comparisonBinop
   case EQUAL_TOK: return kind::EQUAL;
@@ -448,7 +453,7 @@ Expr createPrecedenceTree(Parser* parser, ExprManager* em,
   default: break;
   }
   Expr e = em->mkExpr(k, lhs, rhs);
-  return negate ? em->mkExpr(e.getType().isSet() ? kind::COMPLEMENT : kind::NOT, e) : e;
+  return negate ? em->mkExpr(kind::NOT, e) : e;
 }/* createPrecedenceTree() recursive variant */
 
 Expr createPrecedenceTree(Parser* parser, ExprManager* em,
@@ -474,9 +479,8 @@ Expr createPrecedenceTree(Parser* parser, ExprManager* em,
 
 /** Add n NOTs to the front of e and return the result. */
 Expr addNots(ExprManager* em, size_t n, Expr e) {
-  Kind k = e.getType().isSet() ? kind::COMPLEMENT : kind::NOT;
   while(n-- > 0) {
-    e = em->mkExpr(k, e);
+    e = em->mkExpr(kind::NOT, e);
   }
   return e;
 }/* addNots() */
@@ -485,10 +489,11 @@ Expr addNots(ExprManager* em, size_t n, Expr e) {
 
 @header {
 /**
- ** This file is part of CVC4.
- ** Copyright (c) 2009-2014  New York University and The University of Iowa
- ** See the file COPYING in the top-level source directory for licensing
- ** information.
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.
  **/
 }/* @header */
 
@@ -1510,6 +1515,7 @@ booleanBinop[unsigned& op]
   | AND_TOK
   | JOIN_TOK
   | PRODUCT_TOK
+  | JOIN_IMAGE_TOK  
   ;
 
 comparison[CVC4::Expr& f]
@@ -1688,23 +1694,28 @@ bvBinop[unsigned& op]
 bvNegTerm[CVC4::Expr& f]
     /* BV neg */
   : BVNEG_TOK bvNegTerm[f]
-    { f = MK_EXPR(CVC4::kind::BITVECTOR_NOT, f); }
-  | NOT_TOK bvNegTerm[f]
-    { f = MK_EXPR(CVC4::kind::COMPLEMENT, f); } 
-  | TRANSPOSE_TOK bvNegTerm[f]
+    { f = f.getType().isSet() ? MK_EXPR(CVC4::kind::COMPLEMENT, f) : MK_EXPR(CVC4::kind::BITVECTOR_NOT, f); }
+  | relationTerm[f]
+  ;
+
+relationTerm[CVC4::Expr& f]
+    /* relation terms */
+  : TRANSPOSE_TOK relationTerm[f]
     { f = MK_EXPR(CVC4::kind::TRANSPOSE, f); } 
-  | TRANSCLOSURE_TOK bvNegTerm[f]
+  | TRANSCLOSURE_TOK relationTerm[f]
     { f = MK_EXPR(CVC4::kind::TCLOSURE, f); }
-  | TUPLE_TOK LPAREN bvNegTerm[f] RPAREN
+  | TUPLE_TOK LPAREN relationTerm[f] RPAREN
     { std::vector<Type> types;
       std::vector<Expr> args;
       args.push_back(f);
-	  types.push_back(f.getType());
+	    types.push_back(f.getType());
       DatatypeType t = EXPR_MANAGER->mkTupleType(types);
       const Datatype& dt = t.getDatatype();
       args.insert( args.begin(), dt[0].getConstructor() );
       f = MK_EXPR(kind::APPLY_CONSTRUCTOR, args);
-    }             
+    }
+  | IDEN_TOK relationTerm[f]
+    { f = MK_EXPR(CVC4::kind::IDEN, f); }                 
   | postfixTerm[f]
   ;
 
@@ -1837,7 +1848,7 @@ postfixTerm[CVC4::Expr& f]
         } else if(f.getKind() == CVC4::kind::EMPTYSET && t.isSet()) {
           f = MK_CONST(CVC4::EmptySet(t));
         } else if(f.getKind() == CVC4::kind::UNIVERSE_SET && t.isSet()) {
-          f = EXPR_MANAGER->mkUniqueVar(t, kind::UNIVERSE_SET);
+          f = EXPR_MANAGER->mkNullaryOperator(t, kind::UNIVERSE_SET);
         } else {
           if(f.getType() != t) {
             PARSER_STATE->parseError("Type ascription not satisfied.");
@@ -2073,7 +2084,7 @@ simpleTerm[CVC4::Expr& f]
     { f = MK_CONST(EmptySet(Type())); }
   | UNIVSET_TOK
     { //booleanType is placeholder
-      f = EXPR_MANAGER->mkUniqueVar(EXPR_MANAGER->booleanType(), kind::UNIVERSE_SET);
+      f = EXPR_MANAGER->mkNullaryOperator(EXPR_MANAGER->booleanType(), kind::UNIVERSE_SET);
     }
 
     /* finite set literal */
diff --git a/src/parser/cvc/Cvc.tokens b/src/parser/cvc/Cvc.tokens
index c95b1ff..f3ff4ba 100644
--- a/src/parser/cvc/Cvc.tokens
+++ b/src/parser/cvc/Cvc.tokens
@@ -100,117 +100,119 @@ HELP_TOK=102
 HEX_DIGIT=103
 HEX_LITERAL=104
 IDENTIFIER=105
-IFF_TOK=106
-IF_TOK=107
-IMPLIES_TOK=108
-INCLUDE_TOK=109
-INTDIV_TOK=110
-INTEGER_LITERAL=111
-INT_TOK=112
-IN_TOK=113
-IS_INTEGER_TOK=114
-JOIN_TOK=115
-LAMBDA=116
-LBRACE=117
-LBRACKET=118
-LEFTSHIFT_TOK=119
-LEQ_TOK=120
-LET_TOK=121
-LPAREN=122
-LT_TOK=123
-MEMBER_TOK=124
-MINUS_TOK=125
-MOD_TOK=126
-NOT_TOK=127
-NUMBER_OR_RANGEOP=128
-OF_TOK=129
-OPTION_TOK=130
-OR_TOK=131
-PARENHASH=132
-PATTERN_TOK=133
-PLUS_TOK=134
-POPTO_SCOPE_TOK=135
-POPTO_TOK=136
-POP_SCOPE_TOK=137
-POP_TOK=138
-PRINT_TOK=139
-PRINT_TYPE_TOK=140
-PRODUCT_TOK=141
-PUSH_SCOPE_TOK=142
-PUSH_TOK=143
-QUERY_TOK=144
-RBRACE=145
-RBRACKET=146
-REAL_TOK=147
-RESET_TOK=148
-RESTART_TOK=149
-RIGHTSHIFT_TOK=150
-RPAREN=151
-SEMICOLON=152
-SETS_CARD_TOK=153
-SET_TOK=154
-SQHASH=155
-STAR_TOK=156
-STRING_CHARAT_TOK=157
-STRING_CONCAT_TOK=158
-STRING_CONTAINS_TOK=159
-STRING_INDEXOF_TOK=160
-STRING_ITOS_TOK=161
-STRING_LENGTH_TOK=162
-STRING_LITERAL=163
-STRING_PREFIXOF_TOK=164
-STRING_REPLACE_TOK=165
-STRING_STOI_TOK=166
-STRING_STOU16_TOK=167
-STRING_STOU32_TOK=168
-STRING_SUBSTR_TOK=169
-STRING_SUFFIXOF_TOK=170
-STRING_TOK=171
-STRING_U16TOS_TOK=172
-STRING_U32TOS_TOK=173
-SUBSTITUTE_TOK=174
-SUBTYPE_TOK=175
-SX_TOK=176
-THEN_TOK=177
-TRACE_TOK=178
-TRANSCLOSURE_TOK=179
-TRANSFORM_TOK=180
-TRANSPOSE_TOK=181
-TRUE_TOK=182
-TUPLE_TOK=183
-TYPE_TOK=184
-UNDERSCORE=185
-UNIVSET_TOK=186
-UNTRACE_TOK=187
-WHERE_TOK=188
-WHITESPACE=189
-WITH_TOK=190
-XOR_TOK=191
+IDEN_TOK=106
+IFF_TOK=107
+IF_TOK=108
+IMPLIES_TOK=109
+INCLUDE_TOK=110
+INTDIV_TOK=111
+INTEGER_LITERAL=112
+INT_TOK=113
+IN_TOK=114
+IS_INTEGER_TOK=115
+JOIN_IMAGE_TOK=116
+JOIN_TOK=117
+LAMBDA=118
+LBRACE=119
+LBRACKET=120
+LEFTSHIFT_TOK=121
+LEQ_TOK=122
+LET_TOK=123
+LPAREN=124
+LT_TOK=125
+MEMBER_TOK=126
+MINUS_TOK=127
+MOD_TOK=128
+NOT_TOK=129
+NUMBER_OR_RANGEOP=130
+OF_TOK=131
+OPTION_TOK=132
+OR_TOK=133
+PARENHASH=134
+PATTERN_TOK=135
+PLUS_TOK=136
+POPTO_SCOPE_TOK=137
+POPTO_TOK=138
+POP_SCOPE_TOK=139
+POP_TOK=140
+PRINT_TOK=141
+PRINT_TYPE_TOK=142
+PRODUCT_TOK=143
+PUSH_SCOPE_TOK=144
+PUSH_TOK=145
+QUERY_TOK=146
+RBRACE=147
+RBRACKET=148
+REAL_TOK=149
+RESET_TOK=150
+RESTART_TOK=151
+RIGHTSHIFT_TOK=152
+RPAREN=153
+SEMICOLON=154
+SETS_CARD_TOK=155
+SET_TOK=156
+SQHASH=157
+STAR_TOK=158
+STRING_CHARAT_TOK=159
+STRING_CONCAT_TOK=160
+STRING_CONTAINS_TOK=161
+STRING_INDEXOF_TOK=162
+STRING_ITOS_TOK=163
+STRING_LENGTH_TOK=164
+STRING_LITERAL=165
+STRING_PREFIXOF_TOK=166
+STRING_REPLACE_TOK=167
+STRING_STOI_TOK=168
+STRING_STOU16_TOK=169
+STRING_STOU32_TOK=170
+STRING_SUBSTR_TOK=171
+STRING_SUFFIXOF_TOK=172
+STRING_TOK=173
+STRING_U16TOS_TOK=174
+STRING_U32TOS_TOK=175
+SUBSTITUTE_TOK=176
+SUBTYPE_TOK=177
+SX_TOK=178
+THEN_TOK=179
+TRACE_TOK=180
+TRANSCLOSURE_TOK=181
+TRANSFORM_TOK=182
+TRANSPOSE_TOK=183
+TRUE_TOK=184
+TUPLE_TOK=185
+TYPE_TOK=186
+UNDERSCORE=187
+UNIVSET_TOK=188
+UNTRACE_TOK=189
+WHERE_TOK=190
+WHITESPACE=191
+WITH_TOK=192
+XOR_TOK=193
 '#)'=100
 '#]'=101
 '&'=18
-'(#'=132
-'('=122
-')'=151
-'*'=156
-'+'=134
+'(#'=134
+'('=124
+')'=153
+'*'=158
+'+'=136
 ','=53
-'-'=125
+'-'=127
 '->'=9
 '/'=67
 '/='=64
 ':'=52
 ':='=12
-';'=152
-'<'=123
-'<<'=119
-'<='=120
-'<=>'=106
+';'=154
+'<'=125
+'<<'=121
+'<='=122
+'<=>'=107
 '='=84
-'=>'=108
+'=>'=109
 '>'=99
 '>='=94
-'>>'=150
+'>>'=152
 '@'=55
 'ABS'=4
 'AND'=6
@@ -251,12 +253,12 @@ XOR_TOK=191
 'BVXOR'=47
 'BVZEROEXTEND'=48
 'CALL'=49
-'CARD'=153
-'CHARAT'=157
+'CARD'=155
+'CHARAT'=159
 'CHECKSAT'=50
 'CHECK_TYPE'=51
-'CONCAT'=158
-'CONTAINS'=159
+'CONCAT'=160
+'CONTAINS'=161
 'CONTEXT'=56
 'CONTINUE'=57
 'COUNTEREXAMPLE'=58
@@ -264,7 +266,7 @@ XOR_TOK=191
 'DATATYPE'=60
 'DBG'=61
 'DISTINCT'=65
-'DIV'=110
+'DIV'=111
 'DIVISIBLE'=66
 'DUMP_ASSUMPTIONS'=70
 'DUMP_CLOSURE'=72
@@ -292,70 +294,72 @@ XOR_TOK=191
 'GET_VALUE'=98
 'HAS_CARD'=91
 'HELP'=102
-'IF'=107
-'IN'=113
-'INCLUDE'=109
-'INDEXOF'=160
-'INT'=112
-'INTEGER_TO_STRING'=161
-'IS_IN'=124
-'IS_INTEGER'=114
-'JOIN'=115
-'LAMBDA'=116
-'LENGTH'=162
-'LET'=121
-'MOD'=126
-'NOT'=127
-'OF'=129
-'OPTION'=130
-'OR'=131
-'PATTERN'=133
-'POP'=138
-'POPTO'=136
-'POPTO_SCOPE'=135
-'POP_SCOPE'=137
-'PREFIXOF'=164
-'PRINT'=139
-'PRINT_TYPE'=140
-'PRODUCT'=141
-'PUSH'=143
-'PUSH_SCOPE'=142
-'QUERY'=144
-'REAL'=147
-'REPLACE'=165
-'RESET'=148
-'RESTART'=149
-'SET'=154
-'STRING'=171
-'STRING_TO_INTEGER'=166
-'STRING_TO_UINT16'=167
-'STRING_TO_UINT32'=168
-'SUBSTITUTE'=174
-'SUBSTR'=169
-'SUBTYPE'=175
-'SUFFIXOF'=170
-'SX'=176
-'TCLOSURE'=179
-'THEN'=177
-'TRACE'=178
-'TRANSFORM'=180
-'TRANSPOSE'=181
-'TRUE'=182
-'TUPLE'=183
-'TYPE'=184
-'UINT16_TO_STRING'=172
-'UINT32_TO_STRING'=173
-'UNIVERSE'=186
-'UNTRACE'=187
-'WHERE'=188
-'WITH'=190
-'XOR'=191
-'[#'=155
-'['=118
-']'=146
+'IDEN'=106
+'IF'=108
+'IN'=114
+'INCLUDE'=110
+'INDEXOF'=162
+'INT'=113
+'INTEGER_TO_STRING'=163
+'IS_IN'=126
+'IS_INTEGER'=115
+'JOIN'=117
+'JOIN_IMAGE'=116
+'LAMBDA'=118
+'LENGTH'=164
+'LET'=123
+'MOD'=128
+'NOT'=129
+'OF'=131
+'OPTION'=132
+'OR'=133
+'PATTERN'=135
+'POP'=140
+'POPTO'=138
+'POPTO_SCOPE'=137
+'POP_SCOPE'=139
+'PREFIXOF'=166
+'PRINT'=141
+'PRINT_TYPE'=142
+'PRODUCT'=143
+'PUSH'=145
+'PUSH_SCOPE'=144
+'QUERY'=146
+'REAL'=149
+'REPLACE'=167
+'RESET'=150
+'RESTART'=151
+'SET'=156
+'STRING'=173
+'STRING_TO_INTEGER'=168
+'STRING_TO_UINT16'=169
+'STRING_TO_UINT32'=170
+'SUBSTITUTE'=176
+'SUBSTR'=171
+'SUBTYPE'=177
+'SUFFIXOF'=172
+'SX'=178
+'TCLOSURE'=181
+'THEN'=179
+'TRACE'=180
+'TRANSFORM'=182
+'TRANSPOSE'=183
+'TRUE'=184
+'TUPLE'=185
+'TYPE'=186
+'UINT16_TO_STRING'=174
+'UINT32_TO_STRING'=175
+'UNIVERSE'=188
+'UNTRACE'=189
+'WHERE'=190
+'WITH'=192
+'XOR'=193
+'[#'=157
+'['=120
+']'=148
 '^'=88
-'_'=185
-'{'=117
+'_'=187
+'{'=119
 '|'=14
-'}'=145
+'}'=147
 '~'=28
diff --git a/src/parser/cvc/CvcLexer.c b/src/parser/cvc/CvcLexer.c
index c6b5f0b..201a2ef 100644
--- a/src/parser/cvc/CvcLexer.c
+++ b/src/parser/cvc/CvcLexer.c
@@ -1,8 +1,8 @@
 /** \file
  *  This C source file was generated by $ANTLR version 3.4
  *
- *     -  From the grammar source file : ../../../../../../src/parser/cvc/Cvc.g
- *     -                            On : 2017-03-16 01:03:03
+ *     -  From the grammar source file : ../../../../src/parser/cvc/Cvc.g
+ *     -                            On : 2017-07-10 10:01:31
  *     -                 for the lexer : CvcLexerLexer
  *
  * Editing it, at least manually, is not wise.
@@ -134,78 +134,80 @@ static ANTLR3_UCHAR	lit_78[]  = { 0x47, 0x45, 0x54, 0x5F, 0x56, 0x41, 0x4C, 0x55
 static ANTLR3_UCHAR	lit_79[]  = { 0x23, 0x29,  ANTLR3_STRING_TERMINATOR};
 static ANTLR3_UCHAR	lit_80[]  = { 0x23, 0x5D,  ANTLR3_STRING_TERMINATOR};
 static ANTLR3_UCHAR	lit_81[]  = { 0x48, 0x45, 0x4C, 0x50,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_82[]  = { 0x3C, 0x3D, 0x3E,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_83[]  = { 0x49, 0x46,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_84[]  = { 0x3D, 0x3E,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_85[]  = { 0x49, 0x4E, 0x43, 0x4C, 0x55, 0x44, 0x45,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_86[]  = { 0x44, 0x49, 0x56,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_87[]  = { 0x49, 0x4E, 0x54,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_88[]  = { 0x49, 0x4E,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_89[]  = { 0x49, 0x53, 0x5F, 0x49, 0x4E, 0x54, 0x45, 0x47, 0x45, 0x52,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_90[]  = { 0x4A, 0x4F, 0x49, 0x4E,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_91[]  = { 0x4C, 0x41, 0x4D, 0x42, 0x44, 0x41,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_92[]  = { 0x3C, 0x3C,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_93[]  = { 0x3C, 0x3D,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_94[]  = { 0x4C, 0x45, 0x54,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_95[]  = { 0x49, 0x53, 0x5F, 0x49, 0x4E,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_96[]  = { 0x4D, 0x4F, 0x44,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_97[]  = { 0x4E, 0x4F, 0x54,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_98[]  = { 0x4F, 0x46,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_99[]  = { 0x4F, 0x50, 0x54, 0x49, 0x4F, 0x4E,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_100[]  = { 0x4F, 0x52,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_101[]  = { 0x28, 0x23,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_102[]  = { 0x50, 0x41, 0x54, 0x54, 0x45, 0x52, 0x4E,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_103[]  = { 0x50, 0x4F, 0x50, 0x54, 0x4F, 0x5F, 0x53, 0x43, 0x4F, 0x50, 0x45,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_104[]  = { 0x50, 0x4F, 0x50, 0x54, 0x4F,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_105[]  = { 0x50, 0x4F, 0x50, 0x5F, 0x53, 0x43, 0x4F, 0x50, 0x45,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_106[]  = { 0x50, 0x4F, 0x50,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_107[]  = { 0x50, 0x52, 0x49, 0x4E, 0x54,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_108[]  = { 0x50, 0x52, 0x49, 0x4E, 0x54, 0x5F, 0x54, 0x59, 0x50, 0x45,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_109[]  = { 0x50, 0x52, 0x4F, 0x44, 0x55, 0x43, 0x54,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_110[]  = { 0x50, 0x55, 0x53, 0x48, 0x5F, 0x53, 0x43, 0x4F, 0x50, 0x45,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_111[]  = { 0x50, 0x55, 0x53, 0x48,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_112[]  = { 0x51, 0x55, 0x45, 0x52, 0x59,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_113[]  = { 0x52, 0x45, 0x41, 0x4C,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_114[]  = { 0x52, 0x45, 0x53, 0x45, 0x54,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_115[]  = { 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_116[]  = { 0x3E, 0x3E,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_117[]  = { 0x43, 0x41, 0x52, 0x44,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_118[]  = { 0x53, 0x45, 0x54,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_119[]  = { 0x5B, 0x23,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_120[]  = { 0x43, 0x48, 0x41, 0x52, 0x41, 0x54,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_121[]  = { 0x43, 0x4F, 0x4E, 0x43, 0x41, 0x54,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_122[]  = { 0x43, 0x4F, 0x4E, 0x54, 0x41, 0x49, 0x4E, 0x53,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_123[]  = { 0x49, 0x4E, 0x44, 0x45, 0x58, 0x4F, 0x46,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_124[]  = { 0x49, 0x4E, 0x54, 0x45, 0x47, 0x45, 0x52, 0x5F, 0x54, 0x4F, 0x5F, 0x53, 0x54, 0x52, 0x49, 0x4E, 0x47,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_125[]  = { 0x4C, 0x45, 0x4E, 0x47, 0x54, 0x48,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_126[]  = { 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x4F, 0x46,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_127[]  = { 0x52, 0x45, 0x50, 0x4C, 0x41, 0x43, 0x45,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_128[]  = { 0x53, 0x54, 0x52, 0x49, 0x4E, 0x47, 0x5F, 0x54, 0x4F, 0x5F, 0x49, 0x4E, 0x54, 0x45, 0x47, 0x45, 0x52,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_129[]  = { 0x53, 0x54, 0x52, 0x49, 0x4E, 0x47, 0x5F, 0x54, 0x4F, 0x5F, 0x55, 0x49, 0x4E, 0x54, 0x31, 0x36,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_130[]  = { 0x53, 0x54, 0x52, 0x49, 0x4E, 0x47, 0x5F, 0x54, 0x4F, 0x5F, 0x55, 0x49, 0x4E, 0x54, 0x33, 0x32,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_131[]  = { 0x53, 0x55, 0x42, 0x53, 0x54, 0x52,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_132[]  = { 0x53, 0x55, 0x46, 0x46, 0x49, 0x58, 0x4F, 0x46,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_133[]  = { 0x53, 0x54, 0x52, 0x49, 0x4E, 0x47,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_134[]  = { 0x55, 0x49, 0x4E, 0x54, 0x31, 0x36, 0x5F, 0x54, 0x4F, 0x5F, 0x53, 0x54, 0x52, 0x49, 0x4E, 0x47,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_135[]  = { 0x55, 0x49, 0x4E, 0x54, 0x33, 0x32, 0x5F, 0x54, 0x4F, 0x5F, 0x53, 0x54, 0x52, 0x49, 0x4E, 0x47,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_136[]  = { 0x53, 0x55, 0x42, 0x53, 0x54, 0x49, 0x54, 0x55, 0x54, 0x45,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_137[]  = { 0x53, 0x55, 0x42, 0x54, 0x59, 0x50, 0x45,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_138[]  = { 0x53, 0x58,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_139[]  = { 0x54, 0x48, 0x45, 0x4E,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_140[]  = { 0x54, 0x52, 0x41, 0x43, 0x45,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_141[]  = { 0x54, 0x43, 0x4C, 0x4F, 0x53, 0x55, 0x52, 0x45,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_142[]  = { 0x54, 0x52, 0x41, 0x4E, 0x53, 0x46, 0x4F, 0x52, 0x4D,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_143[]  = { 0x54, 0x52, 0x41, 0x4E, 0x53, 0x50, 0x4F, 0x53, 0x45,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_144[]  = { 0x54, 0x52, 0x55, 0x45,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_145[]  = { 0x54, 0x55, 0x50, 0x4C, 0x45,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_146[]  = { 0x54, 0x59, 0x50, 0x45,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_147[]  = { 0x55, 0x4E, 0x49, 0x56, 0x45, 0x52, 0x53, 0x45,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_148[]  = { 0x55, 0x4E, 0x54, 0x52, 0x41, 0x43, 0x45,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_149[]  = { 0x57, 0x48, 0x45, 0x52, 0x45,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_150[]  = { 0x57, 0x49, 0x54, 0x48,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_151[]  = { 0x58, 0x4F, 0x52,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_152[]  = { 0x30, 0x68, 0x65, 0x78,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_153[]  = { 0x30, 0x62, 0x69, 0x6E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_82[]  = { 0x49, 0x44, 0x45, 0x4E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_83[]  = { 0x3C, 0x3D, 0x3E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_84[]  = { 0x49, 0x46,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_85[]  = { 0x3D, 0x3E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_86[]  = { 0x49, 0x4E, 0x43, 0x4C, 0x55, 0x44, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_87[]  = { 0x44, 0x49, 0x56,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_88[]  = { 0x49, 0x4E, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_89[]  = { 0x49, 0x4E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_90[]  = { 0x49, 0x53, 0x5F, 0x49, 0x4E, 0x54, 0x45, 0x47, 0x45, 0x52,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_91[]  = { 0x4A, 0x4F, 0x49, 0x4E, 0x5F, 0x49, 0x4D, 0x41, 0x47, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_92[]  = { 0x4A, 0x4F, 0x49, 0x4E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_93[]  = { 0x4C, 0x41, 0x4D, 0x42, 0x44, 0x41,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_94[]  = { 0x3C, 0x3C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_95[]  = { 0x3C, 0x3D,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_96[]  = { 0x4C, 0x45, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_97[]  = { 0x49, 0x53, 0x5F, 0x49, 0x4E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_98[]  = { 0x4D, 0x4F, 0x44,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_99[]  = { 0x4E, 0x4F, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_100[]  = { 0x4F, 0x46,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_101[]  = { 0x4F, 0x50, 0x54, 0x49, 0x4F, 0x4E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_102[]  = { 0x4F, 0x52,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_103[]  = { 0x28, 0x23,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_104[]  = { 0x50, 0x41, 0x54, 0x54, 0x45, 0x52, 0x4E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_105[]  = { 0x50, 0x4F, 0x50, 0x54, 0x4F, 0x5F, 0x53, 0x43, 0x4F, 0x50, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_106[]  = { 0x50, 0x4F, 0x50, 0x54, 0x4F,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_107[]  = { 0x50, 0x4F, 0x50, 0x5F, 0x53, 0x43, 0x4F, 0x50, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_108[]  = { 0x50, 0x4F, 0x50,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_109[]  = { 0x50, 0x52, 0x49, 0x4E, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_110[]  = { 0x50, 0x52, 0x49, 0x4E, 0x54, 0x5F, 0x54, 0x59, 0x50, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_111[]  = { 0x50, 0x52, 0x4F, 0x44, 0x55, 0x43, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_112[]  = { 0x50, 0x55, 0x53, 0x48, 0x5F, 0x53, 0x43, 0x4F, 0x50, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_113[]  = { 0x50, 0x55, 0x53, 0x48,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_114[]  = { 0x51, 0x55, 0x45, 0x52, 0x59,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_115[]  = { 0x52, 0x45, 0x41, 0x4C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_116[]  = { 0x52, 0x45, 0x53, 0x45, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_117[]  = { 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_118[]  = { 0x3E, 0x3E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_119[]  = { 0x43, 0x41, 0x52, 0x44,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_120[]  = { 0x53, 0x45, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_121[]  = { 0x5B, 0x23,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_122[]  = { 0x43, 0x48, 0x41, 0x52, 0x41, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_123[]  = { 0x43, 0x4F, 0x4E, 0x43, 0x41, 0x54,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_124[]  = { 0x43, 0x4F, 0x4E, 0x54, 0x41, 0x49, 0x4E, 0x53,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_125[]  = { 0x49, 0x4E, 0x44, 0x45, 0x58, 0x4F, 0x46,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_126[]  = { 0x49, 0x4E, 0x54, 0x45, 0x47, 0x45, 0x52, 0x5F, 0x54, 0x4F, 0x5F, 0x53, 0x54, 0x52, 0x49, 0x4E, 0x47,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_127[]  = { 0x4C, 0x45, 0x4E, 0x47, 0x54, 0x48,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_128[]  = { 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x4F, 0x46,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_129[]  = { 0x52, 0x45, 0x50, 0x4C, 0x41, 0x43, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_130[]  = { 0x53, 0x54, 0x52, 0x49, 0x4E, 0x47, 0x5F, 0x54, 0x4F, 0x5F, 0x49, 0x4E, 0x54, 0x45, 0x47, 0x45, 0x52,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_131[]  = { 0x53, 0x54, 0x52, 0x49, 0x4E, 0x47, 0x5F, 0x54, 0x4F, 0x5F, 0x55, 0x49, 0x4E, 0x54, 0x31, 0x36,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_132[]  = { 0x53, 0x54, 0x52, 0x49, 0x4E, 0x47, 0x5F, 0x54, 0x4F, 0x5F, 0x55, 0x49, 0x4E, 0x54, 0x33, 0x32,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_133[]  = { 0x53, 0x55, 0x42, 0x53, 0x54, 0x52,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_134[]  = { 0x53, 0x55, 0x46, 0x46, 0x49, 0x58, 0x4F, 0x46,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_135[]  = { 0x53, 0x54, 0x52, 0x49, 0x4E, 0x47,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_136[]  = { 0x55, 0x49, 0x4E, 0x54, 0x31, 0x36, 0x5F, 0x54, 0x4F, 0x5F, 0x53, 0x54, 0x52, 0x49, 0x4E, 0x47,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_137[]  = { 0x55, 0x49, 0x4E, 0x54, 0x33, 0x32, 0x5F, 0x54, 0x4F, 0x5F, 0x53, 0x54, 0x52, 0x49, 0x4E, 0x47,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_138[]  = { 0x53, 0x55, 0x42, 0x53, 0x54, 0x49, 0x54, 0x55, 0x54, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_139[]  = { 0x53, 0x55, 0x42, 0x54, 0x59, 0x50, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_140[]  = { 0x53, 0x58,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_141[]  = { 0x54, 0x48, 0x45, 0x4E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_142[]  = { 0x54, 0x52, 0x41, 0x43, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_143[]  = { 0x54, 0x43, 0x4C, 0x4F, 0x53, 0x55, 0x52, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_144[]  = { 0x54, 0x52, 0x41, 0x4E, 0x53, 0x46, 0x4F, 0x52, 0x4D,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_145[]  = { 0x54, 0x52, 0x41, 0x4E, 0x53, 0x50, 0x4F, 0x53, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_146[]  = { 0x54, 0x52, 0x55, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_147[]  = { 0x54, 0x55, 0x50, 0x4C, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_148[]  = { 0x54, 0x59, 0x50, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_149[]  = { 0x55, 0x4E, 0x49, 0x56, 0x45, 0x52, 0x53, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_150[]  = { 0x55, 0x4E, 0x54, 0x52, 0x41, 0x43, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_151[]  = { 0x57, 0x48, 0x45, 0x52, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_152[]  = { 0x57, 0x49, 0x54, 0x48,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_153[]  = { 0x58, 0x4F, 0x52,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_154[]  = { 0x30, 0x68, 0x65, 0x78,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_155[]  = { 0x30, 0x62, 0x69, 0x6E,  ANTLR3_STRING_TERMINATOR};
 
 
 
@@ -673,6 +675,9 @@ static ANTLR3_INLINE
 	mHELP_TOK    (pCvcLexer ctx);
 static ANTLR3_INLINE 
  void
+	mIDEN_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
 	mIFF_TOK    (pCvcLexer ctx);
 static ANTLR3_INLINE 
  void
@@ -697,6 +702,9 @@ static ANTLR3_INLINE
 	mIS_INTEGER_TOK    (pCvcLexer ctx);
 static ANTLR3_INLINE 
  void
+	mJOIN_IMAGE_TOK    (pCvcLexer ctx);
+static ANTLR3_INLINE 
+ void
 	mJOIN_TOK    (pCvcLexer ctx);
 static ANTLR3_INLINE 
  void
@@ -990,7 +998,7 @@ CvcLexerReset (pCvcLexer ctx)
 
 /** \brief Name of the grammar file that generated this code
  */
-static const char fileName[] = "../../../../../../src/parser/cvc/Cvc.g";
+static const char fileName[] = "../../../../src/parser/cvc/Cvc.g";
 
 /** \brief Return the name of the grammar file that generated this code.
  */
@@ -1152,6 +1160,7 @@ ANTLR3_API pCvcLexer CvcLexerNewSSD
     ctx->mHASHPAREN	= mHASHPAREN;
     ctx->mHASHSQ	= mHASHSQ;
     ctx->mHELP_TOK	= mHELP_TOK;
+    ctx->mIDEN_TOK	= mIDEN_TOK;
     ctx->mIFF_TOK	= mIFF_TOK;
     ctx->mIF_TOK	= mIF_TOK;
     ctx->mIMPLIES_TOK	= mIMPLIES_TOK;
@@ -1160,6 +1169,7 @@ ANTLR3_API pCvcLexer CvcLexerNewSSD
     ctx->mINT_TOK	= mINT_TOK;
     ctx->mIN_TOK	= mIN_TOK;
     ctx->mIS_INTEGER_TOK	= mIS_INTEGER_TOK;
+    ctx->mJOIN_IMAGE_TOK	= mJOIN_IMAGE_TOK;
     ctx->mJOIN_TOK	= mJOIN_TOK;
     ctx->mLAMBDA	= mLAMBDA;
     ctx->mLBRACE	= mLBRACE;
@@ -1294,8 +1304,8 @@ void mABS_TOK(pCvcLexer ctx)
     _type	    = ABS_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:35:9: ( 'ABS' )
-    // ../../../../../../src/parser/cvc/Cvc.g:35:11: 'ABS'
+    // ../../../../src/parser/cvc/Cvc.g:35:9: ( 'ABS' )
+    // ../../../../src/parser/cvc/Cvc.g:35:11: 'ABS'
     {
         MATCHS(lit_1);
         if  (HASEXCEPTION())
@@ -1337,8 +1347,8 @@ void mAND_TOK(pCvcLexer ctx)
     _type	    = AND_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:36:9: ( 'AND' )
-    // ../../../../../../src/parser/cvc/Cvc.g:36:11: 'AND'
+    // ../../../../src/parser/cvc/Cvc.g:36:9: ( 'AND' )
+    // ../../../../src/parser/cvc/Cvc.g:36:11: 'AND'
     {
         MATCHS(lit_2);
         if  (HASEXCEPTION())
@@ -1380,8 +1390,8 @@ void mARITH_VAR_ORDER_TOK(pCvcLexer ctx)
     _type	    = ARITH_VAR_ORDER_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:37:21: ( 'ARITH_VAR_ORDER' )
-    // ../../../../../../src/parser/cvc/Cvc.g:37:23: 'ARITH_VAR_ORDER'
+    // ../../../../src/parser/cvc/Cvc.g:37:21: ( 'ARITH_VAR_ORDER' )
+    // ../../../../src/parser/cvc/Cvc.g:37:23: 'ARITH_VAR_ORDER'
     {
         MATCHS(lit_3);
         if  (HASEXCEPTION())
@@ -1423,8 +1433,8 @@ void mARRAY_TOK(pCvcLexer ctx)
     _type	    = ARRAY_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:38:11: ( 'ARRAY' )
-    // ../../../../../../src/parser/cvc/Cvc.g:38:13: 'ARRAY'
+    // ../../../../src/parser/cvc/Cvc.g:38:11: ( 'ARRAY' )
+    // ../../../../src/parser/cvc/Cvc.g:38:13: 'ARRAY'
     {
         MATCHS(lit_4);
         if  (HASEXCEPTION())
@@ -1466,8 +1476,8 @@ void mARROW_TOK(pCvcLexer ctx)
     _type	    = ARROW_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:39:11: ( '->' )
-    // ../../../../../../src/parser/cvc/Cvc.g:39:13: '->'
+    // ../../../../src/parser/cvc/Cvc.g:39:11: ( '->' )
+    // ../../../../src/parser/cvc/Cvc.g:39:13: '->'
     {
         MATCHS(lit_5);
         if  (HASEXCEPTION())
@@ -1509,8 +1519,8 @@ void mASSERTIONS_TOK(pCvcLexer ctx)
     _type	    = ASSERTIONS_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:40:16: ( 'ASSERTIONS' )
-    // ../../../../../../src/parser/cvc/Cvc.g:40:18: 'ASSERTIONS'
+    // ../../../../src/parser/cvc/Cvc.g:40:16: ( 'ASSERTIONS' )
+    // ../../../../src/parser/cvc/Cvc.g:40:18: 'ASSERTIONS'
     {
         MATCHS(lit_6);
         if  (HASEXCEPTION())
@@ -1552,8 +1562,8 @@ void mASSERT_TOK(pCvcLexer ctx)
     _type	    = ASSERT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:41:12: ( 'ASSERT' )
-    // ../../../../../../src/parser/cvc/Cvc.g:41:14: 'ASSERT'
+    // ../../../../src/parser/cvc/Cvc.g:41:12: ( 'ASSERT' )
+    // ../../../../src/parser/cvc/Cvc.g:41:14: 'ASSERT'
     {
         MATCHS(lit_7);
         if  (HASEXCEPTION())
@@ -1595,8 +1605,8 @@ void mASSIGN_TOK(pCvcLexer ctx)
     _type	    = ASSIGN_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:42:12: ( ':=' )
-    // ../../../../../../src/parser/cvc/Cvc.g:42:14: ':='
+    // ../../../../src/parser/cvc/Cvc.g:42:12: ( ':=' )
+    // ../../../../src/parser/cvc/Cvc.g:42:14: ':='
     {
         MATCHS(lit_8);
         if  (HASEXCEPTION())
@@ -1638,8 +1648,8 @@ void mASSUMPTIONS_TOK(pCvcLexer ctx)
     _type	    = ASSUMPTIONS_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:43:17: ( 'ASSUMPTIONS' )
-    // ../../../../../../src/parser/cvc/Cvc.g:43:19: 'ASSUMPTIONS'
+    // ../../../../src/parser/cvc/Cvc.g:43:17: ( 'ASSUMPTIONS' )
+    // ../../../../src/parser/cvc/Cvc.g:43:19: 'ASSUMPTIONS'
     {
         MATCHS(lit_9);
         if  (HASEXCEPTION())
@@ -1681,8 +1691,8 @@ void mBAR(pCvcLexer ctx)
     _type	    = BAR;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:44:5: ( '|' )
-    // ../../../../../../src/parser/cvc/Cvc.g:44:7: '|'
+    // ../../../../src/parser/cvc/Cvc.g:44:5: ( '|' )
+    // ../../../../src/parser/cvc/Cvc.g:44:7: '|'
     {
         MATCHC('|');
         if  (HASEXCEPTION())
@@ -1722,8 +1732,8 @@ void mBITVECTOR_TOK(pCvcLexer ctx)
     _type	    = BITVECTOR_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:45:15: ( 'BITVECTOR' )
-    // ../../../../../../src/parser/cvc/Cvc.g:45:17: 'BITVECTOR'
+    // ../../../../src/parser/cvc/Cvc.g:45:15: ( 'BITVECTOR' )
+    // ../../../../src/parser/cvc/Cvc.g:45:17: 'BITVECTOR'
     {
         MATCHS(lit_10);
         if  (HASEXCEPTION())
@@ -1765,8 +1775,8 @@ void mBOOLEAN_TOK(pCvcLexer ctx)
     _type	    = BOOLEAN_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:46:13: ( 'BOOLEAN' )
-    // ../../../../../../src/parser/cvc/Cvc.g:46:15: 'BOOLEAN'
+    // ../../../../src/parser/cvc/Cvc.g:46:13: ( 'BOOLEAN' )
+    // ../../../../src/parser/cvc/Cvc.g:46:15: 'BOOLEAN'
     {
         MATCHS(lit_11);
         if  (HASEXCEPTION())
@@ -1808,8 +1818,8 @@ void mBVAND_TOK(pCvcLexer ctx)
     _type	    = BVAND_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:47:11: ( '&' )
-    // ../../../../../../src/parser/cvc/Cvc.g:47:13: '&'
+    // ../../../../src/parser/cvc/Cvc.g:47:11: ( '&' )
+    // ../../../../src/parser/cvc/Cvc.g:47:13: '&'
     {
         MATCHC('&');
         if  (HASEXCEPTION())
@@ -1849,8 +1859,8 @@ void mBVASHR_TOK(pCvcLexer ctx)
     _type	    = BVASHR_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:48:12: ( 'BVASHR' )
-    // ../../../../../../src/parser/cvc/Cvc.g:48:14: 'BVASHR'
+    // ../../../../src/parser/cvc/Cvc.g:48:12: ( 'BVASHR' )
+    // ../../../../src/parser/cvc/Cvc.g:48:14: 'BVASHR'
     {
         MATCHS(lit_12);
         if  (HASEXCEPTION())
@@ -1892,8 +1902,8 @@ void mBVCOMP_TOK(pCvcLexer ctx)
     _type	    = BVCOMP_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:49:12: ( 'BVCOMP' )
-    // ../../../../../../src/parser/cvc/Cvc.g:49:14: 'BVCOMP'
+    // ../../../../src/parser/cvc/Cvc.g:49:12: ( 'BVCOMP' )
+    // ../../../../src/parser/cvc/Cvc.g:49:14: 'BVCOMP'
     {
         MATCHS(lit_13);
         if  (HASEXCEPTION())
@@ -1935,8 +1945,8 @@ void mBVGE_TOK(pCvcLexer ctx)
     _type	    = BVGE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:50:10: ( 'BVGE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:50:12: 'BVGE'
+    // ../../../../src/parser/cvc/Cvc.g:50:10: ( 'BVGE' )
+    // ../../../../src/parser/cvc/Cvc.g:50:12: 'BVGE'
     {
         MATCHS(lit_14);
         if  (HASEXCEPTION())
@@ -1978,8 +1988,8 @@ void mBVGT_TOK(pCvcLexer ctx)
     _type	    = BVGT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:51:10: ( 'BVGT' )
-    // ../../../../../../src/parser/cvc/Cvc.g:51:12: 'BVGT'
+    // ../../../../src/parser/cvc/Cvc.g:51:10: ( 'BVGT' )
+    // ../../../../src/parser/cvc/Cvc.g:51:12: 'BVGT'
     {
         MATCHS(lit_15);
         if  (HASEXCEPTION())
@@ -2021,8 +2031,8 @@ void mBVLE_TOK(pCvcLexer ctx)
     _type	    = BVLE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:52:10: ( 'BVLE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:52:12: 'BVLE'
+    // ../../../../src/parser/cvc/Cvc.g:52:10: ( 'BVLE' )
+    // ../../../../src/parser/cvc/Cvc.g:52:12: 'BVLE'
     {
         MATCHS(lit_16);
         if  (HASEXCEPTION())
@@ -2064,8 +2074,8 @@ void mBVLSHR_TOK(pCvcLexer ctx)
     _type	    = BVLSHR_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:53:12: ( 'BVLSHR' )
-    // ../../../../../../src/parser/cvc/Cvc.g:53:14: 'BVLSHR'
+    // ../../../../src/parser/cvc/Cvc.g:53:12: ( 'BVLSHR' )
+    // ../../../../src/parser/cvc/Cvc.g:53:14: 'BVLSHR'
     {
         MATCHS(lit_17);
         if  (HASEXCEPTION())
@@ -2107,8 +2117,8 @@ void mBVLT_TOK(pCvcLexer ctx)
     _type	    = BVLT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:54:10: ( 'BVLT' )
-    // ../../../../../../src/parser/cvc/Cvc.g:54:12: 'BVLT'
+    // ../../../../src/parser/cvc/Cvc.g:54:10: ( 'BVLT' )
+    // ../../../../src/parser/cvc/Cvc.g:54:12: 'BVLT'
     {
         MATCHS(lit_18);
         if  (HASEXCEPTION())
@@ -2150,8 +2160,8 @@ void mBVMULT_TOK(pCvcLexer ctx)
     _type	    = BVMULT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:55:12: ( 'BVMULT' )
-    // ../../../../../../src/parser/cvc/Cvc.g:55:14: 'BVMULT'
+    // ../../../../src/parser/cvc/Cvc.g:55:12: ( 'BVMULT' )
+    // ../../../../src/parser/cvc/Cvc.g:55:14: 'BVMULT'
     {
         MATCHS(lit_19);
         if  (HASEXCEPTION())
@@ -2193,8 +2203,8 @@ void mBVNAND_TOK(pCvcLexer ctx)
     _type	    = BVNAND_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:56:12: ( 'BVNAND' )
-    // ../../../../../../src/parser/cvc/Cvc.g:56:14: 'BVNAND'
+    // ../../../../src/parser/cvc/Cvc.g:56:12: ( 'BVNAND' )
+    // ../../../../src/parser/cvc/Cvc.g:56:14: 'BVNAND'
     {
         MATCHS(lit_20);
         if  (HASEXCEPTION())
@@ -2236,8 +2246,8 @@ void mBVNEG_TOK(pCvcLexer ctx)
     _type	    = BVNEG_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:57:11: ( '~' )
-    // ../../../../../../src/parser/cvc/Cvc.g:57:13: '~'
+    // ../../../../src/parser/cvc/Cvc.g:57:11: ( '~' )
+    // ../../../../src/parser/cvc/Cvc.g:57:13: '~'
     {
         MATCHC('~');
         if  (HASEXCEPTION())
@@ -2277,8 +2287,8 @@ void mBVNOR_TOK(pCvcLexer ctx)
     _type	    = BVNOR_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:58:11: ( 'BVNOR' )
-    // ../../../../../../src/parser/cvc/Cvc.g:58:13: 'BVNOR'
+    // ../../../../src/parser/cvc/Cvc.g:58:11: ( 'BVNOR' )
+    // ../../../../src/parser/cvc/Cvc.g:58:13: 'BVNOR'
     {
         MATCHS(lit_21);
         if  (HASEXCEPTION())
@@ -2320,8 +2330,8 @@ void mBVPLUS_TOK(pCvcLexer ctx)
     _type	    = BVPLUS_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:59:12: ( 'BVPLUS' )
-    // ../../../../../../src/parser/cvc/Cvc.g:59:14: 'BVPLUS'
+    // ../../../../src/parser/cvc/Cvc.g:59:12: ( 'BVPLUS' )
+    // ../../../../src/parser/cvc/Cvc.g:59:14: 'BVPLUS'
     {
         MATCHS(lit_22);
         if  (HASEXCEPTION())
@@ -2363,8 +2373,8 @@ void mBVREPEAT_TOK(pCvcLexer ctx)
     _type	    = BVREPEAT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:60:14: ( 'BVREPEAT' )
-    // ../../../../../../src/parser/cvc/Cvc.g:60:16: 'BVREPEAT'
+    // ../../../../src/parser/cvc/Cvc.g:60:14: ( 'BVREPEAT' )
+    // ../../../../src/parser/cvc/Cvc.g:60:16: 'BVREPEAT'
     {
         MATCHS(lit_23);
         if  (HASEXCEPTION())
@@ -2406,8 +2416,8 @@ void mBVROTL_TOK(pCvcLexer ctx)
     _type	    = BVROTL_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:61:12: ( 'BVROTL' )
-    // ../../../../../../src/parser/cvc/Cvc.g:61:14: 'BVROTL'
+    // ../../../../src/parser/cvc/Cvc.g:61:12: ( 'BVROTL' )
+    // ../../../../src/parser/cvc/Cvc.g:61:14: 'BVROTL'
     {
         MATCHS(lit_24);
         if  (HASEXCEPTION())
@@ -2449,8 +2459,8 @@ void mBVROTR_TOK(pCvcLexer ctx)
     _type	    = BVROTR_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:62:12: ( 'BVROTR' )
-    // ../../../../../../src/parser/cvc/Cvc.g:62:14: 'BVROTR'
+    // ../../../../src/parser/cvc/Cvc.g:62:12: ( 'BVROTR' )
+    // ../../../../src/parser/cvc/Cvc.g:62:14: 'BVROTR'
     {
         MATCHS(lit_25);
         if  (HASEXCEPTION())
@@ -2492,8 +2502,8 @@ void mBVSDIV_TOK(pCvcLexer ctx)
     _type	    = BVSDIV_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:63:12: ( 'BVSDIV' )
-    // ../../../../../../src/parser/cvc/Cvc.g:63:14: 'BVSDIV'
+    // ../../../../src/parser/cvc/Cvc.g:63:12: ( 'BVSDIV' )
+    // ../../../../src/parser/cvc/Cvc.g:63:14: 'BVSDIV'
     {
         MATCHS(lit_26);
         if  (HASEXCEPTION())
@@ -2535,8 +2545,8 @@ void mBVSGE_TOK(pCvcLexer ctx)
     _type	    = BVSGE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:64:11: ( 'BVSGE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:64:13: 'BVSGE'
+    // ../../../../src/parser/cvc/Cvc.g:64:11: ( 'BVSGE' )
+    // ../../../../src/parser/cvc/Cvc.g:64:13: 'BVSGE'
     {
         MATCHS(lit_27);
         if  (HASEXCEPTION())
@@ -2578,8 +2588,8 @@ void mBVSGT_TOK(pCvcLexer ctx)
     _type	    = BVSGT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:65:11: ( 'BVSGT' )
-    // ../../../../../../src/parser/cvc/Cvc.g:65:13: 'BVSGT'
+    // ../../../../src/parser/cvc/Cvc.g:65:11: ( 'BVSGT' )
+    // ../../../../src/parser/cvc/Cvc.g:65:13: 'BVSGT'
     {
         MATCHS(lit_28);
         if  (HASEXCEPTION())
@@ -2621,8 +2631,8 @@ void mBVSHL_TOK(pCvcLexer ctx)
     _type	    = BVSHL_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:66:11: ( 'BVSHL' )
-    // ../../../../../../src/parser/cvc/Cvc.g:66:13: 'BVSHL'
+    // ../../../../src/parser/cvc/Cvc.g:66:11: ( 'BVSHL' )
+    // ../../../../src/parser/cvc/Cvc.g:66:13: 'BVSHL'
     {
         MATCHS(lit_29);
         if  (HASEXCEPTION())
@@ -2664,8 +2674,8 @@ void mBVSLE_TOK(pCvcLexer ctx)
     _type	    = BVSLE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:67:11: ( 'BVSLE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:67:13: 'BVSLE'
+    // ../../../../src/parser/cvc/Cvc.g:67:11: ( 'BVSLE' )
+    // ../../../../src/parser/cvc/Cvc.g:67:13: 'BVSLE'
     {
         MATCHS(lit_30);
         if  (HASEXCEPTION())
@@ -2707,8 +2717,8 @@ void mBVSLT_TOK(pCvcLexer ctx)
     _type	    = BVSLT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:68:11: ( 'BVSLT' )
-    // ../../../../../../src/parser/cvc/Cvc.g:68:13: 'BVSLT'
+    // ../../../../src/parser/cvc/Cvc.g:68:11: ( 'BVSLT' )
+    // ../../../../src/parser/cvc/Cvc.g:68:13: 'BVSLT'
     {
         MATCHS(lit_31);
         if  (HASEXCEPTION())
@@ -2750,8 +2760,8 @@ void mBVSMOD_TOK(pCvcLexer ctx)
     _type	    = BVSMOD_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:69:12: ( 'BVSMOD' )
-    // ../../../../../../src/parser/cvc/Cvc.g:69:14: 'BVSMOD'
+    // ../../../../src/parser/cvc/Cvc.g:69:12: ( 'BVSMOD' )
+    // ../../../../src/parser/cvc/Cvc.g:69:14: 'BVSMOD'
     {
         MATCHS(lit_32);
         if  (HASEXCEPTION())
@@ -2793,8 +2803,8 @@ void mBVSREM_TOK(pCvcLexer ctx)
     _type	    = BVSREM_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:70:12: ( 'BVSREM' )
-    // ../../../../../../src/parser/cvc/Cvc.g:70:14: 'BVSREM'
+    // ../../../../src/parser/cvc/Cvc.g:70:12: ( 'BVSREM' )
+    // ../../../../src/parser/cvc/Cvc.g:70:14: 'BVSREM'
     {
         MATCHS(lit_33);
         if  (HASEXCEPTION())
@@ -2836,8 +2846,8 @@ void mBVSUB_TOK(pCvcLexer ctx)
     _type	    = BVSUB_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:71:11: ( 'BVSUB' )
-    // ../../../../../../src/parser/cvc/Cvc.g:71:13: 'BVSUB'
+    // ../../../../src/parser/cvc/Cvc.g:71:11: ( 'BVSUB' )
+    // ../../../../src/parser/cvc/Cvc.g:71:13: 'BVSUB'
     {
         MATCHS(lit_34);
         if  (HASEXCEPTION())
@@ -2879,8 +2889,8 @@ void mBVUDIV_TOK(pCvcLexer ctx)
     _type	    = BVUDIV_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:72:12: ( 'BVUDIV' )
-    // ../../../../../../src/parser/cvc/Cvc.g:72:14: 'BVUDIV'
+    // ../../../../src/parser/cvc/Cvc.g:72:12: ( 'BVUDIV' )
+    // ../../../../src/parser/cvc/Cvc.g:72:14: 'BVUDIV'
     {
         MATCHS(lit_35);
         if  (HASEXCEPTION())
@@ -2922,8 +2932,8 @@ void mBVUMINUS_TOK(pCvcLexer ctx)
     _type	    = BVUMINUS_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:73:14: ( 'BVUMINUS' )
-    // ../../../../../../src/parser/cvc/Cvc.g:73:16: 'BVUMINUS'
+    // ../../../../src/parser/cvc/Cvc.g:73:14: ( 'BVUMINUS' )
+    // ../../../../src/parser/cvc/Cvc.g:73:16: 'BVUMINUS'
     {
         MATCHS(lit_36);
         if  (HASEXCEPTION())
@@ -2965,8 +2975,8 @@ void mBVUREM_TOK(pCvcLexer ctx)
     _type	    = BVUREM_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:74:12: ( 'BVUREM' )
-    // ../../../../../../src/parser/cvc/Cvc.g:74:14: 'BVUREM'
+    // ../../../../src/parser/cvc/Cvc.g:74:12: ( 'BVUREM' )
+    // ../../../../src/parser/cvc/Cvc.g:74:14: 'BVUREM'
     {
         MATCHS(lit_37);
         if  (HASEXCEPTION())
@@ -3008,8 +3018,8 @@ void mBVXNOR_TOK(pCvcLexer ctx)
     _type	    = BVXNOR_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:75:12: ( 'BVXNOR' )
-    // ../../../../../../src/parser/cvc/Cvc.g:75:14: 'BVXNOR'
+    // ../../../../src/parser/cvc/Cvc.g:75:12: ( 'BVXNOR' )
+    // ../../../../src/parser/cvc/Cvc.g:75:14: 'BVXNOR'
     {
         MATCHS(lit_38);
         if  (HASEXCEPTION())
@@ -3051,8 +3061,8 @@ void mBVXOR_TOK(pCvcLexer ctx)
     _type	    = BVXOR_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:76:11: ( 'BVXOR' )
-    // ../../../../../../src/parser/cvc/Cvc.g:76:13: 'BVXOR'
+    // ../../../../src/parser/cvc/Cvc.g:76:11: ( 'BVXOR' )
+    // ../../../../src/parser/cvc/Cvc.g:76:13: 'BVXOR'
     {
         MATCHS(lit_39);
         if  (HASEXCEPTION())
@@ -3094,8 +3104,8 @@ void mBVZEROEXTEND_TOK(pCvcLexer ctx)
     _type	    = BVZEROEXTEND_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:77:18: ( 'BVZEROEXTEND' )
-    // ../../../../../../src/parser/cvc/Cvc.g:77:20: 'BVZEROEXTEND'
+    // ../../../../src/parser/cvc/Cvc.g:77:18: ( 'BVZEROEXTEND' )
+    // ../../../../src/parser/cvc/Cvc.g:77:20: 'BVZEROEXTEND'
     {
         MATCHS(lit_40);
         if  (HASEXCEPTION())
@@ -3137,8 +3147,8 @@ void mCALL_TOK(pCvcLexer ctx)
     _type	    = CALL_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:78:10: ( 'CALL' )
-    // ../../../../../../src/parser/cvc/Cvc.g:78:12: 'CALL'
+    // ../../../../src/parser/cvc/Cvc.g:78:10: ( 'CALL' )
+    // ../../../../src/parser/cvc/Cvc.g:78:12: 'CALL'
     {
         MATCHS(lit_41);
         if  (HASEXCEPTION())
@@ -3180,8 +3190,8 @@ void mCHECKSAT_TOK(pCvcLexer ctx)
     _type	    = CHECKSAT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:79:14: ( 'CHECKSAT' )
-    // ../../../../../../src/parser/cvc/Cvc.g:79:16: 'CHECKSAT'
+    // ../../../../src/parser/cvc/Cvc.g:79:14: ( 'CHECKSAT' )
+    // ../../../../src/parser/cvc/Cvc.g:79:16: 'CHECKSAT'
     {
         MATCHS(lit_42);
         if  (HASEXCEPTION())
@@ -3223,8 +3233,8 @@ void mCHECK_TYPE_TOK(pCvcLexer ctx)
     _type	    = CHECK_TYPE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:80:16: ( 'CHECK_TYPE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:80:18: 'CHECK_TYPE'
+    // ../../../../src/parser/cvc/Cvc.g:80:16: ( 'CHECK_TYPE' )
+    // ../../../../src/parser/cvc/Cvc.g:80:18: 'CHECK_TYPE'
     {
         MATCHS(lit_43);
         if  (HASEXCEPTION())
@@ -3266,8 +3276,8 @@ void mCOLON(pCvcLexer ctx)
     _type	    = COLON;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:81:7: ( ':' )
-    // ../../../../../../src/parser/cvc/Cvc.g:81:9: ':'
+    // ../../../../src/parser/cvc/Cvc.g:81:7: ( ':' )
+    // ../../../../src/parser/cvc/Cvc.g:81:9: ':'
     {
         MATCHC(':');
         if  (HASEXCEPTION())
@@ -3307,8 +3317,8 @@ void mCOMMA(pCvcLexer ctx)
     _type	    = COMMA;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:82:7: ( ',' )
-    // ../../../../../../src/parser/cvc/Cvc.g:82:9: ','
+    // ../../../../src/parser/cvc/Cvc.g:82:7: ( ',' )
+    // ../../../../src/parser/cvc/Cvc.g:82:9: ','
     {
         MATCHC(',');
         if  (HASEXCEPTION())
@@ -3348,8 +3358,8 @@ void mCONCAT_TOK(pCvcLexer ctx)
     _type	    = CONCAT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:83:12: ( '@' )
-    // ../../../../../../src/parser/cvc/Cvc.g:83:14: '@'
+    // ../../../../src/parser/cvc/Cvc.g:83:12: ( '@' )
+    // ../../../../src/parser/cvc/Cvc.g:83:14: '@'
     {
         MATCHC('@');
         if  (HASEXCEPTION())
@@ -3389,8 +3399,8 @@ void mCONTEXT_TOK(pCvcLexer ctx)
     _type	    = CONTEXT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:84:13: ( 'CONTEXT' )
-    // ../../../../../../src/parser/cvc/Cvc.g:84:15: 'CONTEXT'
+    // ../../../../src/parser/cvc/Cvc.g:84:13: ( 'CONTEXT' )
+    // ../../../../src/parser/cvc/Cvc.g:84:15: 'CONTEXT'
     {
         MATCHS(lit_44);
         if  (HASEXCEPTION())
@@ -3432,8 +3442,8 @@ void mCONTINUE_TOK(pCvcLexer ctx)
     _type	    = CONTINUE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:85:14: ( 'CONTINUE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:85:16: 'CONTINUE'
+    // ../../../../src/parser/cvc/Cvc.g:85:14: ( 'CONTINUE' )
+    // ../../../../src/parser/cvc/Cvc.g:85:16: 'CONTINUE'
     {
         MATCHS(lit_45);
         if  (HASEXCEPTION())
@@ -3475,8 +3485,8 @@ void mCOUNTEREXAMPLE_TOK(pCvcLexer ctx)
     _type	    = COUNTEREXAMPLE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:86:20: ( 'COUNTEREXAMPLE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:86:22: 'COUNTEREXAMPLE'
+    // ../../../../src/parser/cvc/Cvc.g:86:20: ( 'COUNTEREXAMPLE' )
+    // ../../../../src/parser/cvc/Cvc.g:86:22: 'COUNTEREXAMPLE'
     {
         MATCHS(lit_46);
         if  (HASEXCEPTION())
@@ -3518,8 +3528,8 @@ void mCOUNTERMODEL_TOK(pCvcLexer ctx)
     _type	    = COUNTERMODEL_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:87:18: ( 'COUNTERMODEL' )
-    // ../../../../../../src/parser/cvc/Cvc.g:87:20: 'COUNTERMODEL'
+    // ../../../../src/parser/cvc/Cvc.g:87:18: ( 'COUNTERMODEL' )
+    // ../../../../src/parser/cvc/Cvc.g:87:20: 'COUNTERMODEL'
     {
         MATCHS(lit_47);
         if  (HASEXCEPTION())
@@ -3561,8 +3571,8 @@ void mDATATYPE_TOK(pCvcLexer ctx)
     _type	    = DATATYPE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:88:14: ( 'DATATYPE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:88:16: 'DATATYPE'
+    // ../../../../src/parser/cvc/Cvc.g:88:14: ( 'DATATYPE' )
+    // ../../../../src/parser/cvc/Cvc.g:88:16: 'DATATYPE'
     {
         MATCHS(lit_48);
         if  (HASEXCEPTION())
@@ -3604,8 +3614,8 @@ void mDBG_TOK(pCvcLexer ctx)
     _type	    = DBG_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:89:9: ( 'DBG' )
-    // ../../../../../../src/parser/cvc/Cvc.g:89:11: 'DBG'
+    // ../../../../src/parser/cvc/Cvc.g:89:9: ( 'DBG' )
+    // ../../../../src/parser/cvc/Cvc.g:89:11: 'DBG'
     {
         MATCHS(lit_49);
         if  (HASEXCEPTION())
@@ -3647,8 +3657,8 @@ void mDISEQUAL_TOK(pCvcLexer ctx)
     _type	    = DISEQUAL_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:90:14: ( '/=' )
-    // ../../../../../../src/parser/cvc/Cvc.g:90:16: '/='
+    // ../../../../src/parser/cvc/Cvc.g:90:14: ( '/=' )
+    // ../../../../src/parser/cvc/Cvc.g:90:16: '/='
     {
         MATCHS(lit_50);
         if  (HASEXCEPTION())
@@ -3690,8 +3700,8 @@ void mDISTINCT_TOK(pCvcLexer ctx)
     _type	    = DISTINCT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:91:14: ( 'DISTINCT' )
-    // ../../../../../../src/parser/cvc/Cvc.g:91:16: 'DISTINCT'
+    // ../../../../src/parser/cvc/Cvc.g:91:14: ( 'DISTINCT' )
+    // ../../../../src/parser/cvc/Cvc.g:91:16: 'DISTINCT'
     {
         MATCHS(lit_51);
         if  (HASEXCEPTION())
@@ -3733,8 +3743,8 @@ void mDIVISIBLE_TOK(pCvcLexer ctx)
     _type	    = DIVISIBLE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:92:15: ( 'DIVISIBLE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:92:17: 'DIVISIBLE'
+    // ../../../../src/parser/cvc/Cvc.g:92:15: ( 'DIVISIBLE' )
+    // ../../../../src/parser/cvc/Cvc.g:92:17: 'DIVISIBLE'
     {
         MATCHS(lit_52);
         if  (HASEXCEPTION())
@@ -3776,8 +3786,8 @@ void mDIV_TOK(pCvcLexer ctx)
     _type	    = DIV_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:93:9: ( '/' )
-    // ../../../../../../src/parser/cvc/Cvc.g:93:11: '/'
+    // ../../../../src/parser/cvc/Cvc.g:93:9: ( '/' )
+    // ../../../../src/parser/cvc/Cvc.g:93:11: '/'
     {
         MATCHC('/');
         if  (HASEXCEPTION())
@@ -3817,8 +3827,8 @@ void mDUMP_ASSUMPTIONS_TOK(pCvcLexer ctx)
     _type	    = DUMP_ASSUMPTIONS_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:94:22: ( 'DUMP_ASSUMPTIONS' )
-    // ../../../../../../src/parser/cvc/Cvc.g:94:24: 'DUMP_ASSUMPTIONS'
+    // ../../../../src/parser/cvc/Cvc.g:94:22: ( 'DUMP_ASSUMPTIONS' )
+    // ../../../../src/parser/cvc/Cvc.g:94:24: 'DUMP_ASSUMPTIONS'
     {
         MATCHS(lit_53);
         if  (HASEXCEPTION())
@@ -3860,8 +3870,8 @@ void mDUMP_CLOSURE_PROOF_TOK(pCvcLexer ctx)
     _type	    = DUMP_CLOSURE_PROOF_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:95:24: ( 'DUMP_CLOSURE_PROOF' )
-    // ../../../../../../src/parser/cvc/Cvc.g:95:26: 'DUMP_CLOSURE_PROOF'
+    // ../../../../src/parser/cvc/Cvc.g:95:24: ( 'DUMP_CLOSURE_PROOF' )
+    // ../../../../src/parser/cvc/Cvc.g:95:26: 'DUMP_CLOSURE_PROOF'
     {
         MATCHS(lit_54);
         if  (HASEXCEPTION())
@@ -3903,8 +3913,8 @@ void mDUMP_CLOSURE_TOK(pCvcLexer ctx)
     _type	    = DUMP_CLOSURE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:96:18: ( 'DUMP_CLOSURE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:96:20: 'DUMP_CLOSURE'
+    // ../../../../src/parser/cvc/Cvc.g:96:18: ( 'DUMP_CLOSURE' )
+    // ../../../../src/parser/cvc/Cvc.g:96:20: 'DUMP_CLOSURE'
     {
         MATCHS(lit_55);
         if  (HASEXCEPTION())
@@ -3946,8 +3956,8 @@ void mDUMP_PROOF_TOK(pCvcLexer ctx)
     _type	    = DUMP_PROOF_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:97:16: ( 'DUMP_PROOF' )
-    // ../../../../../../src/parser/cvc/Cvc.g:97:18: 'DUMP_PROOF'
+    // ../../../../src/parser/cvc/Cvc.g:97:16: ( 'DUMP_PROOF' )
+    // ../../../../src/parser/cvc/Cvc.g:97:18: 'DUMP_PROOF'
     {
         MATCHS(lit_56);
         if  (HASEXCEPTION())
@@ -3989,8 +3999,8 @@ void mDUMP_SIG_TOK(pCvcLexer ctx)
     _type	    = DUMP_SIG_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:98:14: ( 'DUMP_SIG' )
-    // ../../../../../../src/parser/cvc/Cvc.g:98:16: 'DUMP_SIG'
+    // ../../../../src/parser/cvc/Cvc.g:98:14: ( 'DUMP_SIG' )
+    // ../../../../src/parser/cvc/Cvc.g:98:16: 'DUMP_SIG'
     {
         MATCHS(lit_57);
         if  (HASEXCEPTION())
@@ -4032,8 +4042,8 @@ void mDUMP_TCC_ASSUMPTIONS_TOK(pCvcLexer ctx)
     _type	    = DUMP_TCC_ASSUMPTIONS_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:99:26: ( 'DUMP_TCC_ASSUMPTIONS' )
-    // ../../../../../../src/parser/cvc/Cvc.g:99:28: 'DUMP_TCC_ASSUMPTIONS'
+    // ../../../../src/parser/cvc/Cvc.g:99:26: ( 'DUMP_TCC_ASSUMPTIONS' )
+    // ../../../../src/parser/cvc/Cvc.g:99:28: 'DUMP_TCC_ASSUMPTIONS'
     {
         MATCHS(lit_58);
         if  (HASEXCEPTION())
@@ -4075,8 +4085,8 @@ void mDUMP_TCC_PROOF_TOK(pCvcLexer ctx)
     _type	    = DUMP_TCC_PROOF_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:100:20: ( 'DUMP_TCC_PROOF' )
-    // ../../../../../../src/parser/cvc/Cvc.g:100:22: 'DUMP_TCC_PROOF'
+    // ../../../../src/parser/cvc/Cvc.g:100:20: ( 'DUMP_TCC_PROOF' )
+    // ../../../../src/parser/cvc/Cvc.g:100:22: 'DUMP_TCC_PROOF'
     {
         MATCHS(lit_59);
         if  (HASEXCEPTION())
@@ -4118,8 +4128,8 @@ void mDUMP_TCC_TOK(pCvcLexer ctx)
     _type	    = DUMP_TCC_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:101:14: ( 'DUMP_TCC' )
-    // ../../../../../../src/parser/cvc/Cvc.g:101:16: 'DUMP_TCC'
+    // ../../../../src/parser/cvc/Cvc.g:101:14: ( 'DUMP_TCC' )
+    // ../../../../src/parser/cvc/Cvc.g:101:16: 'DUMP_TCC'
     {
         MATCHS(lit_60);
         if  (HASEXCEPTION())
@@ -4161,8 +4171,8 @@ void mDUMP_UNSAT_CORE_TOK(pCvcLexer ctx)
     _type	    = DUMP_UNSAT_CORE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:102:21: ( 'DUMP_UNSAT_CORE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:102:23: 'DUMP_UNSAT_CORE'
+    // ../../../../src/parser/cvc/Cvc.g:102:21: ( 'DUMP_UNSAT_CORE' )
+    // ../../../../src/parser/cvc/Cvc.g:102:23: 'DUMP_UNSAT_CORE'
     {
         MATCHS(lit_61);
         if  (HASEXCEPTION())
@@ -4204,8 +4214,8 @@ void mECHO_TOK(pCvcLexer ctx)
     _type	    = ECHO_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:103:10: ( 'ECHO' )
-    // ../../../../../../src/parser/cvc/Cvc.g:103:12: 'ECHO'
+    // ../../../../src/parser/cvc/Cvc.g:103:10: ( 'ECHO' )
+    // ../../../../src/parser/cvc/Cvc.g:103:12: 'ECHO'
     {
         MATCHS(lit_62);
         if  (HASEXCEPTION())
@@ -4247,8 +4257,8 @@ void mELSEIF_TOK(pCvcLexer ctx)
     _type	    = ELSEIF_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:104:12: ( 'ELSIF' )
-    // ../../../../../../src/parser/cvc/Cvc.g:104:14: 'ELSIF'
+    // ../../../../src/parser/cvc/Cvc.g:104:12: ( 'ELSIF' )
+    // ../../../../src/parser/cvc/Cvc.g:104:14: 'ELSIF'
     {
         MATCHS(lit_63);
         if  (HASEXCEPTION())
@@ -4290,8 +4300,8 @@ void mELSE_TOK(pCvcLexer ctx)
     _type	    = ELSE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:105:10: ( 'ELSE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:105:12: 'ELSE'
+    // ../../../../src/parser/cvc/Cvc.g:105:10: ( 'ELSE' )
+    // ../../../../src/parser/cvc/Cvc.g:105:12: 'ELSE'
     {
         MATCHS(lit_64);
         if  (HASEXCEPTION())
@@ -4333,8 +4343,8 @@ void mENDIF_TOK(pCvcLexer ctx)
     _type	    = ENDIF_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:106:11: ( 'ENDIF' )
-    // ../../../../../../src/parser/cvc/Cvc.g:106:13: 'ENDIF'
+    // ../../../../src/parser/cvc/Cvc.g:106:11: ( 'ENDIF' )
+    // ../../../../src/parser/cvc/Cvc.g:106:13: 'ENDIF'
     {
         MATCHS(lit_65);
         if  (HASEXCEPTION())
@@ -4376,8 +4386,8 @@ void mEND_TOK(pCvcLexer ctx)
     _type	    = END_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:107:9: ( 'END' )
-    // ../../../../../../src/parser/cvc/Cvc.g:107:11: 'END'
+    // ../../../../src/parser/cvc/Cvc.g:107:9: ( 'END' )
+    // ../../../../src/parser/cvc/Cvc.g:107:11: 'END'
     {
         MATCHS(lit_66);
         if  (HASEXCEPTION())
@@ -4419,8 +4429,8 @@ void mEQUAL_TOK(pCvcLexer ctx)
     _type	    = EQUAL_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:108:11: ( '=' )
-    // ../../../../../../src/parser/cvc/Cvc.g:108:13: '='
+    // ../../../../src/parser/cvc/Cvc.g:108:11: ( '=' )
+    // ../../../../src/parser/cvc/Cvc.g:108:13: '='
     {
         MATCHC('=');
         if  (HASEXCEPTION())
@@ -4460,8 +4470,8 @@ void mEXISTS_TOK(pCvcLexer ctx)
     _type	    = EXISTS_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:109:12: ( 'EXISTS' )
-    // ../../../../../../src/parser/cvc/Cvc.g:109:14: 'EXISTS'
+    // ../../../../src/parser/cvc/Cvc.g:109:12: ( 'EXISTS' )
+    // ../../../../src/parser/cvc/Cvc.g:109:14: 'EXISTS'
     {
         MATCHS(lit_67);
         if  (HASEXCEPTION())
@@ -4503,8 +4513,8 @@ void mEXIT_TOK(pCvcLexer ctx)
     _type	    = EXIT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:110:10: ( 'EXIT' )
-    // ../../../../../../src/parser/cvc/Cvc.g:110:12: 'EXIT'
+    // ../../../../src/parser/cvc/Cvc.g:110:10: ( 'EXIT' )
+    // ../../../../src/parser/cvc/Cvc.g:110:12: 'EXIT'
     {
         MATCHS(lit_68);
         if  (HASEXCEPTION())
@@ -4546,8 +4556,8 @@ void mEXP_TOK(pCvcLexer ctx)
     _type	    = EXP_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:111:9: ( '^' )
-    // ../../../../../../src/parser/cvc/Cvc.g:111:11: '^'
+    // ../../../../src/parser/cvc/Cvc.g:111:9: ( '^' )
+    // ../../../../src/parser/cvc/Cvc.g:111:11: '^'
     {
         MATCHC('^');
         if  (HASEXCEPTION())
@@ -4587,8 +4597,8 @@ void mFALSE_TOK(pCvcLexer ctx)
     _type	    = FALSE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:112:11: ( 'FALSE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:112:13: 'FALSE'
+    // ../../../../src/parser/cvc/Cvc.g:112:11: ( 'FALSE' )
+    // ../../../../src/parser/cvc/Cvc.g:112:13: 'FALSE'
     {
         MATCHS(lit_69);
         if  (HASEXCEPTION())
@@ -4630,8 +4640,8 @@ void mFLOOR_TOK(pCvcLexer ctx)
     _type	    = FLOOR_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:113:11: ( 'FLOOR' )
-    // ../../../../../../src/parser/cvc/Cvc.g:113:13: 'FLOOR'
+    // ../../../../src/parser/cvc/Cvc.g:113:11: ( 'FLOOR' )
+    // ../../../../src/parser/cvc/Cvc.g:113:13: 'FLOOR'
     {
         MATCHS(lit_70);
         if  (HASEXCEPTION())
@@ -4673,8 +4683,8 @@ void mFMF_CARD_TOK(pCvcLexer ctx)
     _type	    = FMF_CARD_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:114:14: ( 'HAS_CARD' )
-    // ../../../../../../src/parser/cvc/Cvc.g:114:16: 'HAS_CARD'
+    // ../../../../src/parser/cvc/Cvc.g:114:14: ( 'HAS_CARD' )
+    // ../../../../src/parser/cvc/Cvc.g:114:16: 'HAS_CARD'
     {
         MATCHS(lit_71);
         if  (HASEXCEPTION())
@@ -4716,8 +4726,8 @@ void mFORALL_TOK(pCvcLexer ctx)
     _type	    = FORALL_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:115:12: ( 'FORALL' )
-    // ../../../../../../src/parser/cvc/Cvc.g:115:14: 'FORALL'
+    // ../../../../src/parser/cvc/Cvc.g:115:12: ( 'FORALL' )
+    // ../../../../src/parser/cvc/Cvc.g:115:14: 'FORALL'
     {
         MATCHS(lit_72);
         if  (HASEXCEPTION())
@@ -4759,8 +4769,8 @@ void mFORGET_TOK(pCvcLexer ctx)
     _type	    = FORGET_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:116:12: ( 'FORGET' )
-    // ../../../../../../src/parser/cvc/Cvc.g:116:14: 'FORGET'
+    // ../../../../src/parser/cvc/Cvc.g:116:12: ( 'FORGET' )
+    // ../../../../src/parser/cvc/Cvc.g:116:14: 'FORGET'
     {
         MATCHS(lit_73);
         if  (HASEXCEPTION())
@@ -4802,8 +4812,8 @@ void mGEQ_TOK(pCvcLexer ctx)
     _type	    = GEQ_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:117:9: ( '>=' )
-    // ../../../../../../src/parser/cvc/Cvc.g:117:11: '>='
+    // ../../../../src/parser/cvc/Cvc.g:117:9: ( '>=' )
+    // ../../../../src/parser/cvc/Cvc.g:117:11: '>='
     {
         MATCHS(lit_74);
         if  (HASEXCEPTION())
@@ -4845,8 +4855,8 @@ void mGET_CHILD_TOK(pCvcLexer ctx)
     _type	    = GET_CHILD_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:118:15: ( 'GET_CHILD' )
-    // ../../../../../../src/parser/cvc/Cvc.g:118:17: 'GET_CHILD'
+    // ../../../../src/parser/cvc/Cvc.g:118:15: ( 'GET_CHILD' )
+    // ../../../../src/parser/cvc/Cvc.g:118:17: 'GET_CHILD'
     {
         MATCHS(lit_75);
         if  (HASEXCEPTION())
@@ -4888,8 +4898,8 @@ void mGET_OP_TOK(pCvcLexer ctx)
     _type	    = GET_OP_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:119:12: ( 'GET_OP' )
-    // ../../../../../../src/parser/cvc/Cvc.g:119:14: 'GET_OP'
+    // ../../../../src/parser/cvc/Cvc.g:119:12: ( 'GET_OP' )
+    // ../../../../src/parser/cvc/Cvc.g:119:14: 'GET_OP'
     {
         MATCHS(lit_76);
         if  (HASEXCEPTION())
@@ -4931,8 +4941,8 @@ void mGET_TYPE_TOK(pCvcLexer ctx)
     _type	    = GET_TYPE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:120:14: ( 'GET_TYPE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:120:16: 'GET_TYPE'
+    // ../../../../src/parser/cvc/Cvc.g:120:14: ( 'GET_TYPE' )
+    // ../../../../src/parser/cvc/Cvc.g:120:16: 'GET_TYPE'
     {
         MATCHS(lit_77);
         if  (HASEXCEPTION())
@@ -4974,8 +4984,8 @@ void mGET_VALUE_TOK(pCvcLexer ctx)
     _type	    = GET_VALUE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:121:15: ( 'GET_VALUE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:121:17: 'GET_VALUE'
+    // ../../../../src/parser/cvc/Cvc.g:121:15: ( 'GET_VALUE' )
+    // ../../../../src/parser/cvc/Cvc.g:121:17: 'GET_VALUE'
     {
         MATCHS(lit_78);
         if  (HASEXCEPTION())
@@ -5017,8 +5027,8 @@ void mGT_TOK(pCvcLexer ctx)
     _type	    = GT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:122:8: ( '>' )
-    // ../../../../../../src/parser/cvc/Cvc.g:122:10: '>'
+    // ../../../../src/parser/cvc/Cvc.g:122:8: ( '>' )
+    // ../../../../src/parser/cvc/Cvc.g:122:10: '>'
     {
         MATCHC('>');
         if  (HASEXCEPTION())
@@ -5058,8 +5068,8 @@ void mHASHPAREN(pCvcLexer ctx)
     _type	    = HASHPAREN;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:123:11: ( '#)' )
-    // ../../../../../../src/parser/cvc/Cvc.g:123:13: '#)'
+    // ../../../../src/parser/cvc/Cvc.g:123:11: ( '#)' )
+    // ../../../../src/parser/cvc/Cvc.g:123:13: '#)'
     {
         MATCHS(lit_79);
         if  (HASEXCEPTION())
@@ -5101,8 +5111,8 @@ void mHASHSQ(pCvcLexer ctx)
     _type	    = HASHSQ;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:124:8: ( '#]' )
-    // ../../../../../../src/parser/cvc/Cvc.g:124:10: '#]'
+    // ../../../../src/parser/cvc/Cvc.g:124:8: ( '#]' )
+    // ../../../../src/parser/cvc/Cvc.g:124:10: '#]'
     {
         MATCHS(lit_80);
         if  (HASEXCEPTION())
@@ -5144,8 +5154,8 @@ void mHELP_TOK(pCvcLexer ctx)
     _type	    = HELP_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:125:10: ( 'HELP' )
-    // ../../../../../../src/parser/cvc/Cvc.g:125:12: 'HELP'
+    // ../../../../src/parser/cvc/Cvc.g:125:10: ( 'HELP' )
+    // ../../../../src/parser/cvc/Cvc.g:125:12: 'HELP'
     {
         MATCHS(lit_81);
         if  (HASEXCEPTION())
@@ -5167,7 +5177,50 @@ void mHELP_TOK(pCvcLexer ctx)
 }
 // $ANTLR end HELP_TOK
 
-//   Comes from: 126:9: ( '<=>' )
+//   Comes from: 126:10: ( 'IDEN' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start IDEN_TOK
+ *
+ * Looks to match the characters the constitute the token IDEN_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mIDEN_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = IDEN_TOK;
+
+
+    // ../../../../src/parser/cvc/Cvc.g:126:10: ( 'IDEN' )
+    // ../../../../src/parser/cvc/Cvc.g:126:12: 'IDEN'
+    {
+        MATCHS(lit_82);
+        if  (HASEXCEPTION())
+        {
+            goto ruleIDEN_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleIDEN_TOKEx; /* Prevent compiler warnings */
+    ruleIDEN_TOKEx: ;
+
+}
+// $ANTLR end IDEN_TOK
+
+//   Comes from: 127:9: ( '<=>' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start IFF_TOK
@@ -5187,10 +5240,10 @@ void mIFF_TOK(pCvcLexer ctx)
     _type	    = IFF_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:126:9: ( '<=>' )
-    // ../../../../../../src/parser/cvc/Cvc.g:126:11: '<=>'
+    // ../../../../src/parser/cvc/Cvc.g:127:9: ( '<=>' )
+    // ../../../../src/parser/cvc/Cvc.g:127:11: '<=>'
     {
-        MATCHS(lit_82);
+        MATCHS(lit_83);
         if  (HASEXCEPTION())
         {
             goto ruleIFF_TOKEx;
@@ -5210,7 +5263,7 @@ void mIFF_TOK(pCvcLexer ctx)
 }
 // $ANTLR end IFF_TOK
 
-//   Comes from: 127:8: ( 'IF' )
+//   Comes from: 128:8: ( 'IF' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start IF_TOK
@@ -5230,10 +5283,10 @@ void mIF_TOK(pCvcLexer ctx)
     _type	    = IF_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:127:8: ( 'IF' )
-    // ../../../../../../src/parser/cvc/Cvc.g:127:10: 'IF'
+    // ../../../../src/parser/cvc/Cvc.g:128:8: ( 'IF' )
+    // ../../../../src/parser/cvc/Cvc.g:128:10: 'IF'
     {
-        MATCHS(lit_83);
+        MATCHS(lit_84);
         if  (HASEXCEPTION())
         {
             goto ruleIF_TOKEx;
@@ -5253,7 +5306,7 @@ void mIF_TOK(pCvcLexer ctx)
 }
 // $ANTLR end IF_TOK
 
-//   Comes from: 128:13: ( '=>' )
+//   Comes from: 129:13: ( '=>' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start IMPLIES_TOK
@@ -5273,10 +5326,10 @@ void mIMPLIES_TOK(pCvcLexer ctx)
     _type	    = IMPLIES_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:128:13: ( '=>' )
-    // ../../../../../../src/parser/cvc/Cvc.g:128:15: '=>'
+    // ../../../../src/parser/cvc/Cvc.g:129:13: ( '=>' )
+    // ../../../../src/parser/cvc/Cvc.g:129:15: '=>'
     {
-        MATCHS(lit_84);
+        MATCHS(lit_85);
         if  (HASEXCEPTION())
         {
             goto ruleIMPLIES_TOKEx;
@@ -5296,7 +5349,7 @@ void mIMPLIES_TOK(pCvcLexer ctx)
 }
 // $ANTLR end IMPLIES_TOK
 
-//   Comes from: 129:13: ( 'INCLUDE' )
+//   Comes from: 130:13: ( 'INCLUDE' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start INCLUDE_TOK
@@ -5316,10 +5369,10 @@ void mINCLUDE_TOK(pCvcLexer ctx)
     _type	    = INCLUDE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:129:13: ( 'INCLUDE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:129:15: 'INCLUDE'
+    // ../../../../src/parser/cvc/Cvc.g:130:13: ( 'INCLUDE' )
+    // ../../../../src/parser/cvc/Cvc.g:130:15: 'INCLUDE'
     {
-        MATCHS(lit_85);
+        MATCHS(lit_86);
         if  (HASEXCEPTION())
         {
             goto ruleINCLUDE_TOKEx;
@@ -5339,7 +5392,7 @@ void mINCLUDE_TOK(pCvcLexer ctx)
 }
 // $ANTLR end INCLUDE_TOK
 
-//   Comes from: 130:12: ( 'DIV' )
+//   Comes from: 131:12: ( 'DIV' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start INTDIV_TOK
@@ -5359,10 +5412,10 @@ void mINTDIV_TOK(pCvcLexer ctx)
     _type	    = INTDIV_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:130:12: ( 'DIV' )
-    // ../../../../../../src/parser/cvc/Cvc.g:130:14: 'DIV'
+    // ../../../../src/parser/cvc/Cvc.g:131:12: ( 'DIV' )
+    // ../../../../src/parser/cvc/Cvc.g:131:14: 'DIV'
     {
-        MATCHS(lit_86);
+        MATCHS(lit_87);
         if  (HASEXCEPTION())
         {
             goto ruleINTDIV_TOKEx;
@@ -5382,7 +5435,7 @@ void mINTDIV_TOK(pCvcLexer ctx)
 }
 // $ANTLR end INTDIV_TOK
 
-//   Comes from: 131:9: ( 'INT' )
+//   Comes from: 132:9: ( 'INT' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start INT_TOK
@@ -5402,10 +5455,10 @@ void mINT_TOK(pCvcLexer ctx)
     _type	    = INT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:131:9: ( 'INT' )
-    // ../../../../../../src/parser/cvc/Cvc.g:131:11: 'INT'
+    // ../../../../src/parser/cvc/Cvc.g:132:9: ( 'INT' )
+    // ../../../../src/parser/cvc/Cvc.g:132:11: 'INT'
     {
-        MATCHS(lit_87);
+        MATCHS(lit_88);
         if  (HASEXCEPTION())
         {
             goto ruleINT_TOKEx;
@@ -5425,7 +5478,7 @@ void mINT_TOK(pCvcLexer ctx)
 }
 // $ANTLR end INT_TOK
 
-//   Comes from: 132:8: ( 'IN' )
+//   Comes from: 133:8: ( 'IN' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start IN_TOK
@@ -5445,10 +5498,10 @@ void mIN_TOK(pCvcLexer ctx)
     _type	    = IN_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:132:8: ( 'IN' )
-    // ../../../../../../src/parser/cvc/Cvc.g:132:10: 'IN'
+    // ../../../../src/parser/cvc/Cvc.g:133:8: ( 'IN' )
+    // ../../../../src/parser/cvc/Cvc.g:133:10: 'IN'
     {
-        MATCHS(lit_88);
+        MATCHS(lit_89);
         if  (HASEXCEPTION())
         {
             goto ruleIN_TOKEx;
@@ -5468,7 +5521,7 @@ void mIN_TOK(pCvcLexer ctx)
 }
 // $ANTLR end IN_TOK
 
-//   Comes from: 133:16: ( 'IS_INTEGER' )
+//   Comes from: 134:16: ( 'IS_INTEGER' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start IS_INTEGER_TOK
@@ -5488,10 +5541,10 @@ void mIS_INTEGER_TOK(pCvcLexer ctx)
     _type	    = IS_INTEGER_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:133:16: ( 'IS_INTEGER' )
-    // ../../../../../../src/parser/cvc/Cvc.g:133:18: 'IS_INTEGER'
+    // ../../../../src/parser/cvc/Cvc.g:134:16: ( 'IS_INTEGER' )
+    // ../../../../src/parser/cvc/Cvc.g:134:18: 'IS_INTEGER'
     {
-        MATCHS(lit_89);
+        MATCHS(lit_90);
         if  (HASEXCEPTION())
         {
             goto ruleIS_INTEGER_TOKEx;
@@ -5511,7 +5564,50 @@ void mIS_INTEGER_TOK(pCvcLexer ctx)
 }
 // $ANTLR end IS_INTEGER_TOK
 
-//   Comes from: 134:10: ( 'JOIN' )
+//   Comes from: 135:16: ( 'JOIN_IMAGE' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start JOIN_IMAGE_TOK
+ *
+ * Looks to match the characters the constitute the token JOIN_IMAGE_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mJOIN_IMAGE_TOK(pCvcLexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = JOIN_IMAGE_TOK;
+
+
+    // ../../../../src/parser/cvc/Cvc.g:135:16: ( 'JOIN_IMAGE' )
+    // ../../../../src/parser/cvc/Cvc.g:135:18: 'JOIN_IMAGE'
+    {
+        MATCHS(lit_91);
+        if  (HASEXCEPTION())
+        {
+            goto ruleJOIN_IMAGE_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleJOIN_IMAGE_TOKEx; /* Prevent compiler warnings */
+    ruleJOIN_IMAGE_TOKEx: ;
+
+}
+// $ANTLR end JOIN_IMAGE_TOK
+
+//   Comes from: 136:10: ( 'JOIN' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start JOIN_TOK
@@ -5531,10 +5627,10 @@ void mJOIN_TOK(pCvcLexer ctx)
     _type	    = JOIN_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:134:10: ( 'JOIN' )
-    // ../../../../../../src/parser/cvc/Cvc.g:134:12: 'JOIN'
+    // ../../../../src/parser/cvc/Cvc.g:136:10: ( 'JOIN' )
+    // ../../../../src/parser/cvc/Cvc.g:136:12: 'JOIN'
     {
-        MATCHS(lit_90);
+        MATCHS(lit_92);
         if  (HASEXCEPTION())
         {
             goto ruleJOIN_TOKEx;
@@ -5554,7 +5650,7 @@ void mJOIN_TOK(pCvcLexer ctx)
 }
 // $ANTLR end JOIN_TOK
 
-//   Comes from: 135:8: ( 'LAMBDA' )
+//   Comes from: 137:8: ( 'LAMBDA' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start LAMBDA
@@ -5574,10 +5670,10 @@ void mLAMBDA(pCvcLexer ctx)
     _type	    = LAMBDA;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:135:8: ( 'LAMBDA' )
-    // ../../../../../../src/parser/cvc/Cvc.g:135:10: 'LAMBDA'
+    // ../../../../src/parser/cvc/Cvc.g:137:8: ( 'LAMBDA' )
+    // ../../../../src/parser/cvc/Cvc.g:137:10: 'LAMBDA'
     {
-        MATCHS(lit_91);
+        MATCHS(lit_93);
         if  (HASEXCEPTION())
         {
             goto ruleLAMBDAEx;
@@ -5597,7 +5693,7 @@ void mLAMBDA(pCvcLexer ctx)
 }
 // $ANTLR end LAMBDA
 
-//   Comes from: 136:8: ( '{' )
+//   Comes from: 138:8: ( '{' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start LBRACE
@@ -5617,8 +5713,8 @@ void mLBRACE(pCvcLexer ctx)
     _type	    = LBRACE;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:136:8: ( '{' )
-    // ../../../../../../src/parser/cvc/Cvc.g:136:10: '{'
+    // ../../../../src/parser/cvc/Cvc.g:138:8: ( '{' )
+    // ../../../../src/parser/cvc/Cvc.g:138:10: '{'
     {
         MATCHC('{');
         if  (HASEXCEPTION())
@@ -5638,7 +5734,7 @@ void mLBRACE(pCvcLexer ctx)
 }
 // $ANTLR end LBRACE
 
-//   Comes from: 137:10: ( '[' )
+//   Comes from: 139:10: ( '[' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start LBRACKET
@@ -5658,8 +5754,8 @@ void mLBRACKET(pCvcLexer ctx)
     _type	    = LBRACKET;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:137:10: ( '[' )
-    // ../../../../../../src/parser/cvc/Cvc.g:137:12: '['
+    // ../../../../src/parser/cvc/Cvc.g:139:10: ( '[' )
+    // ../../../../src/parser/cvc/Cvc.g:139:12: '['
     {
         MATCHC('[');
         if  (HASEXCEPTION())
@@ -5679,7 +5775,7 @@ void mLBRACKET(pCvcLexer ctx)
 }
 // $ANTLR end LBRACKET
 
-//   Comes from: 138:15: ( '<<' )
+//   Comes from: 140:15: ( '<<' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start LEFTSHIFT_TOK
@@ -5699,10 +5795,10 @@ void mLEFTSHIFT_TOK(pCvcLexer ctx)
     _type	    = LEFTSHIFT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:138:15: ( '<<' )
-    // ../../../../../../src/parser/cvc/Cvc.g:138:17: '<<'
+    // ../../../../src/parser/cvc/Cvc.g:140:15: ( '<<' )
+    // ../../../../src/parser/cvc/Cvc.g:140:17: '<<'
     {
-        MATCHS(lit_92);
+        MATCHS(lit_94);
         if  (HASEXCEPTION())
         {
             goto ruleLEFTSHIFT_TOKEx;
@@ -5722,7 +5818,7 @@ void mLEFTSHIFT_TOK(pCvcLexer ctx)
 }
 // $ANTLR end LEFTSHIFT_TOK
 
-//   Comes from: 139:9: ( '<=' )
+//   Comes from: 141:9: ( '<=' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start LEQ_TOK
@@ -5742,10 +5838,10 @@ void mLEQ_TOK(pCvcLexer ctx)
     _type	    = LEQ_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:139:9: ( '<=' )
-    // ../../../../../../src/parser/cvc/Cvc.g:139:11: '<='
+    // ../../../../src/parser/cvc/Cvc.g:141:9: ( '<=' )
+    // ../../../../src/parser/cvc/Cvc.g:141:11: '<='
     {
-        MATCHS(lit_93);
+        MATCHS(lit_95);
         if  (HASEXCEPTION())
         {
             goto ruleLEQ_TOKEx;
@@ -5765,7 +5861,7 @@ void mLEQ_TOK(pCvcLexer ctx)
 }
 // $ANTLR end LEQ_TOK
 
-//   Comes from: 140:9: ( 'LET' )
+//   Comes from: 142:9: ( 'LET' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start LET_TOK
@@ -5785,10 +5881,10 @@ void mLET_TOK(pCvcLexer ctx)
     _type	    = LET_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:140:9: ( 'LET' )
-    // ../../../../../../src/parser/cvc/Cvc.g:140:11: 'LET'
+    // ../../../../src/parser/cvc/Cvc.g:142:9: ( 'LET' )
+    // ../../../../src/parser/cvc/Cvc.g:142:11: 'LET'
     {
-        MATCHS(lit_94);
+        MATCHS(lit_96);
         if  (HASEXCEPTION())
         {
             goto ruleLET_TOKEx;
@@ -5808,7 +5904,7 @@ void mLET_TOK(pCvcLexer ctx)
 }
 // $ANTLR end LET_TOK
 
-//   Comes from: 141:8: ( '(' )
+//   Comes from: 143:8: ( '(' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start LPAREN
@@ -5828,8 +5924,8 @@ void mLPAREN(pCvcLexer ctx)
     _type	    = LPAREN;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:141:8: ( '(' )
-    // ../../../../../../src/parser/cvc/Cvc.g:141:10: '('
+    // ../../../../src/parser/cvc/Cvc.g:143:8: ( '(' )
+    // ../../../../src/parser/cvc/Cvc.g:143:10: '('
     {
         MATCHC('(');
         if  (HASEXCEPTION())
@@ -5849,7 +5945,7 @@ void mLPAREN(pCvcLexer ctx)
 }
 // $ANTLR end LPAREN
 
-//   Comes from: 142:8: ( '<' )
+//   Comes from: 144:8: ( '<' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start LT_TOK
@@ -5869,8 +5965,8 @@ void mLT_TOK(pCvcLexer ctx)
     _type	    = LT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:142:8: ( '<' )
-    // ../../../../../../src/parser/cvc/Cvc.g:142:10: '<'
+    // ../../../../src/parser/cvc/Cvc.g:144:8: ( '<' )
+    // ../../../../src/parser/cvc/Cvc.g:144:10: '<'
     {
         MATCHC('<');
         if  (HASEXCEPTION())
@@ -5890,7 +5986,7 @@ void mLT_TOK(pCvcLexer ctx)
 }
 // $ANTLR end LT_TOK
 
-//   Comes from: 143:12: ( 'IS_IN' )
+//   Comes from: 145:12: ( 'IS_IN' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start MEMBER_TOK
@@ -5910,10 +6006,10 @@ void mMEMBER_TOK(pCvcLexer ctx)
     _type	    = MEMBER_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:143:12: ( 'IS_IN' )
-    // ../../../../../../src/parser/cvc/Cvc.g:143:14: 'IS_IN'
+    // ../../../../src/parser/cvc/Cvc.g:145:12: ( 'IS_IN' )
+    // ../../../../src/parser/cvc/Cvc.g:145:14: 'IS_IN'
     {
-        MATCHS(lit_95);
+        MATCHS(lit_97);
         if  (HASEXCEPTION())
         {
             goto ruleMEMBER_TOKEx;
@@ -5933,7 +6029,7 @@ void mMEMBER_TOK(pCvcLexer ctx)
 }
 // $ANTLR end MEMBER_TOK
 
-//   Comes from: 144:11: ( '-' )
+//   Comes from: 146:11: ( '-' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start MINUS_TOK
@@ -5953,8 +6049,8 @@ void mMINUS_TOK(pCvcLexer ctx)
     _type	    = MINUS_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:144:11: ( '-' )
-    // ../../../../../../src/parser/cvc/Cvc.g:144:13: '-'
+    // ../../../../src/parser/cvc/Cvc.g:146:11: ( '-' )
+    // ../../../../src/parser/cvc/Cvc.g:146:13: '-'
     {
         MATCHC('-');
         if  (HASEXCEPTION())
@@ -5974,7 +6070,7 @@ void mMINUS_TOK(pCvcLexer ctx)
 }
 // $ANTLR end MINUS_TOK
 
-//   Comes from: 145:9: ( 'MOD' )
+//   Comes from: 147:9: ( 'MOD' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start MOD_TOK
@@ -5994,10 +6090,10 @@ void mMOD_TOK(pCvcLexer ctx)
     _type	    = MOD_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:145:9: ( 'MOD' )
-    // ../../../../../../src/parser/cvc/Cvc.g:145:11: 'MOD'
+    // ../../../../src/parser/cvc/Cvc.g:147:9: ( 'MOD' )
+    // ../../../../src/parser/cvc/Cvc.g:147:11: 'MOD'
     {
-        MATCHS(lit_96);
+        MATCHS(lit_98);
         if  (HASEXCEPTION())
         {
             goto ruleMOD_TOKEx;
@@ -6017,7 +6113,7 @@ void mMOD_TOK(pCvcLexer ctx)
 }
 // $ANTLR end MOD_TOK
 
-//   Comes from: 146:9: ( 'NOT' )
+//   Comes from: 148:9: ( 'NOT' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start NOT_TOK
@@ -6037,10 +6133,10 @@ void mNOT_TOK(pCvcLexer ctx)
     _type	    = NOT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:146:9: ( 'NOT' )
-    // ../../../../../../src/parser/cvc/Cvc.g:146:11: 'NOT'
+    // ../../../../src/parser/cvc/Cvc.g:148:9: ( 'NOT' )
+    // ../../../../src/parser/cvc/Cvc.g:148:11: 'NOT'
     {
-        MATCHS(lit_97);
+        MATCHS(lit_99);
         if  (HASEXCEPTION())
         {
             goto ruleNOT_TOKEx;
@@ -6060,7 +6156,7 @@ void mNOT_TOK(pCvcLexer ctx)
 }
 // $ANTLR end NOT_TOK
 
-//   Comes from: 147:8: ( 'OF' )
+//   Comes from: 149:8: ( 'OF' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start OF_TOK
@@ -6080,10 +6176,10 @@ void mOF_TOK(pCvcLexer ctx)
     _type	    = OF_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:147:8: ( 'OF' )
-    // ../../../../../../src/parser/cvc/Cvc.g:147:10: 'OF'
+    // ../../../../src/parser/cvc/Cvc.g:149:8: ( 'OF' )
+    // ../../../../src/parser/cvc/Cvc.g:149:10: 'OF'
     {
-        MATCHS(lit_98);
+        MATCHS(lit_100);
         if  (HASEXCEPTION())
         {
             goto ruleOF_TOKEx;
@@ -6103,7 +6199,7 @@ void mOF_TOK(pCvcLexer ctx)
 }
 // $ANTLR end OF_TOK
 
-//   Comes from: 148:12: ( 'OPTION' )
+//   Comes from: 150:12: ( 'OPTION' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start OPTION_TOK
@@ -6123,10 +6219,10 @@ void mOPTION_TOK(pCvcLexer ctx)
     _type	    = OPTION_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:148:12: ( 'OPTION' )
-    // ../../../../../../src/parser/cvc/Cvc.g:148:14: 'OPTION'
+    // ../../../../src/parser/cvc/Cvc.g:150:12: ( 'OPTION' )
+    // ../../../../src/parser/cvc/Cvc.g:150:14: 'OPTION'
     {
-        MATCHS(lit_99);
+        MATCHS(lit_101);
         if  (HASEXCEPTION())
         {
             goto ruleOPTION_TOKEx;
@@ -6146,7 +6242,7 @@ void mOPTION_TOK(pCvcLexer ctx)
 }
 // $ANTLR end OPTION_TOK
 
-//   Comes from: 149:8: ( 'OR' )
+//   Comes from: 151:8: ( 'OR' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start OR_TOK
@@ -6166,10 +6262,10 @@ void mOR_TOK(pCvcLexer ctx)
     _type	    = OR_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:149:8: ( 'OR' )
-    // ../../../../../../src/parser/cvc/Cvc.g:149:10: 'OR'
+    // ../../../../src/parser/cvc/Cvc.g:151:8: ( 'OR' )
+    // ../../../../src/parser/cvc/Cvc.g:151:10: 'OR'
     {
-        MATCHS(lit_100);
+        MATCHS(lit_102);
         if  (HASEXCEPTION())
         {
             goto ruleOR_TOKEx;
@@ -6189,7 +6285,7 @@ void mOR_TOK(pCvcLexer ctx)
 }
 // $ANTLR end OR_TOK
 
-//   Comes from: 150:11: ( '(#' )
+//   Comes from: 152:11: ( '(#' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start PARENHASH
@@ -6209,10 +6305,10 @@ void mPARENHASH(pCvcLexer ctx)
     _type	    = PARENHASH;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:150:11: ( '(#' )
-    // ../../../../../../src/parser/cvc/Cvc.g:150:13: '(#'
+    // ../../../../src/parser/cvc/Cvc.g:152:11: ( '(#' )
+    // ../../../../src/parser/cvc/Cvc.g:152:13: '(#'
     {
-        MATCHS(lit_101);
+        MATCHS(lit_103);
         if  (HASEXCEPTION())
         {
             goto rulePARENHASHEx;
@@ -6232,7 +6328,7 @@ void mPARENHASH(pCvcLexer ctx)
 }
 // $ANTLR end PARENHASH
 
-//   Comes from: 151:13: ( 'PATTERN' )
+//   Comes from: 153:13: ( 'PATTERN' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start PATTERN_TOK
@@ -6252,10 +6348,10 @@ void mPATTERN_TOK(pCvcLexer ctx)
     _type	    = PATTERN_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:151:13: ( 'PATTERN' )
-    // ../../../../../../src/parser/cvc/Cvc.g:151:15: 'PATTERN'
+    // ../../../../src/parser/cvc/Cvc.g:153:13: ( 'PATTERN' )
+    // ../../../../src/parser/cvc/Cvc.g:153:15: 'PATTERN'
     {
-        MATCHS(lit_102);
+        MATCHS(lit_104);
         if  (HASEXCEPTION())
         {
             goto rulePATTERN_TOKEx;
@@ -6275,7 +6371,7 @@ void mPATTERN_TOK(pCvcLexer ctx)
 }
 // $ANTLR end PATTERN_TOK
 
-//   Comes from: 152:10: ( '+' )
+//   Comes from: 154:10: ( '+' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start PLUS_TOK
@@ -6295,8 +6391,8 @@ void mPLUS_TOK(pCvcLexer ctx)
     _type	    = PLUS_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:152:10: ( '+' )
-    // ../../../../../../src/parser/cvc/Cvc.g:152:12: '+'
+    // ../../../../src/parser/cvc/Cvc.g:154:10: ( '+' )
+    // ../../../../src/parser/cvc/Cvc.g:154:12: '+'
     {
         MATCHC('+');
         if  (HASEXCEPTION())
@@ -6316,7 +6412,7 @@ void mPLUS_TOK(pCvcLexer ctx)
 }
 // $ANTLR end PLUS_TOK
 
-//   Comes from: 153:17: ( 'POPTO_SCOPE' )
+//   Comes from: 155:17: ( 'POPTO_SCOPE' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start POPTO_SCOPE_TOK
@@ -6336,10 +6432,10 @@ void mPOPTO_SCOPE_TOK(pCvcLexer ctx)
     _type	    = POPTO_SCOPE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:153:17: ( 'POPTO_SCOPE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:153:19: 'POPTO_SCOPE'
+    // ../../../../src/parser/cvc/Cvc.g:155:17: ( 'POPTO_SCOPE' )
+    // ../../../../src/parser/cvc/Cvc.g:155:19: 'POPTO_SCOPE'
     {
-        MATCHS(lit_103);
+        MATCHS(lit_105);
         if  (HASEXCEPTION())
         {
             goto rulePOPTO_SCOPE_TOKEx;
@@ -6359,7 +6455,7 @@ void mPOPTO_SCOPE_TOK(pCvcLexer ctx)
 }
 // $ANTLR end POPTO_SCOPE_TOK
 
-//   Comes from: 154:11: ( 'POPTO' )
+//   Comes from: 156:11: ( 'POPTO' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start POPTO_TOK
@@ -6379,10 +6475,10 @@ void mPOPTO_TOK(pCvcLexer ctx)
     _type	    = POPTO_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:154:11: ( 'POPTO' )
-    // ../../../../../../src/parser/cvc/Cvc.g:154:13: 'POPTO'
+    // ../../../../src/parser/cvc/Cvc.g:156:11: ( 'POPTO' )
+    // ../../../../src/parser/cvc/Cvc.g:156:13: 'POPTO'
     {
-        MATCHS(lit_104);
+        MATCHS(lit_106);
         if  (HASEXCEPTION())
         {
             goto rulePOPTO_TOKEx;
@@ -6402,7 +6498,7 @@ void mPOPTO_TOK(pCvcLexer ctx)
 }
 // $ANTLR end POPTO_TOK
 
-//   Comes from: 155:15: ( 'POP_SCOPE' )
+//   Comes from: 157:15: ( 'POP_SCOPE' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start POP_SCOPE_TOK
@@ -6422,10 +6518,10 @@ void mPOP_SCOPE_TOK(pCvcLexer ctx)
     _type	    = POP_SCOPE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:155:15: ( 'POP_SCOPE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:155:17: 'POP_SCOPE'
+    // ../../../../src/parser/cvc/Cvc.g:157:15: ( 'POP_SCOPE' )
+    // ../../../../src/parser/cvc/Cvc.g:157:17: 'POP_SCOPE'
     {
-        MATCHS(lit_105);
+        MATCHS(lit_107);
         if  (HASEXCEPTION())
         {
             goto rulePOP_SCOPE_TOKEx;
@@ -6445,7 +6541,7 @@ void mPOP_SCOPE_TOK(pCvcLexer ctx)
 }
 // $ANTLR end POP_SCOPE_TOK
 
-//   Comes from: 156:9: ( 'POP' )
+//   Comes from: 158:9: ( 'POP' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start POP_TOK
@@ -6465,10 +6561,10 @@ void mPOP_TOK(pCvcLexer ctx)
     _type	    = POP_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:156:9: ( 'POP' )
-    // ../../../../../../src/parser/cvc/Cvc.g:156:11: 'POP'
+    // ../../../../src/parser/cvc/Cvc.g:158:9: ( 'POP' )
+    // ../../../../src/parser/cvc/Cvc.g:158:11: 'POP'
     {
-        MATCHS(lit_106);
+        MATCHS(lit_108);
         if  (HASEXCEPTION())
         {
             goto rulePOP_TOKEx;
@@ -6488,7 +6584,7 @@ void mPOP_TOK(pCvcLexer ctx)
 }
 // $ANTLR end POP_TOK
 
-//   Comes from: 157:11: ( 'PRINT' )
+//   Comes from: 159:11: ( 'PRINT' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start PRINT_TOK
@@ -6508,10 +6604,10 @@ void mPRINT_TOK(pCvcLexer ctx)
     _type	    = PRINT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:157:11: ( 'PRINT' )
-    // ../../../../../../src/parser/cvc/Cvc.g:157:13: 'PRINT'
+    // ../../../../src/parser/cvc/Cvc.g:159:11: ( 'PRINT' )
+    // ../../../../src/parser/cvc/Cvc.g:159:13: 'PRINT'
     {
-        MATCHS(lit_107);
+        MATCHS(lit_109);
         if  (HASEXCEPTION())
         {
             goto rulePRINT_TOKEx;
@@ -6531,7 +6627,7 @@ void mPRINT_TOK(pCvcLexer ctx)
 }
 // $ANTLR end PRINT_TOK
 
-//   Comes from: 158:16: ( 'PRINT_TYPE' )
+//   Comes from: 160:16: ( 'PRINT_TYPE' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start PRINT_TYPE_TOK
@@ -6551,10 +6647,10 @@ void mPRINT_TYPE_TOK(pCvcLexer ctx)
     _type	    = PRINT_TYPE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:158:16: ( 'PRINT_TYPE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:158:18: 'PRINT_TYPE'
+    // ../../../../src/parser/cvc/Cvc.g:160:16: ( 'PRINT_TYPE' )
+    // ../../../../src/parser/cvc/Cvc.g:160:18: 'PRINT_TYPE'
     {
-        MATCHS(lit_108);
+        MATCHS(lit_110);
         if  (HASEXCEPTION())
         {
             goto rulePRINT_TYPE_TOKEx;
@@ -6574,7 +6670,7 @@ void mPRINT_TYPE_TOK(pCvcLexer ctx)
 }
 // $ANTLR end PRINT_TYPE_TOK
 
-//   Comes from: 159:13: ( 'PRODUCT' )
+//   Comes from: 161:13: ( 'PRODUCT' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start PRODUCT_TOK
@@ -6594,10 +6690,10 @@ void mPRODUCT_TOK(pCvcLexer ctx)
     _type	    = PRODUCT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:159:13: ( 'PRODUCT' )
-    // ../../../../../../src/parser/cvc/Cvc.g:159:15: 'PRODUCT'
+    // ../../../../src/parser/cvc/Cvc.g:161:13: ( 'PRODUCT' )
+    // ../../../../src/parser/cvc/Cvc.g:161:15: 'PRODUCT'
     {
-        MATCHS(lit_109);
+        MATCHS(lit_111);
         if  (HASEXCEPTION())
         {
             goto rulePRODUCT_TOKEx;
@@ -6617,7 +6713,7 @@ void mPRODUCT_TOK(pCvcLexer ctx)
 }
 // $ANTLR end PRODUCT_TOK
 
-//   Comes from: 160:16: ( 'PUSH_SCOPE' )
+//   Comes from: 162:16: ( 'PUSH_SCOPE' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start PUSH_SCOPE_TOK
@@ -6637,10 +6733,10 @@ void mPUSH_SCOPE_TOK(pCvcLexer ctx)
     _type	    = PUSH_SCOPE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:160:16: ( 'PUSH_SCOPE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:160:18: 'PUSH_SCOPE'
+    // ../../../../src/parser/cvc/Cvc.g:162:16: ( 'PUSH_SCOPE' )
+    // ../../../../src/parser/cvc/Cvc.g:162:18: 'PUSH_SCOPE'
     {
-        MATCHS(lit_110);
+        MATCHS(lit_112);
         if  (HASEXCEPTION())
         {
             goto rulePUSH_SCOPE_TOKEx;
@@ -6660,7 +6756,7 @@ void mPUSH_SCOPE_TOK(pCvcLexer ctx)
 }
 // $ANTLR end PUSH_SCOPE_TOK
 
-//   Comes from: 161:10: ( 'PUSH' )
+//   Comes from: 163:10: ( 'PUSH' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start PUSH_TOK
@@ -6680,10 +6776,10 @@ void mPUSH_TOK(pCvcLexer ctx)
     _type	    = PUSH_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:161:10: ( 'PUSH' )
-    // ../../../../../../src/parser/cvc/Cvc.g:161:12: 'PUSH'
+    // ../../../../src/parser/cvc/Cvc.g:163:10: ( 'PUSH' )
+    // ../../../../src/parser/cvc/Cvc.g:163:12: 'PUSH'
     {
-        MATCHS(lit_111);
+        MATCHS(lit_113);
         if  (HASEXCEPTION())
         {
             goto rulePUSH_TOKEx;
@@ -6703,7 +6799,7 @@ void mPUSH_TOK(pCvcLexer ctx)
 }
 // $ANTLR end PUSH_TOK
 
-//   Comes from: 162:11: ( 'QUERY' )
+//   Comes from: 164:11: ( 'QUERY' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start QUERY_TOK
@@ -6723,10 +6819,10 @@ void mQUERY_TOK(pCvcLexer ctx)
     _type	    = QUERY_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:162:11: ( 'QUERY' )
-    // ../../../../../../src/parser/cvc/Cvc.g:162:13: 'QUERY'
+    // ../../../../src/parser/cvc/Cvc.g:164:11: ( 'QUERY' )
+    // ../../../../src/parser/cvc/Cvc.g:164:13: 'QUERY'
     {
-        MATCHS(lit_112);
+        MATCHS(lit_114);
         if  (HASEXCEPTION())
         {
             goto ruleQUERY_TOKEx;
@@ -6746,7 +6842,7 @@ void mQUERY_TOK(pCvcLexer ctx)
 }
 // $ANTLR end QUERY_TOK
 
-//   Comes from: 163:8: ( '}' )
+//   Comes from: 165:8: ( '}' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start RBRACE
@@ -6766,8 +6862,8 @@ void mRBRACE(pCvcLexer ctx)
     _type	    = RBRACE;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:163:8: ( '}' )
-    // ../../../../../../src/parser/cvc/Cvc.g:163:10: '}'
+    // ../../../../src/parser/cvc/Cvc.g:165:8: ( '}' )
+    // ../../../../src/parser/cvc/Cvc.g:165:10: '}'
     {
         MATCHC('}');
         if  (HASEXCEPTION())
@@ -6787,7 +6883,7 @@ void mRBRACE(pCvcLexer ctx)
 }
 // $ANTLR end RBRACE
 
-//   Comes from: 164:10: ( ']' )
+//   Comes from: 166:10: ( ']' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start RBRACKET
@@ -6807,8 +6903,8 @@ void mRBRACKET(pCvcLexer ctx)
     _type	    = RBRACKET;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:164:10: ( ']' )
-    // ../../../../../../src/parser/cvc/Cvc.g:164:12: ']'
+    // ../../../../src/parser/cvc/Cvc.g:166:10: ( ']' )
+    // ../../../../src/parser/cvc/Cvc.g:166:12: ']'
     {
         MATCHC(']');
         if  (HASEXCEPTION())
@@ -6828,7 +6924,7 @@ void mRBRACKET(pCvcLexer ctx)
 }
 // $ANTLR end RBRACKET
 
-//   Comes from: 165:10: ( 'REAL' )
+//   Comes from: 167:10: ( 'REAL' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start REAL_TOK
@@ -6848,10 +6944,10 @@ void mREAL_TOK(pCvcLexer ctx)
     _type	    = REAL_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:165:10: ( 'REAL' )
-    // ../../../../../../src/parser/cvc/Cvc.g:165:12: 'REAL'
+    // ../../../../src/parser/cvc/Cvc.g:167:10: ( 'REAL' )
+    // ../../../../src/parser/cvc/Cvc.g:167:12: 'REAL'
     {
-        MATCHS(lit_113);
+        MATCHS(lit_115);
         if  (HASEXCEPTION())
         {
             goto ruleREAL_TOKEx;
@@ -6871,7 +6967,7 @@ void mREAL_TOK(pCvcLexer ctx)
 }
 // $ANTLR end REAL_TOK
 
-//   Comes from: 166:11: ( 'RESET' )
+//   Comes from: 168:11: ( 'RESET' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start RESET_TOK
@@ -6891,10 +6987,10 @@ void mRESET_TOK(pCvcLexer ctx)
     _type	    = RESET_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:166:11: ( 'RESET' )
-    // ../../../../../../src/parser/cvc/Cvc.g:166:13: 'RESET'
+    // ../../../../src/parser/cvc/Cvc.g:168:11: ( 'RESET' )
+    // ../../../../src/parser/cvc/Cvc.g:168:13: 'RESET'
     {
-        MATCHS(lit_114);
+        MATCHS(lit_116);
         if  (HASEXCEPTION())
         {
             goto ruleRESET_TOKEx;
@@ -6914,7 +7010,7 @@ void mRESET_TOK(pCvcLexer ctx)
 }
 // $ANTLR end RESET_TOK
 
-//   Comes from: 167:13: ( 'RESTART' )
+//   Comes from: 169:13: ( 'RESTART' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start RESTART_TOK
@@ -6934,10 +7030,10 @@ void mRESTART_TOK(pCvcLexer ctx)
     _type	    = RESTART_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:167:13: ( 'RESTART' )
-    // ../../../../../../src/parser/cvc/Cvc.g:167:15: 'RESTART'
+    // ../../../../src/parser/cvc/Cvc.g:169:13: ( 'RESTART' )
+    // ../../../../src/parser/cvc/Cvc.g:169:15: 'RESTART'
     {
-        MATCHS(lit_115);
+        MATCHS(lit_117);
         if  (HASEXCEPTION())
         {
             goto ruleRESTART_TOKEx;
@@ -6957,7 +7053,7 @@ void mRESTART_TOK(pCvcLexer ctx)
 }
 // $ANTLR end RESTART_TOK
 
-//   Comes from: 168:16: ( '>>' )
+//   Comes from: 170:16: ( '>>' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start RIGHTSHIFT_TOK
@@ -6977,10 +7073,10 @@ void mRIGHTSHIFT_TOK(pCvcLexer ctx)
     _type	    = RIGHTSHIFT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:168:16: ( '>>' )
-    // ../../../../../../src/parser/cvc/Cvc.g:168:18: '>>'
+    // ../../../../src/parser/cvc/Cvc.g:170:16: ( '>>' )
+    // ../../../../src/parser/cvc/Cvc.g:170:18: '>>'
     {
-        MATCHS(lit_116);
+        MATCHS(lit_118);
         if  (HASEXCEPTION())
         {
             goto ruleRIGHTSHIFT_TOKEx;
@@ -7000,7 +7096,7 @@ void mRIGHTSHIFT_TOK(pCvcLexer ctx)
 }
 // $ANTLR end RIGHTSHIFT_TOK
 
-//   Comes from: 169:8: ( ')' )
+//   Comes from: 171:8: ( ')' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start RPAREN
@@ -7020,8 +7116,8 @@ void mRPAREN(pCvcLexer ctx)
     _type	    = RPAREN;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:169:8: ( ')' )
-    // ../../../../../../src/parser/cvc/Cvc.g:169:10: ')'
+    // ../../../../src/parser/cvc/Cvc.g:171:8: ( ')' )
+    // ../../../../src/parser/cvc/Cvc.g:171:10: ')'
     {
         MATCHC(')');
         if  (HASEXCEPTION())
@@ -7041,7 +7137,7 @@ void mRPAREN(pCvcLexer ctx)
 }
 // $ANTLR end RPAREN
 
-//   Comes from: 170:11: ( ';' )
+//   Comes from: 172:11: ( ';' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SEMICOLON
@@ -7061,8 +7157,8 @@ void mSEMICOLON(pCvcLexer ctx)
     _type	    = SEMICOLON;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:170:11: ( ';' )
-    // ../../../../../../src/parser/cvc/Cvc.g:170:13: ';'
+    // ../../../../src/parser/cvc/Cvc.g:172:11: ( ';' )
+    // ../../../../src/parser/cvc/Cvc.g:172:13: ';'
     {
         MATCHC(';');
         if  (HASEXCEPTION())
@@ -7082,7 +7178,7 @@ void mSEMICOLON(pCvcLexer ctx)
 }
 // $ANTLR end SEMICOLON
 
-//   Comes from: 171:15: ( 'CARD' )
+//   Comes from: 173:15: ( 'CARD' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SETS_CARD_TOK
@@ -7102,10 +7198,10 @@ void mSETS_CARD_TOK(pCvcLexer ctx)
     _type	    = SETS_CARD_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:171:15: ( 'CARD' )
-    // ../../../../../../src/parser/cvc/Cvc.g:171:17: 'CARD'
+    // ../../../../src/parser/cvc/Cvc.g:173:15: ( 'CARD' )
+    // ../../../../src/parser/cvc/Cvc.g:173:17: 'CARD'
     {
-        MATCHS(lit_117);
+        MATCHS(lit_119);
         if  (HASEXCEPTION())
         {
             goto ruleSETS_CARD_TOKEx;
@@ -7125,7 +7221,7 @@ void mSETS_CARD_TOK(pCvcLexer ctx)
 }
 // $ANTLR end SETS_CARD_TOK
 
-//   Comes from: 172:9: ( 'SET' )
+//   Comes from: 174:9: ( 'SET' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SET_TOK
@@ -7145,10 +7241,10 @@ void mSET_TOK(pCvcLexer ctx)
     _type	    = SET_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:172:9: ( 'SET' )
-    // ../../../../../../src/parser/cvc/Cvc.g:172:11: 'SET'
+    // ../../../../src/parser/cvc/Cvc.g:174:9: ( 'SET' )
+    // ../../../../src/parser/cvc/Cvc.g:174:11: 'SET'
     {
-        MATCHS(lit_118);
+        MATCHS(lit_120);
         if  (HASEXCEPTION())
         {
             goto ruleSET_TOKEx;
@@ -7168,7 +7264,7 @@ void mSET_TOK(pCvcLexer ctx)
 }
 // $ANTLR end SET_TOK
 
-//   Comes from: 173:8: ( '[#' )
+//   Comes from: 175:8: ( '[#' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SQHASH
@@ -7188,10 +7284,10 @@ void mSQHASH(pCvcLexer ctx)
     _type	    = SQHASH;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:173:8: ( '[#' )
-    // ../../../../../../src/parser/cvc/Cvc.g:173:10: '[#'
+    // ../../../../src/parser/cvc/Cvc.g:175:8: ( '[#' )
+    // ../../../../src/parser/cvc/Cvc.g:175:10: '[#'
     {
-        MATCHS(lit_119);
+        MATCHS(lit_121);
         if  (HASEXCEPTION())
         {
             goto ruleSQHASHEx;
@@ -7211,7 +7307,7 @@ void mSQHASH(pCvcLexer ctx)
 }
 // $ANTLR end SQHASH
 
-//   Comes from: 174:10: ( '*' )
+//   Comes from: 176:10: ( '*' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STAR_TOK
@@ -7231,8 +7327,8 @@ void mSTAR_TOK(pCvcLexer ctx)
     _type	    = STAR_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:174:10: ( '*' )
-    // ../../../../../../src/parser/cvc/Cvc.g:174:12: '*'
+    // ../../../../src/parser/cvc/Cvc.g:176:10: ( '*' )
+    // ../../../../src/parser/cvc/Cvc.g:176:12: '*'
     {
         MATCHC('*');
         if  (HASEXCEPTION())
@@ -7252,7 +7348,7 @@ void mSTAR_TOK(pCvcLexer ctx)
 }
 // $ANTLR end STAR_TOK
 
-//   Comes from: 175:19: ( 'CHARAT' )
+//   Comes from: 177:19: ( 'CHARAT' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STRING_CHARAT_TOK
@@ -7272,10 +7368,10 @@ void mSTRING_CHARAT_TOK(pCvcLexer ctx)
     _type	    = STRING_CHARAT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:175:19: ( 'CHARAT' )
-    // ../../../../../../src/parser/cvc/Cvc.g:175:21: 'CHARAT'
+    // ../../../../src/parser/cvc/Cvc.g:177:19: ( 'CHARAT' )
+    // ../../../../src/parser/cvc/Cvc.g:177:21: 'CHARAT'
     {
-        MATCHS(lit_120);
+        MATCHS(lit_122);
         if  (HASEXCEPTION())
         {
             goto ruleSTRING_CHARAT_TOKEx;
@@ -7295,7 +7391,7 @@ void mSTRING_CHARAT_TOK(pCvcLexer ctx)
 }
 // $ANTLR end STRING_CHARAT_TOK
 
-//   Comes from: 176:19: ( 'CONCAT' )
+//   Comes from: 178:19: ( 'CONCAT' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STRING_CONCAT_TOK
@@ -7315,10 +7411,10 @@ void mSTRING_CONCAT_TOK(pCvcLexer ctx)
     _type	    = STRING_CONCAT_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:176:19: ( 'CONCAT' )
-    // ../../../../../../src/parser/cvc/Cvc.g:176:21: 'CONCAT'
+    // ../../../../src/parser/cvc/Cvc.g:178:19: ( 'CONCAT' )
+    // ../../../../src/parser/cvc/Cvc.g:178:21: 'CONCAT'
     {
-        MATCHS(lit_121);
+        MATCHS(lit_123);
         if  (HASEXCEPTION())
         {
             goto ruleSTRING_CONCAT_TOKEx;
@@ -7338,7 +7434,7 @@ void mSTRING_CONCAT_TOK(pCvcLexer ctx)
 }
 // $ANTLR end STRING_CONCAT_TOK
 
-//   Comes from: 177:21: ( 'CONTAINS' )
+//   Comes from: 179:21: ( 'CONTAINS' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STRING_CONTAINS_TOK
@@ -7358,10 +7454,10 @@ void mSTRING_CONTAINS_TOK(pCvcLexer ctx)
     _type	    = STRING_CONTAINS_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:177:21: ( 'CONTAINS' )
-    // ../../../../../../src/parser/cvc/Cvc.g:177:23: 'CONTAINS'
+    // ../../../../src/parser/cvc/Cvc.g:179:21: ( 'CONTAINS' )
+    // ../../../../src/parser/cvc/Cvc.g:179:23: 'CONTAINS'
     {
-        MATCHS(lit_122);
+        MATCHS(lit_124);
         if  (HASEXCEPTION())
         {
             goto ruleSTRING_CONTAINS_TOKEx;
@@ -7381,7 +7477,7 @@ void mSTRING_CONTAINS_TOK(pCvcLexer ctx)
 }
 // $ANTLR end STRING_CONTAINS_TOK
 
-//   Comes from: 178:20: ( 'INDEXOF' )
+//   Comes from: 180:20: ( 'INDEXOF' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STRING_INDEXOF_TOK
@@ -7401,10 +7497,10 @@ void mSTRING_INDEXOF_TOK(pCvcLexer ctx)
     _type	    = STRING_INDEXOF_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:178:20: ( 'INDEXOF' )
-    // ../../../../../../src/parser/cvc/Cvc.g:178:22: 'INDEXOF'
+    // ../../../../src/parser/cvc/Cvc.g:180:20: ( 'INDEXOF' )
+    // ../../../../src/parser/cvc/Cvc.g:180:22: 'INDEXOF'
     {
-        MATCHS(lit_123);
+        MATCHS(lit_125);
         if  (HASEXCEPTION())
         {
             goto ruleSTRING_INDEXOF_TOKEx;
@@ -7424,7 +7520,7 @@ void mSTRING_INDEXOF_TOK(pCvcLexer ctx)
 }
 // $ANTLR end STRING_INDEXOF_TOK
 
-//   Comes from: 179:17: ( 'INTEGER_TO_STRING' )
+//   Comes from: 181:17: ( 'INTEGER_TO_STRING' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STRING_ITOS_TOK
@@ -7444,10 +7540,10 @@ void mSTRING_ITOS_TOK(pCvcLexer ctx)
     _type	    = STRING_ITOS_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:179:17: ( 'INTEGER_TO_STRING' )
-    // ../../../../../../src/parser/cvc/Cvc.g:179:19: 'INTEGER_TO_STRING'
+    // ../../../../src/parser/cvc/Cvc.g:181:17: ( 'INTEGER_TO_STRING' )
+    // ../../../../src/parser/cvc/Cvc.g:181:19: 'INTEGER_TO_STRING'
     {
-        MATCHS(lit_124);
+        MATCHS(lit_126);
         if  (HASEXCEPTION())
         {
             goto ruleSTRING_ITOS_TOKEx;
@@ -7467,7 +7563,7 @@ void mSTRING_ITOS_TOK(pCvcLexer ctx)
 }
 // $ANTLR end STRING_ITOS_TOK
 
-//   Comes from: 180:19: ( 'LENGTH' )
+//   Comes from: 182:19: ( 'LENGTH' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STRING_LENGTH_TOK
@@ -7487,10 +7583,10 @@ void mSTRING_LENGTH_TOK(pCvcLexer ctx)
     _type	    = STRING_LENGTH_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:180:19: ( 'LENGTH' )
-    // ../../../../../../src/parser/cvc/Cvc.g:180:21: 'LENGTH'
+    // ../../../../src/parser/cvc/Cvc.g:182:19: ( 'LENGTH' )
+    // ../../../../src/parser/cvc/Cvc.g:182:21: 'LENGTH'
     {
-        MATCHS(lit_125);
+        MATCHS(lit_127);
         if  (HASEXCEPTION())
         {
             goto ruleSTRING_LENGTH_TOKEx;
@@ -7510,7 +7606,7 @@ void mSTRING_LENGTH_TOK(pCvcLexer ctx)
 }
 // $ANTLR end STRING_LENGTH_TOK
 
-//   Comes from: 181:21: ( 'PREFIXOF' )
+//   Comes from: 183:21: ( 'PREFIXOF' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STRING_PREFIXOF_TOK
@@ -7530,10 +7626,10 @@ void mSTRING_PREFIXOF_TOK(pCvcLexer ctx)
     _type	    = STRING_PREFIXOF_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:181:21: ( 'PREFIXOF' )
-    // ../../../../../../src/parser/cvc/Cvc.g:181:23: 'PREFIXOF'
+    // ../../../../src/parser/cvc/Cvc.g:183:21: ( 'PREFIXOF' )
+    // ../../../../src/parser/cvc/Cvc.g:183:23: 'PREFIXOF'
     {
-        MATCHS(lit_126);
+        MATCHS(lit_128);
         if  (HASEXCEPTION())
         {
             goto ruleSTRING_PREFIXOF_TOKEx;
@@ -7553,7 +7649,7 @@ void mSTRING_PREFIXOF_TOK(pCvcLexer ctx)
 }
 // $ANTLR end STRING_PREFIXOF_TOK
 
-//   Comes from: 182:20: ( 'REPLACE' )
+//   Comes from: 184:20: ( 'REPLACE' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STRING_REPLACE_TOK
@@ -7573,10 +7669,10 @@ void mSTRING_REPLACE_TOK(pCvcLexer ctx)
     _type	    = STRING_REPLACE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:182:20: ( 'REPLACE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:182:22: 'REPLACE'
+    // ../../../../src/parser/cvc/Cvc.g:184:20: ( 'REPLACE' )
+    // ../../../../src/parser/cvc/Cvc.g:184:22: 'REPLACE'
     {
-        MATCHS(lit_127);
+        MATCHS(lit_129);
         if  (HASEXCEPTION())
         {
             goto ruleSTRING_REPLACE_TOKEx;
@@ -7596,7 +7692,7 @@ void mSTRING_REPLACE_TOK(pCvcLexer ctx)
 }
 // $ANTLR end STRING_REPLACE_TOK
 
-//   Comes from: 183:17: ( 'STRING_TO_INTEGER' )
+//   Comes from: 185:17: ( 'STRING_TO_INTEGER' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STRING_STOI_TOK
@@ -7616,10 +7712,10 @@ void mSTRING_STOI_TOK(pCvcLexer ctx)
     _type	    = STRING_STOI_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:183:17: ( 'STRING_TO_INTEGER' )
-    // ../../../../../../src/parser/cvc/Cvc.g:183:19: 'STRING_TO_INTEGER'
+    // ../../../../src/parser/cvc/Cvc.g:185:17: ( 'STRING_TO_INTEGER' )
+    // ../../../../src/parser/cvc/Cvc.g:185:19: 'STRING_TO_INTEGER'
     {
-        MATCHS(lit_128);
+        MATCHS(lit_130);
         if  (HASEXCEPTION())
         {
             goto ruleSTRING_STOI_TOKEx;
@@ -7639,7 +7735,7 @@ void mSTRING_STOI_TOK(pCvcLexer ctx)
 }
 // $ANTLR end STRING_STOI_TOK
 
-//   Comes from: 184:19: ( 'STRING_TO_UINT16' )
+//   Comes from: 186:19: ( 'STRING_TO_UINT16' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STRING_STOU16_TOK
@@ -7659,10 +7755,10 @@ void mSTRING_STOU16_TOK(pCvcLexer ctx)
     _type	    = STRING_STOU16_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:184:19: ( 'STRING_TO_UINT16' )
-    // ../../../../../../src/parser/cvc/Cvc.g:184:21: 'STRING_TO_UINT16'
+    // ../../../../src/parser/cvc/Cvc.g:186:19: ( 'STRING_TO_UINT16' )
+    // ../../../../src/parser/cvc/Cvc.g:186:21: 'STRING_TO_UINT16'
     {
-        MATCHS(lit_129);
+        MATCHS(lit_131);
         if  (HASEXCEPTION())
         {
             goto ruleSTRING_STOU16_TOKEx;
@@ -7682,7 +7778,7 @@ void mSTRING_STOU16_TOK(pCvcLexer ctx)
 }
 // $ANTLR end STRING_STOU16_TOK
 
-//   Comes from: 185:19: ( 'STRING_TO_UINT32' )
+//   Comes from: 187:19: ( 'STRING_TO_UINT32' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STRING_STOU32_TOK
@@ -7702,10 +7798,10 @@ void mSTRING_STOU32_TOK(pCvcLexer ctx)
     _type	    = STRING_STOU32_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:185:19: ( 'STRING_TO_UINT32' )
-    // ../../../../../../src/parser/cvc/Cvc.g:185:21: 'STRING_TO_UINT32'
+    // ../../../../src/parser/cvc/Cvc.g:187:19: ( 'STRING_TO_UINT32' )
+    // ../../../../src/parser/cvc/Cvc.g:187:21: 'STRING_TO_UINT32'
     {
-        MATCHS(lit_130);
+        MATCHS(lit_132);
         if  (HASEXCEPTION())
         {
             goto ruleSTRING_STOU32_TOKEx;
@@ -7725,7 +7821,7 @@ void mSTRING_STOU32_TOK(pCvcLexer ctx)
 }
 // $ANTLR end STRING_STOU32_TOK
 
-//   Comes from: 186:19: ( 'SUBSTR' )
+//   Comes from: 188:19: ( 'SUBSTR' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STRING_SUBSTR_TOK
@@ -7745,10 +7841,10 @@ void mSTRING_SUBSTR_TOK(pCvcLexer ctx)
     _type	    = STRING_SUBSTR_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:186:19: ( 'SUBSTR' )
-    // ../../../../../../src/parser/cvc/Cvc.g:186:21: 'SUBSTR'
+    // ../../../../src/parser/cvc/Cvc.g:188:19: ( 'SUBSTR' )
+    // ../../../../src/parser/cvc/Cvc.g:188:21: 'SUBSTR'
     {
-        MATCHS(lit_131);
+        MATCHS(lit_133);
         if  (HASEXCEPTION())
         {
             goto ruleSTRING_SUBSTR_TOKEx;
@@ -7768,7 +7864,7 @@ void mSTRING_SUBSTR_TOK(pCvcLexer ctx)
 }
 // $ANTLR end STRING_SUBSTR_TOK
 
-//   Comes from: 187:21: ( 'SUFFIXOF' )
+//   Comes from: 189:21: ( 'SUFFIXOF' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STRING_SUFFIXOF_TOK
@@ -7788,10 +7884,10 @@ void mSTRING_SUFFIXOF_TOK(pCvcLexer ctx)
     _type	    = STRING_SUFFIXOF_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:187:21: ( 'SUFFIXOF' )
-    // ../../../../../../src/parser/cvc/Cvc.g:187:23: 'SUFFIXOF'
+    // ../../../../src/parser/cvc/Cvc.g:189:21: ( 'SUFFIXOF' )
+    // ../../../../src/parser/cvc/Cvc.g:189:23: 'SUFFIXOF'
     {
-        MATCHS(lit_132);
+        MATCHS(lit_134);
         if  (HASEXCEPTION())
         {
             goto ruleSTRING_SUFFIXOF_TOKEx;
@@ -7811,7 +7907,7 @@ void mSTRING_SUFFIXOF_TOK(pCvcLexer ctx)
 }
 // $ANTLR end STRING_SUFFIXOF_TOK
 
-//   Comes from: 188:12: ( 'STRING' )
+//   Comes from: 190:12: ( 'STRING' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STRING_TOK
@@ -7831,10 +7927,10 @@ void mSTRING_TOK(pCvcLexer ctx)
     _type	    = STRING_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:188:12: ( 'STRING' )
-    // ../../../../../../src/parser/cvc/Cvc.g:188:14: 'STRING'
+    // ../../../../src/parser/cvc/Cvc.g:190:12: ( 'STRING' )
+    // ../../../../src/parser/cvc/Cvc.g:190:14: 'STRING'
     {
-        MATCHS(lit_133);
+        MATCHS(lit_135);
         if  (HASEXCEPTION())
         {
             goto ruleSTRING_TOKEx;
@@ -7854,7 +7950,7 @@ void mSTRING_TOK(pCvcLexer ctx)
 }
 // $ANTLR end STRING_TOK
 
-//   Comes from: 189:19: ( 'UINT16_TO_STRING' )
+//   Comes from: 191:19: ( 'UINT16_TO_STRING' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STRING_U16TOS_TOK
@@ -7874,10 +7970,10 @@ void mSTRING_U16TOS_TOK(pCvcLexer ctx)
     _type	    = STRING_U16TOS_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:189:19: ( 'UINT16_TO_STRING' )
-    // ../../../../../../src/parser/cvc/Cvc.g:189:21: 'UINT16_TO_STRING'
+    // ../../../../src/parser/cvc/Cvc.g:191:19: ( 'UINT16_TO_STRING' )
+    // ../../../../src/parser/cvc/Cvc.g:191:21: 'UINT16_TO_STRING'
     {
-        MATCHS(lit_134);
+        MATCHS(lit_136);
         if  (HASEXCEPTION())
         {
             goto ruleSTRING_U16TOS_TOKEx;
@@ -7897,7 +7993,7 @@ void mSTRING_U16TOS_TOK(pCvcLexer ctx)
 }
 // $ANTLR end STRING_U16TOS_TOK
 
-//   Comes from: 190:19: ( 'UINT32_TO_STRING' )
+//   Comes from: 192:19: ( 'UINT32_TO_STRING' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STRING_U32TOS_TOK
@@ -7917,10 +8013,10 @@ void mSTRING_U32TOS_TOK(pCvcLexer ctx)
     _type	    = STRING_U32TOS_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:190:19: ( 'UINT32_TO_STRING' )
-    // ../../../../../../src/parser/cvc/Cvc.g:190:21: 'UINT32_TO_STRING'
+    // ../../../../src/parser/cvc/Cvc.g:192:19: ( 'UINT32_TO_STRING' )
+    // ../../../../src/parser/cvc/Cvc.g:192:21: 'UINT32_TO_STRING'
     {
-        MATCHS(lit_135);
+        MATCHS(lit_137);
         if  (HASEXCEPTION())
         {
             goto ruleSTRING_U32TOS_TOKEx;
@@ -7940,7 +8036,7 @@ void mSTRING_U32TOS_TOK(pCvcLexer ctx)
 }
 // $ANTLR end STRING_U32TOS_TOK
 
-//   Comes from: 191:16: ( 'SUBSTITUTE' )
+//   Comes from: 193:16: ( 'SUBSTITUTE' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SUBSTITUTE_TOK
@@ -7960,10 +8056,10 @@ void mSUBSTITUTE_TOK(pCvcLexer ctx)
     _type	    = SUBSTITUTE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:191:16: ( 'SUBSTITUTE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:191:18: 'SUBSTITUTE'
+    // ../../../../src/parser/cvc/Cvc.g:193:16: ( 'SUBSTITUTE' )
+    // ../../../../src/parser/cvc/Cvc.g:193:18: 'SUBSTITUTE'
     {
-        MATCHS(lit_136);
+        MATCHS(lit_138);
         if  (HASEXCEPTION())
         {
             goto ruleSUBSTITUTE_TOKEx;
@@ -7983,7 +8079,7 @@ void mSUBSTITUTE_TOK(pCvcLexer ctx)
 }
 // $ANTLR end SUBSTITUTE_TOK
 
-//   Comes from: 192:13: ( 'SUBTYPE' )
+//   Comes from: 194:13: ( 'SUBTYPE' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SUBTYPE_TOK
@@ -8003,10 +8099,10 @@ void mSUBTYPE_TOK(pCvcLexer ctx)
     _type	    = SUBTYPE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:192:13: ( 'SUBTYPE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:192:15: 'SUBTYPE'
+    // ../../../../src/parser/cvc/Cvc.g:194:13: ( 'SUBTYPE' )
+    // ../../../../src/parser/cvc/Cvc.g:194:15: 'SUBTYPE'
     {
-        MATCHS(lit_137);
+        MATCHS(lit_139);
         if  (HASEXCEPTION())
         {
             goto ruleSUBTYPE_TOKEx;
@@ -8026,7 +8122,7 @@ void mSUBTYPE_TOK(pCvcLexer ctx)
 }
 // $ANTLR end SUBTYPE_TOK
 
-//   Comes from: 193:8: ( 'SX' )
+//   Comes from: 195:8: ( 'SX' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SX_TOK
@@ -8046,10 +8142,10 @@ void mSX_TOK(pCvcLexer ctx)
     _type	    = SX_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:193:8: ( 'SX' )
-    // ../../../../../../src/parser/cvc/Cvc.g:193:10: 'SX'
+    // ../../../../src/parser/cvc/Cvc.g:195:8: ( 'SX' )
+    // ../../../../src/parser/cvc/Cvc.g:195:10: 'SX'
     {
-        MATCHS(lit_138);
+        MATCHS(lit_140);
         if  (HASEXCEPTION())
         {
             goto ruleSX_TOKEx;
@@ -8069,7 +8165,7 @@ void mSX_TOK(pCvcLexer ctx)
 }
 // $ANTLR end SX_TOK
 
-//   Comes from: 194:10: ( 'THEN' )
+//   Comes from: 196:10: ( 'THEN' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start THEN_TOK
@@ -8089,10 +8185,10 @@ void mTHEN_TOK(pCvcLexer ctx)
     _type	    = THEN_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:194:10: ( 'THEN' )
-    // ../../../../../../src/parser/cvc/Cvc.g:194:12: 'THEN'
+    // ../../../../src/parser/cvc/Cvc.g:196:10: ( 'THEN' )
+    // ../../../../src/parser/cvc/Cvc.g:196:12: 'THEN'
     {
-        MATCHS(lit_139);
+        MATCHS(lit_141);
         if  (HASEXCEPTION())
         {
             goto ruleTHEN_TOKEx;
@@ -8112,7 +8208,7 @@ void mTHEN_TOK(pCvcLexer ctx)
 }
 // $ANTLR end THEN_TOK
 
-//   Comes from: 195:11: ( 'TRACE' )
+//   Comes from: 197:11: ( 'TRACE' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start TRACE_TOK
@@ -8132,10 +8228,10 @@ void mTRACE_TOK(pCvcLexer ctx)
     _type	    = TRACE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:195:11: ( 'TRACE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:195:13: 'TRACE'
+    // ../../../../src/parser/cvc/Cvc.g:197:11: ( 'TRACE' )
+    // ../../../../src/parser/cvc/Cvc.g:197:13: 'TRACE'
     {
-        MATCHS(lit_140);
+        MATCHS(lit_142);
         if  (HASEXCEPTION())
         {
             goto ruleTRACE_TOKEx;
@@ -8155,7 +8251,7 @@ void mTRACE_TOK(pCvcLexer ctx)
 }
 // $ANTLR end TRACE_TOK
 
-//   Comes from: 196:18: ( 'TCLOSURE' )
+//   Comes from: 198:18: ( 'TCLOSURE' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start TRANSCLOSURE_TOK
@@ -8175,10 +8271,10 @@ void mTRANSCLOSURE_TOK(pCvcLexer ctx)
     _type	    = TRANSCLOSURE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:196:18: ( 'TCLOSURE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:196:20: 'TCLOSURE'
+    // ../../../../src/parser/cvc/Cvc.g:198:18: ( 'TCLOSURE' )
+    // ../../../../src/parser/cvc/Cvc.g:198:20: 'TCLOSURE'
     {
-        MATCHS(lit_141);
+        MATCHS(lit_143);
         if  (HASEXCEPTION())
         {
             goto ruleTRANSCLOSURE_TOKEx;
@@ -8198,7 +8294,7 @@ void mTRANSCLOSURE_TOK(pCvcLexer ctx)
 }
 // $ANTLR end TRANSCLOSURE_TOK
 
-//   Comes from: 197:15: ( 'TRANSFORM' )
+//   Comes from: 199:15: ( 'TRANSFORM' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start TRANSFORM_TOK
@@ -8218,10 +8314,10 @@ void mTRANSFORM_TOK(pCvcLexer ctx)
     _type	    = TRANSFORM_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:197:15: ( 'TRANSFORM' )
-    // ../../../../../../src/parser/cvc/Cvc.g:197:17: 'TRANSFORM'
+    // ../../../../src/parser/cvc/Cvc.g:199:15: ( 'TRANSFORM' )
+    // ../../../../src/parser/cvc/Cvc.g:199:17: 'TRANSFORM'
     {
-        MATCHS(lit_142);
+        MATCHS(lit_144);
         if  (HASEXCEPTION())
         {
             goto ruleTRANSFORM_TOKEx;
@@ -8241,7 +8337,7 @@ void mTRANSFORM_TOK(pCvcLexer ctx)
 }
 // $ANTLR end TRANSFORM_TOK
 
-//   Comes from: 198:15: ( 'TRANSPOSE' )
+//   Comes from: 200:15: ( 'TRANSPOSE' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start TRANSPOSE_TOK
@@ -8261,10 +8357,10 @@ void mTRANSPOSE_TOK(pCvcLexer ctx)
     _type	    = TRANSPOSE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:198:15: ( 'TRANSPOSE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:198:17: 'TRANSPOSE'
+    // ../../../../src/parser/cvc/Cvc.g:200:15: ( 'TRANSPOSE' )
+    // ../../../../src/parser/cvc/Cvc.g:200:17: 'TRANSPOSE'
     {
-        MATCHS(lit_143);
+        MATCHS(lit_145);
         if  (HASEXCEPTION())
         {
             goto ruleTRANSPOSE_TOKEx;
@@ -8284,7 +8380,7 @@ void mTRANSPOSE_TOK(pCvcLexer ctx)
 }
 // $ANTLR end TRANSPOSE_TOK
 
-//   Comes from: 199:10: ( 'TRUE' )
+//   Comes from: 201:10: ( 'TRUE' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start TRUE_TOK
@@ -8304,10 +8400,10 @@ void mTRUE_TOK(pCvcLexer ctx)
     _type	    = TRUE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:199:10: ( 'TRUE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:199:12: 'TRUE'
+    // ../../../../src/parser/cvc/Cvc.g:201:10: ( 'TRUE' )
+    // ../../../../src/parser/cvc/Cvc.g:201:12: 'TRUE'
     {
-        MATCHS(lit_144);
+        MATCHS(lit_146);
         if  (HASEXCEPTION())
         {
             goto ruleTRUE_TOKEx;
@@ -8327,7 +8423,7 @@ void mTRUE_TOK(pCvcLexer ctx)
 }
 // $ANTLR end TRUE_TOK
 
-//   Comes from: 200:11: ( 'TUPLE' )
+//   Comes from: 202:11: ( 'TUPLE' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start TUPLE_TOK
@@ -8347,10 +8443,10 @@ void mTUPLE_TOK(pCvcLexer ctx)
     _type	    = TUPLE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:200:11: ( 'TUPLE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:200:13: 'TUPLE'
+    // ../../../../src/parser/cvc/Cvc.g:202:11: ( 'TUPLE' )
+    // ../../../../src/parser/cvc/Cvc.g:202:13: 'TUPLE'
     {
-        MATCHS(lit_145);
+        MATCHS(lit_147);
         if  (HASEXCEPTION())
         {
             goto ruleTUPLE_TOKEx;
@@ -8370,7 +8466,7 @@ void mTUPLE_TOK(pCvcLexer ctx)
 }
 // $ANTLR end TUPLE_TOK
 
-//   Comes from: 201:10: ( 'TYPE' )
+//   Comes from: 203:10: ( 'TYPE' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start TYPE_TOK
@@ -8390,10 +8486,10 @@ void mTYPE_TOK(pCvcLexer ctx)
     _type	    = TYPE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:201:10: ( 'TYPE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:201:12: 'TYPE'
+    // ../../../../src/parser/cvc/Cvc.g:203:10: ( 'TYPE' )
+    // ../../../../src/parser/cvc/Cvc.g:203:12: 'TYPE'
     {
-        MATCHS(lit_146);
+        MATCHS(lit_148);
         if  (HASEXCEPTION())
         {
             goto ruleTYPE_TOKEx;
@@ -8413,7 +8509,7 @@ void mTYPE_TOK(pCvcLexer ctx)
 }
 // $ANTLR end TYPE_TOK
 
-//   Comes from: 202:12: ( '_' )
+//   Comes from: 204:12: ( '_' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start UNDERSCORE
@@ -8433,8 +8529,8 @@ void mUNDERSCORE(pCvcLexer ctx)
     _type	    = UNDERSCORE;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:202:12: ( '_' )
-    // ../../../../../../src/parser/cvc/Cvc.g:202:14: '_'
+    // ../../../../src/parser/cvc/Cvc.g:204:12: ( '_' )
+    // ../../../../src/parser/cvc/Cvc.g:204:14: '_'
     {
         MATCHC('_');
         if  (HASEXCEPTION())
@@ -8454,7 +8550,7 @@ void mUNDERSCORE(pCvcLexer ctx)
 }
 // $ANTLR end UNDERSCORE
 
-//   Comes from: 203:13: ( 'UNIVERSE' )
+//   Comes from: 205:13: ( 'UNIVERSE' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start UNIVSET_TOK
@@ -8474,10 +8570,10 @@ void mUNIVSET_TOK(pCvcLexer ctx)
     _type	    = UNIVSET_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:203:13: ( 'UNIVERSE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:203:15: 'UNIVERSE'
+    // ../../../../src/parser/cvc/Cvc.g:205:13: ( 'UNIVERSE' )
+    // ../../../../src/parser/cvc/Cvc.g:205:15: 'UNIVERSE'
     {
-        MATCHS(lit_147);
+        MATCHS(lit_149);
         if  (HASEXCEPTION())
         {
             goto ruleUNIVSET_TOKEx;
@@ -8497,7 +8593,7 @@ void mUNIVSET_TOK(pCvcLexer ctx)
 }
 // $ANTLR end UNIVSET_TOK
 
-//   Comes from: 204:13: ( 'UNTRACE' )
+//   Comes from: 206:13: ( 'UNTRACE' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start UNTRACE_TOK
@@ -8517,10 +8613,10 @@ void mUNTRACE_TOK(pCvcLexer ctx)
     _type	    = UNTRACE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:204:13: ( 'UNTRACE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:204:15: 'UNTRACE'
+    // ../../../../src/parser/cvc/Cvc.g:206:13: ( 'UNTRACE' )
+    // ../../../../src/parser/cvc/Cvc.g:206:15: 'UNTRACE'
     {
-        MATCHS(lit_148);
+        MATCHS(lit_150);
         if  (HASEXCEPTION())
         {
             goto ruleUNTRACE_TOKEx;
@@ -8540,7 +8636,7 @@ void mUNTRACE_TOK(pCvcLexer ctx)
 }
 // $ANTLR end UNTRACE_TOK
 
-//   Comes from: 205:11: ( 'WHERE' )
+//   Comes from: 207:11: ( 'WHERE' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start WHERE_TOK
@@ -8560,10 +8656,10 @@ void mWHERE_TOK(pCvcLexer ctx)
     _type	    = WHERE_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:205:11: ( 'WHERE' )
-    // ../../../../../../src/parser/cvc/Cvc.g:205:13: 'WHERE'
+    // ../../../../src/parser/cvc/Cvc.g:207:11: ( 'WHERE' )
+    // ../../../../src/parser/cvc/Cvc.g:207:13: 'WHERE'
     {
-        MATCHS(lit_149);
+        MATCHS(lit_151);
         if  (HASEXCEPTION())
         {
             goto ruleWHERE_TOKEx;
@@ -8583,7 +8679,7 @@ void mWHERE_TOK(pCvcLexer ctx)
 }
 // $ANTLR end WHERE_TOK
 
-//   Comes from: 206:10: ( 'WITH' )
+//   Comes from: 208:10: ( 'WITH' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start WITH_TOK
@@ -8603,10 +8699,10 @@ void mWITH_TOK(pCvcLexer ctx)
     _type	    = WITH_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:206:10: ( 'WITH' )
-    // ../../../../../../src/parser/cvc/Cvc.g:206:12: 'WITH'
+    // ../../../../src/parser/cvc/Cvc.g:208:10: ( 'WITH' )
+    // ../../../../src/parser/cvc/Cvc.g:208:12: 'WITH'
     {
-        MATCHS(lit_150);
+        MATCHS(lit_152);
         if  (HASEXCEPTION())
         {
             goto ruleWITH_TOKEx;
@@ -8626,7 +8722,7 @@ void mWITH_TOK(pCvcLexer ctx)
 }
 // $ANTLR end WITH_TOK
 
-//   Comes from: 207:9: ( 'XOR' )
+//   Comes from: 209:9: ( 'XOR' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start XOR_TOK
@@ -8646,10 +8742,10 @@ void mXOR_TOK(pCvcLexer ctx)
     _type	    = XOR_TOK;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:207:9: ( 'XOR' )
-    // ../../../../../../src/parser/cvc/Cvc.g:207:11: 'XOR'
+    // ../../../../src/parser/cvc/Cvc.g:209:9: ( 'XOR' )
+    // ../../../../src/parser/cvc/Cvc.g:209:11: 'XOR'
     {
-        MATCHS(lit_151);
+        MATCHS(lit_153);
         if  (HASEXCEPTION())
         {
             goto ruleXOR_TOKEx;
@@ -8669,7 +8765,7 @@ void mXOR_TOK(pCvcLexer ctx)
 }
 // $ANTLR end XOR_TOK
 
-//   Comes from: 2290:12: ( ( ALPHA | '_' ) ( ALPHA | DIGIT | '_' | '\\'' | '\\\\' | '?' | '$' | '~' )* )
+//   Comes from: 2301:12: ( ( ALPHA | '_' ) ( ALPHA | DIGIT | '_' | '\\'' | '\\\\' | '?' | '$' | '~' )* )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start IDENTIFIER
@@ -8689,8 +8785,8 @@ void mIDENTIFIER(pCvcLexer ctx)
     _type	    = IDENTIFIER;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:2290:12: ( ( ALPHA | '_' ) ( ALPHA | DIGIT | '_' | '\\'' | '\\\\' | '?' | '$' | '~' )* )
-    // ../../../../../../src/parser/cvc/Cvc.g:2290:14: ( ALPHA | '_' ) ( ALPHA | DIGIT | '_' | '\\'' | '\\\\' | '?' | '$' | '~' )*
+    // ../../../../src/parser/cvc/Cvc.g:2301:12: ( ( ALPHA | '_' ) ( ALPHA | DIGIT | '_' | '\\'' | '\\\\' | '?' | '$' | '~' )* )
+    // ../../../../src/parser/cvc/Cvc.g:2301:14: ( ALPHA | '_' ) ( ALPHA | DIGIT | '_' | '\\'' | '\\\\' | '?' | '$' | '~' )*
     {
         if ( ((LA(1) >= 'A') && (LA(1) <= 'Z')) || LA(1) == '_' || ((LA(1) >= 'a') && (LA(1) <= 'z')) )
         {
@@ -8707,7 +8803,7 @@ void mIDENTIFIER(pCvcLexer ctx)
         }
 
 
-        // ../../../../../../src/parser/cvc/Cvc.g:2290:28: ( ALPHA | DIGIT | '_' | '\\'' | '\\\\' | '?' | '$' | '~' )*
+        // ../../../../src/parser/cvc/Cvc.g:2301:28: ( ALPHA | DIGIT | '_' | '\\'' | '\\\\' | '?' | '$' | '~' )*
 
         for (;;)
         {
@@ -8792,7 +8888,7 @@ void mIDENTIFIER(pCvcLexer ctx)
             switch (alt1)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:
+        	    // ../../../../src/parser/cvc/Cvc.g:
         	    {
         	        if ( LA(1) == '$' || LA(1) == '\'' || ((LA(1) >= '0') && (LA(1) <= '9')) || LA(1) == '?' || ((LA(1) >= 'A') && (LA(1) <= 'Z')) || LA(1) == '\\' || LA(1) == '_' || ((LA(1) >= 'a') && (LA(1) <= 'z')) || LA(1) == '~' )
         	        {
@@ -8831,7 +8927,7 @@ void mIDENTIFIER(pCvcLexer ctx)
 }
 // $ANTLR end IDENTIFIER
 
-//   Comes from: 2327:3: ( '0hex' ( HEX_DIGIT )+ )
+//   Comes from: 2338:3: ( '0hex' ( HEX_DIGIT )+ )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start HEX_LITERAL
@@ -8851,10 +8947,10 @@ void mHEX_LITERAL(pCvcLexer ctx)
     _type	    = HEX_LITERAL;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:2327:3: ( '0hex' ( HEX_DIGIT )+ )
-    // ../../../../../../src/parser/cvc/Cvc.g:2327:5: '0hex' ( HEX_DIGIT )+
+    // ../../../../src/parser/cvc/Cvc.g:2338:3: ( '0hex' ( HEX_DIGIT )+ )
+    // ../../../../src/parser/cvc/Cvc.g:2338:5: '0hex' ( HEX_DIGIT )+
     {
-        MATCHS(lit_152);
+        MATCHS(lit_154);
         if  (HASEXCEPTION())
         {
             goto ruleHEX_LITERALEx;
@@ -8863,7 +8959,7 @@ void mHEX_LITERAL(pCvcLexer ctx)
 
 
 
-        // ../../../../../../src/parser/cvc/Cvc.g:2327:12: ( HEX_DIGIT )+
+        // ../../../../src/parser/cvc/Cvc.g:2338:12: ( HEX_DIGIT )+
         {
             int cnt2=0;
 
@@ -8904,7 +9000,7 @@ void mHEX_LITERAL(pCvcLexer ctx)
         	switch (alt2)
         	{
         	    case 1:
-        	        // ../../../../../../src/parser/cvc/Cvc.g:
+        	        // ../../../../src/parser/cvc/Cvc.g:
         	        {
         	            if ( ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'A') && (LA(1) <= 'F')) || ((LA(1) >= 'a') && (LA(1) <= 'f')) )
         	            {
@@ -8955,7 +9051,7 @@ void mHEX_LITERAL(pCvcLexer ctx)
 }
 // $ANTLR end HEX_LITERAL
 
-//   Comes from: 2334:3: ( '0bin' ( '0' | '1' )+ )
+//   Comes from: 2345:3: ( '0bin' ( '0' | '1' )+ )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BINARY_LITERAL
@@ -8975,10 +9071,10 @@ void mBINARY_LITERAL(pCvcLexer ctx)
     _type	    = BINARY_LITERAL;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:2334:3: ( '0bin' ( '0' | '1' )+ )
-    // ../../../../../../src/parser/cvc/Cvc.g:2334:5: '0bin' ( '0' | '1' )+
+    // ../../../../src/parser/cvc/Cvc.g:2345:3: ( '0bin' ( '0' | '1' )+ )
+    // ../../../../src/parser/cvc/Cvc.g:2345:5: '0bin' ( '0' | '1' )+
     {
-        MATCHS(lit_153);
+        MATCHS(lit_155);
         if  (HASEXCEPTION())
         {
             goto ruleBINARY_LITERALEx;
@@ -8987,7 +9083,7 @@ void mBINARY_LITERAL(pCvcLexer ctx)
 
 
 
-        // ../../../../../../src/parser/cvc/Cvc.g:2334:12: ( '0' | '1' )+
+        // ../../../../src/parser/cvc/Cvc.g:2345:12: ( '0' | '1' )+
         {
             int cnt3=0;
 
@@ -9008,7 +9104,7 @@ void mBINARY_LITERAL(pCvcLexer ctx)
         	switch (alt3)
         	{
         	    case 1:
-        	        // ../../../../../../src/parser/cvc/Cvc.g:
+        	        // ../../../../src/parser/cvc/Cvc.g:
         	        {
         	            if ( ((LA(1) >= '0') && (LA(1) <= '1')) )
         	            {
@@ -9059,7 +9155,7 @@ void mBINARY_LITERAL(pCvcLexer ctx)
 }
 // $ANTLR end BINARY_LITERAL
 
-//   Comes from: 2342:15: ( '\"' ( ESCAPE |~ ( '\"' | '\\\\' ) )* '\"' )
+//   Comes from: 2353:15: ( '\"' ( ESCAPE |~ ( '\"' | '\\\\' ) )* '\"' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STRING_LITERAL
@@ -9079,8 +9175,8 @@ void mSTRING_LITERAL(pCvcLexer ctx)
     _type	    = STRING_LITERAL;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:2342:15: ( '\"' ( ESCAPE |~ ( '\"' | '\\\\' ) )* '\"' )
-    // ../../../../../../src/parser/cvc/Cvc.g:2342:17: '\"' ( ESCAPE |~ ( '\"' | '\\\\' ) )* '\"'
+    // ../../../../src/parser/cvc/Cvc.g:2353:15: ( '\"' ( ESCAPE |~ ( '\"' | '\\\\' ) )* '\"' )
+    // ../../../../src/parser/cvc/Cvc.g:2353:17: '\"' ( ESCAPE |~ ( '\"' | '\\\\' ) )* '\"'
     {
         MATCHC('"');
         if  (HASEXCEPTION())
@@ -9089,7 +9185,7 @@ void mSTRING_LITERAL(pCvcLexer ctx)
         }
 
 
-        // ../../../../../../src/parser/cvc/Cvc.g:2342:21: ( ESCAPE |~ ( '\"' | '\\\\' ) )*
+        // ../../../../src/parser/cvc/Cvc.g:2353:21: ( ESCAPE |~ ( '\"' | '\\\\' ) )*
 
         for (;;)
         {
@@ -9111,9 +9207,9 @@ void mSTRING_LITERAL(pCvcLexer ctx)
             switch (alt4)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2342:22: ESCAPE
+        	    // ../../../../src/parser/cvc/Cvc.g:2353:22: ESCAPE
         	    {
-        	        /* 2342:22: ESCAPE */
+        	        /* 2353:22: ESCAPE */
         	        mESCAPE(ctx );
         	        if  (HASEXCEPTION())
         	        {
@@ -9125,7 +9221,7 @@ void mSTRING_LITERAL(pCvcLexer ctx)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2342:31: ~ ( '\"' | '\\\\' )
+        	    // ../../../../src/parser/cvc/Cvc.g:2353:31: ~ ( '\"' | '\\\\' )
         	    {
         	        if ( ((LA(1) >= 0x0000) && (LA(1) <= '!')) || ((LA(1) >= '#') && (LA(1) <= '[')) || ((LA(1) >= ']') && (LA(1) <= 0xFFFF)) )
         	        {
@@ -9171,7 +9267,7 @@ void mSTRING_LITERAL(pCvcLexer ctx)
 }
 // $ANTLR end STRING_LITERAL
 
-//   Comes from: 2346:16: ( 'a' .. 'z' | 'A' .. 'Z' )
+//   Comes from: 2357:16: ( 'a' .. 'z' | 'A' .. 'Z' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start ALPHA
@@ -9189,8 +9285,8 @@ void mALPHA(pCvcLexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:2346:16: ( 'a' .. 'z' | 'A' .. 'Z' )
-    // ../../../../../../src/parser/cvc/Cvc.g:
+    // ../../../../src/parser/cvc/Cvc.g:2357:16: ( 'a' .. 'z' | 'A' .. 'Z' )
+    // ../../../../src/parser/cvc/Cvc.g:
     {
         if ( ((LA(1) >= 'A') && (LA(1) <= 'Z')) || ((LA(1) >= 'a') && (LA(1) <= 'z')) )
         {
@@ -9218,7 +9314,7 @@ void mALPHA(pCvcLexer ctx)
 }
 // $ANTLR end ALPHA
 
-//   Comes from: 2351:16: ( '0' .. '9' )
+//   Comes from: 2362:16: ( '0' .. '9' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DIGIT
@@ -9236,8 +9332,8 @@ void mDIGIT(pCvcLexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:2351:16: ( '0' .. '9' )
-    // ../../../../../../src/parser/cvc/Cvc.g:
+    // ../../../../src/parser/cvc/Cvc.g:2362:16: ( '0' .. '9' )
+    // ../../../../src/parser/cvc/Cvc.g:
     {
         if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
         {
@@ -9265,7 +9361,7 @@ void mDIGIT(pCvcLexer ctx)
 }
 // $ANTLR end DIGIT
 
-//   Comes from: 2365:3: ( ( DIGIT )+ ({...}? => '.' ( DIGIT )* |) | '.' ( '.' |) )
+//   Comes from: 2376:3: ( ( DIGIT )+ ({...}? => '.' ( DIGIT )* |) | '.' ( '.' |) )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start NUMBER_OR_RANGEOP
@@ -9286,7 +9382,7 @@ void mNUMBER_OR_RANGEOP(pCvcLexer ctx)
 
 
     {
-        //  ../../../../../../src/parser/cvc/Cvc.g:2365:3: ( ( DIGIT )+ ({...}? => '.' ( DIGIT )* |) | '.' ( '.' |) )
+        //  ../../../../src/parser/cvc/Cvc.g:2376:3: ( ( DIGIT )+ ({...}? => '.' ( DIGIT )* |) | '.' ( '.' |) )
 
         ANTLR3_UINT32 alt9;
 
@@ -9329,9 +9425,9 @@ void mNUMBER_OR_RANGEOP(pCvcLexer ctx)
         switch (alt9)
         {
     	case 1:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:2365:5: ( DIGIT )+ ({...}? => '.' ( DIGIT )* |)
+    	    // ../../../../src/parser/cvc/Cvc.g:2376:5: ( DIGIT )+ ({...}? => '.' ( DIGIT )* |)
     	    {
-    	        // ../../../../../../src/parser/cvc/Cvc.g:2365:5: ( DIGIT )+
+    	        // ../../../../src/parser/cvc/Cvc.g:2376:5: ( DIGIT )+
     	        {
     	            int cnt5=0;
 
@@ -9360,7 +9456,7 @@ void mNUMBER_OR_RANGEOP(pCvcLexer ctx)
     	        	switch (alt5)
     	        	{
     	        	    case 1:
-    	        	        // ../../../../../../src/parser/cvc/Cvc.g:
+    	        	        // ../../../../src/parser/cvc/Cvc.g:
     	        	        {
     	        	            if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
     	        	            {
@@ -9400,7 +9496,7 @@ void mNUMBER_OR_RANGEOP(pCvcLexer ctx)
     	            loop5: ;	/* Jump to here if this rule does not match */
     	        }
 
-    	        // ../../../../../../src/parser/cvc/Cvc.g:2366:5: ({...}? => '.' ( DIGIT )* |)
+    	        // ../../../../src/parser/cvc/Cvc.g:2377:5: ({...}? => '.' ( DIGIT )* |)
     	        {
     	            int alt7=2;
     	            {
@@ -9417,7 +9513,7 @@ void mNUMBER_OR_RANGEOP(pCvcLexer ctx)
     	            switch (alt7)
     	            {
     	        	case 1:
-    	        	    // ../../../../../../src/parser/cvc/Cvc.g:2367:7: {...}? => '.' ( DIGIT )*
+    	        	    // ../../../../src/parser/cvc/Cvc.g:2378:7: {...}? => '.' ( DIGIT )*
     	        	    {
     	        	        if ( !(( LA(2) != '.' )) )
     	        	        {
@@ -9436,7 +9532,7 @@ void mNUMBER_OR_RANGEOP(pCvcLexer ctx)
     	        	        }
 
 
-    	        	        // ../../../../../../src/parser/cvc/Cvc.g:2367:32: ( DIGIT )*
+    	        	        // ../../../../src/parser/cvc/Cvc.g:2378:32: ( DIGIT )*
 
     	        	        for (;;)
     	        	        {
@@ -9463,7 +9559,7 @@ void mNUMBER_OR_RANGEOP(pCvcLexer ctx)
     	        	            switch (alt6)
     	        	            {
     	        	        	case 1:
-    	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:
+    	        	        	    // ../../../../src/parser/cvc/Cvc.g:
     	        	        	    {
     	        	        	        if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
     	        	        	        {
@@ -9499,7 +9595,7 @@ void mNUMBER_OR_RANGEOP(pCvcLexer ctx)
     	        	    }
     	        	    break;
     	        	case 2:
-    	        	    // ../../../../../../src/parser/cvc/Cvc.g:2368:9: 
+    	        	    // ../../../../src/parser/cvc/Cvc.g:2379:9: 
     	        	    {
     	        	        {
     	        	             _type = INTEGER_LITERAL; 
@@ -9515,7 +9611,7 @@ void mNUMBER_OR_RANGEOP(pCvcLexer ctx)
     	    }
     	    break;
     	case 2:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:2370:5: '.' ( '.' |)
+    	    // ../../../../src/parser/cvc/Cvc.g:2381:5: '.' ( '.' |)
     	    {
     	        MATCHC('.');
     	        if  (HASEXCEPTION())
@@ -9524,7 +9620,7 @@ void mNUMBER_OR_RANGEOP(pCvcLexer ctx)
     	        }
 
 
-    	        // ../../../../../../src/parser/cvc/Cvc.g:2371:5: ( '.' |)
+    	        // ../../../../src/parser/cvc/Cvc.g:2382:5: ( '.' |)
     	        {
     	            int alt8=2;
     	            switch ( LA(1) )
@@ -9542,7 +9638,7 @@ void mNUMBER_OR_RANGEOP(pCvcLexer ctx)
     	            switch (alt8)
     	            {
     	        	case 1:
-    	        	    // ../../../../../../src/parser/cvc/Cvc.g:2371:7: '.'
+    	        	    // ../../../../src/parser/cvc/Cvc.g:2382:7: '.'
     	        	    {
     	        	        MATCHC('.');
     	        	        if  (HASEXCEPTION())
@@ -9559,7 +9655,7 @@ void mNUMBER_OR_RANGEOP(pCvcLexer ctx)
     	        	    }
     	        	    break;
     	        	case 2:
-    	        	    // ../../../../../../src/parser/cvc/Cvc.g:2372:7: 
+    	        	    // ../../../../src/parser/cvc/Cvc.g:2383:7: 
     	        	    {
     	        	        {
     	        	            _type = DOT; 
@@ -9586,7 +9682,7 @@ void mNUMBER_OR_RANGEOP(pCvcLexer ctx)
 }
 // $ANTLR end NUMBER_OR_RANGEOP
 
-//   Comes from: 2377:25: ()
+//   Comes from: 2388:25: ()
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start INTEGER_LITERAL
@@ -9604,8 +9700,8 @@ void mINTEGER_LITERAL(pCvcLexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:2377:25: ()
-    // ../../../../../../src/parser/cvc/Cvc.g:2377:26: 
+    // ../../../../src/parser/cvc/Cvc.g:2388:25: ()
+    // ../../../../src/parser/cvc/Cvc.g:2388:26: 
     {
     }
 
@@ -9618,7 +9714,7 @@ void mINTEGER_LITERAL(pCvcLexer ctx)
 }
 // $ANTLR end INTEGER_LITERAL
 
-//   Comes from: 2378:25: ()
+//   Comes from: 2389:25: ()
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DECIMAL_LITERAL
@@ -9636,8 +9732,8 @@ void mDECIMAL_LITERAL(pCvcLexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:2378:25: ()
-    // ../../../../../../src/parser/cvc/Cvc.g:2378:26: 
+    // ../../../../src/parser/cvc/Cvc.g:2389:25: ()
+    // ../../../../src/parser/cvc/Cvc.g:2389:26: 
     {
     }
 
@@ -9650,7 +9746,7 @@ void mDECIMAL_LITERAL(pCvcLexer ctx)
 }
 // $ANTLR end DECIMAL_LITERAL
 
-//   Comes from: 2379:13: ()
+//   Comes from: 2390:13: ()
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DOT
@@ -9668,8 +9764,8 @@ void mDOT(pCvcLexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:2379:13: ()
-    // ../../../../../../src/parser/cvc/Cvc.g:2379:14: 
+    // ../../../../src/parser/cvc/Cvc.g:2390:13: ()
+    // ../../../../src/parser/cvc/Cvc.g:2390:14: 
     {
     }
 
@@ -9682,7 +9778,7 @@ void mDOT(pCvcLexer ctx)
 }
 // $ANTLR end DOT
 
-//   Comes from: 2380:16: ()
+//   Comes from: 2391:16: ()
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DOTDOT
@@ -9700,8 +9796,8 @@ void mDOTDOT(pCvcLexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:2380:16: ()
-    // ../../../../../../src/parser/cvc/Cvc.g:2380:17: 
+    // ../../../../src/parser/cvc/Cvc.g:2391:16: ()
+    // ../../../../src/parser/cvc/Cvc.g:2391:17: 
     {
     }
 
@@ -9714,7 +9810,7 @@ void mDOTDOT(pCvcLexer ctx)
 }
 // $ANTLR end DOTDOT
 
-//   Comes from: 2388:20: ( DIGIT | 'a' .. 'f' | 'A' .. 'F' )
+//   Comes from: 2399:20: ( DIGIT | 'a' .. 'f' | 'A' .. 'F' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start HEX_DIGIT
@@ -9732,8 +9828,8 @@ void mHEX_DIGIT(pCvcLexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:2388:20: ( DIGIT | 'a' .. 'f' | 'A' .. 'F' )
-    // ../../../../../../src/parser/cvc/Cvc.g:
+    // ../../../../src/parser/cvc/Cvc.g:2399:20: ( DIGIT | 'a' .. 'f' | 'A' .. 'F' )
+    // ../../../../src/parser/cvc/Cvc.g:
     {
         if ( ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'A') && (LA(1) <= 'F')) || ((LA(1) >= 'a') && (LA(1) <= 'f')) )
         {
@@ -9761,7 +9857,7 @@ void mHEX_DIGIT(pCvcLexer ctx)
 }
 // $ANTLR end HEX_DIGIT
 
-//   Comes from: 2393:12: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
+//   Comes from: 2404:12: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start WHITESPACE
@@ -9781,10 +9877,10 @@ void mWHITESPACE(pCvcLexer ctx)
     _type	    = WHITESPACE;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:2393:12: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
-    // ../../../../../../src/parser/cvc/Cvc.g:2393:14: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
+    // ../../../../src/parser/cvc/Cvc.g:2404:12: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
+    // ../../../../src/parser/cvc/Cvc.g:2404:14: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:2393:14: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
+        // ../../../../src/parser/cvc/Cvc.g:2404:14: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
         {
             int cnt10=0;
 
@@ -9808,7 +9904,7 @@ void mWHITESPACE(pCvcLexer ctx)
         	switch (alt10)
         	{
         	    case 1:
-        	        // ../../../../../../src/parser/cvc/Cvc.g:
+        	        // ../../../../src/parser/cvc/Cvc.g:
         	        {
         	            if ( ((LA(1) >= '\t') && (LA(1) <= '\n')) || ((LA(1) >= '\f') && (LA(1) <= '\r')) || LA(1) == ' ' )
         	            {
@@ -9864,7 +9960,7 @@ void mWHITESPACE(pCvcLexer ctx)
 }
 // $ANTLR end WHITESPACE
 
-//   Comes from: 2398:9: ( '%' (~ ( '\\n' | '\\r' ) )* )
+//   Comes from: 2409:9: ( '%' (~ ( '\\n' | '\\r' ) )* )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start COMMENT
@@ -9884,8 +9980,8 @@ void mCOMMENT(pCvcLexer ctx)
     _type	    = COMMENT;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:2398:9: ( '%' (~ ( '\\n' | '\\r' ) )* )
-    // ../../../../../../src/parser/cvc/Cvc.g:2398:11: '%' (~ ( '\\n' | '\\r' ) )*
+    // ../../../../src/parser/cvc/Cvc.g:2409:9: ( '%' (~ ( '\\n' | '\\r' ) )* )
+    // ../../../../src/parser/cvc/Cvc.g:2409:11: '%' (~ ( '\\n' | '\\r' ) )*
     {
         MATCHC('%');
         if  (HASEXCEPTION())
@@ -9894,7 +9990,7 @@ void mCOMMENT(pCvcLexer ctx)
         }
 
 
-        // ../../../../../../src/parser/cvc/Cvc.g:2398:15: (~ ( '\\n' | '\\r' ) )*
+        // ../../../../src/parser/cvc/Cvc.g:2409:15: (~ ( '\\n' | '\\r' ) )*
 
         for (;;)
         {
@@ -9912,7 +10008,7 @@ void mCOMMENT(pCvcLexer ctx)
             switch (alt11)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:
+        	    // ../../../../src/parser/cvc/Cvc.g:
         	    {
         	        if ( ((LA(1) >= 0x0000) && (LA(1) <= '\t')) || ((LA(1) >= 0x000B) && (LA(1) <= '\f')) || ((LA(1) >= 0x000E) && (LA(1) <= 0xFFFF)) )
         	        {
@@ -9956,7 +10052,7 @@ void mCOMMENT(pCvcLexer ctx)
 }
 // $ANTLR end COMMENT
 
-//   Comes from: 2403:17: ( '\\\\' ( '\"' | '\\\\' | 'n' | 't' | 'r' ) )
+//   Comes from: 2414:17: ( '\\\\' ( '\"' | '\\\\' | 'n' | 't' | 'r' ) )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start ESCAPE
@@ -9974,8 +10070,8 @@ void mESCAPE(pCvcLexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/cvc/Cvc.g:2403:17: ( '\\\\' ( '\"' | '\\\\' | 'n' | 't' | 'r' ) )
-    // ../../../../../../src/parser/cvc/Cvc.g:2403:19: '\\\\' ( '\"' | '\\\\' | 'n' | 't' | 'r' )
+    // ../../../../src/parser/cvc/Cvc.g:2414:17: ( '\\\\' ( '\"' | '\\\\' | 'n' | 't' | 'r' ) )
+    // ../../../../src/parser/cvc/Cvc.g:2414:19: '\\\\' ( '\"' | '\\\\' | 'n' | 't' | 'r' )
     {
         MATCHC('\\');
         if  (HASEXCEPTION())
@@ -10017,11 +10113,11 @@ static void
 mTokens(pCvcLexer ctx)
 {
     {
-        //  ../../../../../../src/parser/cvc/Cvc.g:1:8: ( ABS_TOK | AND_TOK | ARITH_VAR_ORDER_TOK | ARRAY_TOK | ARROW_TOK | ASSERTIONS_TOK | ASSERT_TOK | ASSIGN_TOK | ASSUMPTIONS_TOK | BAR | BITVECTOR_TOK | BOOLEAN_TOK | BVAND_TOK | BVASHR_TOK | BVCOMP_TOK | BVGE_TOK | BVGT_TOK | BVLE_TOK | BVLSHR_TOK | BVLT_TOK | BVMULT_TOK | BVNAND_TOK | BVNEG_TOK | BVNOR_TOK | BVPLUS_TOK | BVREPEAT_TOK | BVROTL_TOK | BVROTR_TOK | BVSDIV_TOK | BVSGE_TOK | BVSGT_TOK | BVSHL_TOK | BVSLE_TOK | BVSLT_TOK | [...]
+        //  ../../../../src/parser/cvc/Cvc.g:1:8: ( ABS_TOK | AND_TOK | ARITH_VAR_ORDER_TOK | ARRAY_TOK | ARROW_TOK | ASSERTIONS_TOK | ASSERT_TOK | ASSIGN_TOK | ASSUMPTIONS_TOK | BAR | BITVECTOR_TOK | BOOLEAN_TOK | BVAND_TOK | BVASHR_TOK | BVCOMP_TOK | BVGE_TOK | BVGT_TOK | BVLE_TOK | BVLSHR_TOK | BVLT_TOK | BVMULT_TOK | BVNAND_TOK | BVNEG_TOK | BVNOR_TOK | BVPLUS_TOK | BVREPEAT_TOK | BVROTL_TOK | BVROTR_TOK | BVSDIV_TOK | BVSGE_TOK | BVSGT_TOK | BVSHL_TOK | BVSLE_TOK | BVSLT_TOK | BVSMO [...]
 
         ANTLR3_UINT32 alt12;
 
-        alt12=180;
+        alt12=182;
 
         switch ( LA(1) )
         {
@@ -10106,7 +10202,7 @@ mTokens(pCvcLexer ctx)
         						case 'z':
         						case '~':
         							{
-        								alt12=174;
+        								alt12=176;
         							}
         						    break;
 
@@ -10118,7 +10214,7 @@ mTokens(pCvcLexer ctx)
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -10200,7 +10296,7 @@ mTokens(pCvcLexer ctx)
         						case 'z':
         						case '~':
         							{
-        								alt12=174;
+        								alt12=176;
         							}
         						    break;
 
@@ -10212,7 +10308,7 @@ mTokens(pCvcLexer ctx)
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -10342,7 +10438,7 @@ mTokens(pCvcLexer ctx)
         																														case 'z':
         																														case '~':
         																															{
-        																																alt12=174;
+        																																alt12=176;
         																															}
         																														    break;
 
@@ -10354,84 +10450,84 @@ mTokens(pCvcLexer ctx)
         																												    break;
 
         																												default:
-        																												    alt12=174;
+        																												    alt12=176;
         																												}
 
         																											}
         																										    break;
 
         																										default:
-        																										    alt12=174;
+        																										    alt12=176;
         																										}
 
         																									}
         																								    break;
 
         																								default:
-        																								    alt12=174;
+        																								    alt12=176;
         																								}
 
         																							}
         																						    break;
 
         																						default:
-        																						    alt12=174;
+        																						    alt12=176;
         																						}
 
         																					}
         																				    break;
 
         																				default:
-        																				    alt12=174;
+        																				    alt12=176;
         																				}
 
         																			}
         																		    break;
 
         																		default:
-        																		    alt12=174;
+        																		    alt12=176;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -10517,7 +10613,7 @@ mTokens(pCvcLexer ctx)
         										case 'z':
         										case '~':
         											{
-        												alt12=174;
+        												alt12=176;
         											}
         										    break;
 
@@ -10529,21 +10625,21 @@ mTokens(pCvcLexer ctx)
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -10653,7 +10749,7 @@ mTokens(pCvcLexer ctx)
         																				case 'z':
         																				case '~':
         																					{
-        																						alt12=174;
+        																						alt12=176;
         																					}
         																				    break;
 
@@ -10665,21 +10761,21 @@ mTokens(pCvcLexer ctx)
         																		    break;
 
         																		default:
-        																		    alt12=174;
+        																		    alt12=176;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
@@ -10752,7 +10848,7 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
@@ -10764,14 +10860,14 @@ mTokens(pCvcLexer ctx)
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -10877,7 +10973,7 @@ mTokens(pCvcLexer ctx)
         																						case 'z':
         																						case '~':
         																							{
-        																								alt12=174;
+        																								alt12=176;
         																							}
         																						    break;
 
@@ -10889,70 +10985,70 @@ mTokens(pCvcLexer ctx)
         																				    break;
 
         																				default:
-        																				    alt12=174;
+        																				    alt12=176;
         																				}
 
         																			}
         																		    break;
 
         																		default:
-        																		    alt12=174;
+        																		    alt12=176;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
         		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=176;
         		}
 
         	}
@@ -10968,7 +11064,7 @@ mTokens(pCvcLexer ctx)
         		    break;
 
         		default:
-        		    alt12=110;
+        		    alt12=112;
         		}
 
         	}
@@ -11099,7 +11195,7 @@ mTokens(pCvcLexer ctx)
         																		case 'z':
         																		case '~':
         																			{
-        																				alt12=174;
+        																				alt12=176;
         																			}
         																		    break;
 
@@ -11111,49 +11207,49 @@ mTokens(pCvcLexer ctx)
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -11251,7 +11347,7 @@ mTokens(pCvcLexer ctx)
         														case 'z':
         														case '~':
         															{
-        																alt12=174;
+        																alt12=176;
         															}
         														    break;
 
@@ -11263,35 +11359,35 @@ mTokens(pCvcLexer ctx)
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -11385,7 +11481,7 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
@@ -11397,21 +11493,21 @@ mTokens(pCvcLexer ctx)
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -11501,7 +11597,7 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
@@ -11513,21 +11609,21 @@ mTokens(pCvcLexer ctx)
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -11609,7 +11705,7 @@ mTokens(pCvcLexer ctx)
         								case 'z':
         								case '~':
         									{
-        										alt12=174;
+        										alt12=176;
         									}
         								    break;
 
@@ -11692,7 +11788,7 @@ mTokens(pCvcLexer ctx)
         								case 'z':
         								case '~':
         									{
-        										alt12=174;
+        										alt12=176;
         									}
         								    break;
 
@@ -11704,7 +11800,7 @@ mTokens(pCvcLexer ctx)
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -11786,7 +11882,7 @@ mTokens(pCvcLexer ctx)
         								case 'z':
         								case '~':
         									{
-        										alt12=174;
+        										alt12=176;
         									}
         								    break;
 
@@ -11877,7 +11973,7 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
@@ -11889,14 +11985,14 @@ mTokens(pCvcLexer ctx)
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -11974,7 +12070,7 @@ mTokens(pCvcLexer ctx)
         								case 'z':
         								case '~':
         									{
-        										alt12=174;
+        										alt12=176;
         									}
         								    break;
 
@@ -11986,7 +12082,7 @@ mTokens(pCvcLexer ctx)
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -12076,7 +12172,7 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
@@ -12088,21 +12184,21 @@ mTokens(pCvcLexer ctx)
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -12192,7 +12288,7 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
@@ -12204,14 +12300,14 @@ mTokens(pCvcLexer ctx)
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -12293,7 +12389,7 @@ mTokens(pCvcLexer ctx)
         										case 'z':
         										case '~':
         											{
-        												alt12=174;
+        												alt12=176;
         											}
         										    break;
 
@@ -12305,14 +12401,14 @@ mTokens(pCvcLexer ctx)
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -12402,7 +12498,7 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
@@ -12414,21 +12510,21 @@ mTokens(pCvcLexer ctx)
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -12526,7 +12622,7 @@ mTokens(pCvcLexer ctx)
         																case 'z':
         																case '~':
         																	{
-        																		alt12=174;
+        																		alt12=176;
         																	}
         																    break;
 
@@ -12538,28 +12634,28 @@ mTokens(pCvcLexer ctx)
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -12645,7 +12741,7 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
@@ -12728,7 +12824,7 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
@@ -12740,21 +12836,21 @@ mTokens(pCvcLexer ctx)
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -12844,7 +12940,7 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
@@ -12856,14 +12952,14 @@ mTokens(pCvcLexer ctx)
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -12945,7 +13041,7 @@ mTokens(pCvcLexer ctx)
         										case 'z':
         										case '~':
         											{
-        												alt12=174;
+        												alt12=176;
         											}
         										    break;
 
@@ -13028,7 +13124,7 @@ mTokens(pCvcLexer ctx)
         										case 'z':
         										case '~':
         											{
-        												alt12=174;
+        												alt12=176;
         											}
         										    break;
 
@@ -13040,7 +13136,7 @@ mTokens(pCvcLexer ctx)
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -13122,7 +13218,7 @@ mTokens(pCvcLexer ctx)
         										case 'z':
         										case '~':
         											{
-        												alt12=174;
+        												alt12=176;
         											}
         										    break;
 
@@ -13134,7 +13230,7 @@ mTokens(pCvcLexer ctx)
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -13216,7 +13312,7 @@ mTokens(pCvcLexer ctx)
         										case 'z':
         										case '~':
         											{
-        												alt12=174;
+        												alt12=176;
         											}
         										    break;
 
@@ -13299,7 +13395,7 @@ mTokens(pCvcLexer ctx)
         										case 'z':
         										case '~':
         											{
-        												alt12=174;
+        												alt12=176;
         											}
         										    break;
 
@@ -13311,7 +13407,7 @@ mTokens(pCvcLexer ctx)
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -13397,7 +13493,7 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
@@ -13409,14 +13505,14 @@ mTokens(pCvcLexer ctx)
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -13502,7 +13598,7 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
@@ -13514,14 +13610,14 @@ mTokens(pCvcLexer ctx)
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -13603,7 +13699,7 @@ mTokens(pCvcLexer ctx)
         										case 'z':
         										case '~':
         											{
-        												alt12=174;
+        												alt12=176;
         											}
         										    break;
 
@@ -13615,14 +13711,14 @@ mTokens(pCvcLexer ctx)
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -13712,7 +13808,7 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
@@ -13724,14 +13820,14 @@ mTokens(pCvcLexer ctx)
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -13825,7 +13921,7 @@ mTokens(pCvcLexer ctx)
         																case 'z':
         																case '~':
         																	{
-        																		alt12=174;
+        																		alt12=176;
         																	}
         																    break;
 
@@ -13837,28 +13933,28 @@ mTokens(pCvcLexer ctx)
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -13944,7 +14040,7 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
@@ -13956,21 +14052,21 @@ mTokens(pCvcLexer ctx)
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -14060,7 +14156,7 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
@@ -14072,14 +14168,14 @@ mTokens(pCvcLexer ctx)
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -14161,7 +14257,7 @@ mTokens(pCvcLexer ctx)
         										case 'z':
         										case '~':
         											{
-        												alt12=174;
+        												alt12=176;
         											}
         										    break;
 
@@ -14173,14 +14269,14 @@ mTokens(pCvcLexer ctx)
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -14294,7 +14390,7 @@ mTokens(pCvcLexer ctx)
         																								case 'z':
         																								case '~':
         																									{
-        																										alt12=174;
+        																										alt12=176;
         																									}
         																								    break;
 
@@ -14306,77 +14402,77 @@ mTokens(pCvcLexer ctx)
         																						    break;
 
         																						default:
-        																						    alt12=174;
+        																						    alt12=176;
         																						}
 
         																					}
         																				    break;
 
         																				default:
-        																				    alt12=174;
+        																				    alt12=176;
         																				}
 
         																			}
         																		    break;
 
         																		default:
-        																		    alt12=174;
+        																		    alt12=176;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
         		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=176;
         		}
 
         	}
@@ -14476,7 +14572,7 @@ mTokens(pCvcLexer ctx)
         								case 'z':
         								case '~':
         									{
-        										alt12=174;
+        										alt12=176;
         									}
         								    break;
 
@@ -14488,7 +14584,7 @@ mTokens(pCvcLexer ctx)
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -14570,26 +14666,26 @@ mTokens(pCvcLexer ctx)
         								case 'z':
         								case '~':
         									{
-        										alt12=174;
+        										alt12=176;
         									}
         								    break;
 
         								default:
-        								    alt12=137;
+        								    alt12=139;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -14691,7 +14787,7 @@ mTokens(pCvcLexer ctx)
         																case 'z':
         																case '~':
         																	{
-        																		alt12=174;
+        																		alt12=176;
         																	}
         																    break;
 
@@ -14703,14 +14799,14 @@ mTokens(pCvcLexer ctx)
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
@@ -14804,7 +14900,7 @@ mTokens(pCvcLexer ctx)
         																				case 'z':
         																				case '~':
         																					{
-        																						alt12=174;
+        																						alt12=176;
         																					}
         																				    break;
 
@@ -14816,49 +14912,49 @@ mTokens(pCvcLexer ctx)
         																		    break;
 
         																		default:
-        																		    alt12=174;
+        																		    alt12=176;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -14948,40 +15044,40 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
         												default:
-        												    alt12=141;
+        												    alt12=143;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -15079,7 +15175,7 @@ mTokens(pCvcLexer ctx)
         														case 'z':
         														case '~':
         															{
-        																alt12=174;
+        																alt12=176;
         															}
         														    break;
 
@@ -15091,14 +15187,14 @@ mTokens(pCvcLexer ctx)
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
@@ -15188,7 +15284,7 @@ mTokens(pCvcLexer ctx)
         																case 'z':
         																case '~':
         																	{
-        																		alt12=174;
+        																		alt12=176;
         																	}
         																    break;
 
@@ -15200,21 +15296,21 @@ mTokens(pCvcLexer ctx)
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
@@ -15304,40 +15400,40 @@ mTokens(pCvcLexer ctx)
         																case 'z':
         																case '~':
         																	{
-        																		alt12=174;
+        																		alt12=176;
         																	}
         																    break;
 
         																default:
-        																    alt12=143;
+        																    alt12=145;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -15423,33 +15519,33 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
         												default:
-        												    alt12=142;
+        												    alt12=144;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -15571,7 +15667,7 @@ mTokens(pCvcLexer ctx)
         																												case 'z':
         																												case '~':
         																													{
-        																														alt12=174;
+        																														alt12=176;
         																													}
         																												    break;
 
@@ -15583,42 +15679,42 @@ mTokens(pCvcLexer ctx)
         																										    break;
 
         																										default:
-        																										    alt12=174;
+        																										    alt12=176;
         																										}
 
         																									}
         																								    break;
 
         																								default:
-        																								    alt12=174;
+        																								    alt12=176;
         																								}
 
         																							}
         																						    break;
 
         																						default:
-        																						    alt12=174;
+        																						    alt12=176;
         																						}
 
         																					}
         																				    break;
 
         																				default:
-        																				    alt12=174;
+        																				    alt12=176;
         																				}
 
         																			}
         																		    break;
 
         																		default:
-        																		    alt12=174;
+        																		    alt12=176;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
@@ -15712,7 +15808,7 @@ mTokens(pCvcLexer ctx)
         																								case 'z':
         																								case '~':
         																									{
-        																										alt12=174;
+        																										alt12=176;
         																									}
         																								    break;
 
@@ -15724,77 +15820,77 @@ mTokens(pCvcLexer ctx)
         																						    break;
 
         																						default:
-        																						    alt12=174;
+        																						    alt12=176;
         																						}
 
         																					}
         																				    break;
 
         																				default:
-        																				    alt12=174;
+        																				    alt12=176;
         																				}
 
         																			}
         																		    break;
 
         																		default:
-        																		    alt12=174;
+        																		    alt12=176;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
         		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=176;
         		}
 
         	}
@@ -15910,7 +16006,7 @@ mTokens(pCvcLexer ctx)
         																case 'z':
         																case '~':
         																	{
-        																		alt12=174;
+        																		alt12=176;
         																	}
         																    break;
 
@@ -15922,42 +16018,42 @@ mTokens(pCvcLexer ctx)
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -16039,7 +16135,7 @@ mTokens(pCvcLexer ctx)
         						case 'z':
         						case '~':
         							{
-        								alt12=174;
+        								alt12=176;
         							}
         						    break;
 
@@ -16051,7 +16147,7 @@ mTokens(pCvcLexer ctx)
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -16153,7 +16249,7 @@ mTokens(pCvcLexer ctx)
         																case 'z':
         																case '~':
         																	{
-        																		alt12=174;
+        																		alt12=176;
         																	}
         																    break;
 
@@ -16165,35 +16261,35 @@ mTokens(pCvcLexer ctx)
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -16295,7 +16391,7 @@ mTokens(pCvcLexer ctx)
         																		case 'z':
         																		case '~':
         																			{
-        																				alt12=174;
+        																				alt12=176;
         																			}
         																		    break;
 
@@ -16307,35 +16403,35 @@ mTokens(pCvcLexer ctx)
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -16408,19 +16504,19 @@ mTokens(pCvcLexer ctx)
         						case 'z':
         						case '~':
         							{
-        								alt12=174;
+        								alt12=176;
         							}
         						    break;
 
         						default:
-        						    alt12=96;
+        						    alt12=97;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -16554,7 +16650,7 @@ mTokens(pCvcLexer ctx)
         																																case 'z':
         																																case '~':
         																																	{
-        																																		alt12=174;
+        																																		alt12=176;
         																																	}
         																																    break;
 
@@ -16566,70 +16662,70 @@ mTokens(pCvcLexer ctx)
         																														    break;
 
         																														default:
-        																														    alt12=174;
+        																														    alt12=176;
         																														}
 
         																													}
         																												    break;
 
         																												default:
-        																												    alt12=174;
+        																												    alt12=176;
         																												}
 
         																											}
         																										    break;
 
         																										default:
-        																										    alt12=174;
+        																										    alt12=176;
         																										}
 
         																									}
         																								    break;
 
         																								default:
-        																								    alt12=174;
+        																								    alt12=176;
         																								}
 
         																							}
         																						    break;
 
         																						default:
-        																						    alt12=174;
+        																						    alt12=176;
         																						}
 
         																					}
         																				    break;
 
         																				default:
-        																				    alt12=174;
+        																				    alt12=176;
         																				}
 
         																			}
         																		    break;
 
         																		default:
-        																		    alt12=174;
+        																		    alt12=176;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
@@ -16755,7 +16851,7 @@ mTokens(pCvcLexer ctx)
         																																				case 'z':
         																																				case '~':
         																																					{
-        																																						alt12=174;
+        																																						alt12=176;
         																																					}
         																																				    break;
 
@@ -16767,35 +16863,35 @@ mTokens(pCvcLexer ctx)
         																																		    break;
 
         																																		default:
-        																																		    alt12=174;
+        																																		    alt12=176;
         																																		}
 
         																																	}
         																																    break;
 
         																																default:
-        																																    alt12=174;
+        																																    alt12=176;
         																																}
 
         																															}
         																														    break;
 
         																														default:
-        																														    alt12=174;
+        																														    alt12=176;
         																														}
 
         																													}
         																												    break;
 
         																												default:
-        																												    alt12=174;
+        																												    alt12=176;
         																												}
 
         																											}
         																										    break;
 
         																										default:
-        																										    alt12=174;
+        																										    alt12=176;
         																										}
 
         																									}
@@ -16868,7 +16964,7 @@ mTokens(pCvcLexer ctx)
         																								case 'z':
         																								case '~':
         																									{
-        																										alt12=174;
+        																										alt12=176;
         																									}
         																								    break;
 
@@ -16880,42 +16976,42 @@ mTokens(pCvcLexer ctx)
         																						    break;
 
         																						default:
-        																						    alt12=174;
+        																						    alt12=176;
         																						}
 
         																					}
         																				    break;
 
         																				default:
-        																				    alt12=174;
+        																				    alt12=176;
         																				}
 
         																			}
         																		    break;
 
         																		default:
-        																		    alt12=174;
+        																		    alt12=176;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
@@ -17009,7 +17105,7 @@ mTokens(pCvcLexer ctx)
         																				case 'z':
         																				case '~':
         																					{
-        																						alt12=174;
+        																						alt12=176;
         																					}
         																				    break;
 
@@ -17021,28 +17117,28 @@ mTokens(pCvcLexer ctx)
         																		    break;
 
         																		default:
-        																		    alt12=174;
+        																		    alt12=176;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
@@ -17128,7 +17224,7 @@ mTokens(pCvcLexer ctx)
         																case 'z':
         																case '~':
         																	{
-        																		alt12=174;
+        																		alt12=176;
         																	}
         																    break;
 
@@ -17140,14 +17236,14 @@ mTokens(pCvcLexer ctx)
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
@@ -17281,7 +17377,7 @@ mTokens(pCvcLexer ctx)
         																																								case 'z':
         																																								case '~':
         																																									{
-        																																										alt12=174;
+        																																										alt12=176;
         																																									}
         																																								    break;
 
@@ -17293,70 +17389,70 @@ mTokens(pCvcLexer ctx)
         																																						    break;
 
         																																						default:
-        																																						    alt12=174;
+        																																						    alt12=176;
         																																						}
 
         																																					}
         																																				    break;
 
         																																				default:
-        																																				    alt12=174;
+        																																				    alt12=176;
         																																				}
 
         																																			}
         																																		    break;
 
         																																		default:
-        																																		    alt12=174;
+        																																		    alt12=176;
         																																		}
 
         																																	}
         																																    break;
 
         																																default:
-        																																    alt12=174;
+        																																    alt12=176;
         																																}
 
         																															}
         																														    break;
 
         																														default:
-        																														    alt12=174;
+        																														    alt12=176;
         																														}
 
         																													}
         																												    break;
 
         																												default:
-        																												    alt12=174;
+        																												    alt12=176;
         																												}
 
         																											}
         																										    break;
 
         																										default:
-        																										    alt12=174;
+        																										    alt12=176;
         																										}
 
         																									}
         																								    break;
 
         																								default:
-        																								    alt12=174;
+        																								    alt12=176;
         																								}
 
         																							}
         																						    break;
 
         																						default:
-        																						    alt12=174;
+        																						    alt12=176;
         																						}
 
         																					}
         																				    break;
 
         																				default:
-        																				    alt12=174;
+        																				    alt12=176;
         																				}
 
         																			}
@@ -17450,7 +17546,7 @@ mTokens(pCvcLexer ctx)
         																												case 'z':
         																												case '~':
         																													{
-        																														alt12=174;
+        																														alt12=176;
         																													}
         																												    break;
 
@@ -17462,35 +17558,35 @@ mTokens(pCvcLexer ctx)
         																										    break;
 
         																										default:
-        																										    alt12=174;
+        																										    alt12=176;
         																										}
 
         																									}
         																								    break;
 
         																								default:
-        																								    alt12=174;
+        																								    alt12=176;
         																								}
 
         																							}
         																						    break;
 
         																						default:
-        																						    alt12=174;
+        																						    alt12=176;
         																						}
 
         																					}
         																				    break;
 
         																				default:
-        																				    alt12=174;
+        																				    alt12=176;
         																				}
 
         																			}
         																		    break;
 
         																		default:
-        																		    alt12=174;
+        																		    alt12=176;
         																		}
 
         																	}
@@ -17563,7 +17659,7 @@ mTokens(pCvcLexer ctx)
         																case 'z':
         																case '~':
         																	{
-        																		alt12=174;
+        																		alt12=176;
         																	}
         																    break;
 
@@ -17575,14 +17671,14 @@ mTokens(pCvcLexer ctx)
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
@@ -17696,7 +17792,7 @@ mTokens(pCvcLexer ctx)
         																														case 'z':
         																														case '~':
         																															{
-        																																alt12=174;
+        																																alt12=176;
         																															}
         																														    break;
 
@@ -17708,98 +17804,98 @@ mTokens(pCvcLexer ctx)
         																												    break;
 
         																												default:
-        																												    alt12=174;
+        																												    alt12=176;
         																												}
 
         																											}
         																										    break;
 
         																										default:
-        																										    alt12=174;
+        																										    alt12=176;
         																										}
 
         																									}
         																								    break;
 
         																								default:
-        																								    alt12=174;
+        																								    alt12=176;
         																								}
 
         																							}
         																						    break;
 
         																						default:
-        																						    alt12=174;
+        																						    alt12=176;
         																						}
 
         																					}
         																				    break;
 
         																				default:
-        																				    alt12=174;
+        																				    alt12=176;
         																				}
 
         																			}
         																		    break;
 
         																		default:
-        																		    alt12=174;
+        																		    alt12=176;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
         		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=176;
         		}
 
         	}
@@ -17905,7 +18001,7 @@ mTokens(pCvcLexer ctx)
         								case 'z':
         								case '~':
         									{
-        										alt12=174;
+        										alt12=176;
         									}
         								    break;
 
@@ -17917,14 +18013,14 @@ mTokens(pCvcLexer ctx)
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -18014,7 +18110,7 @@ mTokens(pCvcLexer ctx)
         										case 'z':
         										case '~':
         											{
-        												alt12=174;
+        												alt12=176;
         											}
         										    break;
 
@@ -18026,7 +18122,7 @@ mTokens(pCvcLexer ctx)
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -18104,7 +18200,7 @@ mTokens(pCvcLexer ctx)
         								case 'z':
         								case '~':
         									{
-        										alt12=174;
+        										alt12=176;
         									}
         								    break;
 
@@ -18116,14 +18212,14 @@ mTokens(pCvcLexer ctx)
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -18213,7 +18309,7 @@ mTokens(pCvcLexer ctx)
         										case 'z':
         										case '~':
         											{
-        												alt12=174;
+        												alt12=176;
         											}
         										    break;
 
@@ -18225,7 +18321,7 @@ mTokens(pCvcLexer ctx)
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -18298,7 +18394,7 @@ mTokens(pCvcLexer ctx)
         						case 'z':
         						case '~':
         							{
-        								alt12=174;
+        								alt12=176;
         							}
         						    break;
 
@@ -18310,7 +18406,7 @@ mTokens(pCvcLexer ctx)
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -18404,7 +18500,7 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
@@ -18416,14 +18512,14 @@ mTokens(pCvcLexer ctx)
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -18501,7 +18597,7 @@ mTokens(pCvcLexer ctx)
         								case 'z':
         								case '~':
         									{
-        										alt12=174;
+        										alt12=176;
         									}
         								    break;
 
@@ -18513,21 +18609,21 @@ mTokens(pCvcLexer ctx)
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
         		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=176;
         		}
 
         	}
@@ -18538,7 +18634,7 @@ mTokens(pCvcLexer ctx)
         		{
         		case '>':
         			{
-        				alt12=94;
+        				alt12=95;
         			}
         		    break;
 
@@ -18642,7 +18738,7 @@ mTokens(pCvcLexer ctx)
         										case 'z':
         										case '~':
         											{
-        												alt12=174;
+        												alt12=176;
         											}
         										    break;
 
@@ -18654,21 +18750,21 @@ mTokens(pCvcLexer ctx)
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -18758,7 +18854,7 @@ mTokens(pCvcLexer ctx)
         										case 'z':
         										case '~':
         											{
-        												alt12=174;
+        												alt12=176;
         											}
         										    break;
 
@@ -18770,21 +18866,21 @@ mTokens(pCvcLexer ctx)
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -18878,7 +18974,7 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
@@ -18890,14 +18986,14 @@ mTokens(pCvcLexer ctx)
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -18983,7 +19079,7 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
@@ -18995,35 +19091,35 @@ mTokens(pCvcLexer ctx)
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
         		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=176;
         		}
 
         	}
@@ -19129,7 +19225,7 @@ mTokens(pCvcLexer ctx)
         																case 'z':
         																case '~':
         																	{
-        																		alt12=174;
+        																		alt12=176;
         																	}
         																    break;
 
@@ -19141,42 +19237,42 @@ mTokens(pCvcLexer ctx)
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -19262,7 +19358,7 @@ mTokens(pCvcLexer ctx)
         								case 'z':
         								case '~':
         									{
-        										alt12=174;
+        										alt12=176;
         									}
         								    break;
 
@@ -19274,21 +19370,21 @@ mTokens(pCvcLexer ctx)
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
         		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=176;
         		}
 
         	}
@@ -19304,7 +19400,7 @@ mTokens(pCvcLexer ctx)
         		    break;
         		case '>':
         			{
-        				alt12=134;
+        				alt12=136;
         			}
         		    break;
 
@@ -19419,7 +19515,7 @@ mTokens(pCvcLexer ctx)
         																		case 'z':
         																		case '~':
         																			{
-        																				alt12=174;
+        																				alt12=176;
         																			}
         																		    break;
 
@@ -19431,28 +19527,28 @@ mTokens(pCvcLexer ctx)
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
@@ -19534,7 +19630,7 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
@@ -19546,7 +19642,7 @@ mTokens(pCvcLexer ctx)
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
@@ -19636,7 +19732,7 @@ mTokens(pCvcLexer ctx)
         																case 'z':
         																case '~':
         																	{
-        																		alt12=174;
+        																		alt12=176;
         																	}
         																    break;
 
@@ -19648,21 +19744,21 @@ mTokens(pCvcLexer ctx)
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
@@ -19756,7 +19852,7 @@ mTokens(pCvcLexer ctx)
         																		case 'z':
         																		case '~':
         																			{
-        																				alt12=174;
+        																				alt12=176;
         																			}
         																		    break;
 
@@ -19768,56 +19864,56 @@ mTokens(pCvcLexer ctx)
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
         		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=176;
         		}
 
         	}
@@ -19851,42 +19947,115 @@ mTokens(pCvcLexer ctx)
 
         	}
             break;
-        case '<':
+        case 'I':
         	{
         		switch ( LA(2) )
         		{
-        		case '=':
+        		case 'D':
         			{
         				switch ( LA(3) )
         				{
-        				case '>':
+        				case 'E':
         					{
-        						alt12=92;
+        						switch ( LA(4) )
+        						{
+        						case 'N':
+        							{
+        								switch ( LA(5) )
+        								{
+        								case '$':
+        								case '\'':
+        								case '0':
+        								case '1':
+        								case '2':
+        								case '3':
+        								case '4':
+        								case '5':
+        								case '6':
+        								case '7':
+        								case '8':
+        								case '9':
+        								case '?':
+        								case 'A':
+        								case 'B':
+        								case 'C':
+        								case 'D':
+        								case 'E':
+        								case 'F':
+        								case 'G':
+        								case 'H':
+        								case 'I':
+        								case 'J':
+        								case 'K':
+        								case 'L':
+        								case 'M':
+        								case 'N':
+        								case 'O':
+        								case 'P':
+        								case 'Q':
+        								case 'R':
+        								case 'S':
+        								case 'T':
+        								case 'U':
+        								case 'V':
+        								case 'W':
+        								case 'X':
+        								case 'Y':
+        								case 'Z':
+        								case '\\':
+        								case '_':
+        								case 'a':
+        								case 'b':
+        								case 'c':
+        								case 'd':
+        								case 'e':
+        								case 'f':
+        								case 'g':
+        								case 'h':
+        								case 'i':
+        								case 'j':
+        								case 'k':
+        								case 'l':
+        								case 'm':
+        								case 'n':
+        								case 'o':
+        								case 'p':
+        								case 'q':
+        								case 'r':
+        								case 's':
+        								case 't':
+        								case 'u':
+        								case 'v':
+        								case 'w':
+        								case 'x':
+        								case 'y':
+        								case 'z':
+        								case '~':
+        									{
+        										alt12=176;
+        									}
+        								    break;
+
+        								default:
+        								    alt12=92;
+        								}
+
+        							}
+        						    break;
+
+        						default:
+        						    alt12=176;
+        						}
+
         					}
         				    break;
 
         				default:
-        				    alt12=105;
+        				    alt12=176;
         				}
 
         			}
         		    break;
-        		case '<':
-        			{
-        				alt12=104;
-        			}
-        		    break;
-
-        		default:
-        		    alt12=108;
-        		}
-
-        	}
-            break;
-        case 'I':
-        	{
-        		switch ( LA(2) )
-        		{
         		case 'F':
         			{
         				switch ( LA(3) )
@@ -19960,12 +20129,12 @@ mTokens(pCvcLexer ctx)
         				case 'z':
         				case '~':
         					{
-        						alt12=174;
+        						alt12=176;
         					}
         				    break;
 
         				default:
-        				    alt12=93;
+        				    alt12=94;
         				}
 
         			}
@@ -20063,40 +20232,40 @@ mTokens(pCvcLexer ctx)
         														case 'z':
         														case '~':
         															{
-        																alt12=174;
+        																alt12=176;
         															}
         														    break;
 
         														default:
-        														    alt12=95;
+        														    alt12=96;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -20230,103 +20399,103 @@ mTokens(pCvcLexer ctx)
         																																		case 'z':
         																																		case '~':
         																																			{
-        																																				alt12=174;
+        																																				alt12=176;
         																																			}
         																																		    break;
 
         																																		default:
-        																																		    alt12=145;
+        																																		    alt12=147;
         																																		}
 
         																																	}
         																																    break;
 
         																																default:
-        																																    alt12=174;
+        																																    alt12=176;
         																																}
 
         																															}
         																														    break;
 
         																														default:
-        																														    alt12=174;
+        																														    alt12=176;
         																														}
 
         																													}
         																												    break;
 
         																												default:
-        																												    alt12=174;
+        																												    alt12=176;
         																												}
 
         																											}
         																										    break;
 
         																										default:
-        																										    alt12=174;
+        																										    alt12=176;
         																										}
 
         																									}
         																								    break;
 
         																								default:
-        																								    alt12=174;
+        																								    alt12=176;
         																								}
 
         																							}
         																						    break;
 
         																						default:
-        																						    alt12=174;
+        																						    alt12=176;
         																						}
 
         																					}
         																				    break;
 
         																				default:
-        																				    alt12=174;
+        																				    alt12=176;
         																				}
 
         																			}
         																		    break;
 
         																		default:
-        																		    alt12=174;
+        																		    alt12=176;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -20399,12 +20568,12 @@ mTokens(pCvcLexer ctx)
         						case 'z':
         						case '~':
         							{
-        								alt12=174;
+        								alt12=176;
         							}
         						    break;
 
         						default:
-        						    alt12=97;
+        						    alt12=98;
         						}
 
         					}
@@ -20498,40 +20667,40 @@ mTokens(pCvcLexer ctx)
         														case 'z':
         														case '~':
         															{
-        																alt12=174;
+        																alt12=176;
         															}
         														    break;
 
         														default:
-        														    alt12=144;
+        														    alt12=146;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -20602,12 +20771,12 @@ mTokens(pCvcLexer ctx)
         				case 'z':
         				case '~':
         					{
-        						alt12=174;
+        						alt12=176;
         					}
         				    break;
 
         				default:
-        				    alt12=98;
+        				    alt12=99;
         				}
 
         			}
@@ -20717,40 +20886,40 @@ mTokens(pCvcLexer ctx)
         																				case 'z':
         																				case '~':
         																					{
-        																						alt12=174;
+        																						alt12=176;
         																					}
         																				    break;
 
         																				default:
-        																				    alt12=99;
+        																				    alt12=100;
         																				}
 
         																			}
         																		    break;
 
         																		default:
-        																		    alt12=174;
+        																		    alt12=176;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
@@ -20823,40 +20992,72 @@ mTokens(pCvcLexer ctx)
         										case 'z':
         										case '~':
         											{
-        												alt12=174;
+        												alt12=176;
         											}
         										    break;
 
         										default:
-        										    alt12=109;
+        										    alt12=111;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
+        				}
+
+        			}
+        		    break;
+
+        		default:
+        		    alt12=176;
+        		}
+
+        	}
+            break;
+        case '<':
+        	{
+        		switch ( LA(2) )
+        		{
+        		case '=':
+        			{
+        				switch ( LA(3) )
+        				{
+        				case '>':
+        					{
+        						alt12=93;
+        					}
+        				    break;
+
+        				default:
+        				    alt12=107;
         				}
 
         			}
         		    break;
+        		case '<':
+        			{
+        				alt12=106;
+        			}
+        		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=110;
         		}
 
         	}
@@ -20877,6 +21078,144 @@ mTokens(pCvcLexer ctx)
         							{
         								switch ( LA(5) )
         								{
+        								case '_':
+        									{
+        										switch ( LA(6) )
+        										{
+        										case 'I':
+        											{
+        												switch ( LA(7) )
+        												{
+        												case 'M':
+        													{
+        														switch ( LA(8) )
+        														{
+        														case 'A':
+        															{
+        																switch ( LA(9) )
+        																{
+        																case 'G':
+        																	{
+        																		switch ( LA(10) )
+        																		{
+        																		case 'E':
+        																			{
+        																				switch ( LA(11) )
+        																				{
+        																				case '$':
+        																				case '\'':
+        																				case '0':
+        																				case '1':
+        																				case '2':
+        																				case '3':
+        																				case '4':
+        																				case '5':
+        																				case '6':
+        																				case '7':
+        																				case '8':
+        																				case '9':
+        																				case '?':
+        																				case 'A':
+        																				case 'B':
+        																				case 'C':
+        																				case 'D':
+        																				case 'E':
+        																				case 'F':
+        																				case 'G':
+        																				case 'H':
+        																				case 'I':
+        																				case 'J':
+        																				case 'K':
+        																				case 'L':
+        																				case 'M':
+        																				case 'N':
+        																				case 'O':
+        																				case 'P':
+        																				case 'Q':
+        																				case 'R':
+        																				case 'S':
+        																				case 'T':
+        																				case 'U':
+        																				case 'V':
+        																				case 'W':
+        																				case 'X':
+        																				case 'Y':
+        																				case 'Z':
+        																				case '\\':
+        																				case '_':
+        																				case 'a':
+        																				case 'b':
+        																				case 'c':
+        																				case 'd':
+        																				case 'e':
+        																				case 'f':
+        																				case 'g':
+        																				case 'h':
+        																				case 'i':
+        																				case 'j':
+        																				case 'k':
+        																				case 'l':
+        																				case 'm':
+        																				case 'n':
+        																				case 'o':
+        																				case 'p':
+        																				case 'q':
+        																				case 'r':
+        																				case 's':
+        																				case 't':
+        																				case 'u':
+        																				case 'v':
+        																				case 'w':
+        																				case 'x':
+        																				case 'y':
+        																				case 'z':
+        																				case '~':
+        																					{
+        																						alt12=176;
+        																					}
+        																				    break;
+
+        																				default:
+        																				    alt12=101;
+        																				}
+
+        																			}
+        																		    break;
+
+        																		default:
+        																		    alt12=176;
+        																		}
+
+        																	}
+        																    break;
+
+        																default:
+        																    alt12=176;
+        																}
+
+        															}
+        														    break;
+
+        														default:
+        														    alt12=176;
+        														}
+
+        													}
+        												    break;
+
+        												default:
+        												    alt12=176;
+        												}
+
+        											}
+        										    break;
+
+        										default:
+        										    alt12=176;
+        										}
+
+        									}
+        								    break;
         								case '$':
         								case '\'':
         								case '0':
@@ -20917,7 +21256,6 @@ mTokens(pCvcLexer ctx)
         								case 'Y':
         								case 'Z':
         								case '\\':
-        								case '_':
         								case 'a':
         								case 'b':
         								case 'c':
@@ -20946,33 +21284,33 @@ mTokens(pCvcLexer ctx)
         								case 'z':
         								case '~':
         									{
-        										alt12=174;
+        										alt12=176;
         									}
         								    break;
 
         								default:
-        								    alt12=100;
+        								    alt12=102;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
         		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=176;
         		}
 
         	}
@@ -21070,40 +21408,40 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
         												default:
-        												    alt12=101;
+        												    alt12=103;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -21185,12 +21523,12 @@ mTokens(pCvcLexer ctx)
         						case 'z':
         						case '~':
         							{
-        								alt12=174;
+        								alt12=176;
         							}
         						    break;
 
         						default:
-        						    alt12=106;
+        						    alt12=108;
         						}
 
         					}
@@ -21280,54 +21618,54 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
         												default:
-        												    alt12=146;
+        												    alt12=148;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
         		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=176;
         		}
 
         	}
             break;
         case '{':
         	{
-        		alt12=102;
+        		alt12=104;
         	}
             break;
         case '[':
@@ -21336,12 +21674,12 @@ mTokens(pCvcLexer ctx)
         		{
         		case '#':
         			{
-        				alt12=139;
+        				alt12=141;
         			}
         		    break;
 
         		default:
-        		    alt12=103;
+        		    alt12=105;
         		}
 
         	}
@@ -21352,12 +21690,12 @@ mTokens(pCvcLexer ctx)
         		{
         		case '#':
         			{
-        				alt12=116;
+        				alt12=118;
         			}
         		    break;
 
         		default:
-        		    alt12=107;
+        		    alt12=109;
         		}
 
         	}
@@ -21443,26 +21781,26 @@ mTokens(pCvcLexer ctx)
         						case 'z':
         						case '~':
         							{
-        								alt12=174;
+        								alt12=176;
         							}
         						    break;
 
         						default:
-        						    alt12=111;
+        						    alt12=113;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
         		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=176;
         		}
 
         	}
@@ -21548,26 +21886,26 @@ mTokens(pCvcLexer ctx)
         						case 'z':
         						case '~':
         							{
-        								alt12=174;
+        								alt12=176;
         							}
         						    break;
 
         						default:
-        						    alt12=112;
+        						    alt12=114;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
         		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=176;
         		}
 
         	}
@@ -21649,12 +21987,12 @@ mTokens(pCvcLexer ctx)
         				case 'z':
         				case '~':
         					{
-        						alt12=174;
+        						alt12=176;
         					}
         				    break;
 
         				default:
-        				    alt12=113;
+        				    alt12=115;
         				}
 
         			}
@@ -21748,40 +22086,40 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
         												default:
-        												    alt12=114;
+        												    alt12=116;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -21859,19 +22197,19 @@ mTokens(pCvcLexer ctx)
         				case 'z':
         				case '~':
         					{
-        						alt12=174;
+        						alt12=176;
         					}
         				    break;
 
         				default:
-        				    alt12=115;
+        				    alt12=117;
         				}
 
         			}
         		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=176;
         		}
 
         	}
@@ -21973,47 +22311,47 @@ mTokens(pCvcLexer ctx)
         														case 'z':
         														case '~':
         															{
-        																alt12=174;
+        																alt12=176;
         															}
         														    break;
 
         														default:
-        														    alt12=117;
+        														    alt12=119;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -22127,47 +22465,47 @@ mTokens(pCvcLexer ctx)
         																						case 'z':
         																						case '~':
         																							{
-        																								alt12=174;
+        																								alt12=176;
         																							}
         																						    break;
 
         																						default:
-        																						    alt12=119;
+        																						    alt12=121;
         																						}
 
         																					}
         																				    break;
 
         																				default:
-        																				    alt12=174;
+        																				    alt12=176;
         																				}
 
         																			}
         																		    break;
 
         																		default:
-        																		    alt12=174;
+        																		    alt12=176;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
@@ -22240,19 +22578,19 @@ mTokens(pCvcLexer ctx)
         										case 'z':
         										case '~':
         											{
-        												alt12=174;
+        												alt12=176;
         											}
         										    break;
 
         										default:
-        										    alt12=120;
+        										    alt12=122;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -22350,47 +22688,47 @@ mTokens(pCvcLexer ctx)
         																		case 'z':
         																		case '~':
         																			{
-        																				alt12=174;
+        																				alt12=176;
         																			}
         																		    break;
 
         																		default:
-        																		    alt12=121;
+        																		    alt12=123;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -22462,19 +22800,19 @@ mTokens(pCvcLexer ctx)
         						case 'z':
         						case '~':
         							{
-        								alt12=174;
+        								alt12=176;
         							}
         						    break;
 
         						default:
-        						    alt12=122;
+        						    alt12=124;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -22584,40 +22922,40 @@ mTokens(pCvcLexer ctx)
         																				case 'z':
         																				case '~':
         																					{
-        																						alt12=174;
+        																						alt12=176;
         																					}
         																				    break;
 
         																				default:
-        																				    alt12=124;
+        																				    alt12=126;
         																				}
 
         																			}
         																		    break;
 
         																		default:
-        																		    alt12=174;
+        																		    alt12=176;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
@@ -22690,26 +23028,26 @@ mTokens(pCvcLexer ctx)
         										case 'z':
         										case '~':
         											{
-        												alt12=174;
+        												alt12=176;
         											}
         										    break;
 
         										default:
-        										    alt12=123;
+        										    alt12=125;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -22803,40 +23141,40 @@ mTokens(pCvcLexer ctx)
         														case 'z':
         														case '~':
         															{
-        																alt12=174;
+        																alt12=176;
         															}
         														    break;
 
         														default:
-        														    alt12=125;
+        														    alt12=127;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -22934,54 +23272,54 @@ mTokens(pCvcLexer ctx)
         																case 'z':
         																case '~':
         																	{
-        																		alt12=174;
+        																		alt12=176;
         																	}
         																    break;
 
         																default:
-        																    alt12=147;
+        																    alt12=149;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -23091,47 +23429,47 @@ mTokens(pCvcLexer ctx)
         																				case 'z':
         																				case '~':
         																					{
-        																						alt12=174;
+        																						alt12=176;
         																					}
         																				    break;
 
         																				default:
-        																				    alt12=126;
+        																				    alt12=128;
         																				}
 
         																			}
         																		    break;
 
         																		default:
-        																		    alt12=174;
+        																		    alt12=176;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
@@ -23204,40 +23542,40 @@ mTokens(pCvcLexer ctx)
         								case 'z':
         								case '~':
         									{
-        										alt12=174;
+        										alt12=176;
         									}
         								    break;
 
         								default:
-        								    alt12=127;
+        								    alt12=129;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
         		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=176;
         		}
 
         	}
             break;
         case '+':
         	{
-        		alt12=118;
+        		alt12=120;
         	}
             break;
         case 'Q':
@@ -23329,52 +23667,52 @@ mTokens(pCvcLexer ctx)
         										case 'z':
         										case '~':
         											{
-        												alt12=174;
+        												alt12=176;
         											}
         										    break;
 
         										default:
-        										    alt12=128;
+        										    alt12=130;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
         		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=176;
         		}
 
         	}
             break;
         case '}':
         	{
-        		alt12=129;
+        		alt12=131;
         	}
             break;
         case ']':
         	{
-        		alt12=130;
+        		alt12=132;
         	}
             break;
         case 'R':
@@ -23462,19 +23800,19 @@ mTokens(pCvcLexer ctx)
         								case 'z':
         								case '~':
         									{
-        										alt12=174;
+        										alt12=176;
         									}
         								    break;
 
         								default:
-        								    alt12=131;
+        								    alt12=133;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -23560,19 +23898,19 @@ mTokens(pCvcLexer ctx)
         										case 'z':
         										case '~':
         											{
-        												alt12=174;
+        												alt12=176;
         											}
         										    break;
 
         										default:
-        										    alt12=132;
+        										    alt12=134;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -23662,40 +24000,40 @@ mTokens(pCvcLexer ctx)
         														case 'z':
         														case '~':
         															{
-        																alt12=174;
+        																alt12=176;
         															}
         														    break;
 
         														default:
-        														    alt12=133;
+        														    alt12=135;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -23789,66 +24127,66 @@ mTokens(pCvcLexer ctx)
         														case 'z':
         														case '~':
         															{
-        																alt12=174;
+        																alt12=176;
         															}
         														    break;
 
         														default:
-        														    alt12=148;
+        														    alt12=150;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
         		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=176;
         		}
 
         	}
             break;
         case ')':
         	{
-        		alt12=135;
+        		alt12=137;
         	}
             break;
         case ';':
         	{
-        		alt12=136;
+        		alt12=138;
         	}
             break;
         case 'S':
@@ -23932,19 +24270,19 @@ mTokens(pCvcLexer ctx)
         						case 'z':
         						case '~':
         							{
-        								alt12=174;
+        								alt12=176;
         							}
         						    break;
 
         						default:
-        						    alt12=138;
+        						    alt12=140;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -24082,54 +24420,54 @@ mTokens(pCvcLexer ctx)
         																																		case 'z':
         																																		case '~':
         																																			{
-        																																				alt12=174;
+        																																				alt12=176;
         																																			}
         																																		    break;
 
         																																		default:
-        																																		    alt12=149;
+        																																		    alt12=151;
         																																		}
 
         																																	}
         																																    break;
 
         																																default:
-        																																    alt12=174;
+        																																    alt12=176;
         																																}
 
         																															}
         																														    break;
 
         																														default:
-        																														    alt12=174;
+        																														    alt12=176;
         																														}
 
         																													}
         																												    break;
 
         																												default:
-        																												    alt12=174;
+        																												    alt12=176;
         																												}
 
         																											}
         																										    break;
 
         																										default:
-        																										    alt12=174;
+        																										    alt12=176;
         																										}
 
         																									}
         																								    break;
 
         																								default:
-        																								    alt12=174;
+        																								    alt12=176;
         																								}
 
         																							}
         																						    break;
 
         																						default:
-        																						    alt12=174;
+        																						    alt12=176;
         																						}
 
         																					}
@@ -24227,19 +24565,19 @@ mTokens(pCvcLexer ctx)
         																																case 'z':
         																																case '~':
         																																	{
-        																																		alt12=174;
+        																																		alt12=176;
         																																	}
         																																    break;
 
         																																default:
-        																																    alt12=150;
+        																																    alt12=152;
         																																}
 
         																															}
         																														    break;
 
         																														default:
-        																														    alt12=174;
+        																														    alt12=176;
         																														}
 
         																													}
@@ -24321,75 +24659,75 @@ mTokens(pCvcLexer ctx)
         																																case 'z':
         																																case '~':
         																																	{
-        																																		alt12=174;
+        																																		alt12=176;
         																																	}
         																																    break;
 
         																																default:
-        																																    alt12=151;
+        																																    alt12=153;
         																																}
 
         																															}
         																														    break;
 
         																														default:
-        																														    alt12=174;
+        																														    alt12=176;
         																														}
 
         																													}
         																												    break;
 
         																												default:
-        																												    alt12=174;
+        																												    alt12=176;
         																												}
 
         																											}
         																										    break;
 
         																										default:
-        																										    alt12=174;
+        																										    alt12=176;
         																										}
 
         																									}
         																								    break;
 
         																								default:
-        																								    alt12=174;
+        																								    alt12=176;
         																								}
 
         																							}
         																						    break;
 
         																						default:
-        																						    alt12=174;
+        																						    alt12=176;
         																						}
 
         																					}
         																				    break;
 
         																				default:
-        																				    alt12=174;
+        																				    alt12=176;
         																				}
 
         																			}
         																		    break;
 
         																		default:
-        																		    alt12=174;
+        																		    alt12=176;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
@@ -24462,40 +24800,40 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
         												default:
-        												    alt12=154;
+        												    alt12=156;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -24589,12 +24927,12 @@ mTokens(pCvcLexer ctx)
         												case 'z':
         												case '~':
         													{
-        														alt12=174;
+        														alt12=176;
         													}
         												    break;
 
         												default:
-        												    alt12=152;
+        												    alt12=154;
         												}
 
         											}
@@ -24688,54 +25026,54 @@ mTokens(pCvcLexer ctx)
         																				case 'z':
         																				case '~':
         																					{
-        																						alt12=174;
+        																						alt12=176;
         																					}
         																				    break;
 
         																				default:
-        																				    alt12=157;
+        																				    alt12=159;
         																				}
 
         																			}
         																		    break;
 
         																		default:
-        																		    alt12=174;
+        																		    alt12=176;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -24825,40 +25163,40 @@ mTokens(pCvcLexer ctx)
         														case 'z':
         														case '~':
         															{
-        																alt12=174;
+        																alt12=176;
         															}
         														    break;
 
         														default:
-        														    alt12=158;
+        														    alt12=160;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -24956,54 +25294,54 @@ mTokens(pCvcLexer ctx)
         																case 'z':
         																case '~':
         																	{
-        																		alt12=174;
+        																		alt12=176;
         																	}
         																    break;
 
         																default:
-        																    alt12=153;
+        																    alt12=155;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -25081,26 +25419,26 @@ mTokens(pCvcLexer ctx)
         				case 'z':
         				case '~':
         					{
-        						alt12=174;
+        						alt12=176;
         					}
         				    break;
 
         				default:
-        				    alt12=159;
+        				    alt12=161;
         				}
 
         			}
         		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=176;
         		}
 
         	}
             break;
         case '*':
         	{
-        		alt12=140;
+        		alt12=142;
         	}
             break;
         case 'U':
@@ -25236,89 +25574,89 @@ mTokens(pCvcLexer ctx)
         																																case 'z':
         																																case '~':
         																																	{
-        																																		alt12=174;
+        																																		alt12=176;
         																																	}
         																																    break;
 
         																																default:
-        																																    alt12=155;
+        																																    alt12=157;
         																																}
 
         																															}
         																														    break;
 
         																														default:
-        																														    alt12=174;
+        																														    alt12=176;
         																														}
 
         																													}
         																												    break;
 
         																												default:
-        																												    alt12=174;
+        																												    alt12=176;
         																												}
 
         																											}
         																										    break;
 
         																										default:
-        																										    alt12=174;
+        																										    alt12=176;
         																										}
 
         																									}
         																								    break;
 
         																								default:
-        																								    alt12=174;
+        																								    alt12=176;
         																								}
 
         																							}
         																						    break;
 
         																						default:
-        																						    alt12=174;
+        																						    alt12=176;
         																						}
 
         																					}
         																				    break;
 
         																				default:
-        																				    alt12=174;
+        																				    alt12=176;
         																				}
 
         																			}
         																		    break;
 
         																		default:
-        																		    alt12=174;
+        																		    alt12=176;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
@@ -25440,110 +25778,110 @@ mTokens(pCvcLexer ctx)
         																																case 'z':
         																																case '~':
         																																	{
-        																																		alt12=174;
+        																																		alt12=176;
         																																	}
         																																    break;
 
         																																default:
-        																																    alt12=156;
+        																																    alt12=158;
         																																}
 
         																															}
         																														    break;
 
         																														default:
-        																														    alt12=174;
+        																														    alt12=176;
         																														}
 
         																													}
         																												    break;
 
         																												default:
-        																												    alt12=174;
+        																												    alt12=176;
         																												}
 
         																											}
         																										    break;
 
         																										default:
-        																										    alt12=174;
+        																										    alt12=176;
         																										}
 
         																									}
         																								    break;
 
         																								default:
-        																								    alt12=174;
+        																								    alt12=176;
         																								}
 
         																							}
         																						    break;
 
         																						default:
-        																						    alt12=174;
+        																						    alt12=176;
         																						}
 
         																					}
         																				    break;
 
         																				default:
-        																				    alt12=174;
+        																				    alt12=176;
         																				}
 
         																			}
         																		    break;
 
         																		default:
-        																		    alt12=174;
+        																		    alt12=176;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -25645,47 +25983,47 @@ mTokens(pCvcLexer ctx)
         																case 'z':
         																case '~':
         																	{
-        																		alt12=174;
+        																		alt12=176;
         																	}
         																    break;
 
         																default:
-        																    alt12=169;
+        																    alt12=171;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -25779,54 +26117,54 @@ mTokens(pCvcLexer ctx)
         														case 'z':
         														case '~':
         															{
-        																alt12=174;
+        																alt12=176;
         															}
         														    break;
 
         														default:
-        														    alt12=170;
+        														    alt12=172;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
         		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=176;
         		}
 
         	}
@@ -25916,26 +26254,26 @@ mTokens(pCvcLexer ctx)
         								case 'z':
         								case '~':
         									{
-        										alt12=174;
+        										alt12=176;
         									}
         								    break;
 
         								default:
-        								    alt12=160;
+        								    alt12=162;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -26025,19 +26363,19 @@ mTokens(pCvcLexer ctx)
         										case 'z':
         										case '~':
         											{
-        												alt12=174;
+        												alt12=176;
         											}
         										    break;
 
         										default:
-        										    alt12=161;
+        										    alt12=163;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
@@ -26135,33 +26473,33 @@ mTokens(pCvcLexer ctx)
         																		case 'z':
         																		case '~':
         																			{
-        																				alt12=174;
+        																				alt12=176;
         																			}
         																		    break;
 
         																		default:
-        																		    alt12=163;
+        																		    alt12=165;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
@@ -26251,54 +26589,54 @@ mTokens(pCvcLexer ctx)
         																		case 'z':
         																		case '~':
         																			{
-        																				alt12=174;
+        																				alt12=176;
         																			}
         																		    break;
 
         																		default:
-        																		    alt12=164;
+        																		    alt12=166;
         																		}
 
         																	}
         																    break;
 
         																default:
-        																    alt12=174;
+        																    alt12=176;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
@@ -26380,26 +26718,26 @@ mTokens(pCvcLexer ctx)
         								case 'z':
         								case '~':
         									{
-        										alt12=174;
+        										alt12=176;
         									}
         								    break;
 
         								default:
-        								    alt12=165;
+        								    alt12=167;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -26501,54 +26839,54 @@ mTokens(pCvcLexer ctx)
         																case 'z':
         																case '~':
         																	{
-        																		alt12=174;
+        																		alt12=176;
         																	}
         																    break;
 
         																default:
-        																    alt12=162;
+        																    alt12=164;
         																}
 
         															}
         														    break;
 
         														default:
-        														    alt12=174;
+        														    alt12=176;
         														}
 
         													}
         												    break;
 
         												default:
-        												    alt12=174;
+        												    alt12=176;
         												}
 
         											}
         										    break;
 
         										default:
-        										    alt12=174;
+        										    alt12=176;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -26638,33 +26976,33 @@ mTokens(pCvcLexer ctx)
         										case 'z':
         										case '~':
         											{
-        												alt12=174;
+        												alt12=176;
         											}
         										    break;
 
         										default:
-        										    alt12=166;
+        										    alt12=168;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -26750,33 +27088,33 @@ mTokens(pCvcLexer ctx)
         								case 'z':
         								case '~':
         									{
-        										alt12=174;
+        										alt12=176;
         									}
         								    break;
 
         								default:
-        								    alt12=167;
+        								    alt12=169;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
         		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=176;
         		}
 
         	}
@@ -26854,12 +27192,12 @@ mTokens(pCvcLexer ctx)
         		case 'z':
         		case '~':
         			{
-        				alt12=174;
+        				alt12=176;
         			}
         		    break;
 
         		default:
-        		    alt12=168;
+        		    alt12=170;
         		}
 
         	}
@@ -26953,33 +27291,33 @@ mTokens(pCvcLexer ctx)
         										case 'z':
         										case '~':
         											{
-        												alt12=174;
+        												alt12=176;
         											}
         										    break;
 
         										default:
-        										    alt12=171;
+        										    alt12=173;
         										}
 
         									}
         								    break;
 
         								default:
-        								    alt12=174;
+        								    alt12=176;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
@@ -27065,33 +27403,33 @@ mTokens(pCvcLexer ctx)
         								case 'z':
         								case '~':
         									{
-        										alt12=174;
+        										alt12=176;
         									}
         								    break;
 
         								default:
-        								    alt12=172;
+        								    alt12=174;
         								}
 
         							}
         						    break;
 
         						default:
-        						    alt12=174;
+        						    alt12=176;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
         		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=176;
         		}
 
         	}
@@ -27177,26 +27515,26 @@ mTokens(pCvcLexer ctx)
         						case 'z':
         						case '~':
         							{
-        								alt12=174;
+        								alt12=176;
         							}
         						    break;
 
         						default:
-        						    alt12=173;
+        						    alt12=175;
         						}
 
         					}
         				    break;
 
         				default:
-        				    alt12=174;
+        				    alt12=176;
         				}
 
         			}
         		    break;
 
         		default:
-        		    alt12=174;
+        		    alt12=176;
         		}
 
         	}
@@ -27232,7 +27570,7 @@ mTokens(pCvcLexer ctx)
         case 'y':
         case 'z':
         	{
-        		alt12=174;
+        		alt12=176;
         	}
             break;
         case '0':
@@ -27241,24 +27579,24 @@ mTokens(pCvcLexer ctx)
         		{
         		case 'h':
         			{
-        				alt12=175;
+        				alt12=177;
         			}
         		    break;
         		case 'b':
         			{
-        				alt12=176;
+        				alt12=178;
         			}
         		    break;
 
         		default:
-        		    alt12=178;
+        		    alt12=180;
         		}
 
         	}
             break;
         case '"':
         	{
-        		alt12=177;
+        		alt12=179;
         	}
             break;
         case '.':
@@ -27272,7 +27610,7 @@ mTokens(pCvcLexer ctx)
         case '8':
         case '9':
         	{
-        		alt12=178;
+        		alt12=180;
         	}
             break;
         case '\t':
@@ -27281,12 +27619,12 @@ mTokens(pCvcLexer ctx)
         case '\r':
         case ' ':
         	{
-        		alt12=179;
+        		alt12=181;
         	}
             break;
         case '%':
         	{
-        		alt12=180;
+        		alt12=182;
         	}
             break;
 
@@ -27305,7 +27643,7 @@ mTokens(pCvcLexer ctx)
         switch (alt12)
         {
     	case 1:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:10: ABS_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:10: ABS_TOK
     	    {
     	        /* 1:10: ABS_TOK */
     	        mABS_TOK(ctx );
@@ -27319,7 +27657,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 2:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:18: AND_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:18: AND_TOK
     	    {
     	        /* 1:18: AND_TOK */
     	        mAND_TOK(ctx );
@@ -27333,7 +27671,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 3:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:26: ARITH_VAR_ORDER_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:26: ARITH_VAR_ORDER_TOK
     	    {
     	        /* 1:26: ARITH_VAR_ORDER_TOK */
     	        mARITH_VAR_ORDER_TOK(ctx );
@@ -27347,7 +27685,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 4:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:46: ARRAY_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:46: ARRAY_TOK
     	    {
     	        /* 1:46: ARRAY_TOK */
     	        mARRAY_TOK(ctx );
@@ -27361,7 +27699,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 5:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:56: ARROW_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:56: ARROW_TOK
     	    {
     	        /* 1:56: ARROW_TOK */
     	        mARROW_TOK(ctx );
@@ -27375,7 +27713,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 6:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:66: ASSERTIONS_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:66: ASSERTIONS_TOK
     	    {
     	        /* 1:66: ASSERTIONS_TOK */
     	        mASSERTIONS_TOK(ctx );
@@ -27389,7 +27727,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 7:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:81: ASSERT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:81: ASSERT_TOK
     	    {
     	        /* 1:81: ASSERT_TOK */
     	        mASSERT_TOK(ctx );
@@ -27403,7 +27741,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 8:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:92: ASSIGN_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:92: ASSIGN_TOK
     	    {
     	        /* 1:92: ASSIGN_TOK */
     	        mASSIGN_TOK(ctx );
@@ -27417,7 +27755,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 9:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:103: ASSUMPTIONS_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:103: ASSUMPTIONS_TOK
     	    {
     	        /* 1:103: ASSUMPTIONS_TOK */
     	        mASSUMPTIONS_TOK(ctx );
@@ -27431,7 +27769,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 10:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:119: BAR
+    	    // ../../../../src/parser/cvc/Cvc.g:1:119: BAR
     	    {
     	        /* 1:119: BAR */
     	        mBAR(ctx );
@@ -27445,7 +27783,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 11:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:123: BITVECTOR_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:123: BITVECTOR_TOK
     	    {
     	        /* 1:123: BITVECTOR_TOK */
     	        mBITVECTOR_TOK(ctx );
@@ -27459,7 +27797,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 12:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:137: BOOLEAN_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:137: BOOLEAN_TOK
     	    {
     	        /* 1:137: BOOLEAN_TOK */
     	        mBOOLEAN_TOK(ctx );
@@ -27473,7 +27811,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 13:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:149: BVAND_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:149: BVAND_TOK
     	    {
     	        /* 1:149: BVAND_TOK */
     	        mBVAND_TOK(ctx );
@@ -27487,7 +27825,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 14:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:159: BVASHR_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:159: BVASHR_TOK
     	    {
     	        /* 1:159: BVASHR_TOK */
     	        mBVASHR_TOK(ctx );
@@ -27501,7 +27839,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 15:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:170: BVCOMP_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:170: BVCOMP_TOK
     	    {
     	        /* 1:170: BVCOMP_TOK */
     	        mBVCOMP_TOK(ctx );
@@ -27515,7 +27853,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 16:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:181: BVGE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:181: BVGE_TOK
     	    {
     	        /* 1:181: BVGE_TOK */
     	        mBVGE_TOK(ctx );
@@ -27529,7 +27867,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 17:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:190: BVGT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:190: BVGT_TOK
     	    {
     	        /* 1:190: BVGT_TOK */
     	        mBVGT_TOK(ctx );
@@ -27543,7 +27881,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 18:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:199: BVLE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:199: BVLE_TOK
     	    {
     	        /* 1:199: BVLE_TOK */
     	        mBVLE_TOK(ctx );
@@ -27557,7 +27895,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 19:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:208: BVLSHR_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:208: BVLSHR_TOK
     	    {
     	        /* 1:208: BVLSHR_TOK */
     	        mBVLSHR_TOK(ctx );
@@ -27571,7 +27909,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 20:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:219: BVLT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:219: BVLT_TOK
     	    {
     	        /* 1:219: BVLT_TOK */
     	        mBVLT_TOK(ctx );
@@ -27585,7 +27923,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 21:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:228: BVMULT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:228: BVMULT_TOK
     	    {
     	        /* 1:228: BVMULT_TOK */
     	        mBVMULT_TOK(ctx );
@@ -27599,7 +27937,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 22:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:239: BVNAND_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:239: BVNAND_TOK
     	    {
     	        /* 1:239: BVNAND_TOK */
     	        mBVNAND_TOK(ctx );
@@ -27613,7 +27951,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 23:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:250: BVNEG_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:250: BVNEG_TOK
     	    {
     	        /* 1:250: BVNEG_TOK */
     	        mBVNEG_TOK(ctx );
@@ -27627,7 +27965,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 24:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:260: BVNOR_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:260: BVNOR_TOK
     	    {
     	        /* 1:260: BVNOR_TOK */
     	        mBVNOR_TOK(ctx );
@@ -27641,7 +27979,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 25:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:270: BVPLUS_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:270: BVPLUS_TOK
     	    {
     	        /* 1:270: BVPLUS_TOK */
     	        mBVPLUS_TOK(ctx );
@@ -27655,7 +27993,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 26:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:281: BVREPEAT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:281: BVREPEAT_TOK
     	    {
     	        /* 1:281: BVREPEAT_TOK */
     	        mBVREPEAT_TOK(ctx );
@@ -27669,7 +28007,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 27:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:294: BVROTL_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:294: BVROTL_TOK
     	    {
     	        /* 1:294: BVROTL_TOK */
     	        mBVROTL_TOK(ctx );
@@ -27683,7 +28021,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 28:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:305: BVROTR_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:305: BVROTR_TOK
     	    {
     	        /* 1:305: BVROTR_TOK */
     	        mBVROTR_TOK(ctx );
@@ -27697,7 +28035,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 29:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:316: BVSDIV_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:316: BVSDIV_TOK
     	    {
     	        /* 1:316: BVSDIV_TOK */
     	        mBVSDIV_TOK(ctx );
@@ -27711,7 +28049,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 30:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:327: BVSGE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:327: BVSGE_TOK
     	    {
     	        /* 1:327: BVSGE_TOK */
     	        mBVSGE_TOK(ctx );
@@ -27725,7 +28063,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 31:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:337: BVSGT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:337: BVSGT_TOK
     	    {
     	        /* 1:337: BVSGT_TOK */
     	        mBVSGT_TOK(ctx );
@@ -27739,7 +28077,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 32:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:347: BVSHL_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:347: BVSHL_TOK
     	    {
     	        /* 1:347: BVSHL_TOK */
     	        mBVSHL_TOK(ctx );
@@ -27753,7 +28091,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 33:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:357: BVSLE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:357: BVSLE_TOK
     	    {
     	        /* 1:357: BVSLE_TOK */
     	        mBVSLE_TOK(ctx );
@@ -27767,7 +28105,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 34:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:367: BVSLT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:367: BVSLT_TOK
     	    {
     	        /* 1:367: BVSLT_TOK */
     	        mBVSLT_TOK(ctx );
@@ -27781,7 +28119,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 35:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:377: BVSMOD_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:377: BVSMOD_TOK
     	    {
     	        /* 1:377: BVSMOD_TOK */
     	        mBVSMOD_TOK(ctx );
@@ -27795,7 +28133,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 36:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:388: BVSREM_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:388: BVSREM_TOK
     	    {
     	        /* 1:388: BVSREM_TOK */
     	        mBVSREM_TOK(ctx );
@@ -27809,7 +28147,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 37:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:399: BVSUB_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:399: BVSUB_TOK
     	    {
     	        /* 1:399: BVSUB_TOK */
     	        mBVSUB_TOK(ctx );
@@ -27823,7 +28161,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 38:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:409: BVUDIV_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:409: BVUDIV_TOK
     	    {
     	        /* 1:409: BVUDIV_TOK */
     	        mBVUDIV_TOK(ctx );
@@ -27837,7 +28175,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 39:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:420: BVUMINUS_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:420: BVUMINUS_TOK
     	    {
     	        /* 1:420: BVUMINUS_TOK */
     	        mBVUMINUS_TOK(ctx );
@@ -27851,7 +28189,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 40:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:433: BVUREM_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:433: BVUREM_TOK
     	    {
     	        /* 1:433: BVUREM_TOK */
     	        mBVUREM_TOK(ctx );
@@ -27865,7 +28203,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 41:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:444: BVXNOR_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:444: BVXNOR_TOK
     	    {
     	        /* 1:444: BVXNOR_TOK */
     	        mBVXNOR_TOK(ctx );
@@ -27879,7 +28217,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 42:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:455: BVXOR_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:455: BVXOR_TOK
     	    {
     	        /* 1:455: BVXOR_TOK */
     	        mBVXOR_TOK(ctx );
@@ -27893,7 +28231,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 43:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:465: BVZEROEXTEND_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:465: BVZEROEXTEND_TOK
     	    {
     	        /* 1:465: BVZEROEXTEND_TOK */
     	        mBVZEROEXTEND_TOK(ctx );
@@ -27907,7 +28245,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 44:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:482: CALL_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:482: CALL_TOK
     	    {
     	        /* 1:482: CALL_TOK */
     	        mCALL_TOK(ctx );
@@ -27921,7 +28259,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 45:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:491: CHECKSAT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:491: CHECKSAT_TOK
     	    {
     	        /* 1:491: CHECKSAT_TOK */
     	        mCHECKSAT_TOK(ctx );
@@ -27935,7 +28273,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 46:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:504: CHECK_TYPE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:504: CHECK_TYPE_TOK
     	    {
     	        /* 1:504: CHECK_TYPE_TOK */
     	        mCHECK_TYPE_TOK(ctx );
@@ -27949,7 +28287,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 47:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:519: COLON
+    	    // ../../../../src/parser/cvc/Cvc.g:1:519: COLON
     	    {
     	        /* 1:519: COLON */
     	        mCOLON(ctx );
@@ -27963,7 +28301,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 48:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:525: COMMA
+    	    // ../../../../src/parser/cvc/Cvc.g:1:525: COMMA
     	    {
     	        /* 1:525: COMMA */
     	        mCOMMA(ctx );
@@ -27977,7 +28315,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 49:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:531: CONCAT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:531: CONCAT_TOK
     	    {
     	        /* 1:531: CONCAT_TOK */
     	        mCONCAT_TOK(ctx );
@@ -27991,7 +28329,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 50:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:542: CONTEXT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:542: CONTEXT_TOK
     	    {
     	        /* 1:542: CONTEXT_TOK */
     	        mCONTEXT_TOK(ctx );
@@ -28005,7 +28343,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 51:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:554: CONTINUE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:554: CONTINUE_TOK
     	    {
     	        /* 1:554: CONTINUE_TOK */
     	        mCONTINUE_TOK(ctx );
@@ -28019,7 +28357,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 52:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:567: COUNTEREXAMPLE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:567: COUNTEREXAMPLE_TOK
     	    {
     	        /* 1:567: COUNTEREXAMPLE_TOK */
     	        mCOUNTEREXAMPLE_TOK(ctx );
@@ -28033,7 +28371,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 53:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:586: COUNTERMODEL_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:586: COUNTERMODEL_TOK
     	    {
     	        /* 1:586: COUNTERMODEL_TOK */
     	        mCOUNTERMODEL_TOK(ctx );
@@ -28047,7 +28385,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 54:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:603: DATATYPE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:603: DATATYPE_TOK
     	    {
     	        /* 1:603: DATATYPE_TOK */
     	        mDATATYPE_TOK(ctx );
@@ -28061,7 +28399,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 55:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:616: DBG_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:616: DBG_TOK
     	    {
     	        /* 1:616: DBG_TOK */
     	        mDBG_TOK(ctx );
@@ -28075,7 +28413,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 56:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:624: DISEQUAL_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:624: DISEQUAL_TOK
     	    {
     	        /* 1:624: DISEQUAL_TOK */
     	        mDISEQUAL_TOK(ctx );
@@ -28089,7 +28427,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 57:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:637: DISTINCT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:637: DISTINCT_TOK
     	    {
     	        /* 1:637: DISTINCT_TOK */
     	        mDISTINCT_TOK(ctx );
@@ -28103,7 +28441,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 58:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:650: DIVISIBLE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:650: DIVISIBLE_TOK
     	    {
     	        /* 1:650: DIVISIBLE_TOK */
     	        mDIVISIBLE_TOK(ctx );
@@ -28117,7 +28455,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 59:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:664: DIV_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:664: DIV_TOK
     	    {
     	        /* 1:664: DIV_TOK */
     	        mDIV_TOK(ctx );
@@ -28131,7 +28469,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 60:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:672: DUMP_ASSUMPTIONS_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:672: DUMP_ASSUMPTIONS_TOK
     	    {
     	        /* 1:672: DUMP_ASSUMPTIONS_TOK */
     	        mDUMP_ASSUMPTIONS_TOK(ctx );
@@ -28145,7 +28483,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 61:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:693: DUMP_CLOSURE_PROOF_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:693: DUMP_CLOSURE_PROOF_TOK
     	    {
     	        /* 1:693: DUMP_CLOSURE_PROOF_TOK */
     	        mDUMP_CLOSURE_PROOF_TOK(ctx );
@@ -28159,7 +28497,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 62:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:716: DUMP_CLOSURE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:716: DUMP_CLOSURE_TOK
     	    {
     	        /* 1:716: DUMP_CLOSURE_TOK */
     	        mDUMP_CLOSURE_TOK(ctx );
@@ -28173,7 +28511,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 63:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:733: DUMP_PROOF_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:733: DUMP_PROOF_TOK
     	    {
     	        /* 1:733: DUMP_PROOF_TOK */
     	        mDUMP_PROOF_TOK(ctx );
@@ -28187,7 +28525,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 64:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:748: DUMP_SIG_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:748: DUMP_SIG_TOK
     	    {
     	        /* 1:748: DUMP_SIG_TOK */
     	        mDUMP_SIG_TOK(ctx );
@@ -28201,7 +28539,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 65:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:761: DUMP_TCC_ASSUMPTIONS_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:761: DUMP_TCC_ASSUMPTIONS_TOK
     	    {
     	        /* 1:761: DUMP_TCC_ASSUMPTIONS_TOK */
     	        mDUMP_TCC_ASSUMPTIONS_TOK(ctx );
@@ -28215,7 +28553,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 66:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:786: DUMP_TCC_PROOF_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:786: DUMP_TCC_PROOF_TOK
     	    {
     	        /* 1:786: DUMP_TCC_PROOF_TOK */
     	        mDUMP_TCC_PROOF_TOK(ctx );
@@ -28229,7 +28567,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 67:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:805: DUMP_TCC_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:805: DUMP_TCC_TOK
     	    {
     	        /* 1:805: DUMP_TCC_TOK */
     	        mDUMP_TCC_TOK(ctx );
@@ -28243,7 +28581,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 68:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:818: DUMP_UNSAT_CORE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:818: DUMP_UNSAT_CORE_TOK
     	    {
     	        /* 1:818: DUMP_UNSAT_CORE_TOK */
     	        mDUMP_UNSAT_CORE_TOK(ctx );
@@ -28257,7 +28595,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 69:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:838: ECHO_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:838: ECHO_TOK
     	    {
     	        /* 1:838: ECHO_TOK */
     	        mECHO_TOK(ctx );
@@ -28271,7 +28609,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 70:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:847: ELSEIF_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:847: ELSEIF_TOK
     	    {
     	        /* 1:847: ELSEIF_TOK */
     	        mELSEIF_TOK(ctx );
@@ -28285,7 +28623,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 71:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:858: ELSE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:858: ELSE_TOK
     	    {
     	        /* 1:858: ELSE_TOK */
     	        mELSE_TOK(ctx );
@@ -28299,7 +28637,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 72:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:867: ENDIF_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:867: ENDIF_TOK
     	    {
     	        /* 1:867: ENDIF_TOK */
     	        mENDIF_TOK(ctx );
@@ -28313,7 +28651,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 73:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:877: END_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:877: END_TOK
     	    {
     	        /* 1:877: END_TOK */
     	        mEND_TOK(ctx );
@@ -28327,7 +28665,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 74:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:885: EQUAL_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:885: EQUAL_TOK
     	    {
     	        /* 1:885: EQUAL_TOK */
     	        mEQUAL_TOK(ctx );
@@ -28341,7 +28679,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 75:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:895: EXISTS_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:895: EXISTS_TOK
     	    {
     	        /* 1:895: EXISTS_TOK */
     	        mEXISTS_TOK(ctx );
@@ -28355,7 +28693,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 76:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:906: EXIT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:906: EXIT_TOK
     	    {
     	        /* 1:906: EXIT_TOK */
     	        mEXIT_TOK(ctx );
@@ -28369,7 +28707,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 77:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:915: EXP_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:915: EXP_TOK
     	    {
     	        /* 1:915: EXP_TOK */
     	        mEXP_TOK(ctx );
@@ -28383,7 +28721,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 78:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:923: FALSE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:923: FALSE_TOK
     	    {
     	        /* 1:923: FALSE_TOK */
     	        mFALSE_TOK(ctx );
@@ -28397,7 +28735,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 79:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:933: FLOOR_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:933: FLOOR_TOK
     	    {
     	        /* 1:933: FLOOR_TOK */
     	        mFLOOR_TOK(ctx );
@@ -28411,7 +28749,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 80:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:943: FMF_CARD_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:943: FMF_CARD_TOK
     	    {
     	        /* 1:943: FMF_CARD_TOK */
     	        mFMF_CARD_TOK(ctx );
@@ -28425,7 +28763,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 81:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:956: FORALL_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:956: FORALL_TOK
     	    {
     	        /* 1:956: FORALL_TOK */
     	        mFORALL_TOK(ctx );
@@ -28439,7 +28777,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 82:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:967: FORGET_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:967: FORGET_TOK
     	    {
     	        /* 1:967: FORGET_TOK */
     	        mFORGET_TOK(ctx );
@@ -28453,7 +28791,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 83:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:978: GEQ_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:978: GEQ_TOK
     	    {
     	        /* 1:978: GEQ_TOK */
     	        mGEQ_TOK(ctx );
@@ -28467,7 +28805,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 84:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:986: GET_CHILD_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:986: GET_CHILD_TOK
     	    {
     	        /* 1:986: GET_CHILD_TOK */
     	        mGET_CHILD_TOK(ctx );
@@ -28481,7 +28819,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 85:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1000: GET_OP_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1000: GET_OP_TOK
     	    {
     	        /* 1:1000: GET_OP_TOK */
     	        mGET_OP_TOK(ctx );
@@ -28495,7 +28833,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 86:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1011: GET_TYPE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1011: GET_TYPE_TOK
     	    {
     	        /* 1:1011: GET_TYPE_TOK */
     	        mGET_TYPE_TOK(ctx );
@@ -28509,7 +28847,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 87:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1024: GET_VALUE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1024: GET_VALUE_TOK
     	    {
     	        /* 1:1024: GET_VALUE_TOK */
     	        mGET_VALUE_TOK(ctx );
@@ -28523,7 +28861,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 88:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1038: GT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1038: GT_TOK
     	    {
     	        /* 1:1038: GT_TOK */
     	        mGT_TOK(ctx );
@@ -28537,7 +28875,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 89:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1045: HASHPAREN
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1045: HASHPAREN
     	    {
     	        /* 1:1045: HASHPAREN */
     	        mHASHPAREN(ctx );
@@ -28551,7 +28889,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 90:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1055: HASHSQ
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1055: HASHSQ
     	    {
     	        /* 1:1055: HASHSQ */
     	        mHASHSQ(ctx );
@@ -28565,7 +28903,7 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 91:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1062: HELP_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1062: HELP_TOK
     	    {
     	        /* 1:1062: HELP_TOK */
     	        mHELP_TOK(ctx );
@@ -28579,10 +28917,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 92:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1071: IFF_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1071: IDEN_TOK
     	    {
-    	        /* 1:1071: IFF_TOK */
-    	        mIFF_TOK(ctx );
+    	        /* 1:1071: IDEN_TOK */
+    	        mIDEN_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28593,10 +28931,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 93:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1079: IF_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1080: IFF_TOK
     	    {
-    	        /* 1:1079: IF_TOK */
-    	        mIF_TOK(ctx );
+    	        /* 1:1080: IFF_TOK */
+    	        mIFF_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28607,10 +28945,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 94:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1086: IMPLIES_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1088: IF_TOK
     	    {
-    	        /* 1:1086: IMPLIES_TOK */
-    	        mIMPLIES_TOK(ctx );
+    	        /* 1:1088: IF_TOK */
+    	        mIF_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28621,10 +28959,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 95:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1098: INCLUDE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1095: IMPLIES_TOK
     	    {
-    	        /* 1:1098: INCLUDE_TOK */
-    	        mINCLUDE_TOK(ctx );
+    	        /* 1:1095: IMPLIES_TOK */
+    	        mIMPLIES_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28635,10 +28973,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 96:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1110: INTDIV_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1107: INCLUDE_TOK
     	    {
-    	        /* 1:1110: INTDIV_TOK */
-    	        mINTDIV_TOK(ctx );
+    	        /* 1:1107: INCLUDE_TOK */
+    	        mINCLUDE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28649,10 +28987,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 97:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1121: INT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1119: INTDIV_TOK
     	    {
-    	        /* 1:1121: INT_TOK */
-    	        mINT_TOK(ctx );
+    	        /* 1:1119: INTDIV_TOK */
+    	        mINTDIV_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28663,10 +29001,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 98:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1129: IN_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1130: INT_TOK
     	    {
-    	        /* 1:1129: IN_TOK */
-    	        mIN_TOK(ctx );
+    	        /* 1:1130: INT_TOK */
+    	        mINT_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28677,10 +29015,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 99:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1136: IS_INTEGER_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1138: IN_TOK
     	    {
-    	        /* 1:1136: IS_INTEGER_TOK */
-    	        mIS_INTEGER_TOK(ctx );
+    	        /* 1:1138: IN_TOK */
+    	        mIN_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28691,10 +29029,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 100:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1151: JOIN_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1145: IS_INTEGER_TOK
     	    {
-    	        /* 1:1151: JOIN_TOK */
-    	        mJOIN_TOK(ctx );
+    	        /* 1:1145: IS_INTEGER_TOK */
+    	        mIS_INTEGER_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28705,10 +29043,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 101:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1160: LAMBDA
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1160: JOIN_IMAGE_TOK
     	    {
-    	        /* 1:1160: LAMBDA */
-    	        mLAMBDA(ctx );
+    	        /* 1:1160: JOIN_IMAGE_TOK */
+    	        mJOIN_IMAGE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28719,10 +29057,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 102:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1167: LBRACE
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1175: JOIN_TOK
     	    {
-    	        /* 1:1167: LBRACE */
-    	        mLBRACE(ctx );
+    	        /* 1:1175: JOIN_TOK */
+    	        mJOIN_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28733,10 +29071,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 103:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1174: LBRACKET
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1184: LAMBDA
     	    {
-    	        /* 1:1174: LBRACKET */
-    	        mLBRACKET(ctx );
+    	        /* 1:1184: LAMBDA */
+    	        mLAMBDA(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28747,10 +29085,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 104:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1183: LEFTSHIFT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1191: LBRACE
     	    {
-    	        /* 1:1183: LEFTSHIFT_TOK */
-    	        mLEFTSHIFT_TOK(ctx );
+    	        /* 1:1191: LBRACE */
+    	        mLBRACE(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28761,10 +29099,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 105:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1197: LEQ_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1198: LBRACKET
     	    {
-    	        /* 1:1197: LEQ_TOK */
-    	        mLEQ_TOK(ctx );
+    	        /* 1:1198: LBRACKET */
+    	        mLBRACKET(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28775,10 +29113,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 106:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1205: LET_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1207: LEFTSHIFT_TOK
     	    {
-    	        /* 1:1205: LET_TOK */
-    	        mLET_TOK(ctx );
+    	        /* 1:1207: LEFTSHIFT_TOK */
+    	        mLEFTSHIFT_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28789,10 +29127,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 107:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1213: LPAREN
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1221: LEQ_TOK
     	    {
-    	        /* 1:1213: LPAREN */
-    	        mLPAREN(ctx );
+    	        /* 1:1221: LEQ_TOK */
+    	        mLEQ_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28803,10 +29141,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 108:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1220: LT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1229: LET_TOK
     	    {
-    	        /* 1:1220: LT_TOK */
-    	        mLT_TOK(ctx );
+    	        /* 1:1229: LET_TOK */
+    	        mLET_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28817,10 +29155,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 109:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1227: MEMBER_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1237: LPAREN
     	    {
-    	        /* 1:1227: MEMBER_TOK */
-    	        mMEMBER_TOK(ctx );
+    	        /* 1:1237: LPAREN */
+    	        mLPAREN(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28831,10 +29169,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 110:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1238: MINUS_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1244: LT_TOK
     	    {
-    	        /* 1:1238: MINUS_TOK */
-    	        mMINUS_TOK(ctx );
+    	        /* 1:1244: LT_TOK */
+    	        mLT_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28845,10 +29183,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 111:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1248: MOD_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1251: MEMBER_TOK
     	    {
-    	        /* 1:1248: MOD_TOK */
-    	        mMOD_TOK(ctx );
+    	        /* 1:1251: MEMBER_TOK */
+    	        mMEMBER_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28859,10 +29197,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 112:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1256: NOT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1262: MINUS_TOK
     	    {
-    	        /* 1:1256: NOT_TOK */
-    	        mNOT_TOK(ctx );
+    	        /* 1:1262: MINUS_TOK */
+    	        mMINUS_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28873,10 +29211,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 113:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1264: OF_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1272: MOD_TOK
     	    {
-    	        /* 1:1264: OF_TOK */
-    	        mOF_TOK(ctx );
+    	        /* 1:1272: MOD_TOK */
+    	        mMOD_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28887,10 +29225,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 114:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1271: OPTION_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1280: NOT_TOK
     	    {
-    	        /* 1:1271: OPTION_TOK */
-    	        mOPTION_TOK(ctx );
+    	        /* 1:1280: NOT_TOK */
+    	        mNOT_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28901,10 +29239,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 115:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1282: OR_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1288: OF_TOK
     	    {
-    	        /* 1:1282: OR_TOK */
-    	        mOR_TOK(ctx );
+    	        /* 1:1288: OF_TOK */
+    	        mOF_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28915,10 +29253,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 116:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1289: PARENHASH
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1295: OPTION_TOK
     	    {
-    	        /* 1:1289: PARENHASH */
-    	        mPARENHASH(ctx );
+    	        /* 1:1295: OPTION_TOK */
+    	        mOPTION_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28929,10 +29267,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 117:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1299: PATTERN_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1306: OR_TOK
     	    {
-    	        /* 1:1299: PATTERN_TOK */
-    	        mPATTERN_TOK(ctx );
+    	        /* 1:1306: OR_TOK */
+    	        mOR_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28943,10 +29281,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 118:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1311: PLUS_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1313: PARENHASH
     	    {
-    	        /* 1:1311: PLUS_TOK */
-    	        mPLUS_TOK(ctx );
+    	        /* 1:1313: PARENHASH */
+    	        mPARENHASH(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28957,10 +29295,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 119:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1320: POPTO_SCOPE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1323: PATTERN_TOK
     	    {
-    	        /* 1:1320: POPTO_SCOPE_TOK */
-    	        mPOPTO_SCOPE_TOK(ctx );
+    	        /* 1:1323: PATTERN_TOK */
+    	        mPATTERN_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28971,10 +29309,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 120:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1336: POPTO_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1335: PLUS_TOK
     	    {
-    	        /* 1:1336: POPTO_TOK */
-    	        mPOPTO_TOK(ctx );
+    	        /* 1:1335: PLUS_TOK */
+    	        mPLUS_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28985,10 +29323,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 121:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1346: POP_SCOPE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1344: POPTO_SCOPE_TOK
     	    {
-    	        /* 1:1346: POP_SCOPE_TOK */
-    	        mPOP_SCOPE_TOK(ctx );
+    	        /* 1:1344: POPTO_SCOPE_TOK */
+    	        mPOPTO_SCOPE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -28999,10 +29337,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 122:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1360: POP_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1360: POPTO_TOK
     	    {
-    	        /* 1:1360: POP_TOK */
-    	        mPOP_TOK(ctx );
+    	        /* 1:1360: POPTO_TOK */
+    	        mPOPTO_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29013,10 +29351,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 123:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1368: PRINT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1370: POP_SCOPE_TOK
     	    {
-    	        /* 1:1368: PRINT_TOK */
-    	        mPRINT_TOK(ctx );
+    	        /* 1:1370: POP_SCOPE_TOK */
+    	        mPOP_SCOPE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29027,10 +29365,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 124:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1378: PRINT_TYPE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1384: POP_TOK
     	    {
-    	        /* 1:1378: PRINT_TYPE_TOK */
-    	        mPRINT_TYPE_TOK(ctx );
+    	        /* 1:1384: POP_TOK */
+    	        mPOP_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29041,10 +29379,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 125:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1393: PRODUCT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1392: PRINT_TOK
     	    {
-    	        /* 1:1393: PRODUCT_TOK */
-    	        mPRODUCT_TOK(ctx );
+    	        /* 1:1392: PRINT_TOK */
+    	        mPRINT_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29055,10 +29393,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 126:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1405: PUSH_SCOPE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1402: PRINT_TYPE_TOK
     	    {
-    	        /* 1:1405: PUSH_SCOPE_TOK */
-    	        mPUSH_SCOPE_TOK(ctx );
+    	        /* 1:1402: PRINT_TYPE_TOK */
+    	        mPRINT_TYPE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29069,10 +29407,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 127:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1420: PUSH_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1417: PRODUCT_TOK
     	    {
-    	        /* 1:1420: PUSH_TOK */
-    	        mPUSH_TOK(ctx );
+    	        /* 1:1417: PRODUCT_TOK */
+    	        mPRODUCT_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29083,10 +29421,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 128:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1429: QUERY_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1429: PUSH_SCOPE_TOK
     	    {
-    	        /* 1:1429: QUERY_TOK */
-    	        mQUERY_TOK(ctx );
+    	        /* 1:1429: PUSH_SCOPE_TOK */
+    	        mPUSH_SCOPE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29097,10 +29435,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 129:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1439: RBRACE
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1444: PUSH_TOK
     	    {
-    	        /* 1:1439: RBRACE */
-    	        mRBRACE(ctx );
+    	        /* 1:1444: PUSH_TOK */
+    	        mPUSH_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29111,10 +29449,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 130:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1446: RBRACKET
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1453: QUERY_TOK
     	    {
-    	        /* 1:1446: RBRACKET */
-    	        mRBRACKET(ctx );
+    	        /* 1:1453: QUERY_TOK */
+    	        mQUERY_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29125,10 +29463,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 131:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1455: REAL_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1463: RBRACE
     	    {
-    	        /* 1:1455: REAL_TOK */
-    	        mREAL_TOK(ctx );
+    	        /* 1:1463: RBRACE */
+    	        mRBRACE(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29139,10 +29477,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 132:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1464: RESET_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1470: RBRACKET
     	    {
-    	        /* 1:1464: RESET_TOK */
-    	        mRESET_TOK(ctx );
+    	        /* 1:1470: RBRACKET */
+    	        mRBRACKET(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29153,10 +29491,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 133:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1474: RESTART_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1479: REAL_TOK
     	    {
-    	        /* 1:1474: RESTART_TOK */
-    	        mRESTART_TOK(ctx );
+    	        /* 1:1479: REAL_TOK */
+    	        mREAL_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29167,10 +29505,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 134:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1486: RIGHTSHIFT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1488: RESET_TOK
     	    {
-    	        /* 1:1486: RIGHTSHIFT_TOK */
-    	        mRIGHTSHIFT_TOK(ctx );
+    	        /* 1:1488: RESET_TOK */
+    	        mRESET_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29181,10 +29519,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 135:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1501: RPAREN
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1498: RESTART_TOK
     	    {
-    	        /* 1:1501: RPAREN */
-    	        mRPAREN(ctx );
+    	        /* 1:1498: RESTART_TOK */
+    	        mRESTART_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29195,10 +29533,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 136:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1508: SEMICOLON
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1510: RIGHTSHIFT_TOK
     	    {
-    	        /* 1:1508: SEMICOLON */
-    	        mSEMICOLON(ctx );
+    	        /* 1:1510: RIGHTSHIFT_TOK */
+    	        mRIGHTSHIFT_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29209,10 +29547,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 137:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1518: SETS_CARD_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1525: RPAREN
     	    {
-    	        /* 1:1518: SETS_CARD_TOK */
-    	        mSETS_CARD_TOK(ctx );
+    	        /* 1:1525: RPAREN */
+    	        mRPAREN(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29223,10 +29561,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 138:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1532: SET_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1532: SEMICOLON
     	    {
-    	        /* 1:1532: SET_TOK */
-    	        mSET_TOK(ctx );
+    	        /* 1:1532: SEMICOLON */
+    	        mSEMICOLON(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29237,10 +29575,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 139:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1540: SQHASH
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1542: SETS_CARD_TOK
     	    {
-    	        /* 1:1540: SQHASH */
-    	        mSQHASH(ctx );
+    	        /* 1:1542: SETS_CARD_TOK */
+    	        mSETS_CARD_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29251,10 +29589,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 140:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1547: STAR_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1556: SET_TOK
     	    {
-    	        /* 1:1547: STAR_TOK */
-    	        mSTAR_TOK(ctx );
+    	        /* 1:1556: SET_TOK */
+    	        mSET_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29265,10 +29603,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 141:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1556: STRING_CHARAT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1564: SQHASH
     	    {
-    	        /* 1:1556: STRING_CHARAT_TOK */
-    	        mSTRING_CHARAT_TOK(ctx );
+    	        /* 1:1564: SQHASH */
+    	        mSQHASH(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29279,10 +29617,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 142:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1574: STRING_CONCAT_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1571: STAR_TOK
     	    {
-    	        /* 1:1574: STRING_CONCAT_TOK */
-    	        mSTRING_CONCAT_TOK(ctx );
+    	        /* 1:1571: STAR_TOK */
+    	        mSTAR_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29293,10 +29631,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 143:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1592: STRING_CONTAINS_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1580: STRING_CHARAT_TOK
     	    {
-    	        /* 1:1592: STRING_CONTAINS_TOK */
-    	        mSTRING_CONTAINS_TOK(ctx );
+    	        /* 1:1580: STRING_CHARAT_TOK */
+    	        mSTRING_CHARAT_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29307,10 +29645,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 144:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1612: STRING_INDEXOF_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1598: STRING_CONCAT_TOK
     	    {
-    	        /* 1:1612: STRING_INDEXOF_TOK */
-    	        mSTRING_INDEXOF_TOK(ctx );
+    	        /* 1:1598: STRING_CONCAT_TOK */
+    	        mSTRING_CONCAT_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29321,10 +29659,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 145:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1631: STRING_ITOS_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1616: STRING_CONTAINS_TOK
     	    {
-    	        /* 1:1631: STRING_ITOS_TOK */
-    	        mSTRING_ITOS_TOK(ctx );
+    	        /* 1:1616: STRING_CONTAINS_TOK */
+    	        mSTRING_CONTAINS_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29335,10 +29673,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 146:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1647: STRING_LENGTH_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1636: STRING_INDEXOF_TOK
     	    {
-    	        /* 1:1647: STRING_LENGTH_TOK */
-    	        mSTRING_LENGTH_TOK(ctx );
+    	        /* 1:1636: STRING_INDEXOF_TOK */
+    	        mSTRING_INDEXOF_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29349,10 +29687,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 147:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1665: STRING_PREFIXOF_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1655: STRING_ITOS_TOK
     	    {
-    	        /* 1:1665: STRING_PREFIXOF_TOK */
-    	        mSTRING_PREFIXOF_TOK(ctx );
+    	        /* 1:1655: STRING_ITOS_TOK */
+    	        mSTRING_ITOS_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29363,10 +29701,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 148:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1685: STRING_REPLACE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1671: STRING_LENGTH_TOK
     	    {
-    	        /* 1:1685: STRING_REPLACE_TOK */
-    	        mSTRING_REPLACE_TOK(ctx );
+    	        /* 1:1671: STRING_LENGTH_TOK */
+    	        mSTRING_LENGTH_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29377,10 +29715,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 149:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1704: STRING_STOI_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1689: STRING_PREFIXOF_TOK
     	    {
-    	        /* 1:1704: STRING_STOI_TOK */
-    	        mSTRING_STOI_TOK(ctx );
+    	        /* 1:1689: STRING_PREFIXOF_TOK */
+    	        mSTRING_PREFIXOF_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29391,10 +29729,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 150:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1720: STRING_STOU16_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1709: STRING_REPLACE_TOK
     	    {
-    	        /* 1:1720: STRING_STOU16_TOK */
-    	        mSTRING_STOU16_TOK(ctx );
+    	        /* 1:1709: STRING_REPLACE_TOK */
+    	        mSTRING_REPLACE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29405,10 +29743,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 151:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1738: STRING_STOU32_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1728: STRING_STOI_TOK
     	    {
-    	        /* 1:1738: STRING_STOU32_TOK */
-    	        mSTRING_STOU32_TOK(ctx );
+    	        /* 1:1728: STRING_STOI_TOK */
+    	        mSTRING_STOI_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29419,10 +29757,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 152:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1756: STRING_SUBSTR_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1744: STRING_STOU16_TOK
     	    {
-    	        /* 1:1756: STRING_SUBSTR_TOK */
-    	        mSTRING_SUBSTR_TOK(ctx );
+    	        /* 1:1744: STRING_STOU16_TOK */
+    	        mSTRING_STOU16_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29433,10 +29771,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 153:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1774: STRING_SUFFIXOF_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1762: STRING_STOU32_TOK
     	    {
-    	        /* 1:1774: STRING_SUFFIXOF_TOK */
-    	        mSTRING_SUFFIXOF_TOK(ctx );
+    	        /* 1:1762: STRING_STOU32_TOK */
+    	        mSTRING_STOU32_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29447,10 +29785,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 154:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1794: STRING_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1780: STRING_SUBSTR_TOK
     	    {
-    	        /* 1:1794: STRING_TOK */
-    	        mSTRING_TOK(ctx );
+    	        /* 1:1780: STRING_SUBSTR_TOK */
+    	        mSTRING_SUBSTR_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29461,10 +29799,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 155:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1805: STRING_U16TOS_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1798: STRING_SUFFIXOF_TOK
     	    {
-    	        /* 1:1805: STRING_U16TOS_TOK */
-    	        mSTRING_U16TOS_TOK(ctx );
+    	        /* 1:1798: STRING_SUFFIXOF_TOK */
+    	        mSTRING_SUFFIXOF_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29475,10 +29813,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 156:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1823: STRING_U32TOS_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1818: STRING_TOK
     	    {
-    	        /* 1:1823: STRING_U32TOS_TOK */
-    	        mSTRING_U32TOS_TOK(ctx );
+    	        /* 1:1818: STRING_TOK */
+    	        mSTRING_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29489,10 +29827,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 157:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1841: SUBSTITUTE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1829: STRING_U16TOS_TOK
     	    {
-    	        /* 1:1841: SUBSTITUTE_TOK */
-    	        mSUBSTITUTE_TOK(ctx );
+    	        /* 1:1829: STRING_U16TOS_TOK */
+    	        mSTRING_U16TOS_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29503,10 +29841,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 158:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1856: SUBTYPE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1847: STRING_U32TOS_TOK
     	    {
-    	        /* 1:1856: SUBTYPE_TOK */
-    	        mSUBTYPE_TOK(ctx );
+    	        /* 1:1847: STRING_U32TOS_TOK */
+    	        mSTRING_U32TOS_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29517,10 +29855,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 159:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1868: SX_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1865: SUBSTITUTE_TOK
     	    {
-    	        /* 1:1868: SX_TOK */
-    	        mSX_TOK(ctx );
+    	        /* 1:1865: SUBSTITUTE_TOK */
+    	        mSUBSTITUTE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29531,10 +29869,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 160:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1875: THEN_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1880: SUBTYPE_TOK
     	    {
-    	        /* 1:1875: THEN_TOK */
-    	        mTHEN_TOK(ctx );
+    	        /* 1:1880: SUBTYPE_TOK */
+    	        mSUBTYPE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29545,10 +29883,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 161:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1884: TRACE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1892: SX_TOK
     	    {
-    	        /* 1:1884: TRACE_TOK */
-    	        mTRACE_TOK(ctx );
+    	        /* 1:1892: SX_TOK */
+    	        mSX_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29559,10 +29897,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 162:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1894: TRANSCLOSURE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1899: THEN_TOK
     	    {
-    	        /* 1:1894: TRANSCLOSURE_TOK */
-    	        mTRANSCLOSURE_TOK(ctx );
+    	        /* 1:1899: THEN_TOK */
+    	        mTHEN_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29573,10 +29911,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 163:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1911: TRANSFORM_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1908: TRACE_TOK
     	    {
-    	        /* 1:1911: TRANSFORM_TOK */
-    	        mTRANSFORM_TOK(ctx );
+    	        /* 1:1908: TRACE_TOK */
+    	        mTRACE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29587,10 +29925,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 164:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1925: TRANSPOSE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1918: TRANSCLOSURE_TOK
     	    {
-    	        /* 1:1925: TRANSPOSE_TOK */
-    	        mTRANSPOSE_TOK(ctx );
+    	        /* 1:1918: TRANSCLOSURE_TOK */
+    	        mTRANSCLOSURE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29601,10 +29939,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 165:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1939: TRUE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1935: TRANSFORM_TOK
     	    {
-    	        /* 1:1939: TRUE_TOK */
-    	        mTRUE_TOK(ctx );
+    	        /* 1:1935: TRANSFORM_TOK */
+    	        mTRANSFORM_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29615,10 +29953,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 166:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1948: TUPLE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1949: TRANSPOSE_TOK
     	    {
-    	        /* 1:1948: TUPLE_TOK */
-    	        mTUPLE_TOK(ctx );
+    	        /* 1:1949: TRANSPOSE_TOK */
+    	        mTRANSPOSE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29629,10 +29967,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 167:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1958: TYPE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1963: TRUE_TOK
     	    {
-    	        /* 1:1958: TYPE_TOK */
-    	        mTYPE_TOK(ctx );
+    	        /* 1:1963: TRUE_TOK */
+    	        mTRUE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29643,10 +29981,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 168:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1967: UNDERSCORE
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1972: TUPLE_TOK
     	    {
-    	        /* 1:1967: UNDERSCORE */
-    	        mUNDERSCORE(ctx );
+    	        /* 1:1972: TUPLE_TOK */
+    	        mTUPLE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29657,10 +29995,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 169:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1978: UNIVSET_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1982: TYPE_TOK
     	    {
-    	        /* 1:1978: UNIVSET_TOK */
-    	        mUNIVSET_TOK(ctx );
+    	        /* 1:1982: TYPE_TOK */
+    	        mTYPE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29671,10 +30009,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 170:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:1990: UNTRACE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:1991: UNDERSCORE
     	    {
-    	        /* 1:1990: UNTRACE_TOK */
-    	        mUNTRACE_TOK(ctx );
+    	        /* 1:1991: UNDERSCORE */
+    	        mUNDERSCORE(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29685,10 +30023,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 171:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:2002: WHERE_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:2002: UNIVSET_TOK
     	    {
-    	        /* 1:2002: WHERE_TOK */
-    	        mWHERE_TOK(ctx );
+    	        /* 1:2002: UNIVSET_TOK */
+    	        mUNIVSET_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29699,10 +30037,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 172:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:2012: WITH_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:2014: UNTRACE_TOK
     	    {
-    	        /* 1:2012: WITH_TOK */
-    	        mWITH_TOK(ctx );
+    	        /* 1:2014: UNTRACE_TOK */
+    	        mUNTRACE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29713,10 +30051,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 173:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:2021: XOR_TOK
+    	    // ../../../../src/parser/cvc/Cvc.g:1:2026: WHERE_TOK
     	    {
-    	        /* 1:2021: XOR_TOK */
-    	        mXOR_TOK(ctx );
+    	        /* 1:2026: WHERE_TOK */
+    	        mWHERE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29727,10 +30065,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 174:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:2029: IDENTIFIER
+    	    // ../../../../src/parser/cvc/Cvc.g:1:2036: WITH_TOK
     	    {
-    	        /* 1:2029: IDENTIFIER */
-    	        mIDENTIFIER(ctx );
+    	        /* 1:2036: WITH_TOK */
+    	        mWITH_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29741,10 +30079,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 175:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:2040: HEX_LITERAL
+    	    // ../../../../src/parser/cvc/Cvc.g:1:2045: XOR_TOK
     	    {
-    	        /* 1:2040: HEX_LITERAL */
-    	        mHEX_LITERAL(ctx );
+    	        /* 1:2045: XOR_TOK */
+    	        mXOR_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29755,10 +30093,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 176:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:2052: BINARY_LITERAL
+    	    // ../../../../src/parser/cvc/Cvc.g:1:2053: IDENTIFIER
     	    {
-    	        /* 1:2052: BINARY_LITERAL */
-    	        mBINARY_LITERAL(ctx );
+    	        /* 1:2053: IDENTIFIER */
+    	        mIDENTIFIER(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29769,10 +30107,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 177:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:2067: STRING_LITERAL
+    	    // ../../../../src/parser/cvc/Cvc.g:1:2064: HEX_LITERAL
     	    {
-    	        /* 1:2067: STRING_LITERAL */
-    	        mSTRING_LITERAL(ctx );
+    	        /* 1:2064: HEX_LITERAL */
+    	        mHEX_LITERAL(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29783,10 +30121,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 178:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:2082: NUMBER_OR_RANGEOP
+    	    // ../../../../src/parser/cvc/Cvc.g:1:2076: BINARY_LITERAL
     	    {
-    	        /* 1:2082: NUMBER_OR_RANGEOP */
-    	        mNUMBER_OR_RANGEOP(ctx );
+    	        /* 1:2076: BINARY_LITERAL */
+    	        mBINARY_LITERAL(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29797,10 +30135,10 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 179:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:2100: WHITESPACE
+    	    // ../../../../src/parser/cvc/Cvc.g:1:2091: STRING_LITERAL
     	    {
-    	        /* 1:2100: WHITESPACE */
-    	        mWHITESPACE(ctx );
+    	        /* 1:2091: STRING_LITERAL */
+    	        mSTRING_LITERAL(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -29811,9 +30149,37 @@ mTokens(pCvcLexer ctx)
     	    }
     	    break;
     	case 180:
-    	    // ../../../../../../src/parser/cvc/Cvc.g:1:2111: COMMENT
+    	    // ../../../../src/parser/cvc/Cvc.g:1:2106: NUMBER_OR_RANGEOP
+    	    {
+    	        /* 1:2106: NUMBER_OR_RANGEOP */
+    	        mNUMBER_OR_RANGEOP(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 181:
+    	    // ../../../../src/parser/cvc/Cvc.g:1:2124: WHITESPACE
+    	    {
+    	        /* 1:2124: WHITESPACE */
+    	        mWHITESPACE(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 182:
+    	    // ../../../../src/parser/cvc/Cvc.g:1:2135: COMMENT
     	    {
-    	        /* 1:2111: COMMENT */
+    	        /* 1:2135: COMMENT */
     	        mCOMMENT(ctx );
     	        if  (HASEXCEPTION())
     	        {
diff --git a/src/parser/cvc/CvcLexer.h b/src/parser/cvc/CvcLexer.h
index dac6417..5e4e707 100644
--- a/src/parser/cvc/CvcLexer.h
+++ b/src/parser/cvc/CvcLexer.h
@@ -1,8 +1,8 @@
 /** \file
  *  This C header file was generated by $ANTLR version 3.4
  *
- *     -  From the grammar source file : ../../../../../../src/parser/cvc/Cvc.g
- *     -                            On : 2017-03-16 01:03:03
+ *     -  From the grammar source file : ../../../../src/parser/cvc/Cvc.g
+ *     -                            On : 2017-07-10 10:01:31
  *     -                 for the lexer : CvcLexerLexer
  *
  * Editing it, at least manually, is not wise.
@@ -306,6 +306,9 @@ has the callable functions (rules) shown below,
       pCvcLexer->HELP_TOK(pCvcLexer)
  *  - 
  void
+      pCvcLexer->IDEN_TOK(pCvcLexer)
+ *  - 
+ void
       pCvcLexer->IFF_TOK(pCvcLexer)
  *  - 
  void
@@ -330,6 +333,9 @@ has the callable functions (rules) shown below,
       pCvcLexer->IS_INTEGER_TOK(pCvcLexer)
  *  - 
  void
+      pCvcLexer->JOIN_IMAGE_TOK(pCvcLexer)
+ *  - 
+ void
       pCvcLexer->JOIN_TOK(pCvcLexer)
  *  - 
  void
@@ -988,6 +994,9 @@ struct CvcLexer_Ctx_struct
      (*mHELP_TOK)	(struct CvcLexer_Ctx_struct * ctx);
 
      void
+     (*mIDEN_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
      (*mIFF_TOK)	(struct CvcLexer_Ctx_struct * ctx);
 
      void
@@ -1012,6 +1021,9 @@ struct CvcLexer_Ctx_struct
      (*mIS_INTEGER_TOK)	(struct CvcLexer_Ctx_struct * ctx);
 
      void
+     (*mJOIN_IMAGE_TOK)	(struct CvcLexer_Ctx_struct * ctx);
+
+     void
      (*mJOIN_TOK)	(struct CvcLexer_Ctx_struct * ctx);
 
      void
@@ -1414,92 +1426,94 @@ lexer
 #define HEX_DIGIT      103
 #define HEX_LITERAL      104
 #define IDENTIFIER      105
-#define IFF_TOK      106
-#define IF_TOK      107
-#define IMPLIES_TOK      108
-#define INCLUDE_TOK      109
-#define INTDIV_TOK      110
-#define INTEGER_LITERAL      111
-#define INT_TOK      112
-#define IN_TOK      113
-#define IS_INTEGER_TOK      114
-#define JOIN_TOK      115
-#define LAMBDA      116
-#define LBRACE      117
-#define LBRACKET      118
-#define LEFTSHIFT_TOK      119
-#define LEQ_TOK      120
-#define LET_TOK      121
-#define LPAREN      122
-#define LT_TOK      123
-#define MEMBER_TOK      124
-#define MINUS_TOK      125
-#define MOD_TOK      126
-#define NOT_TOK      127
-#define NUMBER_OR_RANGEOP      128
-#define OF_TOK      129
-#define OPTION_TOK      130
-#define OR_TOK      131
-#define PARENHASH      132
-#define PATTERN_TOK      133
-#define PLUS_TOK      134
-#define POPTO_SCOPE_TOK      135
-#define POPTO_TOK      136
-#define POP_SCOPE_TOK      137
-#define POP_TOK      138
-#define PRINT_TOK      139
-#define PRINT_TYPE_TOK      140
-#define PRODUCT_TOK      141
-#define PUSH_SCOPE_TOK      142
-#define PUSH_TOK      143
-#define QUERY_TOK      144
-#define RBRACE      145
-#define RBRACKET      146
-#define REAL_TOK      147
-#define RESET_TOK      148
-#define RESTART_TOK      149
-#define RIGHTSHIFT_TOK      150
-#define RPAREN      151
-#define SEMICOLON      152
-#define SETS_CARD_TOK      153
-#define SET_TOK      154
-#define SQHASH      155
-#define STAR_TOK      156
-#define STRING_CHARAT_TOK      157
-#define STRING_CONCAT_TOK      158
-#define STRING_CONTAINS_TOK      159
-#define STRING_INDEXOF_TOK      160
-#define STRING_ITOS_TOK      161
-#define STRING_LENGTH_TOK      162
-#define STRING_LITERAL      163
-#define STRING_PREFIXOF_TOK      164
-#define STRING_REPLACE_TOK      165
-#define STRING_STOI_TOK      166
-#define STRING_STOU16_TOK      167
-#define STRING_STOU32_TOK      168
-#define STRING_SUBSTR_TOK      169
-#define STRING_SUFFIXOF_TOK      170
-#define STRING_TOK      171
-#define STRING_U16TOS_TOK      172
-#define STRING_U32TOS_TOK      173
-#define SUBSTITUTE_TOK      174
-#define SUBTYPE_TOK      175
-#define SX_TOK      176
-#define THEN_TOK      177
-#define TRACE_TOK      178
-#define TRANSCLOSURE_TOK      179
-#define TRANSFORM_TOK      180
-#define TRANSPOSE_TOK      181
-#define TRUE_TOK      182
-#define TUPLE_TOK      183
-#define TYPE_TOK      184
-#define UNDERSCORE      185
-#define UNIVSET_TOK      186
-#define UNTRACE_TOK      187
-#define WHERE_TOK      188
-#define WHITESPACE      189
-#define WITH_TOK      190
-#define XOR_TOK      191
+#define IDEN_TOK      106
+#define IFF_TOK      107
+#define IF_TOK      108
+#define IMPLIES_TOK      109
+#define INCLUDE_TOK      110
+#define INTDIV_TOK      111
+#define INTEGER_LITERAL      112
+#define INT_TOK      113
+#define IN_TOK      114
+#define IS_INTEGER_TOK      115
+#define JOIN_IMAGE_TOK      116
+#define JOIN_TOK      117
+#define LAMBDA      118
+#define LBRACE      119
+#define LBRACKET      120
+#define LEFTSHIFT_TOK      121
+#define LEQ_TOK      122
+#define LET_TOK      123
+#define LPAREN      124
+#define LT_TOK      125
+#define MEMBER_TOK      126
+#define MINUS_TOK      127
+#define MOD_TOK      128
+#define NOT_TOK      129
+#define NUMBER_OR_RANGEOP      130
+#define OF_TOK      131
+#define OPTION_TOK      132
+#define OR_TOK      133
+#define PARENHASH      134
+#define PATTERN_TOK      135
+#define PLUS_TOK      136
+#define POPTO_SCOPE_TOK      137
+#define POPTO_TOK      138
+#define POP_SCOPE_TOK      139
+#define POP_TOK      140
+#define PRINT_TOK      141
+#define PRINT_TYPE_TOK      142
+#define PRODUCT_TOK      143
+#define PUSH_SCOPE_TOK      144
+#define PUSH_TOK      145
+#define QUERY_TOK      146
+#define RBRACE      147
+#define RBRACKET      148
+#define REAL_TOK      149
+#define RESET_TOK      150
+#define RESTART_TOK      151
+#define RIGHTSHIFT_TOK      152
+#define RPAREN      153
+#define SEMICOLON      154
+#define SETS_CARD_TOK      155
+#define SET_TOK      156
+#define SQHASH      157
+#define STAR_TOK      158
+#define STRING_CHARAT_TOK      159
+#define STRING_CONCAT_TOK      160
+#define STRING_CONTAINS_TOK      161
+#define STRING_INDEXOF_TOK      162
+#define STRING_ITOS_TOK      163
+#define STRING_LENGTH_TOK      164
+#define STRING_LITERAL      165
+#define STRING_PREFIXOF_TOK      166
+#define STRING_REPLACE_TOK      167
+#define STRING_STOI_TOK      168
+#define STRING_STOU16_TOK      169
+#define STRING_STOU32_TOK      170
+#define STRING_SUBSTR_TOK      171
+#define STRING_SUFFIXOF_TOK      172
+#define STRING_TOK      173
+#define STRING_U16TOS_TOK      174
+#define STRING_U32TOS_TOK      175
+#define SUBSTITUTE_TOK      176
+#define SUBTYPE_TOK      177
+#define SX_TOK      178
+#define THEN_TOK      179
+#define TRACE_TOK      180
+#define TRANSCLOSURE_TOK      181
+#define TRANSFORM_TOK      182
+#define TRANSPOSE_TOK      183
+#define TRUE_TOK      184
+#define TUPLE_TOK      185
+#define TYPE_TOK      186
+#define UNDERSCORE      187
+#define UNIVSET_TOK      188
+#define UNTRACE_TOK      189
+#define WHERE_TOK      190
+#define WHITESPACE      191
+#define WITH_TOK      192
+#define XOR_TOK      193
 #ifdef	EOF
 #undef	EOF
 #define	EOF	ANTLR3_TOKEN_EOF
diff --git a/src/parser/cvc/CvcParser.c b/src/parser/cvc/CvcParser.c
index d51da5e..4b92cd6 100644
--- a/src/parser/cvc/CvcParser.c
+++ b/src/parser/cvc/CvcParser.c
@@ -1,8 +1,8 @@
 /** \file
  *  This C source file was generated by $ANTLR version 3.4
  *
- *     -  From the grammar source file : ../../../../../../src/parser/cvc/Cvc.g
- *     -                            On : 2017-03-16 01:03:03
+ *     -  From the grammar source file : ../../../../src/parser/cvc/Cvc.g
+ *     -                            On : 2017-07-10 10:01:30
  *     -                for the parser : CvcParserParser
  *
  * Editing it, at least manually, is not wise.
@@ -46,10 +46,11 @@
  */
 
 /**
- ** This file is part of CVC4.
- ** Copyright (c) 2009-2014  New York University and The University of Iowa
- ** See the file COPYING in the top-level source directory for licensing
- ** information.
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.
  **/
 
 /* End of Header action.
@@ -256,7 +257,7 @@ using namespace CVC4::parser;
 /** \brief Table of all token names in symbolic order, mainly used for
  *         error reporting.
  */
-pANTLR3_UINT8   CvcParserTokenNames[188+4]
+pANTLR3_UINT8   CvcParserTokenNames[190+4]
      = {
         (pANTLR3_UINT8) "<invalid>",       /* String to print to indicate an invalid token */
         (pANTLR3_UINT8) "<EOR>",
@@ -364,6 +365,7 @@ pANTLR3_UINT8   CvcParserTokenNames[188+4]
         (pANTLR3_UINT8) "HEX_DIGIT",
         (pANTLR3_UINT8) "HEX_LITERAL",
         (pANTLR3_UINT8) "IDENTIFIER",
+        (pANTLR3_UINT8) "IDEN_TOK",
         (pANTLR3_UINT8) "IFF_TOK",
         (pANTLR3_UINT8) "IF_TOK",
         (pANTLR3_UINT8) "IMPLIES_TOK",
@@ -373,6 +375,7 @@ pANTLR3_UINT8   CvcParserTokenNames[188+4]
         (pANTLR3_UINT8) "INT_TOK",
         (pANTLR3_UINT8) "IN_TOK",
         (pANTLR3_UINT8) "IS_INTEGER_TOK",
+        (pANTLR3_UINT8) "JOIN_IMAGE_TOK",
         (pANTLR3_UINT8) "JOIN_TOK",
         (pANTLR3_UINT8) "LAMBDA",
         (pANTLR3_UINT8) "LBRACE",
@@ -578,6 +581,9 @@ static
 	bvNegTerm    (pCvcParser ctx, CVC4::Expr& f);
 static 
  void
+	relationTerm    (pCvcParser ctx, CVC4::Expr& f);
+static 
+ void
 	postfixTerm    (pCvcParser ctx, CVC4::Expr& f);
 static 
  void
@@ -638,7 +644,7 @@ static	void ANTLR3_CDECL freeScope(void * scope)
 
 /** \brief Name of the grammar file that generated this code
  */
-static const char fileName[] = "../../../../../../src/parser/cvc/Cvc.g";
+static const char fileName[] = "../../../../src/parser/cvc/Cvc.g";
 
 /** \brief Return the name of the grammar file that generated this code.
  */
@@ -736,6 +742,7 @@ CvcParserNewSSD   (pANTLR3_COMMON_TOKEN_STREAM instream, pANTLR3_RECOGNIZER_SHAR
     ctx->bvBinaryOpTerm	= bvBinaryOpTerm;
     ctx->bvBinop	= bvBinop;
     ctx->bvNegTerm	= bvNegTerm;
+    ctx->relationTerm	= relationTerm;
     ctx->postfixTerm	= postfixTerm;
     ctx->bvTerm	= bvTerm;
     ctx->stringTerm	= stringTerm;
@@ -879,6 +886,8 @@ static pANTLR3_UINT8    *getTokenNames()
       case JOIN_TOK:
       case TRANSPOSE_TOK:
       case PRODUCT_TOK:
+      case IDEN_TOK:
+      case JOIN_IMAGE_TOK:  
       case TRANSCLOSURE_TOK: return 24;
       case LEQ_TOK:
       case LT_TOK:
@@ -920,6 +929,7 @@ static pANTLR3_UINT8    *getTokenNames()
       
       case PRODUCT_TOK: return kind::PRODUCT;
       case JOIN_TOK: return kind::JOIN;
+      case JOIN_IMAGE_TOK: return kind::JOIN_IMAGE;  
 
         // comparisonBinop
       case EQUAL_TOK: return kind::EQUAL;
@@ -1003,7 +1013,7 @@ static pANTLR3_UINT8    *getTokenNames()
       default: break;
       }
       Expr e = em->mkExpr(k, lhs, rhs);
-      return negate ? em->mkExpr(e.getType().isSet() ? kind::COMPLEMENT : kind::NOT, e) : e;
+      return negate ? em->mkExpr(kind::NOT, e) : e;
     }/* createPrecedenceTree() recursive variant */
 
     Expr createPrecedenceTree(Parser* parser, ExprManager* em,
@@ -1029,9 +1039,8 @@ static pANTLR3_UINT8    *getTokenNames()
 
     /** Add n NOTs to the front of e and return the result. */
     Expr addNots(ExprManager* em, size_t n, Expr e) {
-      Kind k = e.getType().isSet() ? kind::COMPLEMENT : kind::NOT;
       while(n-- > 0) {
-        e = em->mkExpr(k, e);
+        e = em->mkExpr(kind::NOT, e);
       }
       return e;
     }/* addNots() */
@@ -1040,2202 +1049,2205 @@ static pANTLR3_UINT8    *getTokenNames()
 
 /* Declare the bitsets
  */
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_parseExpr1800  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_parseExpr1800_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_parseExpr1800	= { FOLLOW_formula_in_parseExpr1800_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_EOF_in_parseExpr1807  */
-static	ANTLR3_BITWORD FOLLOW_EOF_in_parseExpr1807_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_parseExpr1807	= { FOLLOW_EOF_in_parseExpr1807_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_command_in_parseCommand1838  */
-static	ANTLR3_BITWORD FOLLOW_command_in_parseCommand1838_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_command_in_parseCommand1838	= { FOLLOW_command_in_parseCommand1838_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_parseCommand1845  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_parseCommand1845_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_parseCommand1845	= { FOLLOW_LPAREN_in_parseCommand1845_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_parseCommand1847  */
-static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_parseCommand1847_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_parseCommand1847	= { FOLLOW_IDENTIFIER_in_parseCommand1847_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_EOF_in_parseCommand1859  */
-static	ANTLR3_BITWORD FOLLOW_EOF_in_parseCommand1859_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_parseCommand1859	= { FOLLOW_EOF_in_parseCommand1859_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_mainCommand_in_command1878  */
-static	ANTLR3_BITWORD FOLLOW_mainCommand_in_command1878_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000001000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_mainCommand_in_command1878	= { FOLLOW_mainCommand_in_command1878_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMICOLON_in_command1881  */
-static	ANTLR3_BITWORD FOLLOW_SEMICOLON_in_command1881_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_SEMICOLON_in_command1881	= { FOLLOW_SEMICOLON_in_command1881_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMICOLON_in_command1889  */
-static	ANTLR3_BITWORD FOLLOW_SEMICOLON_in_command1889_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_SEMICOLON_in_command1889	= { FOLLOW_SEMICOLON_in_command1889_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LET_TOK_in_command1897  */
-static	ANTLR3_BITWORD FOLLOW_LET_TOK_in_command1897_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LET_TOK_in_command1897	= { FOLLOW_LET_TOK_in_command1897_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_typeOrVarLetDecl_in_command1907  */
-static	ANTLR3_BITWORD FOLLOW_typeOrVarLetDecl_in_command1907_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0002000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_typeOrVarLetDecl_in_command1907	= { FOLLOW_typeOrVarLetDecl_in_command1907_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_command1922  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_command1922_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_command1922	= { FOLLOW_COMMA_in_command1922_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_typeOrVarLetDecl_in_command1924  */
-static	ANTLR3_BITWORD FOLLOW_typeOrVarLetDecl_in_command1924_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0002000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_typeOrVarLetDecl_in_command1924	= { FOLLOW_typeOrVarLetDecl_in_command1924_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_IN_TOK_in_command1936  */
-static	ANTLR3_BITWORD FOLLOW_IN_TOK_in_command1936_bits[]	= { ANTLR3_UINT64_LIT(0x3F0E000000002C80), ANTLR3_UINT64_LIT(0x02002247A080FFC0), ANTLR3_UINT64_LIT(0x181440000131DF84) };
-static  ANTLR3_BITSET_LIST FOLLOW_IN_TOK_in_command1936	= { FOLLOW_IN_TOK_in_command1936_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_command_in_command1938  */
-static	ANTLR3_BITWORD FOLLOW_command_in_command1938_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_command_in_command1938	= { FOLLOW_command_in_command1938_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_command1965  */
-static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_command1965_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000001000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_command1965	= { FOLLOW_IDENTIFIER_in_command1965_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMICOLON_in_command1967  */
-static	ANTLR3_BITWORD FOLLOW_SEMICOLON_in_command1967_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_SEMICOLON_in_command1967	= { FOLLOW_SEMICOLON_in_command1967_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_letDecl_in_typeOrVarLetDecl1998  */
-static	ANTLR3_BITWORD FOLLOW_letDecl_in_typeOrVarLetDecl1998_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_letDecl_in_typeOrVarLetDecl1998	= { FOLLOW_letDecl_in_typeOrVarLetDecl1998_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_typeLetDecl_in_typeOrVarLetDecl2002  */
-static	ANTLR3_BITWORD FOLLOW_typeLetDecl_in_typeOrVarLetDecl2002_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_typeLetDecl_in_typeOrVarLetDecl2002	= { FOLLOW_typeLetDecl_in_typeOrVarLetDecl2002_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSERT_TOK_in_mainCommand2028  */
-static	ANTLR3_BITWORD FOLLOW_ASSERT_TOK_in_mainCommand2028_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_ASSERT_TOK_in_mainCommand2028	= { FOLLOW_ASSERT_TOK_in_mainCommand2028_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2030  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2030_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2030	= { FOLLOW_formula_in_mainCommand2030_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_QUERY_TOK_in_mainCommand2040  */
-static	ANTLR3_BITWORD FOLLOW_QUERY_TOK_in_mainCommand2040_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_QUERY_TOK_in_mainCommand2040	= { FOLLOW_QUERY_TOK_in_mainCommand2040_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2042  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2042_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2042	= { FOLLOW_formula_in_mainCommand2042_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_CHECKSAT_TOK_in_mainCommand2051  */
-static	ANTLR3_BITWORD FOLLOW_CHECKSAT_TOK_in_mainCommand2051_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C112), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_CHECKSAT_TOK_in_mainCommand2051	= { FOLLOW_CHECKSAT_TOK_in_mainCommand2051_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2053  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2053_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2053	= { FOLLOW_formula_in_mainCommand2053_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_OPTION_TOK_in_mainCommand2073  */
-static	ANTLR3_BITWORD FOLLOW_OPTION_TOK_in_mainCommand2073_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_OPTION_TOK_in_mainCommand2073	= { FOLLOW_OPTION_TOK_in_mainCommand2073_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_mainCommand2081  */
-static	ANTLR3_BITWORD FOLLOW_str_in_mainCommand2081_bits[]	= { ANTLR3_UINT64_LIT(0x4000000000008002), ANTLR3_UINT64_LIT(0x2400830002000000), ANTLR3_UINT64_LIT(0x0040000800000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_str_in_mainCommand2081	= { FOLLOW_str_in_mainCommand2081_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_mainCommand2086  */
-static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_mainCommand2086_bits[]	= { ANTLR3_UINT64_LIT(0x4000000000008002), ANTLR3_UINT64_LIT(0x2400830002000000), ANTLR3_UINT64_LIT(0x0040000800000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_mainCommand2086	= { FOLLOW_IDENTIFIER_in_mainCommand2086_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolicExpr_in_mainCommand2098  */
-static	ANTLR3_BITWORD FOLLOW_symbolicExpr_in_mainCommand2098_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbolicExpr_in_mainCommand2098	= { FOLLOW_symbolicExpr_in_mainCommand2098_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_TRUE_TOK_in_mainCommand2115  */
-static	ANTLR3_BITWORD FOLLOW_TRUE_TOK_in_mainCommand2115_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_TRUE_TOK_in_mainCommand2115	= { FOLLOW_TRUE_TOK_in_mainCommand2115_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FALSE_TOK_in_mainCommand2125  */
-static	ANTLR3_BITWORD FOLLOW_FALSE_TOK_in_mainCommand2125_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_FALSE_TOK_in_mainCommand2125	= { FOLLOW_FALSE_TOK_in_mainCommand2125_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_PUSH_TOK_in_mainCommand2154  */
-static	ANTLR3_BITWORD FOLLOW_PUSH_TOK_in_mainCommand2154_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_PUSH_TOK_in_mainCommand2154	= { FOLLOW_PUSH_TOK_in_mainCommand2154_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_mainCommand2160  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_mainCommand2160_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_mainCommand2160	= { FOLLOW_numeral_in_mainCommand2160_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_POP_TOK_in_mainCommand2189  */
-static	ANTLR3_BITWORD FOLLOW_POP_TOK_in_mainCommand2189_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_POP_TOK_in_mainCommand2189	= { FOLLOW_POP_TOK_in_mainCommand2189_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_mainCommand2195  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_mainCommand2195_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_mainCommand2195	= { FOLLOW_numeral_in_mainCommand2195_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_POPTO_TOK_in_mainCommand2223  */
-static	ANTLR3_BITWORD FOLLOW_POPTO_TOK_in_mainCommand2223_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_POPTO_TOK_in_mainCommand2223	= { FOLLOW_POPTO_TOK_in_mainCommand2223_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_mainCommand2227  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_mainCommand2227_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_mainCommand2227	= { FOLLOW_numeral_in_mainCommand2227_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_PUSH_SCOPE_TOK_in_mainCommand2247  */
-static	ANTLR3_BITWORD FOLLOW_PUSH_SCOPE_TOK_in_mainCommand2247_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_PUSH_SCOPE_TOK_in_mainCommand2247	= { FOLLOW_PUSH_SCOPE_TOK_in_mainCommand2247_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_mainCommand2251  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_mainCommand2251_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_mainCommand2251	= { FOLLOW_numeral_in_mainCommand2251_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_POP_SCOPE_TOK_in_mainCommand2264  */
-static	ANTLR3_BITWORD FOLLOW_POP_SCOPE_TOK_in_mainCommand2264_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_POP_SCOPE_TOK_in_mainCommand2264	= { FOLLOW_POP_SCOPE_TOK_in_mainCommand2264_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_mainCommand2268  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_mainCommand2268_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_mainCommand2268	= { FOLLOW_numeral_in_mainCommand2268_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_POPTO_SCOPE_TOK_in_mainCommand2281  */
-static	ANTLR3_BITWORD FOLLOW_POPTO_SCOPE_TOK_in_mainCommand2281_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_POPTO_SCOPE_TOK_in_mainCommand2281	= { FOLLOW_POPTO_SCOPE_TOK_in_mainCommand2281_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_mainCommand2285  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_mainCommand2285_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_mainCommand2285	= { FOLLOW_numeral_in_mainCommand2285_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RESET_TOK_in_mainCommand2299  */
-static	ANTLR3_BITWORD FOLLOW_RESET_TOK_in_mainCommand2299_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RESET_TOK_in_mainCommand2299	= { FOLLOW_RESET_TOK_in_mainCommand2299_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RESET_TOK_in_mainCommand2312  */
-static	ANTLR3_BITWORD FOLLOW_RESET_TOK_in_mainCommand2312_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000400) };
-static  ANTLR3_BITSET_LIST FOLLOW_RESET_TOK_in_mainCommand2312	= { FOLLOW_RESET_TOK_in_mainCommand2312_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSERTIONS_TOK_in_mainCommand2314  */
-static	ANTLR3_BITWORD FOLLOW_ASSERTIONS_TOK_in_mainCommand2314_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_ASSERTIONS_TOK_in_mainCommand2314	= { FOLLOW_ASSERTIONS_TOK_in_mainCommand2314_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DATATYPE_TOK_in_mainCommand2342  */
-static	ANTLR3_BITWORD FOLLOW_DATATYPE_TOK_in_mainCommand2342_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_DATATYPE_TOK_in_mainCommand2342	= { FOLLOW_DATATYPE_TOK_in_mainCommand2342_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypeDef_in_mainCommand2354  */
-static	ANTLR3_BITWORD FOLLOW_datatypeDef_in_mainCommand2354_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_datatypeDef_in_mainCommand2354	= { FOLLOW_datatypeDef_in_mainCommand2354_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_mainCommand2363  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_mainCommand2363_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_mainCommand2363	= { FOLLOW_COMMA_in_mainCommand2363_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypeDef_in_mainCommand2365  */
-static	ANTLR3_BITWORD FOLLOW_datatypeDef_in_mainCommand2365_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_datatypeDef_in_mainCommand2365	= { FOLLOW_datatypeDef_in_mainCommand2365_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_END_TOK_in_mainCommand2375  */
-static	ANTLR3_BITWORD FOLLOW_END_TOK_in_mainCommand2375_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_END_TOK_in_mainCommand2375	= { FOLLOW_END_TOK_in_mainCommand2375_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_CONTEXT_TOK_in_mainCommand2388  */
-static	ANTLR3_BITWORD FOLLOW_CONTEXT_TOK_in_mainCommand2388_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_CONTEXT_TOK_in_mainCommand2388	= { FOLLOW_CONTEXT_TOK_in_mainCommand2388_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_mainCommand2398  */
-static	ANTLR3_BITWORD FOLLOW_str_in_mainCommand2398_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_str_in_mainCommand2398	= { FOLLOW_str_in_mainCommand2398_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_mainCommand2403  */
-static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_mainCommand2403_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_mainCommand2403	= { FOLLOW_IDENTIFIER_in_mainCommand2403_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FORGET_TOK_in_mainCommand2436  */
-static	ANTLR3_BITWORD FOLLOW_FORGET_TOK_in_mainCommand2436_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_FORGET_TOK_in_mainCommand2436	= { FOLLOW_FORGET_TOK_in_mainCommand2436_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_mainCommand2438  */
-static	ANTLR3_BITWORD FOLLOW_identifier_in_mainCommand2438_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_mainCommand2438	= { FOLLOW_identifier_in_mainCommand2438_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_TYPE_TOK_in_mainCommand2452  */
-static	ANTLR3_BITWORD FOLLOW_GET_TYPE_TOK_in_mainCommand2452_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_GET_TYPE_TOK_in_mainCommand2452	= { FOLLOW_GET_TYPE_TOK_in_mainCommand2452_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2454  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2454_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2454	= { FOLLOW_formula_in_mainCommand2454_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_CHECK_TYPE_TOK_in_mainCommand2468  */
-static	ANTLR3_BITWORD FOLLOW_CHECK_TYPE_TOK_in_mainCommand2468_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_CHECK_TYPE_TOK_in_mainCommand2468	= { FOLLOW_CHECK_TYPE_TOK_in_mainCommand2468_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2470  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2470_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2470	= { FOLLOW_formula_in_mainCommand2470_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_mainCommand2473  */
-static	ANTLR3_BITWORD FOLLOW_COLON_in_mainCommand2473_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_mainCommand2473	= { FOLLOW_COLON_in_mainCommand2473_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_mainCommand2475  */
-static	ANTLR3_BITWORD FOLLOW_type_in_mainCommand2475_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_type_in_mainCommand2475	= { FOLLOW_type_in_mainCommand2475_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_CHILD_TOK_in_mainCommand2489  */
-static	ANTLR3_BITWORD FOLLOW_GET_CHILD_TOK_in_mainCommand2489_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_GET_CHILD_TOK_in_mainCommand2489	= { FOLLOW_GET_CHILD_TOK_in_mainCommand2489_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2491  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2491_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2491	= { FOLLOW_formula_in_mainCommand2491_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_mainCommand2496  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_mainCommand2496_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_mainCommand2496	= { FOLLOW_numeral_in_mainCommand2496_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_OP_TOK_in_mainCommand2509  */
-static	ANTLR3_BITWORD FOLLOW_GET_OP_TOK_in_mainCommand2509_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_GET_OP_TOK_in_mainCommand2509	= { FOLLOW_GET_OP_TOK_in_mainCommand2509_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_parseExpr1820  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_parseExpr1820_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_parseExpr1820	= { FOLLOW_formula_in_parseExpr1820_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EOF_in_parseExpr1827  */
+static	ANTLR3_BITWORD FOLLOW_EOF_in_parseExpr1827_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_parseExpr1827	= { FOLLOW_EOF_in_parseExpr1827_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_command_in_parseCommand1858  */
+static	ANTLR3_BITWORD FOLLOW_command_in_parseCommand1858_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_command_in_parseCommand1858	= { FOLLOW_command_in_parseCommand1858_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_parseCommand1865  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_parseCommand1865_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_parseCommand1865	= { FOLLOW_LPAREN_in_parseCommand1865_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_parseCommand1867  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_parseCommand1867_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_parseCommand1867	= { FOLLOW_IDENTIFIER_in_parseCommand1867_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EOF_in_parseCommand1879  */
+static	ANTLR3_BITWORD FOLLOW_EOF_in_parseCommand1879_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_parseCommand1879	= { FOLLOW_EOF_in_parseCommand1879_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_mainCommand_in_command1898  */
+static	ANTLR3_BITWORD FOLLOW_mainCommand_in_command1898_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000004000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_mainCommand_in_command1898	= { FOLLOW_mainCommand_in_command1898_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMICOLON_in_command1901  */
+static	ANTLR3_BITWORD FOLLOW_SEMICOLON_in_command1901_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_SEMICOLON_in_command1901	= { FOLLOW_SEMICOLON_in_command1901_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMICOLON_in_command1909  */
+static	ANTLR3_BITWORD FOLLOW_SEMICOLON_in_command1909_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_SEMICOLON_in_command1909	= { FOLLOW_SEMICOLON_in_command1909_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LET_TOK_in_command1917  */
+static	ANTLR3_BITWORD FOLLOW_LET_TOK_in_command1917_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LET_TOK_in_command1917	= { FOLLOW_LET_TOK_in_command1917_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_typeOrVarLetDecl_in_command1927  */
+static	ANTLR3_BITWORD FOLLOW_typeOrVarLetDecl_in_command1927_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0004000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_typeOrVarLetDecl_in_command1927	= { FOLLOW_typeOrVarLetDecl_in_command1927_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_command1942  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_command1942_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_command1942	= { FOLLOW_COMMA_in_command1942_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_typeOrVarLetDecl_in_command1944  */
+static	ANTLR3_BITWORD FOLLOW_typeOrVarLetDecl_in_command1944_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0004000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_typeOrVarLetDecl_in_command1944	= { FOLLOW_typeOrVarLetDecl_in_command1944_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IN_TOK_in_command1956  */
+static	ANTLR3_BITWORD FOLLOW_IN_TOK_in_command1956_bits[]	= { ANTLR3_UINT64_LIT(0x3F0E000000002C80), ANTLR3_UINT64_LIT(0x08004247A080FFC0), ANTLR3_UINT64_LIT(0x6051000004C77E10) };
+static  ANTLR3_BITSET_LIST FOLLOW_IN_TOK_in_command1956	= { FOLLOW_IN_TOK_in_command1956_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_command_in_command1958  */
+static	ANTLR3_BITWORD FOLLOW_command_in_command1958_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_command_in_command1958	= { FOLLOW_command_in_command1958_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_command1985  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_command1985_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000004000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_command1985	= { FOLLOW_IDENTIFIER_in_command1985_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMICOLON_in_command1987  */
+static	ANTLR3_BITWORD FOLLOW_SEMICOLON_in_command1987_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_SEMICOLON_in_command1987	= { FOLLOW_SEMICOLON_in_command1987_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_letDecl_in_typeOrVarLetDecl2018  */
+static	ANTLR3_BITWORD FOLLOW_letDecl_in_typeOrVarLetDecl2018_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_letDecl_in_typeOrVarLetDecl2018	= { FOLLOW_letDecl_in_typeOrVarLetDecl2018_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_typeLetDecl_in_typeOrVarLetDecl2022  */
+static	ANTLR3_BITWORD FOLLOW_typeLetDecl_in_typeOrVarLetDecl2022_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_typeLetDecl_in_typeOrVarLetDecl2022	= { FOLLOW_typeLetDecl_in_typeOrVarLetDecl2022_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSERT_TOK_in_mainCommand2048  */
+static	ANTLR3_BITWORD FOLLOW_ASSERT_TOK_in_mainCommand2048_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_ASSERT_TOK_in_mainCommand2048	= { FOLLOW_ASSERT_TOK_in_mainCommand2048_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2050  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2050_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2050	= { FOLLOW_formula_in_mainCommand2050_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_QUERY_TOK_in_mainCommand2060  */
+static	ANTLR3_BITWORD FOLLOW_QUERY_TOK_in_mainCommand2060_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_QUERY_TOK_in_mainCommand2060	= { FOLLOW_QUERY_TOK_in_mainCommand2060_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2062  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2062_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2062	= { FOLLOW_formula_in_mainCommand2062_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CHECKSAT_TOK_in_mainCommand2071  */
+static	ANTLR3_BITWORD FOLLOW_CHECKSAT_TOK_in_mainCommand2071_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C112), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_CHECKSAT_TOK_in_mainCommand2071	= { FOLLOW_CHECKSAT_TOK_in_mainCommand2071_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2073  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2073_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2073	= { FOLLOW_formula_in_mainCommand2073_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_OPTION_TOK_in_mainCommand2093  */
+static	ANTLR3_BITWORD FOLLOW_OPTION_TOK_in_mainCommand2093_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000), ANTLR3_UINT64_LIT(0x0000002000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_OPTION_TOK_in_mainCommand2093	= { FOLLOW_OPTION_TOK_in_mainCommand2093_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_mainCommand2101  */
+static	ANTLR3_BITWORD FOLLOW_str_in_mainCommand2101_bits[]	= { ANTLR3_UINT64_LIT(0x4000000000008002), ANTLR3_UINT64_LIT(0x9001030002000000), ANTLR3_UINT64_LIT(0x0100002000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_mainCommand2101	= { FOLLOW_str_in_mainCommand2101_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_mainCommand2106  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_mainCommand2106_bits[]	= { ANTLR3_UINT64_LIT(0x4000000000008002), ANTLR3_UINT64_LIT(0x9001030002000000), ANTLR3_UINT64_LIT(0x0100002000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_mainCommand2106	= { FOLLOW_IDENTIFIER_in_mainCommand2106_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolicExpr_in_mainCommand2118  */
+static	ANTLR3_BITWORD FOLLOW_symbolicExpr_in_mainCommand2118_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbolicExpr_in_mainCommand2118	= { FOLLOW_symbolicExpr_in_mainCommand2118_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TRUE_TOK_in_mainCommand2135  */
+static	ANTLR3_BITWORD FOLLOW_TRUE_TOK_in_mainCommand2135_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_TRUE_TOK_in_mainCommand2135	= { FOLLOW_TRUE_TOK_in_mainCommand2135_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FALSE_TOK_in_mainCommand2145  */
+static	ANTLR3_BITWORD FOLLOW_FALSE_TOK_in_mainCommand2145_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FALSE_TOK_in_mainCommand2145	= { FOLLOW_FALSE_TOK_in_mainCommand2145_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PUSH_TOK_in_mainCommand2174  */
+static	ANTLR3_BITWORD FOLLOW_PUSH_TOK_in_mainCommand2174_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_PUSH_TOK_in_mainCommand2174	= { FOLLOW_PUSH_TOK_in_mainCommand2174_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_mainCommand2180  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_mainCommand2180_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_mainCommand2180	= { FOLLOW_numeral_in_mainCommand2180_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_POP_TOK_in_mainCommand2209  */
+static	ANTLR3_BITWORD FOLLOW_POP_TOK_in_mainCommand2209_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_POP_TOK_in_mainCommand2209	= { FOLLOW_POP_TOK_in_mainCommand2209_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_mainCommand2215  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_mainCommand2215_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_mainCommand2215	= { FOLLOW_numeral_in_mainCommand2215_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_POPTO_TOK_in_mainCommand2243  */
+static	ANTLR3_BITWORD FOLLOW_POPTO_TOK_in_mainCommand2243_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_POPTO_TOK_in_mainCommand2243	= { FOLLOW_POPTO_TOK_in_mainCommand2243_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_mainCommand2247  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_mainCommand2247_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_mainCommand2247	= { FOLLOW_numeral_in_mainCommand2247_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PUSH_SCOPE_TOK_in_mainCommand2267  */
+static	ANTLR3_BITWORD FOLLOW_PUSH_SCOPE_TOK_in_mainCommand2267_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_PUSH_SCOPE_TOK_in_mainCommand2267	= { FOLLOW_PUSH_SCOPE_TOK_in_mainCommand2267_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_mainCommand2271  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_mainCommand2271_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_mainCommand2271	= { FOLLOW_numeral_in_mainCommand2271_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_POP_SCOPE_TOK_in_mainCommand2284  */
+static	ANTLR3_BITWORD FOLLOW_POP_SCOPE_TOK_in_mainCommand2284_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_POP_SCOPE_TOK_in_mainCommand2284	= { FOLLOW_POP_SCOPE_TOK_in_mainCommand2284_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_mainCommand2288  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_mainCommand2288_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_mainCommand2288	= { FOLLOW_numeral_in_mainCommand2288_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_POPTO_SCOPE_TOK_in_mainCommand2301  */
+static	ANTLR3_BITWORD FOLLOW_POPTO_SCOPE_TOK_in_mainCommand2301_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_POPTO_SCOPE_TOK_in_mainCommand2301	= { FOLLOW_POPTO_SCOPE_TOK_in_mainCommand2301_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_mainCommand2305  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_mainCommand2305_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_mainCommand2305	= { FOLLOW_numeral_in_mainCommand2305_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RESET_TOK_in_mainCommand2319  */
+static	ANTLR3_BITWORD FOLLOW_RESET_TOK_in_mainCommand2319_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RESET_TOK_in_mainCommand2319	= { FOLLOW_RESET_TOK_in_mainCommand2319_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RESET_TOK_in_mainCommand2332  */
+static	ANTLR3_BITWORD FOLLOW_RESET_TOK_in_mainCommand2332_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000400) };
+static  ANTLR3_BITSET_LIST FOLLOW_RESET_TOK_in_mainCommand2332	= { FOLLOW_RESET_TOK_in_mainCommand2332_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSERTIONS_TOK_in_mainCommand2334  */
+static	ANTLR3_BITWORD FOLLOW_ASSERTIONS_TOK_in_mainCommand2334_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_ASSERTIONS_TOK_in_mainCommand2334	= { FOLLOW_ASSERTIONS_TOK_in_mainCommand2334_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DATATYPE_TOK_in_mainCommand2362  */
+static	ANTLR3_BITWORD FOLLOW_DATATYPE_TOK_in_mainCommand2362_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DATATYPE_TOK_in_mainCommand2362	= { FOLLOW_DATATYPE_TOK_in_mainCommand2362_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypeDef_in_mainCommand2374  */
+static	ANTLR3_BITWORD FOLLOW_datatypeDef_in_mainCommand2374_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_datatypeDef_in_mainCommand2374	= { FOLLOW_datatypeDef_in_mainCommand2374_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_mainCommand2383  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_mainCommand2383_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_mainCommand2383	= { FOLLOW_COMMA_in_mainCommand2383_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypeDef_in_mainCommand2385  */
+static	ANTLR3_BITWORD FOLLOW_datatypeDef_in_mainCommand2385_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_datatypeDef_in_mainCommand2385	= { FOLLOW_datatypeDef_in_mainCommand2385_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_END_TOK_in_mainCommand2395  */
+static	ANTLR3_BITWORD FOLLOW_END_TOK_in_mainCommand2395_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_END_TOK_in_mainCommand2395	= { FOLLOW_END_TOK_in_mainCommand2395_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CONTEXT_TOK_in_mainCommand2408  */
+static	ANTLR3_BITWORD FOLLOW_CONTEXT_TOK_in_mainCommand2408_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020000000000), ANTLR3_UINT64_LIT(0x0000002000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_CONTEXT_TOK_in_mainCommand2408	= { FOLLOW_CONTEXT_TOK_in_mainCommand2408_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_mainCommand2418  */
+static	ANTLR3_BITWORD FOLLOW_str_in_mainCommand2418_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_mainCommand2418	= { FOLLOW_str_in_mainCommand2418_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_mainCommand2423  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_mainCommand2423_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_mainCommand2423	= { FOLLOW_IDENTIFIER_in_mainCommand2423_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FORGET_TOK_in_mainCommand2456  */
+static	ANTLR3_BITWORD FOLLOW_FORGET_TOK_in_mainCommand2456_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FORGET_TOK_in_mainCommand2456	= { FOLLOW_FORGET_TOK_in_mainCommand2456_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_mainCommand2458  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_mainCommand2458_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_mainCommand2458	= { FOLLOW_identifier_in_mainCommand2458_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_TYPE_TOK_in_mainCommand2472  */
+static	ANTLR3_BITWORD FOLLOW_GET_TYPE_TOK_in_mainCommand2472_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_GET_TYPE_TOK_in_mainCommand2472	= { FOLLOW_GET_TYPE_TOK_in_mainCommand2472_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2474  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2474_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2474	= { FOLLOW_formula_in_mainCommand2474_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CHECK_TYPE_TOK_in_mainCommand2488  */
+static	ANTLR3_BITWORD FOLLOW_CHECK_TYPE_TOK_in_mainCommand2488_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_CHECK_TYPE_TOK_in_mainCommand2488	= { FOLLOW_CHECK_TYPE_TOK_in_mainCommand2488_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2490  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2490_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2490	= { FOLLOW_formula_in_mainCommand2490_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_mainCommand2493  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_mainCommand2493_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1902020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_mainCommand2493	= { FOLLOW_COLON_in_mainCommand2493_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_mainCommand2495  */
+static	ANTLR3_BITWORD FOLLOW_type_in_mainCommand2495_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_mainCommand2495	= { FOLLOW_type_in_mainCommand2495_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_CHILD_TOK_in_mainCommand2509  */
+static	ANTLR3_BITWORD FOLLOW_GET_CHILD_TOK_in_mainCommand2509_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_GET_CHILD_TOK_in_mainCommand2509	= { FOLLOW_GET_CHILD_TOK_in_mainCommand2509_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2511  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2511_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2511	= { FOLLOW_formula_in_mainCommand2511_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_VALUE_TOK_in_mainCommand2525  */
-static	ANTLR3_BITWORD FOLLOW_GET_VALUE_TOK_in_mainCommand2525_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_GET_VALUE_TOK_in_mainCommand2525	= { FOLLOW_GET_VALUE_TOK_in_mainCommand2525_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2527  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2527_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2527	= { FOLLOW_formula_in_mainCommand2527_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_SUBSTITUTE_TOK_in_mainCommand2541  */
-static	ANTLR3_BITWORD FOLLOW_SUBSTITUTE_TOK_in_mainCommand2541_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_SUBSTITUTE_TOK_in_mainCommand2541	= { FOLLOW_SUBSTITUTE_TOK_in_mainCommand2541_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_mainCommand2543  */
-static	ANTLR3_BITWORD FOLLOW_identifier_in_mainCommand2543_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_mainCommand2543	= { FOLLOW_identifier_in_mainCommand2543_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_mainCommand2546  */
-static	ANTLR3_BITWORD FOLLOW_COLON_in_mainCommand2546_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_mainCommand2546	= { FOLLOW_COLON_in_mainCommand2546_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_mainCommand2552  */
-static	ANTLR3_BITWORD FOLLOW_type_in_mainCommand2552_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
-static  ANTLR3_BITSET_LIST FOLLOW_type_in_mainCommand2552	= { FOLLOW_type_in_mainCommand2552_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_mainCommand2555  */
-static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_mainCommand2555_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_mainCommand2555	= { FOLLOW_EQUAL_TOK_in_mainCommand2555_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2557  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2557_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0040000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2557	= { FOLLOW_formula_in_mainCommand2557_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACKET_in_mainCommand2560  */
-static	ANTLR3_BITWORD FOLLOW_LBRACKET_in_mainCommand2560_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LBRACKET_in_mainCommand2560	= { FOLLOW_LBRACKET_in_mainCommand2560_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_mainCommand2566  */
-static	ANTLR3_BITWORD FOLLOW_identifier_in_mainCommand2566_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000001000) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_mainCommand2566	= { FOLLOW_identifier_in_mainCommand2566_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSIGN_TOK_in_mainCommand2569  */
-static	ANTLR3_BITWORD FOLLOW_ASSIGN_TOK_in_mainCommand2569_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_ASSIGN_TOK_in_mainCommand2569	= { FOLLOW_ASSIGN_TOK_in_mainCommand2569_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2571  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2571_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2571	= { FOLLOW_formula_in_mainCommand2571_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACKET_in_mainCommand2574  */
-static	ANTLR3_BITWORD FOLLOW_RBRACKET_in_mainCommand2574_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RBRACKET_in_mainCommand2574	= { FOLLOW_RBRACKET_in_mainCommand2574_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DBG_TOK_in_mainCommand2593  */
-static	ANTLR3_BITWORD FOLLOW_DBG_TOK_in_mainCommand2593_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_DBG_TOK_in_mainCommand2593	= { FOLLOW_DBG_TOK_in_mainCommand2593_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_mainCommand2603  */
-static	ANTLR3_BITWORD FOLLOW_str_in_mainCommand2603_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_str_in_mainCommand2603	= { FOLLOW_str_in_mainCommand2603_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_mainCommand2608  */
-static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_mainCommand2608_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_mainCommand2608	= { FOLLOW_IDENTIFIER_in_mainCommand2608_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_TRACE_TOK_in_mainCommand2641  */
-static	ANTLR3_BITWORD FOLLOW_TRACE_TOK_in_mainCommand2641_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_TRACE_TOK_in_mainCommand2641	= { FOLLOW_TRACE_TOK_in_mainCommand2641_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_mainCommand2651  */
-static	ANTLR3_BITWORD FOLLOW_str_in_mainCommand2651_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_str_in_mainCommand2651	= { FOLLOW_str_in_mainCommand2651_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_mainCommand2656  */
-static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_mainCommand2656_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_mainCommand2656	= { FOLLOW_IDENTIFIER_in_mainCommand2656_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_UNTRACE_TOK_in_mainCommand2688  */
-static	ANTLR3_BITWORD FOLLOW_UNTRACE_TOK_in_mainCommand2688_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_UNTRACE_TOK_in_mainCommand2688	= { FOLLOW_UNTRACE_TOK_in_mainCommand2688_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_mainCommand2698  */
-static	ANTLR3_BITWORD FOLLOW_str_in_mainCommand2698_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_str_in_mainCommand2698	= { FOLLOW_str_in_mainCommand2698_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_mainCommand2703  */
-static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_mainCommand2703_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_mainCommand2703	= { FOLLOW_IDENTIFIER_in_mainCommand2703_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_HELP_TOK_in_mainCommand2736  */
-static	ANTLR3_BITWORD FOLLOW_HELP_TOK_in_mainCommand2736_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_HELP_TOK_in_mainCommand2736	= { FOLLOW_HELP_TOK_in_mainCommand2736_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_mainCommand2746  */
-static	ANTLR3_BITWORD FOLLOW_str_in_mainCommand2746_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_str_in_mainCommand2746	= { FOLLOW_str_in_mainCommand2746_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_mainCommand2751  */
-static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_mainCommand2751_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_mainCommand2751	= { FOLLOW_IDENTIFIER_in_mainCommand2751_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_TRANSFORM_TOK_in_mainCommand2792  */
-static	ANTLR3_BITWORD FOLLOW_TRANSFORM_TOK_in_mainCommand2792_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_TRANSFORM_TOK_in_mainCommand2792	= { FOLLOW_TRANSFORM_TOK_in_mainCommand2792_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2794  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2794_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2794	= { FOLLOW_formula_in_mainCommand2794_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_PRINT_TOK_in_mainCommand2808  */
-static	ANTLR3_BITWORD FOLLOW_PRINT_TOK_in_mainCommand2808_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_PRINT_TOK_in_mainCommand2808	= { FOLLOW_PRINT_TOK_in_mainCommand2808_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2810  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2810_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2810	= { FOLLOW_formula_in_mainCommand2810_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_PRINT_TYPE_TOK_in_mainCommand2823  */
-static	ANTLR3_BITWORD FOLLOW_PRINT_TYPE_TOK_in_mainCommand2823_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_PRINT_TYPE_TOK_in_mainCommand2823	= { FOLLOW_PRINT_TYPE_TOK_in_mainCommand2823_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_mainCommand2825  */
-static	ANTLR3_BITWORD FOLLOW_type_in_mainCommand2825_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_type_in_mainCommand2825	= { FOLLOW_type_in_mainCommand2825_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_CALL_TOK_in_mainCommand2839  */
-static	ANTLR3_BITWORD FOLLOW_CALL_TOK_in_mainCommand2839_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_CALL_TOK_in_mainCommand2839	= { FOLLOW_CALL_TOK_in_mainCommand2839_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_mainCommand2841  */
-static	ANTLR3_BITWORD FOLLOW_identifier_in_mainCommand2841_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_mainCommand2841	= { FOLLOW_identifier_in_mainCommand2841_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2844  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2844_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2844	= { FOLLOW_formula_in_mainCommand2844_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_ECHO_TOK_in_mainCommand2858  */
-static	ANTLR3_BITWORD FOLLOW_ECHO_TOK_in_mainCommand2858_bits[]	= { ANTLR3_UINT64_LIT(0x4000000000008002), ANTLR3_UINT64_LIT(0x2000830000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_ECHO_TOK_in_mainCommand2858	= { FOLLOW_ECHO_TOK_in_mainCommand2858_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleSymbolicExpr_in_mainCommand2866  */
-static	ANTLR3_BITWORD FOLLOW_simpleSymbolicExpr_in_mainCommand2866_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_simpleSymbolicExpr_in_mainCommand2866	= { FOLLOW_simpleSymbolicExpr_in_mainCommand2866_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_EXIT_TOK_in_mainCommand2896  */
-static	ANTLR3_BITWORD FOLLOW_EXIT_TOK_in_mainCommand2896_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_EXIT_TOK_in_mainCommand2896	= { FOLLOW_EXIT_TOK_in_mainCommand2896_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INCLUDE_TOK_in_mainCommand2909  */
-static	ANTLR3_BITWORD FOLLOW_INCLUDE_TOK_in_mainCommand2909_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INCLUDE_TOK_in_mainCommand2909	= { FOLLOW_INCLUDE_TOK_in_mainCommand2909_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_mainCommand2919  */
-static	ANTLR3_BITWORD FOLLOW_str_in_mainCommand2919_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_str_in_mainCommand2919	= { FOLLOW_str_in_mainCommand2919_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_mainCommand2924  */
-static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_mainCommand2924_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_mainCommand2924	= { FOLLOW_IDENTIFIER_in_mainCommand2924_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DUMP_PROOF_TOK_in_mainCommand2957  */
-static	ANTLR3_BITWORD FOLLOW_DUMP_PROOF_TOK_in_mainCommand2957_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_DUMP_PROOF_TOK_in_mainCommand2957	= { FOLLOW_DUMP_PROOF_TOK_in_mainCommand2957_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DUMP_UNSAT_CORE_TOK_in_mainCommand2970  */
-static	ANTLR3_BITWORD FOLLOW_DUMP_UNSAT_CORE_TOK_in_mainCommand2970_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_DUMP_UNSAT_CORE_TOK_in_mainCommand2970	= { FOLLOW_DUMP_UNSAT_CORE_TOK_in_mainCommand2970_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_mainCommand2983  */
-static	ANTLR3_BITWORD FOLLOW_set_in_mainCommand2983_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_set_in_mainCommand2983	= { FOLLOW_set_in_mainCommand2983_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_mainCommand3054  */
-static	ANTLR3_BITWORD FOLLOW_set_in_mainCommand3054_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_set_in_mainCommand3054	= { FOLLOW_set_in_mainCommand3054_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COUNTEREXAMPLE_TOK_in_mainCommand3079  */
-static	ANTLR3_BITWORD FOLLOW_COUNTEREXAMPLE_TOK_in_mainCommand3079_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_COUNTEREXAMPLE_TOK_in_mainCommand3079	= { FOLLOW_COUNTEREXAMPLE_TOK_in_mainCommand3079_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COUNTERMODEL_TOK_in_mainCommand3091  */
-static	ANTLR3_BITWORD FOLLOW_COUNTERMODEL_TOK_in_mainCommand3091_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_COUNTERMODEL_TOK_in_mainCommand3091	= { FOLLOW_COUNTERMODEL_TOK_in_mainCommand3091_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_ARITH_VAR_ORDER_TOK_in_mainCommand3104  */
-static	ANTLR3_BITWORD FOLLOW_ARITH_VAR_ORDER_TOK_in_mainCommand3104_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_ARITH_VAR_ORDER_TOK_in_mainCommand3104	= { FOLLOW_ARITH_VAR_ORDER_TOK_in_mainCommand3104_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_mainCommand3106  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_mainCommand3106_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_mainCommand3106	= { FOLLOW_LPAREN_in_mainCommand3106_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand3108  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand3108_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand3108	= { FOLLOW_formula_in_mainCommand3108_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_mainCommand3113  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_mainCommand3113_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_mainCommand3113	= { FOLLOW_COMMA_in_mainCommand3113_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand3115  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand3115_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand3115	= { FOLLOW_formula_in_mainCommand3115_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_mainCommand3121  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_mainCommand3121_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_mainCommand3121	= { FOLLOW_RPAREN_in_mainCommand3121_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_CONTINUE_TOK_in_mainCommand3134  */
-static	ANTLR3_BITWORD FOLLOW_CONTINUE_TOK_in_mainCommand3134_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_CONTINUE_TOK_in_mainCommand3134	= { FOLLOW_CONTINUE_TOK_in_mainCommand3134_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RESTART_TOK_in_mainCommand3146  */
-static	ANTLR3_BITWORD FOLLOW_RESTART_TOK_in_mainCommand3146_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_RESTART_TOK_in_mainCommand3146	= { FOLLOW_RESTART_TOK_in_mainCommand3146_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand3148  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand3148_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand3148	= { FOLLOW_formula_in_mainCommand3148_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_toplevelDeclaration_in_mainCommand3157  */
-static	ANTLR3_BITWORD FOLLOW_toplevelDeclaration_in_mainCommand3157_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_toplevelDeclaration_in_mainCommand3157	= { FOLLOW_toplevelDeclaration_in_mainCommand3157_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3177  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3177_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3177	= { FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3177_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_MINUS_TOK_in_simpleSymbolicExpr3189  */
-static	ANTLR3_BITWORD FOLLOW_MINUS_TOK_in_simpleSymbolicExpr3189_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_MINUS_TOK_in_simpleSymbolicExpr3189	= { FOLLOW_MINUS_TOK_in_simpleSymbolicExpr3189_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3191  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3191_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3191	= { FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3191_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExpr3203  */
-static	ANTLR3_BITWORD FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExpr3203_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExpr3203	= { FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExpr3203_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_HEX_LITERAL_in_simpleSymbolicExpr3215  */
-static	ANTLR3_BITWORD FOLLOW_HEX_LITERAL_in_simpleSymbolicExpr3215_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_HEX_LITERAL_in_simpleSymbolicExpr3215	= { FOLLOW_HEX_LITERAL_in_simpleSymbolicExpr3215_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BINARY_LITERAL_in_simpleSymbolicExpr3227  */
-static	ANTLR3_BITWORD FOLLOW_BINARY_LITERAL_in_simpleSymbolicExpr3227_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_BINARY_LITERAL_in_simpleSymbolicExpr3227	= { FOLLOW_BINARY_LITERAL_in_simpleSymbolicExpr3227_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_simpleSymbolicExpr3239  */
-static	ANTLR3_BITWORD FOLLOW_str_in_simpleSymbolicExpr3239_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_str_in_simpleSymbolicExpr3239	= { FOLLOW_str_in_simpleSymbolicExpr3239_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_simpleSymbolicExpr3252  */
-static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_simpleSymbolicExpr3252_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_simpleSymbolicExpr3252	= { FOLLOW_IDENTIFIER_in_simpleSymbolicExpr3252_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleSymbolicExpr_in_symbolicExpr3277  */
-static	ANTLR3_BITWORD FOLLOW_simpleSymbolicExpr_in_symbolicExpr3277_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_simpleSymbolicExpr_in_symbolicExpr3277	= { FOLLOW_simpleSymbolicExpr_in_symbolicExpr3277_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_symbolicExpr3284  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_symbolicExpr3284_bits[]	= { ANTLR3_UINT64_LIT(0x4000000000008000), ANTLR3_UINT64_LIT(0x2400830000000000), ANTLR3_UINT64_LIT(0x0000000800800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_symbolicExpr3284	= { FOLLOW_LPAREN_in_symbolicExpr3284_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolicExpr_in_symbolicExpr3287  */
-static	ANTLR3_BITWORD FOLLOW_symbolicExpr_in_symbolicExpr3287_bits[]	= { ANTLR3_UINT64_LIT(0x4000000000008000), ANTLR3_UINT64_LIT(0x2400830000000000), ANTLR3_UINT64_LIT(0x0000000800800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbolicExpr_in_symbolicExpr3287	= { FOLLOW_symbolicExpr_in_symbolicExpr3287_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_symbolicExpr3295  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_symbolicExpr3295_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_symbolicExpr3295	= { FOLLOW_RPAREN_in_symbolicExpr3295_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifierList_in_toplevelDeclaration3322  */
-static	ANTLR3_BITWORD FOLLOW_identifierList_in_toplevelDeclaration3322_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifierList_in_toplevelDeclaration3322	= { FOLLOW_identifierList_in_toplevelDeclaration3322_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_toplevelDeclaration3325  */
-static	ANTLR3_BITWORD FOLLOW_COLON_in_toplevelDeclaration3325_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x010088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_toplevelDeclaration3325	= { FOLLOW_COLON_in_toplevelDeclaration3325_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_declareVariables_in_toplevelDeclaration3333  */
-static	ANTLR3_BITWORD FOLLOW_declareVariables_in_toplevelDeclaration3333_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_declareVariables_in_toplevelDeclaration3333	= { FOLLOW_declareVariables_in_toplevelDeclaration3333_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_declareTypes_in_toplevelDeclaration3342  */
-static	ANTLR3_BITWORD FOLLOW_declareTypes_in_toplevelDeclaration3342_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_declareTypes_in_toplevelDeclaration3342	= { FOLLOW_declareTypes_in_toplevelDeclaration3342_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifierList_in_boundVarDecl3366  */
-static	ANTLR3_BITWORD FOLLOW_identifierList_in_boundVarDecl3366_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifierList_in_boundVarDecl3366	= { FOLLOW_identifierList_in_boundVarDecl3366_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_boundVarDecl3369  */
-static	ANTLR3_BITWORD FOLLOW_COLON_in_boundVarDecl3369_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_boundVarDecl3369	= { FOLLOW_COLON_in_boundVarDecl3369_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_declareVariables_in_boundVarDecl3375  */
-static	ANTLR3_BITWORD FOLLOW_declareVariables_in_boundVarDecl3375_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_declareVariables_in_boundVarDecl3375	= { FOLLOW_declareVariables_in_boundVarDecl3375_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarDecl_in_boundVarDecls3396  */
-static	ANTLR3_BITWORD FOLLOW_boundVarDecl_in_boundVarDecls3396_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_boundVarDecl_in_boundVarDecls3396	= { FOLLOW_boundVarDecl_in_boundVarDecls3396_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_boundVarDecls3401  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_boundVarDecls3401_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_boundVarDecls3401	= { FOLLOW_COMMA_in_boundVarDecls3401_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarDecl_in_boundVarDecls3403  */
-static	ANTLR3_BITWORD FOLLOW_boundVarDecl_in_boundVarDecls3403_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_boundVarDecl_in_boundVarDecls3403	= { FOLLOW_boundVarDecl_in_boundVarDecls3403_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3426  */
-static	ANTLR3_BITWORD FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3426_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3426	= { FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3426_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_boundVarDeclsReturn3431  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_boundVarDeclsReturn3431_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_boundVarDeclsReturn3431	= { FOLLOW_COMMA_in_boundVarDeclsReturn3431_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3433  */
-static	ANTLR3_BITWORD FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3433_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3433	= { FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3433_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifierList_in_boundVarDeclReturn3456  */
-static	ANTLR3_BITWORD FOLLOW_identifierList_in_boundVarDeclReturn3456_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifierList_in_boundVarDeclReturn3456	= { FOLLOW_identifierList_in_boundVarDeclReturn3456_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_boundVarDeclReturn3459  */
-static	ANTLR3_BITWORD FOLLOW_COLON_in_boundVarDeclReturn3459_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_boundVarDeclReturn3459	= { FOLLOW_COLON_in_boundVarDeclReturn3459_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_boundVarDeclReturn3461  */
-static	ANTLR3_BITWORD FOLLOW_type_in_boundVarDeclReturn3461_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_type_in_boundVarDeclReturn3461	= { FOLLOW_type_in_boundVarDeclReturn3461_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_TYPE_TOK_in_declareTypes3495  */
-static	ANTLR3_BITWORD FOLLOW_TYPE_TOK_in_declareTypes3495_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_TYPE_TOK_in_declareTypes3495	= { FOLLOW_TYPE_TOK_in_declareTypes3495_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_TYPE_TOK_in_declareTypes3514  */
-static	ANTLR3_BITWORD FOLLOW_TYPE_TOK_in_declareTypes3514_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
-static  ANTLR3_BITSET_LIST FOLLOW_TYPE_TOK_in_declareTypes3514	= { FOLLOW_TYPE_TOK_in_declareTypes3514_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_declareTypes3516  */
-static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_declareTypes3516_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_declareTypes3516	= { FOLLOW_EQUAL_TOK_in_declareTypes3516_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_declareTypes3518  */
-static	ANTLR3_BITWORD FOLLOW_type_in_declareTypes3518_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_type_in_declareTypes3518	= { FOLLOW_type_in_declareTypes3518_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_declareVariables3552  */
-static	ANTLR3_BITWORD FOLLOW_type_in_declareVariables3552_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000000100000) };
-static  ANTLR3_BITSET_LIST FOLLOW_type_in_declareVariables3552	= { FOLLOW_type_in_declareVariables3552_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_declareVariables3557  */
-static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_declareVariables3557_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_declareVariables3557	= { FOLLOW_EQUAL_TOK_in_declareVariables3557_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_declareVariables3559  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_declareVariables3559_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_declareVariables3559	= { FOLLOW_formula_in_declareVariables3559_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_identifierList3590  */
-static	ANTLR3_BITWORD FOLLOW_identifier_in_identifierList3590_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_identifierList3590	= { FOLLOW_identifier_in_identifierList3590_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_identifierList3601  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_identifierList3601_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_identifierList3601	= { FOLLOW_COMMA_in_identifierList3601_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_identifierList3603  */
-static	ANTLR3_BITWORD FOLLOW_identifier_in_identifierList3603_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_identifierList3603	= { FOLLOW_identifier_in_identifierList3603_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_identifier3625  */
-static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_identifier3625_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_identifier3625	= { FOLLOW_IDENTIFIER_in_identifier3625_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedTypePossiblyFunctionLHS_in_type3658  */
-static	ANTLR3_BITWORD FOLLOW_restrictedTypePossiblyFunctionLHS_in_type3658_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000202) };
-static  ANTLR3_BITSET_LIST FOLLOW_restrictedTypePossiblyFunctionLHS_in_type3658	= { FOLLOW_restrictedTypePossiblyFunctionLHS_in_type3658_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_ARROW_TOK_in_type3673  */
-static	ANTLR3_BITWORD FOLLOW_ARROW_TOK_in_type3673_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_ARROW_TOK_in_type3673	= { FOLLOW_ARROW_TOK_in_type3673_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_type3675  */
-static	ANTLR3_BITWORD FOLLOW_type_in_type3675_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_type_in_type3675	= { FOLLOW_type_in_type3675_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LET_TOK_in_type3700  */
-static	ANTLR3_BITWORD FOLLOW_LET_TOK_in_type3700_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LET_TOK_in_type3700	= { FOLLOW_LET_TOK_in_type3700_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_typeLetDecl_in_type3708  */
-static	ANTLR3_BITWORD FOLLOW_typeLetDecl_in_type3708_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0002000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_typeLetDecl_in_type3708	= { FOLLOW_typeLetDecl_in_type3708_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_type3713  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_type3713_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_type3713	= { FOLLOW_COMMA_in_type3713_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_typeLetDecl_in_type3715  */
-static	ANTLR3_BITWORD FOLLOW_typeLetDecl_in_type3715_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0002000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_typeLetDecl_in_type3715	= { FOLLOW_typeLetDecl_in_type3715_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_IN_TOK_in_type3721  */
-static	ANTLR3_BITWORD FOLLOW_IN_TOK_in_type3721_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_IN_TOK_in_type3721	= { FOLLOW_IN_TOK_in_type3721_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_type3723  */
-static	ANTLR3_BITWORD FOLLOW_type_in_type3723_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_type_in_type3723	= { FOLLOW_type_in_type3723_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedTypePossiblyFunctionLHS_in_restrictedType3759  */
-static	ANTLR3_BITWORD FOLLOW_restrictedTypePossiblyFunctionLHS_in_restrictedType3759_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_restrictedTypePossiblyFunctionLHS_in_restrictedType3759	= { FOLLOW_restrictedTypePossiblyFunctionLHS_in_restrictedType3759_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS3793  */
-static	ANTLR3_BITWORD FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS3793_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0040000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS3793	= { FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS3793_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_parameterization_in_restrictedTypePossiblyFunctionLHS3800  */
-static	ANTLR3_BITWORD FOLLOW_parameterization_in_restrictedTypePossiblyFunctionLHS3800_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_parameterization_in_restrictedTypePossiblyFunctionLHS3800	= { FOLLOW_parameterization_in_restrictedTypePossiblyFunctionLHS3800_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_ARRAY_TOK_in_restrictedTypePossiblyFunctionLHS3821  */
-static	ANTLR3_BITWORD FOLLOW_ARRAY_TOK_in_restrictedTypePossiblyFunctionLHS3821_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0441020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_ARRAY_TOK_in_restrictedTypePossiblyFunctionLHS3821	= { FOLLOW_ARRAY_TOK_in_restrictedTypePossiblyFunctionLHS3821_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3823  */
-static	ANTLR3_BITWORD FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3823_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3823	= { FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3823_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3826  */
-static	ANTLR3_BITWORD FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3826_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0441020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3826	= { FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3826_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3828  */
-static	ANTLR3_BITWORD FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3828_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3828	= { FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3828_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_SET_TOK_in_restrictedTypePossiblyFunctionLHS3841  */
-static	ANTLR3_BITWORD FOLLOW_SET_TOK_in_restrictedTypePossiblyFunctionLHS3841_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_SET_TOK_in_restrictedTypePossiblyFunctionLHS3841	= { FOLLOW_SET_TOK_in_restrictedTypePossiblyFunctionLHS3841_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3843  */
-static	ANTLR3_BITWORD FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3843_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0441020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3843	= { FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3843_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3845  */
-static	ANTLR3_BITWORD FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3845_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3845	= { FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3845_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_SUBTYPE_TOK_in_restrictedTypePossiblyFunctionLHS3868  */
-static	ANTLR3_BITWORD FOLLOW_SUBTYPE_TOK_in_restrictedTypePossiblyFunctionLHS3868_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_SUBTYPE_TOK_in_restrictedTypePossiblyFunctionLHS3868	= { FOLLOW_SUBTYPE_TOK_in_restrictedTypePossiblyFunctionLHS3868_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS3870  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS3870_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS3870	= { FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS3870_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3888  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3888_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3888	= { FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3888_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3893  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3893_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3893	= { FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3893_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3895  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3895_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3895	= { FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3895_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS3901  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS3901_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS3901	= { FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS3901_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3920  */
-static	ANTLR3_BITWORD FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3920_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x2000800000000000), ANTLR3_UINT64_LIT(0x0200000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3920	= { FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3920_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3924  */
-static	ANTLR3_BITWORD FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3924_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000020) };
-static  ANTLR3_BITSET_LIST FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3924	= { FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3924_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOTDOT_in_restrictedTypePossiblyFunctionLHS3926  */
-static	ANTLR3_BITWORD FOLLOW_DOTDOT_in_restrictedTypePossiblyFunctionLHS3926_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x2000800000000000), ANTLR3_UINT64_LIT(0x0200000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_DOTDOT_in_restrictedTypePossiblyFunctionLHS3926	= { FOLLOW_DOTDOT_in_restrictedTypePossiblyFunctionLHS3926_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3930  */
-static	ANTLR3_BITWORD FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3930_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
-static  ANTLR3_BITSET_LIST FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3930	= { FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3930_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3932  */
-static	ANTLR3_BITWORD FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3932_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3932	= { FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3932_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3951  */
-static	ANTLR3_BITWORD FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3951_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C0C0000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3951	= { FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3951_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3955  */
-static	ANTLR3_BITWORD FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3955_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
-static  ANTLR3_BITSET_LIST FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3955	= { FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3955_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3966  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3966_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3966	= { FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3966_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3968  */
-static	ANTLR3_BITWORD FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3968_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
-static  ANTLR3_BITSET_LIST FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3968	= { FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3968_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3979  */
-static	ANTLR3_BITWORD FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3979_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3979	= { FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3979_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_SQHASH_in_restrictedTypePossiblyFunctionLHS3998  */
-static	ANTLR3_BITWORD FOLLOW_SQHASH_in_restrictedTypePossiblyFunctionLHS3998_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000022000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_SQHASH_in_restrictedTypePossiblyFunctionLHS3998	= { FOLLOW_SQHASH_in_restrictedTypePossiblyFunctionLHS3998_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4002  */
-static	ANTLR3_BITWORD FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4002_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4002	= { FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4002_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4005  */
-static	ANTLR3_BITWORD FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4005_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4005	= { FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4005_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4007  */
-static	ANTLR3_BITWORD FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4007_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000002000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4007	= { FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4007_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4018  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4018_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4018	= { FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4018_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4020  */
-static	ANTLR3_BITWORD FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4020_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4020	= { FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4020_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4023  */
-static	ANTLR3_BITWORD FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4023_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4023	= { FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4023_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4025  */
-static	ANTLR3_BITWORD FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4025_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000002000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4025	= { FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4025_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_HASHSQ_in_restrictedTypePossiblyFunctionLHS4036  */
-static	ANTLR3_BITWORD FOLLOW_HASHSQ_in_restrictedTypePossiblyFunctionLHS4036_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_HASHSQ_in_restrictedTypePossiblyFunctionLHS4036	= { FOLLOW_HASHSQ_in_restrictedTypePossiblyFunctionLHS4036_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BITVECTOR_TOK_in_restrictedTypePossiblyFunctionLHS4055  */
-static	ANTLR3_BITWORD FOLLOW_BITVECTOR_TOK_in_restrictedTypePossiblyFunctionLHS4055_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BITVECTOR_TOK_in_restrictedTypePossiblyFunctionLHS4055	= { FOLLOW_BITVECTOR_TOK_in_restrictedTypePossiblyFunctionLHS4055_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4057  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4057_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4057	= { FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4057_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_restrictedTypePossiblyFunctionLHS4061  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_restrictedTypePossiblyFunctionLHS4061_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_restrictedTypePossiblyFunctionLHS4061	= { FOLLOW_numeral_in_restrictedTypePossiblyFunctionLHS4061_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4063  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4063_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4063	= { FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4063_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_TOK_in_restrictedTypePossiblyFunctionLHS4082  */
-static	ANTLR3_BITWORD FOLLOW_STRING_TOK_in_restrictedTypePossiblyFunctionLHS4082_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_STRING_TOK_in_restrictedTypePossiblyFunctionLHS4082	= { FOLLOW_STRING_TOK_in_restrictedTypePossiblyFunctionLHS4082_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BOOLEAN_TOK_in_restrictedTypePossiblyFunctionLHS4097  */
-static	ANTLR3_BITWORD FOLLOW_BOOLEAN_TOK_in_restrictedTypePossiblyFunctionLHS4097_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_BOOLEAN_TOK_in_restrictedTypePossiblyFunctionLHS4097	= { FOLLOW_BOOLEAN_TOK_in_restrictedTypePossiblyFunctionLHS4097_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_REAL_TOK_in_restrictedTypePossiblyFunctionLHS4105  */
-static	ANTLR3_BITWORD FOLLOW_REAL_TOK_in_restrictedTypePossiblyFunctionLHS4105_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_REAL_TOK_in_restrictedTypePossiblyFunctionLHS4105	= { FOLLOW_REAL_TOK_in_restrictedTypePossiblyFunctionLHS4105_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INT_TOK_in_restrictedTypePossiblyFunctionLHS4113  */
-static	ANTLR3_BITWORD FOLLOW_INT_TOK_in_restrictedTypePossiblyFunctionLHS4113_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_INT_TOK_in_restrictedTypePossiblyFunctionLHS4113	= { FOLLOW_INT_TOK_in_restrictedTypePossiblyFunctionLHS4113_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4128  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4128_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4128	= { FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4128_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4130  */
-static	ANTLR3_BITWORD FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4130_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4130	= { FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4130_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4141  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4141_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4141	= { FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4141_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4143  */
-static	ANTLR3_BITWORD FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4143_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4143	= { FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4143_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4151  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4151_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4151	= { FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4151_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACKET_in_parameterization4176  */
-static	ANTLR3_BITWORD FOLLOW_LBRACKET_in_parameterization4176_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0441020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LBRACKET_in_parameterization4176	= { FOLLOW_LBRACKET_in_parameterization4176_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_parameterization4178  */
-static	ANTLR3_BITWORD FOLLOW_restrictedType_in_parameterization4178_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
-static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_parameterization4178	= { FOLLOW_restrictedType_in_parameterization4178_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_parameterization4189  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_parameterization4189_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0441020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_parameterization4189	= { FOLLOW_COMMA_in_parameterization4189_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_parameterization4191  */
-static	ANTLR3_BITWORD FOLLOW_restrictedType_in_parameterization4191_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
-static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_parameterization4191	= { FOLLOW_restrictedType_in_parameterization4191_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACKET_in_parameterization4199  */
-static	ANTLR3_BITWORD FOLLOW_RBRACKET_in_parameterization4199_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RBRACKET_in_parameterization4199	= { FOLLOW_RBRACKET_in_parameterization4199_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_UNDERSCORE_in_bound4216  */
-static	ANTLR3_BITWORD FOLLOW_UNDERSCORE_in_bound4216_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_UNDERSCORE_in_bound4216	= { FOLLOW_UNDERSCORE_in_bound4216_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_integer_in_bound4226  */
-static	ANTLR3_BITWORD FOLLOW_integer_in_bound4226_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_integer_in_bound4226	= { FOLLOW_integer_in_bound4226_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_typeLetDecl4245  */
-static	ANTLR3_BITWORD FOLLOW_identifier_in_typeLetDecl4245_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_typeLetDecl4245	= { FOLLOW_identifier_in_typeLetDecl4245_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_typeLetDecl4249  */
-static	ANTLR3_BITWORD FOLLOW_COLON_in_typeLetDecl4249_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_typeLetDecl4249	= { FOLLOW_COLON_in_typeLetDecl4249_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_TYPE_TOK_in_typeLetDecl4251  */
-static	ANTLR3_BITWORD FOLLOW_TYPE_TOK_in_typeLetDecl4251_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
-static  ANTLR3_BITSET_LIST FOLLOW_TYPE_TOK_in_typeLetDecl4251	= { FOLLOW_TYPE_TOK_in_typeLetDecl4251_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_typeLetDecl4255  */
-static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_typeLetDecl4255_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0441020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_typeLetDecl4255	= { FOLLOW_EQUAL_TOK_in_typeLetDecl4255_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_typeLetDecl4257  */
-static	ANTLR3_BITWORD FOLLOW_restrictedType_in_typeLetDecl4257_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_typeLetDecl4257	= { FOLLOW_restrictedType_in_typeLetDecl4257_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_nots_in_formula4287  */
-static	ANTLR3_BITWORD FOLLOW_nots_in_formula4287_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_nots_in_formula4287	= { FOLLOW_nots_in_formula4287_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_prefixFormula_in_formula4295  */
-static	ANTLR3_BITWORD FOLLOW_prefixFormula_in_formula4295_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_prefixFormula_in_formula4295	= { FOLLOW_prefixFormula_in_formula4295_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_comparison_in_formula4312  */
-static	ANTLR3_BITWORD FOLLOW_comparison_in_formula4312_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000042), ANTLR3_UINT64_LIT(0x0008140000000000), ANTLR3_UINT64_LIT(0x8000000000002008) };
-static  ANTLR3_BITSET_LIST FOLLOW_comparison_in_formula4312	= { FOLLOW_comparison_in_formula4312_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_morecomparisons_in_formula4329  */
-static	ANTLR3_BITWORD FOLLOW_morecomparisons_in_formula4329_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_morecomparisons_in_formula4329	= { FOLLOW_morecomparisons_in_formula4329_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_booleanBinop_in_morecomparisons4368  */
-static	ANTLR3_BITWORD FOLLOW_booleanBinop_in_morecomparisons4368_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_booleanBinop_in_morecomparisons4368	= { FOLLOW_booleanBinop_in_morecomparisons4368_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_nots_in_morecomparisons4379  */
-static	ANTLR3_BITWORD FOLLOW_nots_in_morecomparisons4379_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_nots_in_morecomparisons4379	= { FOLLOW_nots_in_morecomparisons4379_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_prefixFormula_in_morecomparisons4387  */
-static	ANTLR3_BITWORD FOLLOW_prefixFormula_in_morecomparisons4387_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_prefixFormula_in_morecomparisons4387	= { FOLLOW_prefixFormula_in_morecomparisons4387_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_comparison_in_morecomparisons4404  */
-static	ANTLR3_BITWORD FOLLOW_comparison_in_morecomparisons4404_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000042), ANTLR3_UINT64_LIT(0x0008140000000000), ANTLR3_UINT64_LIT(0x8000000000002008) };
-static  ANTLR3_BITSET_LIST FOLLOW_comparison_in_morecomparisons4404	= { FOLLOW_comparison_in_morecomparisons4404_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_morecomparisons_in_morecomparisons4421  */
-static	ANTLR3_BITWORD FOLLOW_morecomparisons_in_morecomparisons4421_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_morecomparisons_in_morecomparisons4421	= { FOLLOW_morecomparisons_in_morecomparisons4421_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_NOT_TOK_in_nots4450  */
-static	ANTLR3_BITWORD FOLLOW_NOT_TOK_in_nots4450_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x8000000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_NOT_TOK_in_nots4450	= { FOLLOW_NOT_TOK_in_nots4450_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FORALL_TOK_in_prefixFormula4482  */
-static	ANTLR3_BITWORD FOLLOW_FORALL_TOK_in_prefixFormula4482_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_FORALL_TOK_in_prefixFormula4482	= { FOLLOW_FORALL_TOK_in_prefixFormula4482_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_EXISTS_TOK_in_prefixFormula4488  */
-static	ANTLR3_BITWORD FOLLOW_EXISTS_TOK_in_prefixFormula4488_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_EXISTS_TOK_in_prefixFormula4488	= { FOLLOW_EXISTS_TOK_in_prefixFormula4488_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_prefixFormula4500  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_prefixFormula4500_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_prefixFormula4500	= { FOLLOW_LPAREN_in_prefixFormula4500_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarDecl_in_prefixFormula4506  */
-static	ANTLR3_BITWORD FOLLOW_boundVarDecl_in_prefixFormula4506_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_boundVarDecl_in_prefixFormula4506	= { FOLLOW_boundVarDecl_in_prefixFormula4506_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_prefixFormula4521  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_prefixFormula4521_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_prefixFormula4521	= { FOLLOW_COMMA_in_prefixFormula4521_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarDecl_in_prefixFormula4523  */
-static	ANTLR3_BITWORD FOLLOW_boundVarDecl_in_prefixFormula4523_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_boundVarDecl_in_prefixFormula4523	= { FOLLOW_boundVarDecl_in_prefixFormula4523_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_prefixFormula4541  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_prefixFormula4541_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_prefixFormula4541	= { FOLLOW_RPAREN_in_prefixFormula4541_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_prefixFormula4549  */
-static	ANTLR3_BITWORD FOLLOW_COLON_in_prefixFormula4549_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000030) };
-static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_prefixFormula4549	= { FOLLOW_COLON_in_prefixFormula4549_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_instantiationPatterns_in_prefixFormula4551  */
-static	ANTLR3_BITWORD FOLLOW_instantiationPatterns_in_prefixFormula4551_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_instantiationPatterns_in_prefixFormula4551	= { FOLLOW_instantiationPatterns_in_prefixFormula4551_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_prefixFormula4555  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_prefixFormula4555_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_prefixFormula4555	= { FOLLOW_formula_in_prefixFormula4555_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LET_TOK_in_prefixFormula4574  */
-static	ANTLR3_BITWORD FOLLOW_LET_TOK_in_prefixFormula4574_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LET_TOK_in_prefixFormula4574	= { FOLLOW_LET_TOK_in_prefixFormula4574_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_letDecl_in_prefixFormula4582  */
-static	ANTLR3_BITWORD FOLLOW_letDecl_in_prefixFormula4582_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0002000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_letDecl_in_prefixFormula4582	= { FOLLOW_letDecl_in_prefixFormula4582_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_prefixFormula4586  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_prefixFormula4586_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_prefixFormula4586	= { FOLLOW_COMMA_in_prefixFormula4586_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_letDecl_in_prefixFormula4588  */
-static	ANTLR3_BITWORD FOLLOW_letDecl_in_prefixFormula4588_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0002000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_letDecl_in_prefixFormula4588	= { FOLLOW_letDecl_in_prefixFormula4588_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_IN_TOK_in_prefixFormula4597  */
-static	ANTLR3_BITWORD FOLLOW_IN_TOK_in_prefixFormula4597_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_IN_TOK_in_prefixFormula4597	= { FOLLOW_IN_TOK_in_prefixFormula4597_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_prefixFormula4599  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_prefixFormula4599_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_prefixFormula4599	= { FOLLOW_formula_in_prefixFormula4599_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LAMBDA_in_prefixFormula4614  */
-static	ANTLR3_BITWORD FOLLOW_LAMBDA_in_prefixFormula4614_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LAMBDA_in_prefixFormula4614	= { FOLLOW_LAMBDA_in_prefixFormula4614_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_prefixFormula4618  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_prefixFormula4618_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_prefixFormula4618	= { FOLLOW_LPAREN_in_prefixFormula4618_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarDeclsReturn_in_prefixFormula4624  */
-static	ANTLR3_BITWORD FOLLOW_boundVarDeclsReturn_in_prefixFormula4624_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_boundVarDeclsReturn_in_prefixFormula4624	= { FOLLOW_boundVarDeclsReturn_in_prefixFormula4624_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_prefixFormula4631  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_prefixFormula4631_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_prefixFormula4631	= { FOLLOW_RPAREN_in_prefixFormula4631_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_prefixFormula4633  */
-static	ANTLR3_BITWORD FOLLOW_COLON_in_prefixFormula4633_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_prefixFormula4633	= { FOLLOW_COLON_in_prefixFormula4633_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_prefixFormula4635  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_prefixFormula4635_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_prefixFormula4635	= { FOLLOW_formula_in_prefixFormula4635_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_PATTERN_TOK_in_instantiationPatterns4663  */
-static	ANTLR3_BITWORD FOLLOW_PATTERN_TOK_in_instantiationPatterns4663_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_PATTERN_TOK_in_instantiationPatterns4663	= { FOLLOW_PATTERN_TOK_in_instantiationPatterns4663_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_instantiationPatterns4665  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_instantiationPatterns4665_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_instantiationPatterns4665	= { FOLLOW_LPAREN_in_instantiationPatterns4665_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_instantiationPatterns4667  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_instantiationPatterns4667_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_instantiationPatterns4667	= { FOLLOW_formula_in_instantiationPatterns4667_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_instantiationPatterns4673  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_instantiationPatterns4673_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_instantiationPatterns4673	= { FOLLOW_COMMA_in_instantiationPatterns4673_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_instantiationPatterns4675  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_instantiationPatterns4675_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_instantiationPatterns4675	= { FOLLOW_formula_in_instantiationPatterns4675_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_instantiationPatterns4683  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_instantiationPatterns4683_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_instantiationPatterns4683	= { FOLLOW_RPAREN_in_instantiationPatterns4683_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_instantiationPatterns4685  */
-static	ANTLR3_BITWORD FOLLOW_COLON_in_instantiationPatterns4685_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000020) };
-static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_instantiationPatterns4685	= { FOLLOW_COLON_in_instantiationPatterns4685_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_letDecl4722  */
-static	ANTLR3_BITWORD FOLLOW_identifier_in_letDecl4722_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_letDecl4722	= { FOLLOW_identifier_in_letDecl4722_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_letDecl4725  */
-static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_letDecl4725_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_letDecl4725	= { FOLLOW_EQUAL_TOK_in_letDecl4725_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_letDecl4727  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_letDecl4727_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_letDecl4727	= { FOLLOW_formula_in_letDecl4727_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_comparison4808  */
-static	ANTLR3_BITWORD FOLLOW_term_in_comparison4808_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x1900000848100001) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_comparison4808	= { FOLLOW_term_in_comparison4808_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_comparisonBinop_in_comparison4819  */
-static	ANTLR3_BITWORD FOLLOW_comparisonBinop_in_comparison4819_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA4248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_comparisonBinop_in_comparison4819	= { FOLLOW_comparisonBinop_in_comparison4819_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_comparison4822  */
-static	ANTLR3_BITWORD FOLLOW_term_in_comparison4822_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x1900000848100001) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_comparison4822	= { FOLLOW_term_in_comparison4822_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_uminusTerm_in_term4977  */
-static	ANTLR3_BITWORD FOLLOW_uminusTerm_in_term4977_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x6000400001000008), ANTLR3_UINT64_LIT(0x4000000010000040) };
-static  ANTLR3_BITSET_LIST FOLLOW_uminusTerm_in_term4977	= { FOLLOW_uminusTerm_in_term4977_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_WITH_TOK_in_term4986  */
-static	ANTLR3_BITWORD FOLLOW_WITH_TOK_in_term4986_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0040000000000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_WITH_TOK_in_term4986	= { FOLLOW_WITH_TOK_in_term4986_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_arrayStore_in_term4996  */
-static	ANTLR3_BITWORD FOLLOW_arrayStore_in_term4996_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_arrayStore_in_term4996	= { FOLLOW_arrayStore_in_term4996_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_term5001  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_term5001_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0040000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_term5001	= { FOLLOW_COMMA_in_term5001_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_arrayStore_in_term5003  */
-static	ANTLR3_BITWORD FOLLOW_arrayStore_in_term5003_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_arrayStore_in_term5003	= { FOLLOW_arrayStore_in_term5003_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_term5017  */
-static	ANTLR3_BITWORD FOLLOW_DOT_in_term5017_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000820000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_DOT_in_term5017	= { FOLLOW_DOT_in_term5017_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_tupleStore_in_term5021  */
-static	ANTLR3_BITWORD FOLLOW_tupleStore_in_term5021_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_tupleStore_in_term5021	= { FOLLOW_tupleStore_in_term5021_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_term5026  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_term5026_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_term5026	= { FOLLOW_COMMA_in_term5026_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_term5028  */
-static	ANTLR3_BITWORD FOLLOW_DOT_in_term5028_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_DOT_in_term5028	= { FOLLOW_DOT_in_term5028_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_tupleStore_in_term5030  */
-static	ANTLR3_BITWORD FOLLOW_tupleStore_in_term5030_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_tupleStore_in_term5030	= { FOLLOW_tupleStore_in_term5030_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordStore_in_term5050  */
-static	ANTLR3_BITWORD FOLLOW_recordStore_in_term5050_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_recordStore_in_term5050	= { FOLLOW_recordStore_in_term5050_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_term5055  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_term5055_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_term5055	= { FOLLOW_COMMA_in_term5055_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_term5057  */
-static	ANTLR3_BITWORD FOLLOW_DOT_in_term5057_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_DOT_in_term5057	= { FOLLOW_DOT_in_term5057_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordStore_in_term5059  */
-static	ANTLR3_BITWORD FOLLOW_recordStore_in_term5059_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_recordStore_in_term5059	= { FOLLOW_recordStore_in_term5059_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_arithmeticBinop_in_term5085  */
-static	ANTLR3_BITWORD FOLLOW_arithmeticBinop_in_term5085_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA4248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_arithmeticBinop_in_term5085	= { FOLLOW_arithmeticBinop_in_term5085_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_uminusTerm_in_term5088  */
-static	ANTLR3_BITWORD FOLLOW_uminusTerm_in_term5088_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x6000400001000008), ANTLR3_UINT64_LIT(0x0000000010000040) };
-static  ANTLR3_BITSET_LIST FOLLOW_uminusTerm_in_term5088	= { FOLLOW_uminusTerm_in_term5088_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACKET_in_arrayStore5129  */
-static	ANTLR3_BITWORD FOLLOW_LBRACKET_in_arrayStore5129_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LBRACKET_in_arrayStore5129	= { FOLLOW_LBRACKET_in_arrayStore5129_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_arrayStore5131  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_arrayStore5131_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_arrayStore5131	= { FOLLOW_formula_in_arrayStore5131_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACKET_in_arrayStore5134  */
-static	ANTLR3_BITWORD FOLLOW_RBRACKET_in_arrayStore5134_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000001000), ANTLR3_UINT64_LIT(0x0040000000000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_RBRACKET_in_arrayStore5134	= { FOLLOW_RBRACKET_in_arrayStore5134_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_arrayStore_in_arrayStore5150  */
-static	ANTLR3_BITWORD FOLLOW_arrayStore_in_arrayStore5150_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_arrayStore_in_arrayStore5150	= { FOLLOW_arrayStore_in_arrayStore5150_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_arrayStore5161  */
-static	ANTLR3_BITWORD FOLLOW_DOT_in_arrayStore5161_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000820000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_DOT_in_arrayStore5161	= { FOLLOW_DOT_in_arrayStore5161_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_tupleStore_in_arrayStore5165  */
-static	ANTLR3_BITWORD FOLLOW_tupleStore_in_arrayStore5165_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_tupleStore_in_arrayStore5165	= { FOLLOW_tupleStore_in_arrayStore5165_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordStore_in_arrayStore5182  */
-static	ANTLR3_BITWORD FOLLOW_recordStore_in_arrayStore5182_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_recordStore_in_arrayStore5182	= { FOLLOW_recordStore_in_arrayStore5182_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSIGN_TOK_in_arrayStore5195  */
-static	ANTLR3_BITWORD FOLLOW_ASSIGN_TOK_in_arrayStore5195_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA4248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_ASSIGN_TOK_in_arrayStore5195	= { FOLLOW_ASSIGN_TOK_in_arrayStore5195_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_arrayStore5197  */
-static	ANTLR3_BITWORD FOLLOW_term_in_arrayStore5197_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_arrayStore5197	= { FOLLOW_term_in_arrayStore5197_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_tupleStore5229  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_tupleStore5229_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000001000), ANTLR3_UINT64_LIT(0x0040000000000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_tupleStore5229	= { FOLLOW_numeral_in_tupleStore5229_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_arrayStore_in_tupleStore5245  */
-static	ANTLR3_BITWORD FOLLOW_arrayStore_in_tupleStore5245_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_arrayStore_in_tupleStore5245	= { FOLLOW_arrayStore_in_tupleStore5245_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_tupleStore5256  */
-static	ANTLR3_BITWORD FOLLOW_DOT_in_tupleStore5256_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000820000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_DOT_in_tupleStore5256	= { FOLLOW_DOT_in_tupleStore5256_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_tupleStore_in_tupleStore5260  */
-static	ANTLR3_BITWORD FOLLOW_tupleStore_in_tupleStore5260_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_tupleStore_in_tupleStore5260	= { FOLLOW_tupleStore_in_tupleStore5260_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordStore_in_tupleStore5277  */
-static	ANTLR3_BITWORD FOLLOW_recordStore_in_tupleStore5277_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_recordStore_in_tupleStore5277	= { FOLLOW_recordStore_in_tupleStore5277_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSIGN_TOK_in_tupleStore5290  */
-static	ANTLR3_BITWORD FOLLOW_ASSIGN_TOK_in_tupleStore5290_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA4248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_ASSIGN_TOK_in_tupleStore5290	= { FOLLOW_ASSIGN_TOK_in_tupleStore5290_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_tupleStore5292  */
-static	ANTLR3_BITWORD FOLLOW_term_in_tupleStore5292_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_tupleStore5292	= { FOLLOW_term_in_tupleStore5292_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_recordStore5322  */
-static	ANTLR3_BITWORD FOLLOW_identifier_in_recordStore5322_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000001000), ANTLR3_UINT64_LIT(0x0040000000000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_recordStore5322	= { FOLLOW_identifier_in_recordStore5322_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_arrayStore_in_recordStore5339  */
-static	ANTLR3_BITWORD FOLLOW_arrayStore_in_recordStore5339_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_arrayStore_in_recordStore5339	= { FOLLOW_arrayStore_in_recordStore5339_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_recordStore5350  */
-static	ANTLR3_BITWORD FOLLOW_DOT_in_recordStore5350_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000820000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_DOT_in_recordStore5350	= { FOLLOW_DOT_in_recordStore5350_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_tupleStore_in_recordStore5354  */
-static	ANTLR3_BITWORD FOLLOW_tupleStore_in_recordStore5354_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_tupleStore_in_recordStore5354	= { FOLLOW_tupleStore_in_recordStore5354_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordStore_in_recordStore5371  */
-static	ANTLR3_BITWORD FOLLOW_recordStore_in_recordStore5371_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_recordStore_in_recordStore5371	= { FOLLOW_recordStore_in_recordStore5371_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSIGN_TOK_in_recordStore5384  */
-static	ANTLR3_BITWORD FOLLOW_ASSIGN_TOK_in_recordStore5384_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA4248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_ASSIGN_TOK_in_recordStore5384	= { FOLLOW_ASSIGN_TOK_in_recordStore5384_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_recordStore5386  */
-static	ANTLR3_BITWORD FOLLOW_term_in_recordStore5386_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_recordStore5386	= { FOLLOW_term_in_recordStore5386_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_MINUS_TOK_in_uminusTerm5423  */
-static	ANTLR3_BITWORD FOLLOW_MINUS_TOK_in_uminusTerm5423_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA4248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_MINUS_TOK_in_uminusTerm5423	= { FOLLOW_MINUS_TOK_in_uminusTerm5423_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvBinaryOpTerm_in_uminusTerm5429  */
-static	ANTLR3_BITWORD FOLLOW_bvBinaryOpTerm_in_uminusTerm5429_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_bvBinaryOpTerm_in_uminusTerm5429	= { FOLLOW_bvBinaryOpTerm_in_uminusTerm5429_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvBinaryOpTerm_in_uminusTerm5442  */
-static	ANTLR3_BITWORD FOLLOW_bvBinaryOpTerm_in_uminusTerm5442_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_bvBinaryOpTerm_in_uminusTerm5442	= { FOLLOW_bvBinaryOpTerm_in_uminusTerm5442_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvNegTerm_in_bvBinaryOpTerm5464  */
-static	ANTLR3_BITWORD FOLLOW_bvNegTerm_in_bvBinaryOpTerm5464_bits[]	= { ANTLR3_UINT64_LIT(0x0080000000044002) };
-static  ANTLR3_BITSET_LIST FOLLOW_bvNegTerm_in_bvBinaryOpTerm5464	= { FOLLOW_bvNegTerm_in_bvBinaryOpTerm5464_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvBinop_in_bvBinaryOpTerm5475  */
-static	ANTLR3_BITWORD FOLLOW_bvBinop_in_bvBinaryOpTerm5475_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x84248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_bvBinop_in_bvBinaryOpTerm5475	= { FOLLOW_bvBinop_in_bvBinaryOpTerm5475_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvNegTerm_in_bvBinaryOpTerm5478  */
-static	ANTLR3_BITWORD FOLLOW_bvNegTerm_in_bvBinaryOpTerm5478_bits[]	= { ANTLR3_UINT64_LIT(0x0080000000044002) };
-static  ANTLR3_BITSET_LIST FOLLOW_bvNegTerm_in_bvBinaryOpTerm5478	= { FOLLOW_bvNegTerm_in_bvBinaryOpTerm5478_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVNEG_TOK_in_bvNegTerm5541  */
-static	ANTLR3_BITWORD FOLLOW_BVNEG_TOK_in_bvNegTerm5541_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x84248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVNEG_TOK_in_bvNegTerm5541	= { FOLLOW_BVNEG_TOK_in_bvNegTerm5541_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvNegTerm_in_bvNegTerm5543  */
-static	ANTLR3_BITWORD FOLLOW_bvNegTerm_in_bvNegTerm5543_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_bvNegTerm_in_bvNegTerm5543	= { FOLLOW_bvNegTerm_in_bvNegTerm5543_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_NOT_TOK_in_bvNegTerm5556  */
-static	ANTLR3_BITWORD FOLLOW_NOT_TOK_in_bvNegTerm5556_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x84248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_NOT_TOK_in_bvNegTerm5556	= { FOLLOW_NOT_TOK_in_bvNegTerm5556_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvNegTerm_in_bvNegTerm5558  */
-static	ANTLR3_BITWORD FOLLOW_bvNegTerm_in_bvNegTerm5558_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_bvNegTerm_in_bvNegTerm5558	= { FOLLOW_bvNegTerm_in_bvNegTerm5558_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_TRANSPOSE_TOK_in_bvNegTerm5572  */
-static	ANTLR3_BITWORD FOLLOW_TRANSPOSE_TOK_in_bvNegTerm5572_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x84248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_TRANSPOSE_TOK_in_bvNegTerm5572	= { FOLLOW_TRANSPOSE_TOK_in_bvNegTerm5572_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvNegTerm_in_bvNegTerm5574  */
-static	ANTLR3_BITWORD FOLLOW_bvNegTerm_in_bvNegTerm5574_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_bvNegTerm_in_bvNegTerm5574	= { FOLLOW_bvNegTerm_in_bvNegTerm5574_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_TRANSCLOSURE_TOK_in_bvNegTerm5588  */
-static	ANTLR3_BITWORD FOLLOW_TRANSCLOSURE_TOK_in_bvNegTerm5588_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x84248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_TRANSCLOSURE_TOK_in_bvNegTerm5588	= { FOLLOW_TRANSCLOSURE_TOK_in_bvNegTerm5588_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvNegTerm_in_bvNegTerm5590  */
-static	ANTLR3_BITWORD FOLLOW_bvNegTerm_in_bvNegTerm5590_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_bvNegTerm_in_bvNegTerm5590	= { FOLLOW_bvNegTerm_in_bvNegTerm5590_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_TUPLE_TOK_in_bvNegTerm5603  */
-static	ANTLR3_BITWORD FOLLOW_TUPLE_TOK_in_bvNegTerm5603_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_TUPLE_TOK_in_bvNegTerm5603	= { FOLLOW_TUPLE_TOK_in_bvNegTerm5603_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvNegTerm5605  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvNegTerm5605_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x84248B0006000006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvNegTerm5605	= { FOLLOW_LPAREN_in_bvNegTerm5605_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvNegTerm_in_bvNegTerm5607  */
-static	ANTLR3_BITWORD FOLLOW_bvNegTerm_in_bvNegTerm5607_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_bvNegTerm_in_bvNegTerm5607	= { FOLLOW_bvNegTerm_in_bvNegTerm5607_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvNegTerm5610  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvNegTerm5610_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvNegTerm5610	= { FOLLOW_RPAREN_in_bvNegTerm5610_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_postfixTerm_in_bvNegTerm5635  */
-static	ANTLR3_BITWORD FOLLOW_postfixTerm_in_bvNegTerm5635_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_postfixTerm_in_bvNegTerm5635	= { FOLLOW_postfixTerm_in_bvNegTerm5635_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvTerm_in_postfixTerm5659  */
-static	ANTLR3_BITWORD FOLLOW_bvTerm_in_postfixTerm5659_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002), ANTLR3_UINT64_LIT(0x04C0000000000010), ANTLR3_UINT64_LIT(0x0000000000400000) };
-static  ANTLR3_BITSET_LIST FOLLOW_bvTerm_in_postfixTerm5659	= { FOLLOW_bvTerm_in_postfixTerm5659_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACKET_in_postfixTerm5676  */
-static	ANTLR3_BITWORD FOLLOW_LBRACKET_in_postfixTerm5676_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LBRACKET_in_postfixTerm5676	= { FOLLOW_LBRACKET_in_postfixTerm5676_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm5688  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm5688_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm5688	= { FOLLOW_formula_in_postfixTerm5688_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_postfixTerm5705  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_postfixTerm5705_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_postfixTerm5705	= { FOLLOW_numeral_in_postfixTerm5705_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_postfixTerm5707  */
-static	ANTLR3_BITWORD FOLLOW_COLON_in_postfixTerm5707_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_postfixTerm5707	= { FOLLOW_COLON_in_postfixTerm5707_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_postfixTerm5711  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_postfixTerm5711_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_postfixTerm5711	= { FOLLOW_numeral_in_postfixTerm5711_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACKET_in_postfixTerm5723  */
-static	ANTLR3_BITWORD FOLLOW_RBRACKET_in_postfixTerm5723_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002), ANTLR3_UINT64_LIT(0x04C0000000000010), ANTLR3_UINT64_LIT(0x0000000000400000) };
-static  ANTLR3_BITSET_LIST FOLLOW_RBRACKET_in_postfixTerm5723	= { FOLLOW_RBRACKET_in_postfixTerm5723_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LEFTSHIFT_TOK_in_postfixTerm5749  */
-static	ANTLR3_BITWORD FOLLOW_LEFTSHIFT_TOK_in_postfixTerm5749_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LEFTSHIFT_TOK_in_postfixTerm5749	= { FOLLOW_LEFTSHIFT_TOK_in_postfixTerm5749_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RIGHTSHIFT_TOK_in_postfixTerm5761  */
-static	ANTLR3_BITWORD FOLLOW_RIGHTSHIFT_TOK_in_postfixTerm5761_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_RIGHTSHIFT_TOK_in_postfixTerm5761	= { FOLLOW_RIGHTSHIFT_TOK_in_postfixTerm5761_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_postfixTerm5769  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_postfixTerm5769_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002), ANTLR3_UINT64_LIT(0x04C0000000000010), ANTLR3_UINT64_LIT(0x0000000000400000) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_postfixTerm5769	= { FOLLOW_numeral_in_postfixTerm5769_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_postfixTerm5794  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_postfixTerm5794_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_postfixTerm5794	= { FOLLOW_LPAREN_in_postfixTerm5794_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm5804  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm5804_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm5804	= { FOLLOW_formula_in_postfixTerm5804_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_postfixTerm5817  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_postfixTerm5817_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_postfixTerm5817	= { FOLLOW_COMMA_in_postfixTerm5817_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm5819  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm5819_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm5819	= { FOLLOW_formula_in_postfixTerm5819_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_postfixTerm5827  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_postfixTerm5827_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002), ANTLR3_UINT64_LIT(0x04C0000000000010), ANTLR3_UINT64_LIT(0x0000000000400000) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_postfixTerm5827	= { FOLLOW_RPAREN_in_postfixTerm5827_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_postfixTerm5859  */
-static	ANTLR3_BITWORD FOLLOW_DOT_in_postfixTerm5859_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000820000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_DOT_in_postfixTerm5859	= { FOLLOW_DOT_in_postfixTerm5859_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_postfixTerm5869  */
-static	ANTLR3_BITWORD FOLLOW_identifier_in_postfixTerm5869_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002), ANTLR3_UINT64_LIT(0x04C0000000000010), ANTLR3_UINT64_LIT(0x0000000000400000) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_postfixTerm5869	= { FOLLOW_identifier_in_postfixTerm5869_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_postfixTerm5892  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_postfixTerm5892_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002), ANTLR3_UINT64_LIT(0x04C0000000000010), ANTLR3_UINT64_LIT(0x0000000000400000) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_postfixTerm5892	= { FOLLOW_numeral_in_postfixTerm5892_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FLOOR_TOK_in_postfixTerm5925  */
-static	ANTLR3_BITWORD FOLLOW_FLOOR_TOK_in_postfixTerm5925_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_FLOOR_TOK_in_postfixTerm5925	= { FOLLOW_FLOOR_TOK_in_postfixTerm5925_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_postfixTerm5927  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_postfixTerm5927_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_postfixTerm5927	= { FOLLOW_LPAREN_in_postfixTerm5927_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm5929  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm5929_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm5929	= { FOLLOW_formula_in_postfixTerm5929_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_postfixTerm5932  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_postfixTerm5932_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_postfixTerm5932	= { FOLLOW_RPAREN_in_postfixTerm5932_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_IS_INTEGER_TOK_in_postfixTerm5948  */
-static	ANTLR3_BITWORD FOLLOW_IS_INTEGER_TOK_in_postfixTerm5948_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_IS_INTEGER_TOK_in_postfixTerm5948	= { FOLLOW_IS_INTEGER_TOK_in_postfixTerm5948_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_postfixTerm5950  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_postfixTerm5950_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_postfixTerm5950	= { FOLLOW_LPAREN_in_postfixTerm5950_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm5952  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm5952_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm5952	= { FOLLOW_formula_in_postfixTerm5952_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_postfixTerm5955  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_postfixTerm5955_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_postfixTerm5955	= { FOLLOW_RPAREN_in_postfixTerm5955_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_ABS_TOK_in_postfixTerm5971  */
-static	ANTLR3_BITWORD FOLLOW_ABS_TOK_in_postfixTerm5971_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_ABS_TOK_in_postfixTerm5971	= { FOLLOW_ABS_TOK_in_postfixTerm5971_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_postfixTerm5973  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_postfixTerm5973_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_postfixTerm5973	= { FOLLOW_LPAREN_in_postfixTerm5973_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm5975  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm5975_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm5975	= { FOLLOW_formula_in_postfixTerm5975_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_postfixTerm5978  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_postfixTerm5978_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_postfixTerm5978	= { FOLLOW_RPAREN_in_postfixTerm5978_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DIVISIBLE_TOK_in_postfixTerm5994  */
-static	ANTLR3_BITWORD FOLLOW_DIVISIBLE_TOK_in_postfixTerm5994_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_DIVISIBLE_TOK_in_postfixTerm5994	= { FOLLOW_DIVISIBLE_TOK_in_postfixTerm5994_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_postfixTerm5996  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_postfixTerm5996_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_postfixTerm5996	= { FOLLOW_LPAREN_in_postfixTerm5996_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm5998  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm5998_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm5998	= { FOLLOW_formula_in_postfixTerm5998_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_postfixTerm6001  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_postfixTerm6001_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_postfixTerm6001	= { FOLLOW_COMMA_in_postfixTerm6001_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_postfixTerm6005  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_postfixTerm6005_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_postfixTerm6005	= { FOLLOW_numeral_in_postfixTerm6005_bits, 3	};
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2511_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2511	= { FOLLOW_formula_in_mainCommand2511_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_mainCommand2516  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_mainCommand2516_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_mainCommand2516	= { FOLLOW_numeral_in_mainCommand2516_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_OP_TOK_in_mainCommand2529  */
+static	ANTLR3_BITWORD FOLLOW_GET_OP_TOK_in_mainCommand2529_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_GET_OP_TOK_in_mainCommand2529	= { FOLLOW_GET_OP_TOK_in_mainCommand2529_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2531  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2531_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2531	= { FOLLOW_formula_in_mainCommand2531_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_VALUE_TOK_in_mainCommand2545  */
+static	ANTLR3_BITWORD FOLLOW_GET_VALUE_TOK_in_mainCommand2545_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_GET_VALUE_TOK_in_mainCommand2545	= { FOLLOW_GET_VALUE_TOK_in_mainCommand2545_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2547  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2547_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2547	= { FOLLOW_formula_in_mainCommand2547_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SUBSTITUTE_TOK_in_mainCommand2561  */
+static	ANTLR3_BITWORD FOLLOW_SUBSTITUTE_TOK_in_mainCommand2561_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_SUBSTITUTE_TOK_in_mainCommand2561	= { FOLLOW_SUBSTITUTE_TOK_in_mainCommand2561_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_mainCommand2563  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_mainCommand2563_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_mainCommand2563	= { FOLLOW_identifier_in_mainCommand2563_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_mainCommand2566  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_mainCommand2566_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1902020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_mainCommand2566	= { FOLLOW_COLON_in_mainCommand2566_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_mainCommand2572  */
+static	ANTLR3_BITWORD FOLLOW_type_in_mainCommand2572_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_mainCommand2572	= { FOLLOW_type_in_mainCommand2572_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_mainCommand2575  */
+static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_mainCommand2575_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_mainCommand2575	= { FOLLOW_EQUAL_TOK_in_mainCommand2575_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2577  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2577_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2577	= { FOLLOW_formula_in_mainCommand2577_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACKET_in_mainCommand2580  */
+static	ANTLR3_BITWORD FOLLOW_LBRACKET_in_mainCommand2580_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACKET_in_mainCommand2580	= { FOLLOW_LBRACKET_in_mainCommand2580_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_mainCommand2586  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_mainCommand2586_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000001000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_mainCommand2586	= { FOLLOW_identifier_in_mainCommand2586_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSIGN_TOK_in_mainCommand2589  */
+static	ANTLR3_BITWORD FOLLOW_ASSIGN_TOK_in_mainCommand2589_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_ASSIGN_TOK_in_mainCommand2589	= { FOLLOW_ASSIGN_TOK_in_mainCommand2589_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2591  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2591_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2591	= { FOLLOW_formula_in_mainCommand2591_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACKET_in_mainCommand2594  */
+static	ANTLR3_BITWORD FOLLOW_RBRACKET_in_mainCommand2594_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACKET_in_mainCommand2594	= { FOLLOW_RBRACKET_in_mainCommand2594_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DBG_TOK_in_mainCommand2613  */
+static	ANTLR3_BITWORD FOLLOW_DBG_TOK_in_mainCommand2613_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020000000000), ANTLR3_UINT64_LIT(0x0000002000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DBG_TOK_in_mainCommand2613	= { FOLLOW_DBG_TOK_in_mainCommand2613_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_mainCommand2623  */
+static	ANTLR3_BITWORD FOLLOW_str_in_mainCommand2623_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_mainCommand2623	= { FOLLOW_str_in_mainCommand2623_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_mainCommand2628  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_mainCommand2628_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_mainCommand2628	= { FOLLOW_IDENTIFIER_in_mainCommand2628_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TRACE_TOK_in_mainCommand2661  */
+static	ANTLR3_BITWORD FOLLOW_TRACE_TOK_in_mainCommand2661_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020000000000), ANTLR3_UINT64_LIT(0x0000002000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_TRACE_TOK_in_mainCommand2661	= { FOLLOW_TRACE_TOK_in_mainCommand2661_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_mainCommand2671  */
+static	ANTLR3_BITWORD FOLLOW_str_in_mainCommand2671_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_mainCommand2671	= { FOLLOW_str_in_mainCommand2671_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_mainCommand2676  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_mainCommand2676_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_mainCommand2676	= { FOLLOW_IDENTIFIER_in_mainCommand2676_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_UNTRACE_TOK_in_mainCommand2708  */
+static	ANTLR3_BITWORD FOLLOW_UNTRACE_TOK_in_mainCommand2708_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020000000000), ANTLR3_UINT64_LIT(0x0000002000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_UNTRACE_TOK_in_mainCommand2708	= { FOLLOW_UNTRACE_TOK_in_mainCommand2708_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_mainCommand2718  */
+static	ANTLR3_BITWORD FOLLOW_str_in_mainCommand2718_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_mainCommand2718	= { FOLLOW_str_in_mainCommand2718_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_mainCommand2723  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_mainCommand2723_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_mainCommand2723	= { FOLLOW_IDENTIFIER_in_mainCommand2723_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_HELP_TOK_in_mainCommand2756  */
+static	ANTLR3_BITWORD FOLLOW_HELP_TOK_in_mainCommand2756_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020000000000), ANTLR3_UINT64_LIT(0x0000002000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_HELP_TOK_in_mainCommand2756	= { FOLLOW_HELP_TOK_in_mainCommand2756_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_mainCommand2766  */
+static	ANTLR3_BITWORD FOLLOW_str_in_mainCommand2766_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_mainCommand2766	= { FOLLOW_str_in_mainCommand2766_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_mainCommand2771  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_mainCommand2771_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_mainCommand2771	= { FOLLOW_IDENTIFIER_in_mainCommand2771_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TRANSFORM_TOK_in_mainCommand2812  */
+static	ANTLR3_BITWORD FOLLOW_TRANSFORM_TOK_in_mainCommand2812_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_TRANSFORM_TOK_in_mainCommand2812	= { FOLLOW_TRANSFORM_TOK_in_mainCommand2812_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2814  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2814_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2814	= { FOLLOW_formula_in_mainCommand2814_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PRINT_TOK_in_mainCommand2828  */
+static	ANTLR3_BITWORD FOLLOW_PRINT_TOK_in_mainCommand2828_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_PRINT_TOK_in_mainCommand2828	= { FOLLOW_PRINT_TOK_in_mainCommand2828_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2830  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2830_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2830	= { FOLLOW_formula_in_mainCommand2830_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PRINT_TYPE_TOK_in_mainCommand2843  */
+static	ANTLR3_BITWORD FOLLOW_PRINT_TYPE_TOK_in_mainCommand2843_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1902020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_PRINT_TYPE_TOK_in_mainCommand2843	= { FOLLOW_PRINT_TYPE_TOK_in_mainCommand2843_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_mainCommand2845  */
+static	ANTLR3_BITWORD FOLLOW_type_in_mainCommand2845_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_mainCommand2845	= { FOLLOW_type_in_mainCommand2845_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CALL_TOK_in_mainCommand2859  */
+static	ANTLR3_BITWORD FOLLOW_CALL_TOK_in_mainCommand2859_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_CALL_TOK_in_mainCommand2859	= { FOLLOW_CALL_TOK_in_mainCommand2859_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_mainCommand2861  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_mainCommand2861_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_mainCommand2861	= { FOLLOW_identifier_in_mainCommand2861_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand2864  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand2864_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand2864	= { FOLLOW_formula_in_mainCommand2864_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ECHO_TOK_in_mainCommand2878  */
+static	ANTLR3_BITWORD FOLLOW_ECHO_TOK_in_mainCommand2878_bits[]	= { ANTLR3_UINT64_LIT(0x4000000000008002), ANTLR3_UINT64_LIT(0x8001030000000000), ANTLR3_UINT64_LIT(0x0000002000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_ECHO_TOK_in_mainCommand2878	= { FOLLOW_ECHO_TOK_in_mainCommand2878_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleSymbolicExpr_in_mainCommand2886  */
+static	ANTLR3_BITWORD FOLLOW_simpleSymbolicExpr_in_mainCommand2886_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleSymbolicExpr_in_mainCommand2886	= { FOLLOW_simpleSymbolicExpr_in_mainCommand2886_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EXIT_TOK_in_mainCommand2916  */
+static	ANTLR3_BITWORD FOLLOW_EXIT_TOK_in_mainCommand2916_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EXIT_TOK_in_mainCommand2916	= { FOLLOW_EXIT_TOK_in_mainCommand2916_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INCLUDE_TOK_in_mainCommand2929  */
+static	ANTLR3_BITWORD FOLLOW_INCLUDE_TOK_in_mainCommand2929_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020000000000), ANTLR3_UINT64_LIT(0x0000002000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INCLUDE_TOK_in_mainCommand2929	= { FOLLOW_INCLUDE_TOK_in_mainCommand2929_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_mainCommand2939  */
+static	ANTLR3_BITWORD FOLLOW_str_in_mainCommand2939_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_mainCommand2939	= { FOLLOW_str_in_mainCommand2939_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_mainCommand2944  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_mainCommand2944_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_mainCommand2944	= { FOLLOW_IDENTIFIER_in_mainCommand2944_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DUMP_PROOF_TOK_in_mainCommand2977  */
+static	ANTLR3_BITWORD FOLLOW_DUMP_PROOF_TOK_in_mainCommand2977_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DUMP_PROOF_TOK_in_mainCommand2977	= { FOLLOW_DUMP_PROOF_TOK_in_mainCommand2977_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DUMP_UNSAT_CORE_TOK_in_mainCommand2990  */
+static	ANTLR3_BITWORD FOLLOW_DUMP_UNSAT_CORE_TOK_in_mainCommand2990_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DUMP_UNSAT_CORE_TOK_in_mainCommand2990	= { FOLLOW_DUMP_UNSAT_CORE_TOK_in_mainCommand2990_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_mainCommand3003  */
+static	ANTLR3_BITWORD FOLLOW_set_in_mainCommand3003_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_set_in_mainCommand3003	= { FOLLOW_set_in_mainCommand3003_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_mainCommand3074  */
+static	ANTLR3_BITWORD FOLLOW_set_in_mainCommand3074_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_set_in_mainCommand3074	= { FOLLOW_set_in_mainCommand3074_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COUNTEREXAMPLE_TOK_in_mainCommand3099  */
+static	ANTLR3_BITWORD FOLLOW_COUNTEREXAMPLE_TOK_in_mainCommand3099_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_COUNTEREXAMPLE_TOK_in_mainCommand3099	= { FOLLOW_COUNTEREXAMPLE_TOK_in_mainCommand3099_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COUNTERMODEL_TOK_in_mainCommand3111  */
+static	ANTLR3_BITWORD FOLLOW_COUNTERMODEL_TOK_in_mainCommand3111_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_COUNTERMODEL_TOK_in_mainCommand3111	= { FOLLOW_COUNTERMODEL_TOK_in_mainCommand3111_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ARITH_VAR_ORDER_TOK_in_mainCommand3124  */
+static	ANTLR3_BITWORD FOLLOW_ARITH_VAR_ORDER_TOK_in_mainCommand3124_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_ARITH_VAR_ORDER_TOK_in_mainCommand3124	= { FOLLOW_ARITH_VAR_ORDER_TOK_in_mainCommand3124_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_mainCommand3126  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_mainCommand3126_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_mainCommand3126	= { FOLLOW_LPAREN_in_mainCommand3126_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand3128  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand3128_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand3128	= { FOLLOW_formula_in_mainCommand3128_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_mainCommand3133  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_mainCommand3133_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_mainCommand3133	= { FOLLOW_COMMA_in_mainCommand3133_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand3135  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand3135_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand3135	= { FOLLOW_formula_in_mainCommand3135_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_mainCommand3141  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_mainCommand3141_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_mainCommand3141	= { FOLLOW_RPAREN_in_mainCommand3141_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CONTINUE_TOK_in_mainCommand3154  */
+static	ANTLR3_BITWORD FOLLOW_CONTINUE_TOK_in_mainCommand3154_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_CONTINUE_TOK_in_mainCommand3154	= { FOLLOW_CONTINUE_TOK_in_mainCommand3154_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RESTART_TOK_in_mainCommand3166  */
+static	ANTLR3_BITWORD FOLLOW_RESTART_TOK_in_mainCommand3166_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_RESTART_TOK_in_mainCommand3166	= { FOLLOW_RESTART_TOK_in_mainCommand3166_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_mainCommand3168  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_mainCommand3168_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_mainCommand3168	= { FOLLOW_formula_in_mainCommand3168_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_toplevelDeclaration_in_mainCommand3177  */
+static	ANTLR3_BITWORD FOLLOW_toplevelDeclaration_in_mainCommand3177_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_toplevelDeclaration_in_mainCommand3177	= { FOLLOW_toplevelDeclaration_in_mainCommand3177_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3197  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3197_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3197	= { FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3197_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_MINUS_TOK_in_simpleSymbolicExpr3209  */
+static	ANTLR3_BITWORD FOLLOW_MINUS_TOK_in_simpleSymbolicExpr3209_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_MINUS_TOK_in_simpleSymbolicExpr3209	= { FOLLOW_MINUS_TOK_in_simpleSymbolicExpr3209_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3211  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3211_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3211	= { FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3211_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExpr3223  */
+static	ANTLR3_BITWORD FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExpr3223_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExpr3223	= { FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExpr3223_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_HEX_LITERAL_in_simpleSymbolicExpr3235  */
+static	ANTLR3_BITWORD FOLLOW_HEX_LITERAL_in_simpleSymbolicExpr3235_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_HEX_LITERAL_in_simpleSymbolicExpr3235	= { FOLLOW_HEX_LITERAL_in_simpleSymbolicExpr3235_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BINARY_LITERAL_in_simpleSymbolicExpr3247  */
+static	ANTLR3_BITWORD FOLLOW_BINARY_LITERAL_in_simpleSymbolicExpr3247_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BINARY_LITERAL_in_simpleSymbolicExpr3247	= { FOLLOW_BINARY_LITERAL_in_simpleSymbolicExpr3247_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_simpleSymbolicExpr3259  */
+static	ANTLR3_BITWORD FOLLOW_str_in_simpleSymbolicExpr3259_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_simpleSymbolicExpr3259	= { FOLLOW_str_in_simpleSymbolicExpr3259_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_simpleSymbolicExpr3272  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_simpleSymbolicExpr3272_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_simpleSymbolicExpr3272	= { FOLLOW_IDENTIFIER_in_simpleSymbolicExpr3272_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleSymbolicExpr_in_symbolicExpr3297  */
+static	ANTLR3_BITWORD FOLLOW_simpleSymbolicExpr_in_symbolicExpr3297_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleSymbolicExpr_in_symbolicExpr3297	= { FOLLOW_simpleSymbolicExpr_in_symbolicExpr3297_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_symbolicExpr3304  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_symbolicExpr3304_bits[]	= { ANTLR3_UINT64_LIT(0x4000000000008000), ANTLR3_UINT64_LIT(0x9001030000000000), ANTLR3_UINT64_LIT(0x0000002002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_symbolicExpr3304	= { FOLLOW_LPAREN_in_symbolicExpr3304_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolicExpr_in_symbolicExpr3307  */
+static	ANTLR3_BITWORD FOLLOW_symbolicExpr_in_symbolicExpr3307_bits[]	= { ANTLR3_UINT64_LIT(0x4000000000008000), ANTLR3_UINT64_LIT(0x9001030000000000), ANTLR3_UINT64_LIT(0x0000002002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbolicExpr_in_symbolicExpr3307	= { FOLLOW_symbolicExpr_in_symbolicExpr3307_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_symbolicExpr3315  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_symbolicExpr3315_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_symbolicExpr3315	= { FOLLOW_RPAREN_in_symbolicExpr3315_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifierList_in_toplevelDeclaration3342  */
+static	ANTLR3_BITWORD FOLLOW_identifierList_in_toplevelDeclaration3342_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifierList_in_toplevelDeclaration3342	= { FOLLOW_identifierList_in_toplevelDeclaration3342_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_toplevelDeclaration3345  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_toplevelDeclaration3345_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1902020000000000), ANTLR3_UINT64_LIT(0x0402200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_toplevelDeclaration3345	= { FOLLOW_COLON_in_toplevelDeclaration3345_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_declareVariables_in_toplevelDeclaration3353  */
+static	ANTLR3_BITWORD FOLLOW_declareVariables_in_toplevelDeclaration3353_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_declareVariables_in_toplevelDeclaration3353	= { FOLLOW_declareVariables_in_toplevelDeclaration3353_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_declareTypes_in_toplevelDeclaration3362  */
+static	ANTLR3_BITWORD FOLLOW_declareTypes_in_toplevelDeclaration3362_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_declareTypes_in_toplevelDeclaration3362	= { FOLLOW_declareTypes_in_toplevelDeclaration3362_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifierList_in_boundVarDecl3386  */
+static	ANTLR3_BITWORD FOLLOW_identifierList_in_boundVarDecl3386_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifierList_in_boundVarDecl3386	= { FOLLOW_identifierList_in_boundVarDecl3386_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_boundVarDecl3389  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_boundVarDecl3389_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1902020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_boundVarDecl3389	= { FOLLOW_COLON_in_boundVarDecl3389_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_declareVariables_in_boundVarDecl3395  */
+static	ANTLR3_BITWORD FOLLOW_declareVariables_in_boundVarDecl3395_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_declareVariables_in_boundVarDecl3395	= { FOLLOW_declareVariables_in_boundVarDecl3395_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarDecl_in_boundVarDecls3416  */
+static	ANTLR3_BITWORD FOLLOW_boundVarDecl_in_boundVarDecls3416_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_boundVarDecl_in_boundVarDecls3416	= { FOLLOW_boundVarDecl_in_boundVarDecls3416_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_boundVarDecls3421  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_boundVarDecls3421_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_boundVarDecls3421	= { FOLLOW_COMMA_in_boundVarDecls3421_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarDecl_in_boundVarDecls3423  */
+static	ANTLR3_BITWORD FOLLOW_boundVarDecl_in_boundVarDecls3423_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_boundVarDecl_in_boundVarDecls3423	= { FOLLOW_boundVarDecl_in_boundVarDecls3423_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3446  */
+static	ANTLR3_BITWORD FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3446_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3446	= { FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3446_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_boundVarDeclsReturn3451  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_boundVarDeclsReturn3451_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_boundVarDeclsReturn3451	= { FOLLOW_COMMA_in_boundVarDeclsReturn3451_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3453  */
+static	ANTLR3_BITWORD FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3453_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3453	= { FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3453_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifierList_in_boundVarDeclReturn3476  */
+static	ANTLR3_BITWORD FOLLOW_identifierList_in_boundVarDeclReturn3476_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifierList_in_boundVarDeclReturn3476	= { FOLLOW_identifierList_in_boundVarDeclReturn3476_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_boundVarDeclReturn3479  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_boundVarDeclReturn3479_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1902020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_boundVarDeclReturn3479	= { FOLLOW_COLON_in_boundVarDeclReturn3479_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_boundVarDeclReturn3481  */
+static	ANTLR3_BITWORD FOLLOW_type_in_boundVarDeclReturn3481_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_boundVarDeclReturn3481	= { FOLLOW_type_in_boundVarDeclReturn3481_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TYPE_TOK_in_declareTypes3515  */
+static	ANTLR3_BITWORD FOLLOW_TYPE_TOK_in_declareTypes3515_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_TYPE_TOK_in_declareTypes3515	= { FOLLOW_TYPE_TOK_in_declareTypes3515_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TYPE_TOK_in_declareTypes3534  */
+static	ANTLR3_BITWORD FOLLOW_TYPE_TOK_in_declareTypes3534_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_TYPE_TOK_in_declareTypes3534	= { FOLLOW_TYPE_TOK_in_declareTypes3534_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_declareTypes3536  */
+static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_declareTypes3536_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1902020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_declareTypes3536	= { FOLLOW_EQUAL_TOK_in_declareTypes3536_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_declareTypes3538  */
+static	ANTLR3_BITWORD FOLLOW_type_in_declareTypes3538_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_declareTypes3538	= { FOLLOW_type_in_declareTypes3538_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_declareVariables3572  */
+static	ANTLR3_BITWORD FOLLOW_type_in_declareVariables3572_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_declareVariables3572	= { FOLLOW_type_in_declareVariables3572_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_declareVariables3577  */
+static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_declareVariables3577_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_declareVariables3577	= { FOLLOW_EQUAL_TOK_in_declareVariables3577_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_declareVariables3579  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_declareVariables3579_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_declareVariables3579	= { FOLLOW_formula_in_declareVariables3579_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_identifierList3610  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_identifierList3610_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_identifierList3610	= { FOLLOW_identifier_in_identifierList3610_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_identifierList3621  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_identifierList3621_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_identifierList3621	= { FOLLOW_COMMA_in_identifierList3621_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_identifierList3623  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_identifierList3623_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_identifierList3623	= { FOLLOW_identifier_in_identifierList3623_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDENTIFIER_in_identifier3645  */
+static	ANTLR3_BITWORD FOLLOW_IDENTIFIER_in_identifier3645_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDENTIFIER_in_identifier3645	= { FOLLOW_IDENTIFIER_in_identifier3645_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedTypePossiblyFunctionLHS_in_type3678  */
+static	ANTLR3_BITWORD FOLLOW_restrictedTypePossiblyFunctionLHS_in_type3678_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000202) };
+static  ANTLR3_BITSET_LIST FOLLOW_restrictedTypePossiblyFunctionLHS_in_type3678	= { FOLLOW_restrictedTypePossiblyFunctionLHS_in_type3678_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ARROW_TOK_in_type3693  */
+static	ANTLR3_BITWORD FOLLOW_ARROW_TOK_in_type3693_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1902020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_ARROW_TOK_in_type3693	= { FOLLOW_ARROW_TOK_in_type3693_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_type3695  */
+static	ANTLR3_BITWORD FOLLOW_type_in_type3695_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_type3695	= { FOLLOW_type_in_type3695_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LET_TOK_in_type3720  */
+static	ANTLR3_BITWORD FOLLOW_LET_TOK_in_type3720_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LET_TOK_in_type3720	= { FOLLOW_LET_TOK_in_type3720_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_typeLetDecl_in_type3728  */
+static	ANTLR3_BITWORD FOLLOW_typeLetDecl_in_type3728_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0004000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_typeLetDecl_in_type3728	= { FOLLOW_typeLetDecl_in_type3728_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_type3733  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_type3733_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_type3733	= { FOLLOW_COMMA_in_type3733_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_typeLetDecl_in_type3735  */
+static	ANTLR3_BITWORD FOLLOW_typeLetDecl_in_type3735_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0004000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_typeLetDecl_in_type3735	= { FOLLOW_typeLetDecl_in_type3735_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IN_TOK_in_type3741  */
+static	ANTLR3_BITWORD FOLLOW_IN_TOK_in_type3741_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1902020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_IN_TOK_in_type3741	= { FOLLOW_IN_TOK_in_type3741_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_type3743  */
+static	ANTLR3_BITWORD FOLLOW_type_in_type3743_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_type3743	= { FOLLOW_type_in_type3743_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedTypePossiblyFunctionLHS_in_restrictedType3779  */
+static	ANTLR3_BITWORD FOLLOW_restrictedTypePossiblyFunctionLHS_in_restrictedType3779_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_restrictedTypePossiblyFunctionLHS_in_restrictedType3779	= { FOLLOW_restrictedTypePossiblyFunctionLHS_in_restrictedType3779_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS3813  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS3813_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS3813	= { FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS3813_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_parameterization_in_restrictedTypePossiblyFunctionLHS3820  */
+static	ANTLR3_BITWORD FOLLOW_parameterization_in_restrictedTypePossiblyFunctionLHS3820_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_parameterization_in_restrictedTypePossiblyFunctionLHS3820	= { FOLLOW_parameterization_in_restrictedTypePossiblyFunctionLHS3820_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ARRAY_TOK_in_restrictedTypePossiblyFunctionLHS3841  */
+static	ANTLR3_BITWORD FOLLOW_ARRAY_TOK_in_restrictedTypePossiblyFunctionLHS3841_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1102020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_ARRAY_TOK_in_restrictedTypePossiblyFunctionLHS3841	= { FOLLOW_ARRAY_TOK_in_restrictedTypePossiblyFunctionLHS3841_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3843  */
+static	ANTLR3_BITWORD FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3843_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000008) };
+static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3843	= { FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3843_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3846  */
+static	ANTLR3_BITWORD FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3846_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1102020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3846	= { FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3846_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3848  */
+static	ANTLR3_BITWORD FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3848_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3848	= { FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3848_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SET_TOK_in_restrictedTypePossiblyFunctionLHS3861  */
+static	ANTLR3_BITWORD FOLLOW_SET_TOK_in_restrictedTypePossiblyFunctionLHS3861_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000008) };
+static  ANTLR3_BITSET_LIST FOLLOW_SET_TOK_in_restrictedTypePossiblyFunctionLHS3861	= { FOLLOW_SET_TOK_in_restrictedTypePossiblyFunctionLHS3861_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3863  */
+static	ANTLR3_BITWORD FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3863_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1102020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3863	= { FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3863_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3865  */
+static	ANTLR3_BITWORD FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3865_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3865	= { FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3865_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SUBTYPE_TOK_in_restrictedTypePossiblyFunctionLHS3888  */
+static	ANTLR3_BITWORD FOLLOW_SUBTYPE_TOK_in_restrictedTypePossiblyFunctionLHS3888_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_SUBTYPE_TOK_in_restrictedTypePossiblyFunctionLHS3888	= { FOLLOW_SUBTYPE_TOK_in_restrictedTypePossiblyFunctionLHS3888_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS3890  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS3890_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS3890	= { FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS3890_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3908  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3908_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3908	= { FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3908_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3913  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3913_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3913	= { FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3913_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3915  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3915_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3915	= { FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3915_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS3921  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS3921_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS3921	= { FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS3921_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3940  */
+static	ANTLR3_BITWORD FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3940_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x8001000000000000), ANTLR3_UINT64_LIT(0x0800000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3940	= { FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3940_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3944  */
+static	ANTLR3_BITWORD FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3944_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000020) };
+static  ANTLR3_BITSET_LIST FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3944	= { FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3944_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOTDOT_in_restrictedTypePossiblyFunctionLHS3946  */
+static	ANTLR3_BITWORD FOLLOW_DOTDOT_in_restrictedTypePossiblyFunctionLHS3946_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x8001000000000000), ANTLR3_UINT64_LIT(0x0800000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DOTDOT_in_restrictedTypePossiblyFunctionLHS3946	= { FOLLOW_DOTDOT_in_restrictedTypePossiblyFunctionLHS3946_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3950  */
+static	ANTLR3_BITWORD FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3950_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3950	= { FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3950_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3952  */
+static	ANTLR3_BITWORD FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3952_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3952	= { FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3952_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3971  */
+static	ANTLR3_BITWORD FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3971_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1902020000000000), ANTLR3_UINT64_LIT(0x0002200030300000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3971	= { FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3971_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3975  */
+static	ANTLR3_BITWORD FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3975_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3975	= { FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3975_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3986  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3986_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1902020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3986	= { FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3986_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3988  */
+static	ANTLR3_BITWORD FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3988_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3988	= { FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3988_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3999  */
+static	ANTLR3_BITWORD FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3999_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3999	= { FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3999_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SQHASH_in_restrictedTypePossiblyFunctionLHS4018  */
+static	ANTLR3_BITWORD FOLLOW_SQHASH_in_restrictedTypePossiblyFunctionLHS4018_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000022000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_SQHASH_in_restrictedTypePossiblyFunctionLHS4018	= { FOLLOW_SQHASH_in_restrictedTypePossiblyFunctionLHS4018_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4022  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4022_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4022	= { FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4022_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4025  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4025_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1902020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4025	= { FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4025_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4027  */
+static	ANTLR3_BITWORD FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4027_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000002000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4027	= { FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4027_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4038  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4038_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4038	= { FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4038_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4040  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4040_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4040	= { FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4040_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4043  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4043_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1902020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4043	= { FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4043_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4045  */
+static	ANTLR3_BITWORD FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4045_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000002000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4045	= { FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4045_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_HASHSQ_in_restrictedTypePossiblyFunctionLHS4056  */
+static	ANTLR3_BITWORD FOLLOW_HASHSQ_in_restrictedTypePossiblyFunctionLHS4056_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_HASHSQ_in_restrictedTypePossiblyFunctionLHS4056	= { FOLLOW_HASHSQ_in_restrictedTypePossiblyFunctionLHS4056_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BITVECTOR_TOK_in_restrictedTypePossiblyFunctionLHS4075  */
+static	ANTLR3_BITWORD FOLLOW_BITVECTOR_TOK_in_restrictedTypePossiblyFunctionLHS4075_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BITVECTOR_TOK_in_restrictedTypePossiblyFunctionLHS4075	= { FOLLOW_BITVECTOR_TOK_in_restrictedTypePossiblyFunctionLHS4075_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4077  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4077_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4077	= { FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4077_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_restrictedTypePossiblyFunctionLHS4081  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_restrictedTypePossiblyFunctionLHS4081_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_restrictedTypePossiblyFunctionLHS4081	= { FOLLOW_numeral_in_restrictedTypePossiblyFunctionLHS4081_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4083  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4083_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4083	= { FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4083_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_TOK_in_restrictedTypePossiblyFunctionLHS4102  */
+static	ANTLR3_BITWORD FOLLOW_STRING_TOK_in_restrictedTypePossiblyFunctionLHS4102_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_TOK_in_restrictedTypePossiblyFunctionLHS4102	= { FOLLOW_STRING_TOK_in_restrictedTypePossiblyFunctionLHS4102_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BOOLEAN_TOK_in_restrictedTypePossiblyFunctionLHS4117  */
+static	ANTLR3_BITWORD FOLLOW_BOOLEAN_TOK_in_restrictedTypePossiblyFunctionLHS4117_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BOOLEAN_TOK_in_restrictedTypePossiblyFunctionLHS4117	= { FOLLOW_BOOLEAN_TOK_in_restrictedTypePossiblyFunctionLHS4117_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_REAL_TOK_in_restrictedTypePossiblyFunctionLHS4125  */
+static	ANTLR3_BITWORD FOLLOW_REAL_TOK_in_restrictedTypePossiblyFunctionLHS4125_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_REAL_TOK_in_restrictedTypePossiblyFunctionLHS4125	= { FOLLOW_REAL_TOK_in_restrictedTypePossiblyFunctionLHS4125_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INT_TOK_in_restrictedTypePossiblyFunctionLHS4133  */
+static	ANTLR3_BITWORD FOLLOW_INT_TOK_in_restrictedTypePossiblyFunctionLHS4133_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INT_TOK_in_restrictedTypePossiblyFunctionLHS4133	= { FOLLOW_INT_TOK_in_restrictedTypePossiblyFunctionLHS4133_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4148  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4148_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1902020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4148	= { FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4148_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4150  */
+static	ANTLR3_BITWORD FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4150_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4150	= { FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4150_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4161  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4161_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1902020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4161	= { FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4161_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4163  */
+static	ANTLR3_BITWORD FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4163_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4163	= { FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4163_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4171  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4171_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4171	= { FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4171_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACKET_in_parameterization4196  */
+static	ANTLR3_BITWORD FOLLOW_LBRACKET_in_parameterization4196_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1102020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACKET_in_parameterization4196	= { FOLLOW_LBRACKET_in_parameterization4196_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_parameterization4198  */
+static	ANTLR3_BITWORD FOLLOW_restrictedType_in_parameterization4198_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_parameterization4198	= { FOLLOW_restrictedType_in_parameterization4198_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_parameterization4209  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_parameterization4209_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1102020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_parameterization4209	= { FOLLOW_COMMA_in_parameterization4209_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_parameterization4211  */
+static	ANTLR3_BITWORD FOLLOW_restrictedType_in_parameterization4211_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_parameterization4211	= { FOLLOW_restrictedType_in_parameterization4211_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACKET_in_parameterization4219  */
+static	ANTLR3_BITWORD FOLLOW_RBRACKET_in_parameterization4219_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACKET_in_parameterization4219	= { FOLLOW_RBRACKET_in_parameterization4219_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_UNDERSCORE_in_bound4236  */
+static	ANTLR3_BITWORD FOLLOW_UNDERSCORE_in_bound4236_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_UNDERSCORE_in_bound4236	= { FOLLOW_UNDERSCORE_in_bound4236_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_integer_in_bound4246  */
+static	ANTLR3_BITWORD FOLLOW_integer_in_bound4246_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_integer_in_bound4246	= { FOLLOW_integer_in_bound4246_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_typeLetDecl4265  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_typeLetDecl4265_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_typeLetDecl4265	= { FOLLOW_identifier_in_typeLetDecl4265_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_typeLetDecl4269  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_typeLetDecl4269_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_typeLetDecl4269	= { FOLLOW_COLON_in_typeLetDecl4269_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TYPE_TOK_in_typeLetDecl4271  */
+static	ANTLR3_BITWORD FOLLOW_TYPE_TOK_in_typeLetDecl4271_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_TYPE_TOK_in_typeLetDecl4271	= { FOLLOW_TYPE_TOK_in_typeLetDecl4271_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_typeLetDecl4275  */
+static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_typeLetDecl4275_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1102020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_typeLetDecl4275	= { FOLLOW_EQUAL_TOK_in_typeLetDecl4275_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_typeLetDecl4277  */
+static	ANTLR3_BITWORD FOLLOW_restrictedType_in_typeLetDecl4277_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_typeLetDecl4277	= { FOLLOW_restrictedType_in_typeLetDecl4277_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_nots_in_formula4307  */
+static	ANTLR3_BITWORD FOLLOW_nots_in_formula4307_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000040) };
+static  ANTLR3_BITSET_LIST FOLLOW_nots_in_formula4307	= { FOLLOW_nots_in_formula4307_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_prefixFormula_in_formula4315  */
+static	ANTLR3_BITWORD FOLLOW_prefixFormula_in_formula4315_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_prefixFormula_in_formula4315	= { FOLLOW_prefixFormula_in_formula4315_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_comparison_in_formula4332  */
+static	ANTLR3_BITWORD FOLLOW_comparison_in_formula4332_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000042), ANTLR3_UINT64_LIT(0x0030280000000000), ANTLR3_UINT64_LIT(0x0000000000008020), ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_comparison_in_formula4332	= { FOLLOW_comparison_in_formula4332_bits, 4	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_morecomparisons_in_formula4349  */
+static	ANTLR3_BITWORD FOLLOW_morecomparisons_in_formula4349_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_morecomparisons_in_formula4349	= { FOLLOW_morecomparisons_in_formula4349_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_booleanBinop_in_morecomparisons4388  */
+static	ANTLR3_BITWORD FOLLOW_booleanBinop_in_morecomparisons4388_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_booleanBinop_in_morecomparisons4388	= { FOLLOW_booleanBinop_in_morecomparisons4388_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_nots_in_morecomparisons4399  */
+static	ANTLR3_BITWORD FOLLOW_nots_in_morecomparisons4399_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000040) };
+static  ANTLR3_BITSET_LIST FOLLOW_nots_in_morecomparisons4399	= { FOLLOW_nots_in_morecomparisons4399_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_prefixFormula_in_morecomparisons4407  */
+static	ANTLR3_BITWORD FOLLOW_prefixFormula_in_morecomparisons4407_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_prefixFormula_in_morecomparisons4407	= { FOLLOW_prefixFormula_in_morecomparisons4407_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_comparison_in_morecomparisons4424  */
+static	ANTLR3_BITWORD FOLLOW_comparison_in_morecomparisons4424_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000042), ANTLR3_UINT64_LIT(0x0030280000000000), ANTLR3_UINT64_LIT(0x0000000000008020), ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_comparison_in_morecomparisons4424	= { FOLLOW_comparison_in_morecomparisons4424_bits, 4	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_morecomparisons_in_morecomparisons4441  */
+static	ANTLR3_BITWORD FOLLOW_morecomparisons_in_morecomparisons4441_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_morecomparisons_in_morecomparisons4441	= { FOLLOW_morecomparisons_in_morecomparisons4441_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NOT_TOK_in_nots4470  */
+static	ANTLR3_BITWORD FOLLOW_NOT_TOK_in_nots4470_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_NOT_TOK_in_nots4470	= { FOLLOW_NOT_TOK_in_nots4470_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FORALL_TOK_in_prefixFormula4502  */
+static	ANTLR3_BITWORD FOLLOW_FORALL_TOK_in_prefixFormula4502_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FORALL_TOK_in_prefixFormula4502	= { FOLLOW_FORALL_TOK_in_prefixFormula4502_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EXISTS_TOK_in_prefixFormula4508  */
+static	ANTLR3_BITWORD FOLLOW_EXISTS_TOK_in_prefixFormula4508_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_EXISTS_TOK_in_prefixFormula4508	= { FOLLOW_EXISTS_TOK_in_prefixFormula4508_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_prefixFormula4520  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_prefixFormula4520_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_prefixFormula4520	= { FOLLOW_LPAREN_in_prefixFormula4520_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarDecl_in_prefixFormula4526  */
+static	ANTLR3_BITWORD FOLLOW_boundVarDecl_in_prefixFormula4526_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_boundVarDecl_in_prefixFormula4526	= { FOLLOW_boundVarDecl_in_prefixFormula4526_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_prefixFormula4541  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_prefixFormula4541_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_prefixFormula4541	= { FOLLOW_COMMA_in_prefixFormula4541_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarDecl_in_prefixFormula4543  */
+static	ANTLR3_BITWORD FOLLOW_boundVarDecl_in_prefixFormula4543_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_boundVarDecl_in_prefixFormula4543	= { FOLLOW_boundVarDecl_in_prefixFormula4543_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_prefixFormula4561  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_prefixFormula4561_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_prefixFormula4561	= { FOLLOW_RPAREN_in_prefixFormula4561_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_prefixFormula4569  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_prefixFormula4569_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF080000C2) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_prefixFormula4569	= { FOLLOW_COLON_in_prefixFormula4569_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_instantiationPatterns_in_prefixFormula4571  */
+static	ANTLR3_BITWORD FOLLOW_instantiationPatterns_in_prefixFormula4571_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_instantiationPatterns_in_prefixFormula4571	= { FOLLOW_instantiationPatterns_in_prefixFormula4571_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_prefixFormula4575  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_prefixFormula4575_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_prefixFormula4575	= { FOLLOW_formula_in_prefixFormula4575_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LET_TOK_in_prefixFormula4594  */
+static	ANTLR3_BITWORD FOLLOW_LET_TOK_in_prefixFormula4594_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LET_TOK_in_prefixFormula4594	= { FOLLOW_LET_TOK_in_prefixFormula4594_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_letDecl_in_prefixFormula4602  */
+static	ANTLR3_BITWORD FOLLOW_letDecl_in_prefixFormula4602_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0004000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_letDecl_in_prefixFormula4602	= { FOLLOW_letDecl_in_prefixFormula4602_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_prefixFormula4606  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_prefixFormula4606_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_prefixFormula4606	= { FOLLOW_COMMA_in_prefixFormula4606_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_letDecl_in_prefixFormula4608  */
+static	ANTLR3_BITWORD FOLLOW_letDecl_in_prefixFormula4608_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0004000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_letDecl_in_prefixFormula4608	= { FOLLOW_letDecl_in_prefixFormula4608_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IN_TOK_in_prefixFormula4617  */
+static	ANTLR3_BITWORD FOLLOW_IN_TOK_in_prefixFormula4617_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_IN_TOK_in_prefixFormula4617	= { FOLLOW_IN_TOK_in_prefixFormula4617_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_prefixFormula4619  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_prefixFormula4619_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_prefixFormula4619	= { FOLLOW_formula_in_prefixFormula4619_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LAMBDA_in_prefixFormula4634  */
+static	ANTLR3_BITWORD FOLLOW_LAMBDA_in_prefixFormula4634_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LAMBDA_in_prefixFormula4634	= { FOLLOW_LAMBDA_in_prefixFormula4634_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_prefixFormula4638  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_prefixFormula4638_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_prefixFormula4638	= { FOLLOW_LPAREN_in_prefixFormula4638_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarDeclsReturn_in_prefixFormula4644  */
+static	ANTLR3_BITWORD FOLLOW_boundVarDeclsReturn_in_prefixFormula4644_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_boundVarDeclsReturn_in_prefixFormula4644	= { FOLLOW_boundVarDeclsReturn_in_prefixFormula4644_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_prefixFormula4651  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_prefixFormula4651_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_prefixFormula4651	= { FOLLOW_RPAREN_in_prefixFormula4651_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_prefixFormula4653  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_prefixFormula4653_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_prefixFormula4653	= { FOLLOW_COLON_in_prefixFormula4653_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_prefixFormula4655  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_prefixFormula4655_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_prefixFormula4655	= { FOLLOW_formula_in_prefixFormula4655_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PATTERN_TOK_in_instantiationPatterns4683  */
+static	ANTLR3_BITWORD FOLLOW_PATTERN_TOK_in_instantiationPatterns4683_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_PATTERN_TOK_in_instantiationPatterns4683	= { FOLLOW_PATTERN_TOK_in_instantiationPatterns4683_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_instantiationPatterns4685  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_instantiationPatterns4685_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_instantiationPatterns4685	= { FOLLOW_LPAREN_in_instantiationPatterns4685_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_instantiationPatterns4687  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_instantiationPatterns4687_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_instantiationPatterns4687	= { FOLLOW_formula_in_instantiationPatterns4687_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_instantiationPatterns4693  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_instantiationPatterns4693_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_instantiationPatterns4693	= { FOLLOW_COMMA_in_instantiationPatterns4693_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_instantiationPatterns4695  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_instantiationPatterns4695_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_instantiationPatterns4695	= { FOLLOW_formula_in_instantiationPatterns4695_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_instantiationPatterns4703  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_instantiationPatterns4703_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_instantiationPatterns4703	= { FOLLOW_RPAREN_in_instantiationPatterns4703_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_instantiationPatterns4705  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_instantiationPatterns4705_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000080) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_instantiationPatterns4705	= { FOLLOW_COLON_in_instantiationPatterns4705_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_letDecl4742  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_letDecl4742_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_letDecl4742	= { FOLLOW_identifier_in_letDecl4742_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_letDecl4745  */
+static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_letDecl4745_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_letDecl4745	= { FOLLOW_EQUAL_TOK_in_letDecl4745_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_letDecl4747  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_letDecl4747_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_letDecl4747	= { FOLLOW_formula_in_letDecl4747_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_comparison4836  */
+static	ANTLR3_BITWORD FOLLOW_term_in_comparison4836_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x6400000848100001) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_comparison4836	= { FOLLOW_term_in_comparison4836_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_comparisonBinop_in_comparison4847  */
+static	ANTLR3_BITWORD FOLLOW_comparisonBinop_in_comparison4847_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x9089170006000006), ANTLR3_UINT64_LIT(0x13A4DFFF08000040) };
+static  ANTLR3_BITSET_LIST FOLLOW_comparisonBinop_in_comparison4847	= { FOLLOW_comparisonBinop_in_comparison4847_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_comparison4850  */
+static	ANTLR3_BITWORD FOLLOW_term_in_comparison4850_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x6400000848100001) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_comparison4850	= { FOLLOW_term_in_comparison4850_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_uminusTerm_in_term5005  */
+static	ANTLR3_BITWORD FOLLOW_uminusTerm_in_term5005_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x8000800001000008), ANTLR3_UINT64_LIT(0x0000000040000101), ANTLR3_UINT64_LIT(0x0000000000000001) };
+static  ANTLR3_BITSET_LIST FOLLOW_uminusTerm_in_term5005	= { FOLLOW_uminusTerm_in_term5005_bits, 4	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_WITH_TOK_in_term5014  */
+static	ANTLR3_BITWORD FOLLOW_WITH_TOK_in_term5014_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_WITH_TOK_in_term5014	= { FOLLOW_WITH_TOK_in_term5014_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_arrayStore_in_term5024  */
+static	ANTLR3_BITWORD FOLLOW_arrayStore_in_term5024_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_arrayStore_in_term5024	= { FOLLOW_arrayStore_in_term5024_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_term5029  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_term5029_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_term5029	= { FOLLOW_COMMA_in_term5029_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_arrayStore_in_term5031  */
+static	ANTLR3_BITWORD FOLLOW_arrayStore_in_term5031_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_arrayStore_in_term5031	= { FOLLOW_arrayStore_in_term5031_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_term5045  */
+static	ANTLR3_BITWORD FOLLOW_DOT_in_term5045_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DOT_in_term5045	= { FOLLOW_DOT_in_term5045_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tupleStore_in_term5049  */
+static	ANTLR3_BITWORD FOLLOW_tupleStore_in_term5049_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_tupleStore_in_term5049	= { FOLLOW_tupleStore_in_term5049_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_term5054  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_term5054_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_term5054	= { FOLLOW_COMMA_in_term5054_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_term5056  */
+static	ANTLR3_BITWORD FOLLOW_DOT_in_term5056_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DOT_in_term5056	= { FOLLOW_DOT_in_term5056_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tupleStore_in_term5058  */
+static	ANTLR3_BITWORD FOLLOW_tupleStore_in_term5058_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_tupleStore_in_term5058	= { FOLLOW_tupleStore_in_term5058_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordStore_in_term5078  */
+static	ANTLR3_BITWORD FOLLOW_recordStore_in_term5078_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_recordStore_in_term5078	= { FOLLOW_recordStore_in_term5078_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_term5083  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_term5083_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_term5083	= { FOLLOW_COMMA_in_term5083_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_term5085  */
+static	ANTLR3_BITWORD FOLLOW_DOT_in_term5085_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DOT_in_term5085	= { FOLLOW_DOT_in_term5085_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordStore_in_term5087  */
+static	ANTLR3_BITWORD FOLLOW_recordStore_in_term5087_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_recordStore_in_term5087	= { FOLLOW_recordStore_in_term5087_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_arithmeticBinop_in_term5113  */
+static	ANTLR3_BITWORD FOLLOW_arithmeticBinop_in_term5113_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x9089170006000006), ANTLR3_UINT64_LIT(0x13A4DFFF08000040) };
+static  ANTLR3_BITSET_LIST FOLLOW_arithmeticBinop_in_term5113	= { FOLLOW_arithmeticBinop_in_term5113_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_uminusTerm_in_term5116  */
+static	ANTLR3_BITWORD FOLLOW_uminusTerm_in_term5116_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x8000800001000008), ANTLR3_UINT64_LIT(0x0000000040000101) };
+static  ANTLR3_BITSET_LIST FOLLOW_uminusTerm_in_term5116	= { FOLLOW_uminusTerm_in_term5116_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACKET_in_arrayStore5157  */
+static	ANTLR3_BITWORD FOLLOW_LBRACKET_in_arrayStore5157_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACKET_in_arrayStore5157	= { FOLLOW_LBRACKET_in_arrayStore5157_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_arrayStore5159  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_arrayStore5159_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_arrayStore5159	= { FOLLOW_formula_in_arrayStore5159_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACKET_in_arrayStore5162  */
+static	ANTLR3_BITWORD FOLLOW_RBRACKET_in_arrayStore5162_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000001000), ANTLR3_UINT64_LIT(0x0100000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACKET_in_arrayStore5162	= { FOLLOW_RBRACKET_in_arrayStore5162_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_arrayStore_in_arrayStore5178  */
+static	ANTLR3_BITWORD FOLLOW_arrayStore_in_arrayStore5178_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_arrayStore_in_arrayStore5178	= { FOLLOW_arrayStore_in_arrayStore5178_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_arrayStore5189  */
+static	ANTLR3_BITWORD FOLLOW_DOT_in_arrayStore5189_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DOT_in_arrayStore5189	= { FOLLOW_DOT_in_arrayStore5189_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tupleStore_in_arrayStore5193  */
+static	ANTLR3_BITWORD FOLLOW_tupleStore_in_arrayStore5193_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_tupleStore_in_arrayStore5193	= { FOLLOW_tupleStore_in_arrayStore5193_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordStore_in_arrayStore5210  */
+static	ANTLR3_BITWORD FOLLOW_recordStore_in_arrayStore5210_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_recordStore_in_arrayStore5210	= { FOLLOW_recordStore_in_arrayStore5210_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSIGN_TOK_in_arrayStore5223  */
+static	ANTLR3_BITWORD FOLLOW_ASSIGN_TOK_in_arrayStore5223_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x9089170006000006), ANTLR3_UINT64_LIT(0x13A4DFFF08000040) };
+static  ANTLR3_BITSET_LIST FOLLOW_ASSIGN_TOK_in_arrayStore5223	= { FOLLOW_ASSIGN_TOK_in_arrayStore5223_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_arrayStore5225  */
+static	ANTLR3_BITWORD FOLLOW_term_in_arrayStore5225_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_arrayStore5225	= { FOLLOW_term_in_arrayStore5225_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_tupleStore5257  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_tupleStore5257_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000001000), ANTLR3_UINT64_LIT(0x0100000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_tupleStore5257	= { FOLLOW_numeral_in_tupleStore5257_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_arrayStore_in_tupleStore5273  */
+static	ANTLR3_BITWORD FOLLOW_arrayStore_in_tupleStore5273_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_arrayStore_in_tupleStore5273	= { FOLLOW_arrayStore_in_tupleStore5273_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_tupleStore5284  */
+static	ANTLR3_BITWORD FOLLOW_DOT_in_tupleStore5284_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DOT_in_tupleStore5284	= { FOLLOW_DOT_in_tupleStore5284_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tupleStore_in_tupleStore5288  */
+static	ANTLR3_BITWORD FOLLOW_tupleStore_in_tupleStore5288_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_tupleStore_in_tupleStore5288	= { FOLLOW_tupleStore_in_tupleStore5288_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordStore_in_tupleStore5305  */
+static	ANTLR3_BITWORD FOLLOW_recordStore_in_tupleStore5305_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_recordStore_in_tupleStore5305	= { FOLLOW_recordStore_in_tupleStore5305_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSIGN_TOK_in_tupleStore5318  */
+static	ANTLR3_BITWORD FOLLOW_ASSIGN_TOK_in_tupleStore5318_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x9089170006000006), ANTLR3_UINT64_LIT(0x13A4DFFF08000040) };
+static  ANTLR3_BITSET_LIST FOLLOW_ASSIGN_TOK_in_tupleStore5318	= { FOLLOW_ASSIGN_TOK_in_tupleStore5318_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_tupleStore5320  */
+static	ANTLR3_BITWORD FOLLOW_term_in_tupleStore5320_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_tupleStore5320	= { FOLLOW_term_in_tupleStore5320_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_recordStore5350  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_recordStore5350_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000001000), ANTLR3_UINT64_LIT(0x0100000000000010) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_recordStore5350	= { FOLLOW_identifier_in_recordStore5350_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_arrayStore_in_recordStore5367  */
+static	ANTLR3_BITWORD FOLLOW_arrayStore_in_recordStore5367_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_arrayStore_in_recordStore5367	= { FOLLOW_arrayStore_in_recordStore5367_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_recordStore5378  */
+static	ANTLR3_BITWORD FOLLOW_DOT_in_recordStore5378_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DOT_in_recordStore5378	= { FOLLOW_DOT_in_recordStore5378_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_tupleStore_in_recordStore5382  */
+static	ANTLR3_BITWORD FOLLOW_tupleStore_in_recordStore5382_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_tupleStore_in_recordStore5382	= { FOLLOW_tupleStore_in_recordStore5382_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordStore_in_recordStore5399  */
+static	ANTLR3_BITWORD FOLLOW_recordStore_in_recordStore5399_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_recordStore_in_recordStore5399	= { FOLLOW_recordStore_in_recordStore5399_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSIGN_TOK_in_recordStore5412  */
+static	ANTLR3_BITWORD FOLLOW_ASSIGN_TOK_in_recordStore5412_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x9089170006000006), ANTLR3_UINT64_LIT(0x13A4DFFF08000040) };
+static  ANTLR3_BITSET_LIST FOLLOW_ASSIGN_TOK_in_recordStore5412	= { FOLLOW_ASSIGN_TOK_in_recordStore5412_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_recordStore5414  */
+static	ANTLR3_BITWORD FOLLOW_term_in_recordStore5414_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_recordStore5414	= { FOLLOW_term_in_recordStore5414_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_MINUS_TOK_in_uminusTerm5451  */
+static	ANTLR3_BITWORD FOLLOW_MINUS_TOK_in_uminusTerm5451_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x9089170006000006), ANTLR3_UINT64_LIT(0x13A4DFFF08000040) };
+static  ANTLR3_BITSET_LIST FOLLOW_MINUS_TOK_in_uminusTerm5451	= { FOLLOW_MINUS_TOK_in_uminusTerm5451_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvBinaryOpTerm_in_uminusTerm5457  */
+static	ANTLR3_BITWORD FOLLOW_bvBinaryOpTerm_in_uminusTerm5457_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_bvBinaryOpTerm_in_uminusTerm5457	= { FOLLOW_bvBinaryOpTerm_in_uminusTerm5457_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvBinaryOpTerm_in_uminusTerm5470  */
+static	ANTLR3_BITWORD FOLLOW_bvBinaryOpTerm_in_uminusTerm5470_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_bvBinaryOpTerm_in_uminusTerm5470	= { FOLLOW_bvBinaryOpTerm_in_uminusTerm5470_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvNegTerm_in_bvBinaryOpTerm5492  */
+static	ANTLR3_BITWORD FOLLOW_bvNegTerm_in_bvBinaryOpTerm5492_bits[]	= { ANTLR3_UINT64_LIT(0x0080000000044002) };
+static  ANTLR3_BITSET_LIST FOLLOW_bvNegTerm_in_bvBinaryOpTerm5492	= { FOLLOW_bvNegTerm_in_bvBinaryOpTerm5492_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvBinop_in_bvBinaryOpTerm5503  */
+static	ANTLR3_BITWORD FOLLOW_bvBinop_in_bvBinaryOpTerm5503_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x1089170006000006), ANTLR3_UINT64_LIT(0x13A4DFFF08000040) };
+static  ANTLR3_BITSET_LIST FOLLOW_bvBinop_in_bvBinaryOpTerm5503	= { FOLLOW_bvBinop_in_bvBinaryOpTerm5503_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvNegTerm_in_bvBinaryOpTerm5506  */
+static	ANTLR3_BITWORD FOLLOW_bvNegTerm_in_bvBinaryOpTerm5506_bits[]	= { ANTLR3_UINT64_LIT(0x0080000000044002) };
+static  ANTLR3_BITSET_LIST FOLLOW_bvNegTerm_in_bvBinaryOpTerm5506	= { FOLLOW_bvNegTerm_in_bvBinaryOpTerm5506_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVNEG_TOK_in_bvNegTerm5569  */
+static	ANTLR3_BITWORD FOLLOW_BVNEG_TOK_in_bvNegTerm5569_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x1089170006000006), ANTLR3_UINT64_LIT(0x13A4DFFF08000040) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVNEG_TOK_in_bvNegTerm5569	= { FOLLOW_BVNEG_TOK_in_bvNegTerm5569_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvNegTerm_in_bvNegTerm5571  */
+static	ANTLR3_BITWORD FOLLOW_bvNegTerm_in_bvNegTerm5571_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_bvNegTerm_in_bvNegTerm5571	= { FOLLOW_bvNegTerm_in_bvNegTerm5571_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_relationTerm_in_bvNegTerm5584  */
+static	ANTLR3_BITWORD FOLLOW_relationTerm_in_bvNegTerm5584_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_relationTerm_in_bvNegTerm5584	= { FOLLOW_relationTerm_in_bvNegTerm5584_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TRANSPOSE_TOK_in_relationTerm5605  */
+static	ANTLR3_BITWORD FOLLOW_TRANSPOSE_TOK_in_relationTerm5605_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFEFF8C110), ANTLR3_UINT64_LIT(0x1089170006000006), ANTLR3_UINT64_LIT(0x13A4DFFF08000040) };
+static  ANTLR3_BITSET_LIST FOLLOW_TRANSPOSE_TOK_in_relationTerm5605	= { FOLLOW_TRANSPOSE_TOK_in_relationTerm5605_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_relationTerm_in_relationTerm5607  */
+static	ANTLR3_BITWORD FOLLOW_relationTerm_in_relationTerm5607_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_relationTerm_in_relationTerm5607	= { FOLLOW_relationTerm_in_relationTerm5607_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TRANSCLOSURE_TOK_in_relationTerm5621  */
+static	ANTLR3_BITWORD FOLLOW_TRANSCLOSURE_TOK_in_relationTerm5621_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFEFF8C110), ANTLR3_UINT64_LIT(0x1089170006000006), ANTLR3_UINT64_LIT(0x13A4DFFF08000040) };
+static  ANTLR3_BITSET_LIST FOLLOW_TRANSCLOSURE_TOK_in_relationTerm5621	= { FOLLOW_TRANSCLOSURE_TOK_in_relationTerm5621_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_relationTerm_in_relationTerm5623  */
+static	ANTLR3_BITWORD FOLLOW_relationTerm_in_relationTerm5623_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_relationTerm_in_relationTerm5623	= { FOLLOW_relationTerm_in_relationTerm5623_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TUPLE_TOK_in_relationTerm5636  */
+static	ANTLR3_BITWORD FOLLOW_TUPLE_TOK_in_relationTerm5636_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_TUPLE_TOK_in_relationTerm5636	= { FOLLOW_TUPLE_TOK_in_relationTerm5636_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_relationTerm5638  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_relationTerm5638_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFEFF8C110), ANTLR3_UINT64_LIT(0x1089170006000006), ANTLR3_UINT64_LIT(0x13A4DFFF08000040) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_relationTerm5638	= { FOLLOW_LPAREN_in_relationTerm5638_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_relationTerm_in_relationTerm5640  */
+static	ANTLR3_BITWORD FOLLOW_relationTerm_in_relationTerm5640_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_relationTerm_in_relationTerm5640	= { FOLLOW_relationTerm_in_relationTerm5640_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_relationTerm5643  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_relationTerm5643_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_relationTerm5643	= { FOLLOW_RPAREN_in_relationTerm5643_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IDEN_TOK_in_relationTerm5655  */
+static	ANTLR3_BITWORD FOLLOW_IDEN_TOK_in_relationTerm5655_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFEFF8C110), ANTLR3_UINT64_LIT(0x1089170006000006), ANTLR3_UINT64_LIT(0x13A4DFFF08000040) };
+static  ANTLR3_BITSET_LIST FOLLOW_IDEN_TOK_in_relationTerm5655	= { FOLLOW_IDEN_TOK_in_relationTerm5655_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_relationTerm_in_relationTerm5657  */
+static	ANTLR3_BITWORD FOLLOW_relationTerm_in_relationTerm5657_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_relationTerm_in_relationTerm5657	= { FOLLOW_relationTerm_in_relationTerm5657_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_postfixTerm_in_relationTerm5687  */
+static	ANTLR3_BITWORD FOLLOW_postfixTerm_in_relationTerm5687_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_postfixTerm_in_relationTerm5687	= { FOLLOW_postfixTerm_in_relationTerm5687_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_bvTerm_in_postfixTerm5711  */
+static	ANTLR3_BITWORD FOLLOW_bvTerm_in_postfixTerm5711_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002), ANTLR3_UINT64_LIT(0x1300000000000010), ANTLR3_UINT64_LIT(0x0000000001000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_bvTerm_in_postfixTerm5711	= { FOLLOW_bvTerm_in_postfixTerm5711_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACKET_in_postfixTerm5728  */
+static	ANTLR3_BITWORD FOLLOW_LBRACKET_in_postfixTerm5728_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACKET_in_postfixTerm5728	= { FOLLOW_LBRACKET_in_postfixTerm5728_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm5740  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm5740_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm5740	= { FOLLOW_formula_in_postfixTerm5740_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_postfixTerm5757  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_postfixTerm5757_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_postfixTerm5757	= { FOLLOW_numeral_in_postfixTerm5757_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_postfixTerm5759  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_postfixTerm5759_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_postfixTerm5759	= { FOLLOW_COLON_in_postfixTerm5759_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_postfixTerm5763  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_postfixTerm5763_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_postfixTerm5763	= { FOLLOW_numeral_in_postfixTerm5763_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACKET_in_postfixTerm5775  */
+static	ANTLR3_BITWORD FOLLOW_RBRACKET_in_postfixTerm5775_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002), ANTLR3_UINT64_LIT(0x1300000000000010), ANTLR3_UINT64_LIT(0x0000000001000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACKET_in_postfixTerm5775	= { FOLLOW_RBRACKET_in_postfixTerm5775_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LEFTSHIFT_TOK_in_postfixTerm5801  */
+static	ANTLR3_BITWORD FOLLOW_LEFTSHIFT_TOK_in_postfixTerm5801_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LEFTSHIFT_TOK_in_postfixTerm5801	= { FOLLOW_LEFTSHIFT_TOK_in_postfixTerm5801_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RIGHTSHIFT_TOK_in_postfixTerm5813  */
+static	ANTLR3_BITWORD FOLLOW_RIGHTSHIFT_TOK_in_postfixTerm5813_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RIGHTSHIFT_TOK_in_postfixTerm5813	= { FOLLOW_RIGHTSHIFT_TOK_in_postfixTerm5813_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_postfixTerm5821  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_postfixTerm5821_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002), ANTLR3_UINT64_LIT(0x1300000000000010), ANTLR3_UINT64_LIT(0x0000000001000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_postfixTerm5821	= { FOLLOW_numeral_in_postfixTerm5821_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_postfixTerm5846  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_postfixTerm5846_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_postfixTerm5846	= { FOLLOW_LPAREN_in_postfixTerm5846_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm5856  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm5856_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm5856	= { FOLLOW_formula_in_postfixTerm5856_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_postfixTerm5869  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_postfixTerm5869_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_postfixTerm5869	= { FOLLOW_COMMA_in_postfixTerm5869_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm5871  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm5871_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm5871	= { FOLLOW_formula_in_postfixTerm5871_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_postfixTerm5879  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_postfixTerm5879_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002), ANTLR3_UINT64_LIT(0x1300000000000010), ANTLR3_UINT64_LIT(0x0000000001000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_postfixTerm5879	= { FOLLOW_RPAREN_in_postfixTerm5879_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_postfixTerm5911  */
+static	ANTLR3_BITWORD FOLLOW_DOT_in_postfixTerm5911_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DOT_in_postfixTerm5911	= { FOLLOW_DOT_in_postfixTerm5911_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_postfixTerm5921  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_postfixTerm5921_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002), ANTLR3_UINT64_LIT(0x1300000000000010), ANTLR3_UINT64_LIT(0x0000000001000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_postfixTerm5921	= { FOLLOW_identifier_in_postfixTerm5921_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_postfixTerm5944  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_postfixTerm5944_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002), ANTLR3_UINT64_LIT(0x1300000000000010), ANTLR3_UINT64_LIT(0x0000000001000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_postfixTerm5944	= { FOLLOW_numeral_in_postfixTerm5944_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FLOOR_TOK_in_postfixTerm5977  */
+static	ANTLR3_BITWORD FOLLOW_FLOOR_TOK_in_postfixTerm5977_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FLOOR_TOK_in_postfixTerm5977	= { FOLLOW_FLOOR_TOK_in_postfixTerm5977_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_postfixTerm5979  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_postfixTerm5979_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_postfixTerm5979	= { FOLLOW_LPAREN_in_postfixTerm5979_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm5981  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm5981_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm5981	= { FOLLOW_formula_in_postfixTerm5981_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_postfixTerm5984  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_postfixTerm5984_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_postfixTerm5984	= { FOLLOW_RPAREN_in_postfixTerm5984_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IS_INTEGER_TOK_in_postfixTerm6000  */
+static	ANTLR3_BITWORD FOLLOW_IS_INTEGER_TOK_in_postfixTerm6000_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_IS_INTEGER_TOK_in_postfixTerm6000	= { FOLLOW_IS_INTEGER_TOK_in_postfixTerm6000_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_postfixTerm6002  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_postfixTerm6002_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_postfixTerm6002	= { FOLLOW_LPAREN_in_postfixTerm6002_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm6004  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm6004_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm6004	= { FOLLOW_formula_in_postfixTerm6004_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_postfixTerm6007  */
 static	ANTLR3_BITWORD FOLLOW_RPAREN_in_postfixTerm6007_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_postfixTerm6007	= { FOLLOW_RPAREN_in_postfixTerm6007_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DISTINCT_TOK_in_postfixTerm6023  */
-static	ANTLR3_BITWORD FOLLOW_DISTINCT_TOK_in_postfixTerm6023_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_DISTINCT_TOK_in_postfixTerm6023	= { FOLLOW_DISTINCT_TOK_in_postfixTerm6023_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ABS_TOK_in_postfixTerm6023  */
+static	ANTLR3_BITWORD FOLLOW_ABS_TOK_in_postfixTerm6023_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_ABS_TOK_in_postfixTerm6023	= { FOLLOW_ABS_TOK_in_postfixTerm6023_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_postfixTerm6025  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_postfixTerm6025_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_postfixTerm6025_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
 static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_postfixTerm6025	= { FOLLOW_LPAREN_in_postfixTerm6025_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm6033  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm6033_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm6033	= { FOLLOW_formula_in_postfixTerm6033_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_postfixTerm6046  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_postfixTerm6046_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_postfixTerm6046	= { FOLLOW_COMMA_in_postfixTerm6046_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm6048  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm6048_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm6048	= { FOLLOW_formula_in_postfixTerm6048_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_postfixTerm6056  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_postfixTerm6056_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_postfixTerm6056	= { FOLLOW_RPAREN_in_postfixTerm6056_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_typeAscription_in_postfixTerm6078  */
-static	ANTLR3_BITWORD FOLLOW_typeAscription_in_postfixTerm6078_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_typeAscription_in_postfixTerm6078	= { FOLLOW_typeAscription_in_postfixTerm6078_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVXOR_TOK_in_bvTerm6119  */
-static	ANTLR3_BITWORD FOLLOW_BVXOR_TOK_in_bvTerm6119_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVXOR_TOK_in_bvTerm6119	= { FOLLOW_BVXOR_TOK_in_bvTerm6119_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6121  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6121_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6121	= { FOLLOW_LPAREN_in_bvTerm6121_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6123  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6123_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6123	= { FOLLOW_formula_in_bvTerm6123_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6126  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6126_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6126	= { FOLLOW_COMMA_in_bvTerm6126_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6128  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6128_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6128	= { FOLLOW_formula_in_bvTerm6128_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6131  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6131_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6131	= { FOLLOW_RPAREN_in_bvTerm6131_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVNAND_TOK_in_bvTerm6143  */
-static	ANTLR3_BITWORD FOLLOW_BVNAND_TOK_in_bvTerm6143_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVNAND_TOK_in_bvTerm6143	= { FOLLOW_BVNAND_TOK_in_bvTerm6143_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6145  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6145_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6145	= { FOLLOW_LPAREN_in_bvTerm6145_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6147  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6147_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6147	= { FOLLOW_formula_in_bvTerm6147_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6150  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6150_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6150	= { FOLLOW_COMMA_in_bvTerm6150_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6152  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6152_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6152	= { FOLLOW_formula_in_bvTerm6152_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6155  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6155_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6155	= { FOLLOW_RPAREN_in_bvTerm6155_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVNOR_TOK_in_bvTerm6167  */
-static	ANTLR3_BITWORD FOLLOW_BVNOR_TOK_in_bvTerm6167_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVNOR_TOK_in_bvTerm6167	= { FOLLOW_BVNOR_TOK_in_bvTerm6167_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6169  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6169_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6169	= { FOLLOW_LPAREN_in_bvTerm6169_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6171  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6171_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6171	= { FOLLOW_formula_in_bvTerm6171_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6174  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6174_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6174	= { FOLLOW_COMMA_in_bvTerm6174_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6176  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6176_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6176	= { FOLLOW_formula_in_bvTerm6176_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6179  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6179_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6179	= { FOLLOW_RPAREN_in_bvTerm6179_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVCOMP_TOK_in_bvTerm6191  */
-static	ANTLR3_BITWORD FOLLOW_BVCOMP_TOK_in_bvTerm6191_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVCOMP_TOK_in_bvTerm6191	= { FOLLOW_BVCOMP_TOK_in_bvTerm6191_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6193  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6193_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6193	= { FOLLOW_LPAREN_in_bvTerm6193_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6195  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6195_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6195	= { FOLLOW_formula_in_bvTerm6195_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6198  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6198_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6198	= { FOLLOW_COMMA_in_bvTerm6198_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6200  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6200_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6200	= { FOLLOW_formula_in_bvTerm6200_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6203  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6203_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6203	= { FOLLOW_RPAREN_in_bvTerm6203_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVXNOR_TOK_in_bvTerm6215  */
-static	ANTLR3_BITWORD FOLLOW_BVXNOR_TOK_in_bvTerm6215_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVXNOR_TOK_in_bvTerm6215	= { FOLLOW_BVXNOR_TOK_in_bvTerm6215_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6217  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6217_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6217	= { FOLLOW_LPAREN_in_bvTerm6217_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6219  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6219_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6219	= { FOLLOW_formula_in_bvTerm6219_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6222  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6222_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6222	= { FOLLOW_COMMA_in_bvTerm6222_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6224  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6224_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6224	= { FOLLOW_formula_in_bvTerm6224_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6227  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6227_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6227	= { FOLLOW_RPAREN_in_bvTerm6227_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVUMINUS_TOK_in_bvTerm6246  */
-static	ANTLR3_BITWORD FOLLOW_BVUMINUS_TOK_in_bvTerm6246_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVUMINUS_TOK_in_bvTerm6246	= { FOLLOW_BVUMINUS_TOK_in_bvTerm6246_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6248  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6248_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6248	= { FOLLOW_LPAREN_in_bvTerm6248_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6250  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6250_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6250	= { FOLLOW_formula_in_bvTerm6250_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6253  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6253_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6253	= { FOLLOW_RPAREN_in_bvTerm6253_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVPLUS_TOK_in_bvTerm6271  */
-static	ANTLR3_BITWORD FOLLOW_BVPLUS_TOK_in_bvTerm6271_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVPLUS_TOK_in_bvTerm6271	= { FOLLOW_BVPLUS_TOK_in_bvTerm6271_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6273  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6273_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6273	= { FOLLOW_LPAREN_in_bvTerm6273_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6277  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6277_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6277	= { FOLLOW_numeral_in_bvTerm6277_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6279  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6279_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6279	= { FOLLOW_COMMA_in_bvTerm6279_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6281  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6281_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6281	= { FOLLOW_formula_in_bvTerm6281_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6292  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6292_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6292	= { FOLLOW_COMMA_in_bvTerm6292_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6294  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6294_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6294	= { FOLLOW_formula_in_bvTerm6294_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6302  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6302_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6302	= { FOLLOW_RPAREN_in_bvTerm6302_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSUB_TOK_in_bvTerm6320  */
-static	ANTLR3_BITWORD FOLLOW_BVSUB_TOK_in_bvTerm6320_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVSUB_TOK_in_bvTerm6320	= { FOLLOW_BVSUB_TOK_in_bvTerm6320_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6322  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6322_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6322	= { FOLLOW_LPAREN_in_bvTerm6322_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6326  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6326_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6326	= { FOLLOW_numeral_in_bvTerm6326_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6328  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6328_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6328	= { FOLLOW_COMMA_in_bvTerm6328_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6330  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6330_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6330	= { FOLLOW_formula_in_bvTerm6330_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6333  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6333_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6333	= { FOLLOW_COMMA_in_bvTerm6333_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6335  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6335_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6335	= { FOLLOW_formula_in_bvTerm6335_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6338  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6338_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6338	= { FOLLOW_RPAREN_in_bvTerm6338_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVMULT_TOK_in_bvTerm6356  */
-static	ANTLR3_BITWORD FOLLOW_BVMULT_TOK_in_bvTerm6356_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVMULT_TOK_in_bvTerm6356	= { FOLLOW_BVMULT_TOK_in_bvTerm6356_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6358  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6358_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6358	= { FOLLOW_LPAREN_in_bvTerm6358_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6362  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6362_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6362	= { FOLLOW_numeral_in_bvTerm6362_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6364  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6364_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6364	= { FOLLOW_COMMA_in_bvTerm6364_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6366  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6366_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6366	= { FOLLOW_formula_in_bvTerm6366_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6369  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6369_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6369	= { FOLLOW_COMMA_in_bvTerm6369_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6371  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6371_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6371	= { FOLLOW_formula_in_bvTerm6371_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6374  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6374_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6374	= { FOLLOW_RPAREN_in_bvTerm6374_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVUDIV_TOK_in_bvTerm6392  */
-static	ANTLR3_BITWORD FOLLOW_BVUDIV_TOK_in_bvTerm6392_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVUDIV_TOK_in_bvTerm6392	= { FOLLOW_BVUDIV_TOK_in_bvTerm6392_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6394  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6394_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6394	= { FOLLOW_LPAREN_in_bvTerm6394_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6396  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6396_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6396	= { FOLLOW_formula_in_bvTerm6396_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6399  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6399_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6399	= { FOLLOW_COMMA_in_bvTerm6399_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6401  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6401_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6401	= { FOLLOW_formula_in_bvTerm6401_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6404  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6404_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6404	= { FOLLOW_RPAREN_in_bvTerm6404_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSDIV_TOK_in_bvTerm6422  */
-static	ANTLR3_BITWORD FOLLOW_BVSDIV_TOK_in_bvTerm6422_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVSDIV_TOK_in_bvTerm6422	= { FOLLOW_BVSDIV_TOK_in_bvTerm6422_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6424  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6424_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6424	= { FOLLOW_LPAREN_in_bvTerm6424_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6426  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6426_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6426	= { FOLLOW_formula_in_bvTerm6426_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6429  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6429_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6429	= { FOLLOW_COMMA_in_bvTerm6429_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6431  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6431_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6431	= { FOLLOW_formula_in_bvTerm6431_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6434  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6434_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6434	= { FOLLOW_RPAREN_in_bvTerm6434_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVUREM_TOK_in_bvTerm6452  */
-static	ANTLR3_BITWORD FOLLOW_BVUREM_TOK_in_bvTerm6452_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVUREM_TOK_in_bvTerm6452	= { FOLLOW_BVUREM_TOK_in_bvTerm6452_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6454  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6454_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6454	= { FOLLOW_LPAREN_in_bvTerm6454_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6456  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6456_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6456	= { FOLLOW_formula_in_bvTerm6456_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6459  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6459_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6459	= { FOLLOW_COMMA_in_bvTerm6459_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6461  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6461_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6461	= { FOLLOW_formula_in_bvTerm6461_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6464  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6464_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6464	= { FOLLOW_RPAREN_in_bvTerm6464_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSREM_TOK_in_bvTerm6482  */
-static	ANTLR3_BITWORD FOLLOW_BVSREM_TOK_in_bvTerm6482_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVSREM_TOK_in_bvTerm6482	= { FOLLOW_BVSREM_TOK_in_bvTerm6482_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6484  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6484_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6484	= { FOLLOW_LPAREN_in_bvTerm6484_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6486  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6486_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6486	= { FOLLOW_formula_in_bvTerm6486_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6489  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6489_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6489	= { FOLLOW_COMMA_in_bvTerm6489_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6491  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6491_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6491	= { FOLLOW_formula_in_bvTerm6491_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6494  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6494_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6494	= { FOLLOW_RPAREN_in_bvTerm6494_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSMOD_TOK_in_bvTerm6512  */
-static	ANTLR3_BITWORD FOLLOW_BVSMOD_TOK_in_bvTerm6512_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVSMOD_TOK_in_bvTerm6512	= { FOLLOW_BVSMOD_TOK_in_bvTerm6512_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6514  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6514_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6514	= { FOLLOW_LPAREN_in_bvTerm6514_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6516  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6516_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6516	= { FOLLOW_formula_in_bvTerm6516_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6519  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6519_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6519	= { FOLLOW_COMMA_in_bvTerm6519_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6521  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6521_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6521	= { FOLLOW_formula_in_bvTerm6521_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6524  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6524_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6524	= { FOLLOW_RPAREN_in_bvTerm6524_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSHL_TOK_in_bvTerm6542  */
-static	ANTLR3_BITWORD FOLLOW_BVSHL_TOK_in_bvTerm6542_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVSHL_TOK_in_bvTerm6542	= { FOLLOW_BVSHL_TOK_in_bvTerm6542_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6544  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6544_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6544	= { FOLLOW_LPAREN_in_bvTerm6544_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6546  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6546_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6546	= { FOLLOW_formula_in_bvTerm6546_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6549  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6549_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6549	= { FOLLOW_COMMA_in_bvTerm6549_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6551  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6551_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6551	= { FOLLOW_formula_in_bvTerm6551_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6554  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6554_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6554	= { FOLLOW_RPAREN_in_bvTerm6554_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVASHR_TOK_in_bvTerm6572  */
-static	ANTLR3_BITWORD FOLLOW_BVASHR_TOK_in_bvTerm6572_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVASHR_TOK_in_bvTerm6572	= { FOLLOW_BVASHR_TOK_in_bvTerm6572_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6574  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6574_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6574	= { FOLLOW_LPAREN_in_bvTerm6574_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6576  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6576_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6576	= { FOLLOW_formula_in_bvTerm6576_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6579  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6579_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6579	= { FOLLOW_COMMA_in_bvTerm6579_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6581  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6581_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6581	= { FOLLOW_formula_in_bvTerm6581_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6584  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6584_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6584	= { FOLLOW_RPAREN_in_bvTerm6584_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVLSHR_TOK_in_bvTerm6602  */
-static	ANTLR3_BITWORD FOLLOW_BVLSHR_TOK_in_bvTerm6602_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVLSHR_TOK_in_bvTerm6602	= { FOLLOW_BVLSHR_TOK_in_bvTerm6602_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6604  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6604_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6604	= { FOLLOW_LPAREN_in_bvTerm6604_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6606  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6606_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6606	= { FOLLOW_formula_in_bvTerm6606_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6609  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6609_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6609	= { FOLLOW_COMMA_in_bvTerm6609_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6611  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6611_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6611	= { FOLLOW_formula_in_bvTerm6611_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6614  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6614_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6614	= { FOLLOW_RPAREN_in_bvTerm6614_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_SX_TOK_in_bvTerm6632  */
-static	ANTLR3_BITWORD FOLLOW_SX_TOK_in_bvTerm6632_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_SX_TOK_in_bvTerm6632	= { FOLLOW_SX_TOK_in_bvTerm6632_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6634  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6634_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6634	= { FOLLOW_LPAREN_in_bvTerm6634_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6636  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6636_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6636	= { FOLLOW_formula_in_bvTerm6636_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6639  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6639_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6639	= { FOLLOW_COMMA_in_bvTerm6639_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6643  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6643_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6643	= { FOLLOW_numeral_in_bvTerm6643_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6645  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6645_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6645	= { FOLLOW_RPAREN_in_bvTerm6645_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVZEROEXTEND_TOK_in_bvTerm6663  */
-static	ANTLR3_BITWORD FOLLOW_BVZEROEXTEND_TOK_in_bvTerm6663_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVZEROEXTEND_TOK_in_bvTerm6663	= { FOLLOW_BVZEROEXTEND_TOK_in_bvTerm6663_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6665  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6665_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6665	= { FOLLOW_LPAREN_in_bvTerm6665_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6667  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6667_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6667	= { FOLLOW_formula_in_bvTerm6667_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6670  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6670_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6670	= { FOLLOW_COMMA_in_bvTerm6670_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6674  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6674_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6674	= { FOLLOW_numeral_in_bvTerm6674_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6676  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6676_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6676	= { FOLLOW_RPAREN_in_bvTerm6676_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVREPEAT_TOK_in_bvTerm6694  */
-static	ANTLR3_BITWORD FOLLOW_BVREPEAT_TOK_in_bvTerm6694_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVREPEAT_TOK_in_bvTerm6694	= { FOLLOW_BVREPEAT_TOK_in_bvTerm6694_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6696  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6696_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6696	= { FOLLOW_LPAREN_in_bvTerm6696_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6698  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6698_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6698	= { FOLLOW_formula_in_bvTerm6698_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6701  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6701_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6701	= { FOLLOW_COMMA_in_bvTerm6701_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6705  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6705_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6705	= { FOLLOW_numeral_in_bvTerm6705_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6707  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6707_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6707	= { FOLLOW_RPAREN_in_bvTerm6707_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVROTR_TOK_in_bvTerm6725  */
-static	ANTLR3_BITWORD FOLLOW_BVROTR_TOK_in_bvTerm6725_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVROTR_TOK_in_bvTerm6725	= { FOLLOW_BVROTR_TOK_in_bvTerm6725_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6727  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6727_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6727	= { FOLLOW_LPAREN_in_bvTerm6727_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6729  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6729_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6729	= { FOLLOW_formula_in_bvTerm6729_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6732  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6732_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6732	= { FOLLOW_COMMA_in_bvTerm6732_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6736  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6736_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6736	= { FOLLOW_numeral_in_bvTerm6736_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6738  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6738_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6738	= { FOLLOW_RPAREN_in_bvTerm6738_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVROTL_TOK_in_bvTerm6756  */
-static	ANTLR3_BITWORD FOLLOW_BVROTL_TOK_in_bvTerm6756_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVROTL_TOK_in_bvTerm6756	= { FOLLOW_BVROTL_TOK_in_bvTerm6756_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6758  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6758_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6758	= { FOLLOW_LPAREN_in_bvTerm6758_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6760  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6760_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6760	= { FOLLOW_formula_in_bvTerm6760_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6763  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6763_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6763	= { FOLLOW_COMMA_in_bvTerm6763_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6767  */
-static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6767_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6767	= { FOLLOW_numeral_in_bvTerm6767_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6769  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6769_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6769	= { FOLLOW_RPAREN_in_bvTerm6769_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVLT_TOK_in_bvTerm6788  */
-static	ANTLR3_BITWORD FOLLOW_BVLT_TOK_in_bvTerm6788_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVLT_TOK_in_bvTerm6788	= { FOLLOW_BVLT_TOK_in_bvTerm6788_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6790  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6790_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6790	= { FOLLOW_LPAREN_in_bvTerm6790_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6792  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6792_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6792	= { FOLLOW_formula_in_bvTerm6792_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6795  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6795_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6795	= { FOLLOW_COMMA_in_bvTerm6795_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6797  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6797_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6797	= { FOLLOW_formula_in_bvTerm6797_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6800  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6800_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6800	= { FOLLOW_RPAREN_in_bvTerm6800_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVLE_TOK_in_bvTerm6812  */
-static	ANTLR3_BITWORD FOLLOW_BVLE_TOK_in_bvTerm6812_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVLE_TOK_in_bvTerm6812	= { FOLLOW_BVLE_TOK_in_bvTerm6812_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6814  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6814_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6814	= { FOLLOW_LPAREN_in_bvTerm6814_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6816  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6816_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6816	= { FOLLOW_formula_in_bvTerm6816_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6819  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6819_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6819	= { FOLLOW_COMMA_in_bvTerm6819_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6821  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6821_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6821	= { FOLLOW_formula_in_bvTerm6821_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6824  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6824_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6824	= { FOLLOW_RPAREN_in_bvTerm6824_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVGT_TOK_in_bvTerm6836  */
-static	ANTLR3_BITWORD FOLLOW_BVGT_TOK_in_bvTerm6836_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVGT_TOK_in_bvTerm6836	= { FOLLOW_BVGT_TOK_in_bvTerm6836_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6838  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6838_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6838	= { FOLLOW_LPAREN_in_bvTerm6838_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6840  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6840_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6840	= { FOLLOW_formula_in_bvTerm6840_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6843  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6843_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6843	= { FOLLOW_COMMA_in_bvTerm6843_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6845  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6845_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6845	= { FOLLOW_formula_in_bvTerm6845_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6848  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6848_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6848	= { FOLLOW_RPAREN_in_bvTerm6848_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVGE_TOK_in_bvTerm6860  */
-static	ANTLR3_BITWORD FOLLOW_BVGE_TOK_in_bvTerm6860_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVGE_TOK_in_bvTerm6860	= { FOLLOW_BVGE_TOK_in_bvTerm6860_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6862  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6862_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6862	= { FOLLOW_LPAREN_in_bvTerm6862_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6864  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6864_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6864	= { FOLLOW_formula_in_bvTerm6864_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6867  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6867_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6867	= { FOLLOW_COMMA_in_bvTerm6867_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6869  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6869_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6869	= { FOLLOW_formula_in_bvTerm6869_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6872  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6872_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6872	= { FOLLOW_RPAREN_in_bvTerm6872_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSLT_TOK_in_bvTerm6884  */
-static	ANTLR3_BITWORD FOLLOW_BVSLT_TOK_in_bvTerm6884_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVSLT_TOK_in_bvTerm6884	= { FOLLOW_BVSLT_TOK_in_bvTerm6884_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6886  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6886_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6886	= { FOLLOW_LPAREN_in_bvTerm6886_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6888  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6888_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6888	= { FOLLOW_formula_in_bvTerm6888_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6891  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6891_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6891	= { FOLLOW_COMMA_in_bvTerm6891_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6893  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6893_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6893	= { FOLLOW_formula_in_bvTerm6893_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6896  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6896_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6896	= { FOLLOW_RPAREN_in_bvTerm6896_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSLE_TOK_in_bvTerm6908  */
-static	ANTLR3_BITWORD FOLLOW_BVSLE_TOK_in_bvTerm6908_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVSLE_TOK_in_bvTerm6908	= { FOLLOW_BVSLE_TOK_in_bvTerm6908_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6910  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6910_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6910	= { FOLLOW_LPAREN_in_bvTerm6910_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6912  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6912_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6912	= { FOLLOW_formula_in_bvTerm6912_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6915  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6915_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6915	= { FOLLOW_COMMA_in_bvTerm6915_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6917  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6917_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6917	= { FOLLOW_formula_in_bvTerm6917_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6920  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6920_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6920	= { FOLLOW_RPAREN_in_bvTerm6920_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSGT_TOK_in_bvTerm6932  */
-static	ANTLR3_BITWORD FOLLOW_BVSGT_TOK_in_bvTerm6932_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVSGT_TOK_in_bvTerm6932	= { FOLLOW_BVSGT_TOK_in_bvTerm6932_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6934  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6934_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6934	= { FOLLOW_LPAREN_in_bvTerm6934_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6936  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6936_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6936	= { FOLLOW_formula_in_bvTerm6936_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6939  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6939_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6939	= { FOLLOW_COMMA_in_bvTerm6939_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6941  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6941_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6941	= { FOLLOW_formula_in_bvTerm6941_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6944  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6944_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6944	= { FOLLOW_RPAREN_in_bvTerm6944_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSGE_TOK_in_bvTerm6956  */
-static	ANTLR3_BITWORD FOLLOW_BVSGE_TOK_in_bvTerm6956_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BVSGE_TOK_in_bvTerm6956	= { FOLLOW_BVSGE_TOK_in_bvTerm6956_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6958  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6958_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6958	= { FOLLOW_LPAREN_in_bvTerm6958_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6960  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6960_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6960	= { FOLLOW_formula_in_bvTerm6960_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6963  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6963_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6963	= { FOLLOW_COMMA_in_bvTerm6963_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6965  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6965_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6965	= { FOLLOW_formula_in_bvTerm6965_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6968  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6968_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6968	= { FOLLOW_RPAREN_in_bvTerm6968_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_stringTerm_in_bvTerm6980  */
-static	ANTLR3_BITWORD FOLLOW_stringTerm_in_bvTerm6980_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_stringTerm_in_bvTerm6980	= { FOLLOW_stringTerm_in_bvTerm6980_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_CONCAT_TOK_in_stringTerm7006  */
-static	ANTLR3_BITWORD FOLLOW_STRING_CONCAT_TOK_in_stringTerm7006_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_STRING_CONCAT_TOK_in_stringTerm7006	= { FOLLOW_STRING_CONCAT_TOK_in_stringTerm7006_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7008  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7008_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7008	= { FOLLOW_LPAREN_in_stringTerm7008_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7010  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7010_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7010	= { FOLLOW_formula_in_stringTerm7010_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7021  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7021_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7021	= { FOLLOW_COMMA_in_stringTerm7021_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7023  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7023_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7023	= { FOLLOW_formula_in_stringTerm7023_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7031  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7031_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7031	= { FOLLOW_RPAREN_in_stringTerm7031_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_LENGTH_TOK_in_stringTerm7043  */
-static	ANTLR3_BITWORD FOLLOW_STRING_LENGTH_TOK_in_stringTerm7043_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_STRING_LENGTH_TOK_in_stringTerm7043	= { FOLLOW_STRING_LENGTH_TOK_in_stringTerm7043_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7045  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7045_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7045	= { FOLLOW_LPAREN_in_stringTerm7045_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7047  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7047_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7047	= { FOLLOW_formula_in_stringTerm7047_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7050  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7050_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7050	= { FOLLOW_RPAREN_in_stringTerm7050_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_CONTAINS_TOK_in_stringTerm7062  */
-static	ANTLR3_BITWORD FOLLOW_STRING_CONTAINS_TOK_in_stringTerm7062_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_STRING_CONTAINS_TOK_in_stringTerm7062	= { FOLLOW_STRING_CONTAINS_TOK_in_stringTerm7062_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7064  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7064_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7064	= { FOLLOW_LPAREN_in_stringTerm7064_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7066  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7066_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7066	= { FOLLOW_formula_in_stringTerm7066_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7069  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7069_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7069	= { FOLLOW_COMMA_in_stringTerm7069_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7071  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7071_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7071	= { FOLLOW_formula_in_stringTerm7071_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7074  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7074_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7074	= { FOLLOW_RPAREN_in_stringTerm7074_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_SUBSTR_TOK_in_stringTerm7086  */
-static	ANTLR3_BITWORD FOLLOW_STRING_SUBSTR_TOK_in_stringTerm7086_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_STRING_SUBSTR_TOK_in_stringTerm7086	= { FOLLOW_STRING_SUBSTR_TOK_in_stringTerm7086_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7088  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7088_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7088	= { FOLLOW_LPAREN_in_stringTerm7088_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7090  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7090_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7090	= { FOLLOW_formula_in_stringTerm7090_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7093  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7093_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7093	= { FOLLOW_COMMA_in_stringTerm7093_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7095  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7095_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7095	= { FOLLOW_formula_in_stringTerm7095_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7098  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7098_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7098	= { FOLLOW_COMMA_in_stringTerm7098_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7100  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7100_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7100	= { FOLLOW_formula_in_stringTerm7100_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7103  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7103_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7103	= { FOLLOW_RPAREN_in_stringTerm7103_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_INDEXOF_TOK_in_stringTerm7115  */
-static	ANTLR3_BITWORD FOLLOW_STRING_INDEXOF_TOK_in_stringTerm7115_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_STRING_INDEXOF_TOK_in_stringTerm7115	= { FOLLOW_STRING_INDEXOF_TOK_in_stringTerm7115_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7117  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7117_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7117	= { FOLLOW_LPAREN_in_stringTerm7117_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7119  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7119_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7119	= { FOLLOW_formula_in_stringTerm7119_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7122  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7122_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7122	= { FOLLOW_COMMA_in_stringTerm7122_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7124  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7124_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7124	= { FOLLOW_formula_in_stringTerm7124_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7127  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7127_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7127	= { FOLLOW_COMMA_in_stringTerm7127_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7129  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7129_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7129	= { FOLLOW_formula_in_stringTerm7129_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7132  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7132_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7132	= { FOLLOW_RPAREN_in_stringTerm7132_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_REPLACE_TOK_in_stringTerm7144  */
-static	ANTLR3_BITWORD FOLLOW_STRING_REPLACE_TOK_in_stringTerm7144_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_STRING_REPLACE_TOK_in_stringTerm7144	= { FOLLOW_STRING_REPLACE_TOK_in_stringTerm7144_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7146  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7146_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7146	= { FOLLOW_LPAREN_in_stringTerm7146_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7148  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7148_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7148	= { FOLLOW_formula_in_stringTerm7148_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7151  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7151_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7151	= { FOLLOW_COMMA_in_stringTerm7151_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7153  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7153_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7153	= { FOLLOW_formula_in_stringTerm7153_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7156  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7156_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7156	= { FOLLOW_COMMA_in_stringTerm7156_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7158  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7158_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7158	= { FOLLOW_formula_in_stringTerm7158_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7161  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7161_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7161	= { FOLLOW_RPAREN_in_stringTerm7161_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_PREFIXOF_TOK_in_stringTerm7173  */
-static	ANTLR3_BITWORD FOLLOW_STRING_PREFIXOF_TOK_in_stringTerm7173_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_STRING_PREFIXOF_TOK_in_stringTerm7173	= { FOLLOW_STRING_PREFIXOF_TOK_in_stringTerm7173_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7175  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7175_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7175	= { FOLLOW_LPAREN_in_stringTerm7175_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7177  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7177_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7177	= { FOLLOW_formula_in_stringTerm7177_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7180  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7180_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7180	= { FOLLOW_COMMA_in_stringTerm7180_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7182  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7182_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7182	= { FOLLOW_formula_in_stringTerm7182_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7185  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7185_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7185	= { FOLLOW_RPAREN_in_stringTerm7185_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_SUFFIXOF_TOK_in_stringTerm7197  */
-static	ANTLR3_BITWORD FOLLOW_STRING_SUFFIXOF_TOK_in_stringTerm7197_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_STRING_SUFFIXOF_TOK_in_stringTerm7197	= { FOLLOW_STRING_SUFFIXOF_TOK_in_stringTerm7197_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7199  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7199_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7199	= { FOLLOW_LPAREN_in_stringTerm7199_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7201  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7201_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7201	= { FOLLOW_formula_in_stringTerm7201_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7204  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7204_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7204	= { FOLLOW_COMMA_in_stringTerm7204_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7206  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7206_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7206	= { FOLLOW_formula_in_stringTerm7206_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7209  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7209_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7209	= { FOLLOW_RPAREN_in_stringTerm7209_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_STOI_TOK_in_stringTerm7221  */
-static	ANTLR3_BITWORD FOLLOW_STRING_STOI_TOK_in_stringTerm7221_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_STRING_STOI_TOK_in_stringTerm7221	= { FOLLOW_STRING_STOI_TOK_in_stringTerm7221_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7223  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7223_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7223	= { FOLLOW_LPAREN_in_stringTerm7223_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7225  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7225_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7225	= { FOLLOW_formula_in_stringTerm7225_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7228  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7228_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7228	= { FOLLOW_RPAREN_in_stringTerm7228_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_ITOS_TOK_in_stringTerm7240  */
-static	ANTLR3_BITWORD FOLLOW_STRING_ITOS_TOK_in_stringTerm7240_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_STRING_ITOS_TOK_in_stringTerm7240	= { FOLLOW_STRING_ITOS_TOK_in_stringTerm7240_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7242  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7242_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7242	= { FOLLOW_LPAREN_in_stringTerm7242_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7244  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7244_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7244	= { FOLLOW_formula_in_stringTerm7244_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7247  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7247_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7247	= { FOLLOW_RPAREN_in_stringTerm7247_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_U16TOS_TOK_in_stringTerm7259  */
-static	ANTLR3_BITWORD FOLLOW_STRING_U16TOS_TOK_in_stringTerm7259_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_STRING_U16TOS_TOK_in_stringTerm7259	= { FOLLOW_STRING_U16TOS_TOK_in_stringTerm7259_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7261  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7261_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7261	= { FOLLOW_LPAREN_in_stringTerm7261_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7263  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7263_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7263	= { FOLLOW_formula_in_stringTerm7263_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7266  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7266_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7266	= { FOLLOW_RPAREN_in_stringTerm7266_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_STOU16_TOK_in_stringTerm7278  */
-static	ANTLR3_BITWORD FOLLOW_STRING_STOU16_TOK_in_stringTerm7278_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_STRING_STOU16_TOK_in_stringTerm7278	= { FOLLOW_STRING_STOU16_TOK_in_stringTerm7278_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7280  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7280_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7280	= { FOLLOW_LPAREN_in_stringTerm7280_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7282  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7282_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7282	= { FOLLOW_formula_in_stringTerm7282_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7285  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7285_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7285	= { FOLLOW_RPAREN_in_stringTerm7285_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_U32TOS_TOK_in_stringTerm7297  */
-static	ANTLR3_BITWORD FOLLOW_STRING_U32TOS_TOK_in_stringTerm7297_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_STRING_U32TOS_TOK_in_stringTerm7297	= { FOLLOW_STRING_U32TOS_TOK_in_stringTerm7297_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7299  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7299_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7299	= { FOLLOW_LPAREN_in_stringTerm7299_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7301  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7301_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7301	= { FOLLOW_formula_in_stringTerm7301_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7304  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7304_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7304	= { FOLLOW_RPAREN_in_stringTerm7304_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_STOU32_TOK_in_stringTerm7316  */
-static	ANTLR3_BITWORD FOLLOW_STRING_STOU32_TOK_in_stringTerm7316_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_STRING_STOU32_TOK_in_stringTerm7316	= { FOLLOW_STRING_STOU32_TOK_in_stringTerm7316_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7318  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7318_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7318	= { FOLLOW_LPAREN_in_stringTerm7318_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7320  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7320_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7320	= { FOLLOW_formula_in_stringTerm7320_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7323  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7323_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7323	= { FOLLOW_RPAREN_in_stringTerm7323_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_stringTerm7346  */
-static	ANTLR3_BITWORD FOLLOW_str_in_stringTerm7346_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_str_in_stringTerm7346	= { FOLLOW_str_in_stringTerm7346_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_setsTerm_in_stringTerm7360  */
-static	ANTLR3_BITWORD FOLLOW_setsTerm_in_stringTerm7360_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_setsTerm_in_stringTerm7360	= { FOLLOW_setsTerm_in_stringTerm7360_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_SETS_CARD_TOK_in_setsTerm7388  */
-static	ANTLR3_BITWORD FOLLOW_SETS_CARD_TOK_in_setsTerm7388_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_SETS_CARD_TOK_in_setsTerm7388	= { FOLLOW_SETS_CARD_TOK_in_setsTerm7388_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_setsTerm7390  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_setsTerm7390_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_setsTerm7390	= { FOLLOW_LPAREN_in_setsTerm7390_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_setsTerm7392  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_setsTerm7392_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_setsTerm7392	= { FOLLOW_formula_in_setsTerm7392_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_setsTerm7395  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_setsTerm7395_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_setsTerm7395	= { FOLLOW_RPAREN_in_setsTerm7395_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleTerm_in_setsTerm7407  */
-static	ANTLR3_BITWORD FOLLOW_simpleTerm_in_setsTerm7407_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_simpleTerm_in_setsTerm7407	= { FOLLOW_simpleTerm_in_setsTerm7407_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_iteTerm_in_simpleTerm7438  */
-static	ANTLR3_BITWORD FOLLOW_iteTerm_in_simpleTerm7438_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_iteTerm_in_simpleTerm7438	= { FOLLOW_iteTerm_in_simpleTerm7438_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_simpleTerm7461  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_simpleTerm7461_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_simpleTerm7461	= { FOLLOW_LPAREN_in_simpleTerm7461_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_simpleTerm7463  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_simpleTerm7463_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_simpleTerm7463	= { FOLLOW_formula_in_simpleTerm7463_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_simpleTerm7474  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_simpleTerm7474_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_simpleTerm7474	= { FOLLOW_COMMA_in_simpleTerm7474_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_simpleTerm7476  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_simpleTerm7476_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_simpleTerm7476	= { FOLLOW_formula_in_simpleTerm7476_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_simpleTerm7484  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_simpleTerm7484_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_simpleTerm7484	= { FOLLOW_RPAREN_in_simpleTerm7484_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_simpleTerm7507  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_simpleTerm7507_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_simpleTerm7507	= { FOLLOW_LPAREN_in_simpleTerm7507_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_simpleTerm7509  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_simpleTerm7509_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_simpleTerm7509	= { FOLLOW_RPAREN_in_simpleTerm7509_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_PARENHASH_in_simpleTerm7553  */
-static	ANTLR3_BITWORD FOLLOW_PARENHASH_in_simpleTerm7553_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000001000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_PARENHASH_in_simpleTerm7553	= { FOLLOW_PARENHASH_in_simpleTerm7553_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_HASHPAREN_in_simpleTerm7555  */
-static	ANTLR3_BITWORD FOLLOW_HASHPAREN_in_simpleTerm7555_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_HASHPAREN_in_simpleTerm7555	= { FOLLOW_HASHPAREN_in_simpleTerm7555_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACE_in_simpleTerm7573  */
-static	ANTLR3_BITWORD FOLLOW_LBRACE_in_simpleTerm7573_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000020000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LBRACE_in_simpleTerm7573	= { FOLLOW_LBRACE_in_simpleTerm7573_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACE_in_simpleTerm7575  */
-static	ANTLR3_BITWORD FOLLOW_RBRACE_in_simpleTerm7575_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RBRACE_in_simpleTerm7575	= { FOLLOW_RBRACE_in_simpleTerm7575_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_UNIVSET_TOK_in_simpleTerm7587  */
-static	ANTLR3_BITWORD FOLLOW_UNIVSET_TOK_in_simpleTerm7587_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_UNIVSET_TOK_in_simpleTerm7587	= { FOLLOW_UNIVSET_TOK_in_simpleTerm7587_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACE_in_simpleTerm7606  */
-static	ANTLR3_BITWORD FOLLOW_LBRACE_in_simpleTerm7606_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_LBRACE_in_simpleTerm7606	= { FOLLOW_LBRACE_in_simpleTerm7606_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_simpleTerm7608  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_simpleTerm7608_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000020000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_simpleTerm7608	= { FOLLOW_formula_in_simpleTerm7608_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_simpleTerm7619  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_simpleTerm7619_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_simpleTerm7619	= { FOLLOW_COMMA_in_simpleTerm7619_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_simpleTerm7621  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_simpleTerm7621_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000020000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_simpleTerm7621	= { FOLLOW_formula_in_simpleTerm7621_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACE_in_simpleTerm7629  */
-static	ANTLR3_BITWORD FOLLOW_RBRACE_in_simpleTerm7629_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RBRACE_in_simpleTerm7629	= { FOLLOW_RBRACE_in_simpleTerm7629_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BAR_in_simpleTerm7648  */
-static	ANTLR3_BITWORD FOLLOW_BAR_in_simpleTerm7648_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000004000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BAR_in_simpleTerm7648	= { FOLLOW_BAR_in_simpleTerm7648_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BAR_in_simpleTerm7650  */
-static	ANTLR3_BITWORD FOLLOW_BAR_in_simpleTerm7650_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_BAR_in_simpleTerm7650	= { FOLLOW_BAR_in_simpleTerm7650_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_simpleTerm7652  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_simpleTerm7652_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000004000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_simpleTerm7652	= { FOLLOW_formula_in_simpleTerm7652_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BAR_in_simpleTerm7657  */
-static	ANTLR3_BITWORD FOLLOW_BAR_in_simpleTerm7657_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000004000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BAR_in_simpleTerm7657	= { FOLLOW_BAR_in_simpleTerm7657_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BAR_in_simpleTerm7659  */
-static	ANTLR3_BITWORD FOLLOW_BAR_in_simpleTerm7659_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_BAR_in_simpleTerm7659	= { FOLLOW_BAR_in_simpleTerm7659_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_ARRAY_TOK_in_simpleTerm7678  */
-static	ANTLR3_BITWORD FOLLOW_ARRAY_TOK_in_simpleTerm7678_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_ARRAY_TOK_in_simpleTerm7678	= { FOLLOW_ARRAY_TOK_in_simpleTerm7678_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_simpleTerm7682  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_simpleTerm7682_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0441020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_simpleTerm7682	= { FOLLOW_LPAREN_in_simpleTerm7682_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_simpleTerm7688  */
-static	ANTLR3_BITWORD FOLLOW_restrictedType_in_simpleTerm7688_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_simpleTerm7688	= { FOLLOW_restrictedType_in_simpleTerm7688_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_OF_TOK_in_simpleTerm7691  */
-static	ANTLR3_BITWORD FOLLOW_OF_TOK_in_simpleTerm7691_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0441020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_OF_TOK_in_simpleTerm7691	= { FOLLOW_OF_TOK_in_simpleTerm7691_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_simpleTerm7693  */
-static	ANTLR3_BITWORD FOLLOW_restrictedType_in_simpleTerm7693_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_simpleTerm7693	= { FOLLOW_restrictedType_in_simpleTerm7693_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_simpleTerm7700  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_simpleTerm7700_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_simpleTerm7700	= { FOLLOW_RPAREN_in_simpleTerm7700_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_simpleTerm7702  */
-static	ANTLR3_BITWORD FOLLOW_COLON_in_simpleTerm7702_bits[]	= { ANTLR3_UINT64_LIT(0x400000000000C100), ANTLR3_UINT64_LIT(0x04208B0002000000), ANTLR3_UINT64_LIT(0x0440000000000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_simpleTerm7702	= { FOLLOW_COLON_in_simpleTerm7702_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleTerm_in_simpleTerm7704  */
-static	ANTLR3_BITWORD FOLLOW_simpleTerm_in_simpleTerm7704_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_simpleTerm_in_simpleTerm7704	= { FOLLOW_simpleTerm_in_simpleTerm7704_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_TRUE_TOK_in_simpleTerm7724  */
-static	ANTLR3_BITWORD FOLLOW_TRUE_TOK_in_simpleTerm7724_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_TRUE_TOK_in_simpleTerm7724	= { FOLLOW_TRUE_TOK_in_simpleTerm7724_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FALSE_TOK_in_simpleTerm7733  */
-static	ANTLR3_BITWORD FOLLOW_FALSE_TOK_in_simpleTerm7733_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_FALSE_TOK_in_simpleTerm7733	= { FOLLOW_FALSE_TOK_in_simpleTerm7733_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECIMAL_LITERAL_in_simpleTerm7753  */
-static	ANTLR3_BITWORD FOLLOW_DECIMAL_LITERAL_in_simpleTerm7753_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_DECIMAL_LITERAL_in_simpleTerm7753	= { FOLLOW_DECIMAL_LITERAL_in_simpleTerm7753_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_simpleTerm7761  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_simpleTerm7761_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_simpleTerm7761	= { FOLLOW_INTEGER_LITERAL_in_simpleTerm7761_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_HEX_LITERAL_in_simpleTerm7775  */
-static	ANTLR3_BITWORD FOLLOW_HEX_LITERAL_in_simpleTerm7775_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_HEX_LITERAL_in_simpleTerm7775	= { FOLLOW_HEX_LITERAL_in_simpleTerm7775_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BINARY_LITERAL_in_simpleTerm7787  */
-static	ANTLR3_BITWORD FOLLOW_BINARY_LITERAL_in_simpleTerm7787_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_BINARY_LITERAL_in_simpleTerm7787	= { FOLLOW_BINARY_LITERAL_in_simpleTerm7787_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_PARENHASH_in_simpleTerm7805  */
-static	ANTLR3_BITWORD FOLLOW_PARENHASH_in_simpleTerm7805_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_PARENHASH_in_simpleTerm7805	= { FOLLOW_PARENHASH_in_simpleTerm7805_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordEntry_in_simpleTerm7807  */
-static	ANTLR3_BITWORD FOLLOW_recordEntry_in_simpleTerm7807_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000001000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_recordEntry_in_simpleTerm7807	= { FOLLOW_recordEntry_in_simpleTerm7807_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_simpleTerm7818  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_simpleTerm7818_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_simpleTerm7818	= { FOLLOW_COMMA_in_simpleTerm7818_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordEntry_in_simpleTerm7820  */
-static	ANTLR3_BITWORD FOLLOW_recordEntry_in_simpleTerm7820_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000001000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_recordEntry_in_simpleTerm7820	= { FOLLOW_recordEntry_in_simpleTerm7820_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_HASHPAREN_in_simpleTerm7828  */
-static	ANTLR3_BITWORD FOLLOW_HASHPAREN_in_simpleTerm7828_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_HASHPAREN_in_simpleTerm7828	= { FOLLOW_HASHPAREN_in_simpleTerm7828_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_simpleTerm7847  */
-static	ANTLR3_BITWORD FOLLOW_identifier_in_simpleTerm7847_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_simpleTerm7847	= { FOLLOW_identifier_in_simpleTerm7847_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_typeAscription7887  */
-static	ANTLR3_BITWORD FOLLOW_COLON_in_typeAscription7887_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_typeAscription7887	= { FOLLOW_COLON_in_typeAscription7887_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_typeAscription7889  */
-static	ANTLR3_BITWORD FOLLOW_COLON_in_typeAscription7889_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_typeAscription7889	= { FOLLOW_COLON_in_typeAscription7889_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_typeAscription7891  */
-static	ANTLR3_BITWORD FOLLOW_type_in_typeAscription7891_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_type_in_typeAscription7891	= { FOLLOW_type_in_typeAscription7891_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_recordEntry7908  */
-static	ANTLR3_BITWORD FOLLOW_identifier_in_recordEntry7908_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000001000) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_recordEntry7908	= { FOLLOW_identifier_in_recordEntry7908_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSIGN_TOK_in_recordEntry7911  */
-static	ANTLR3_BITWORD FOLLOW_ASSIGN_TOK_in_recordEntry7911_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_ASSIGN_TOK_in_recordEntry7911	= { FOLLOW_ASSIGN_TOK_in_recordEntry7911_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_recordEntry7913  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_recordEntry7913_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_recordEntry7913	= { FOLLOW_formula_in_recordEntry7913_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_IF_TOK_in_iteTerm7935  */
-static	ANTLR3_BITWORD FOLLOW_IF_TOK_in_iteTerm7935_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_IF_TOK_in_iteTerm7935	= { FOLLOW_IF_TOK_in_iteTerm7935_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_iteTerm7937  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_iteTerm7937_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0002000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_iteTerm7937	= { FOLLOW_formula_in_iteTerm7937_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_THEN_TOK_in_iteTerm7946  */
-static	ANTLR3_BITWORD FOLLOW_THEN_TOK_in_iteTerm7946_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_THEN_TOK_in_iteTerm7946	= { FOLLOW_THEN_TOK_in_iteTerm7946_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_iteTerm7948  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_iteTerm7948_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000030000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_iteTerm7948	= { FOLLOW_formula_in_iteTerm7948_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_iteElseTerm_in_iteTerm7957  */
-static	ANTLR3_BITWORD FOLLOW_iteElseTerm_in_iteTerm7957_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
-static  ANTLR3_BITSET_LIST FOLLOW_iteElseTerm_in_iteTerm7957	= { FOLLOW_iteElseTerm_in_iteTerm7957_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_ENDIF_TOK_in_iteTerm7966  */
-static	ANTLR3_BITWORD FOLLOW_ENDIF_TOK_in_iteTerm7966_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_ENDIF_TOK_in_iteTerm7966	= { FOLLOW_ENDIF_TOK_in_iteTerm7966_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_ELSE_TOK_in_iteElseTerm7993  */
-static	ANTLR3_BITWORD FOLLOW_ELSE_TOK_in_iteElseTerm7993_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_ELSE_TOK_in_iteElseTerm7993	= { FOLLOW_ELSE_TOK_in_iteElseTerm7993_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_iteElseTerm7995  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_iteElseTerm7995_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_iteElseTerm7995	= { FOLLOW_formula_in_iteElseTerm7995_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_ELSEIF_TOK_in_iteElseTerm8002  */
-static	ANTLR3_BITWORD FOLLOW_ELSEIF_TOK_in_iteElseTerm8002_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_ELSEIF_TOK_in_iteElseTerm8002	= { FOLLOW_ELSEIF_TOK_in_iteElseTerm8002_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_iteElseTerm8008  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_iteElseTerm8008_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0002000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_iteElseTerm8008	= { FOLLOW_formula_in_iteElseTerm8008_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_THEN_TOK_in_iteElseTerm8017  */
-static	ANTLR3_BITWORD FOLLOW_THEN_TOK_in_iteElseTerm8017_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0xA6348B0016400006), ANTLR3_UINT64_LIT(0x04E937FFC2000010) };
-static  ANTLR3_BITSET_LIST FOLLOW_THEN_TOK_in_iteElseTerm8017	= { FOLLOW_THEN_TOK_in_iteElseTerm8017_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_iteElseTerm8023  */
-static	ANTLR3_BITWORD FOLLOW_formula_in_iteElseTerm8023_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000030000) };
-static  ANTLR3_BITSET_LIST FOLLOW_formula_in_iteElseTerm8023	= { FOLLOW_formula_in_iteElseTerm8023_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_iteElseTerm_in_iteElseTerm8036  */
-static	ANTLR3_BITWORD FOLLOW_iteElseTerm_in_iteElseTerm8036_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_iteElseTerm_in_iteElseTerm8036	= { FOLLOW_iteElseTerm_in_iteElseTerm8036_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_datatypeDef8072  */
-static	ANTLR3_BITWORD FOLLOW_identifier_in_datatypeDef8072_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0040000000100000) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_datatypeDef8072	= { FOLLOW_identifier_in_datatypeDef8072_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACKET_in_datatypeDef8083  */
-static	ANTLR3_BITWORD FOLLOW_LBRACKET_in_datatypeDef8083_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LBRACKET_in_datatypeDef8083	= { FOLLOW_LBRACKET_in_datatypeDef8083_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_datatypeDef8085  */
-static	ANTLR3_BITWORD FOLLOW_identifier_in_datatypeDef8085_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_datatypeDef8085	= { FOLLOW_identifier_in_datatypeDef8085_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_datatypeDef8098  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_datatypeDef8098_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_datatypeDef8098	= { FOLLOW_COMMA_in_datatypeDef8098_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_datatypeDef8100  */
-static	ANTLR3_BITWORD FOLLOW_identifier_in_datatypeDef8100_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_datatypeDef8100	= { FOLLOW_identifier_in_datatypeDef8100_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACKET_in_datatypeDef8114  */
-static	ANTLR3_BITWORD FOLLOW_RBRACKET_in_datatypeDef8114_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
-static  ANTLR3_BITSET_LIST FOLLOW_RBRACKET_in_datatypeDef8114	= { FOLLOW_RBRACKET_in_datatypeDef8114_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_datatypeDef8133  */
-static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_datatypeDef8133_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_datatypeDef8133	= { FOLLOW_EQUAL_TOK_in_datatypeDef8133_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_constructorDef_in_datatypeDef8135  */
-static	ANTLR3_BITWORD FOLLOW_constructorDef_in_datatypeDef8135_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000004002) };
-static  ANTLR3_BITSET_LIST FOLLOW_constructorDef_in_datatypeDef8135	= { FOLLOW_constructorDef_in_datatypeDef8135_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BAR_in_datatypeDef8144  */
-static	ANTLR3_BITWORD FOLLOW_BAR_in_datatypeDef8144_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_BAR_in_datatypeDef8144	= { FOLLOW_BAR_in_datatypeDef8144_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_constructorDef_in_datatypeDef8146  */
-static	ANTLR3_BITWORD FOLLOW_constructorDef_in_datatypeDef8146_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000004002) };
-static  ANTLR3_BITSET_LIST FOLLOW_constructorDef_in_datatypeDef8146	= { FOLLOW_constructorDef_in_datatypeDef8146_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_constructorDef8177  */
-static	ANTLR3_BITWORD FOLLOW_identifier_in_constructorDef8177_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0400000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_constructorDef8177	= { FOLLOW_identifier_in_constructorDef8177_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_constructorDef8192  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_in_constructorDef8192_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_constructorDef8192	= { FOLLOW_LPAREN_in_constructorDef8192_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_selector_in_constructorDef8200  */
-static	ANTLR3_BITWORD FOLLOW_selector_in_constructorDef8200_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_selector_in_constructorDef8200	= { FOLLOW_selector_in_constructorDef8200_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_constructorDef8211  */
-static	ANTLR3_BITWORD FOLLOW_COMMA_in_constructorDef8211_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_constructorDef8211	= { FOLLOW_COMMA_in_constructorDef8211_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_selector_in_constructorDef8213  */
-static	ANTLR3_BITWORD FOLLOW_selector_in_constructorDef8213_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
-static  ANTLR3_BITSET_LIST FOLLOW_selector_in_constructorDef8213	= { FOLLOW_selector_in_constructorDef8213_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_constructorDef8225  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_in_constructorDef8225_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_constructorDef8225	= { FOLLOW_RPAREN_in_constructorDef8225_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_selector8257  */
-static	ANTLR3_BITWORD FOLLOW_identifier_in_selector8257_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_selector8257	= { FOLLOW_identifier_in_selector8257_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_selector8260  */
-static	ANTLR3_BITWORD FOLLOW_COLON_in_selector8260_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x0641020000000000), ANTLR3_UINT64_LIT(0x000088000C080000) };
-static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_selector8260	= { FOLLOW_COLON_in_selector8260_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_selector8262  */
-static	ANTLR3_BITWORD FOLLOW_type_in_selector8262_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_type_in_selector8262	= { FOLLOW_type_in_selector8262_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_numeral8337  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_numeral8337_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_numeral8337	= { FOLLOW_INTEGER_LITERAL_in_numeral8337_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_integer8362  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_integer8362_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_integer8362	= { FOLLOW_INTEGER_LITERAL_in_integer8362_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_MINUS_TOK_in_integer8374  */
-static	ANTLR3_BITWORD FOLLOW_MINUS_TOK_in_integer8374_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000800000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_MINUS_TOK_in_integer8374	= { FOLLOW_MINUS_TOK_in_integer8374_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_integer8376  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_integer8376_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_integer8376	= { FOLLOW_INTEGER_LITERAL_in_integer8376_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_LITERAL_in_str8398  */
-static	ANTLR3_BITWORD FOLLOW_STRING_LITERAL_in_str8398_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_STRING_LITERAL_in_str8398	= { FOLLOW_STRING_LITERAL_in_str8398_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_letDecl_in_synpred1_Cvc1998  */
-static	ANTLR3_BITWORD FOLLOW_letDecl_in_synpred1_Cvc1998_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_letDecl_in_synpred1_Cvc1998	= { FOLLOW_letDecl_in_synpred1_Cvc1998_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm6027  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm6027_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm6027	= { FOLLOW_formula_in_postfixTerm6027_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_postfixTerm6030  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_postfixTerm6030_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_postfixTerm6030	= { FOLLOW_RPAREN_in_postfixTerm6030_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DIVISIBLE_TOK_in_postfixTerm6046  */
+static	ANTLR3_BITWORD FOLLOW_DIVISIBLE_TOK_in_postfixTerm6046_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DIVISIBLE_TOK_in_postfixTerm6046	= { FOLLOW_DIVISIBLE_TOK_in_postfixTerm6046_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_postfixTerm6048  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_postfixTerm6048_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_postfixTerm6048	= { FOLLOW_LPAREN_in_postfixTerm6048_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm6050  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm6050_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm6050	= { FOLLOW_formula_in_postfixTerm6050_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_postfixTerm6053  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_postfixTerm6053_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_postfixTerm6053	= { FOLLOW_COMMA_in_postfixTerm6053_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_postfixTerm6057  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_postfixTerm6057_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_postfixTerm6057	= { FOLLOW_numeral_in_postfixTerm6057_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_postfixTerm6059  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_postfixTerm6059_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_postfixTerm6059	= { FOLLOW_RPAREN_in_postfixTerm6059_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DISTINCT_TOK_in_postfixTerm6075  */
+static	ANTLR3_BITWORD FOLLOW_DISTINCT_TOK_in_postfixTerm6075_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DISTINCT_TOK_in_postfixTerm6075	= { FOLLOW_DISTINCT_TOK_in_postfixTerm6075_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_postfixTerm6077  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_postfixTerm6077_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_postfixTerm6077	= { FOLLOW_LPAREN_in_postfixTerm6077_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm6085  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm6085_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm6085	= { FOLLOW_formula_in_postfixTerm6085_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_postfixTerm6098  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_postfixTerm6098_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_postfixTerm6098	= { FOLLOW_COMMA_in_postfixTerm6098_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_postfixTerm6100  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_postfixTerm6100_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_postfixTerm6100	= { FOLLOW_formula_in_postfixTerm6100_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_postfixTerm6108  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_postfixTerm6108_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_postfixTerm6108	= { FOLLOW_RPAREN_in_postfixTerm6108_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_typeAscription_in_postfixTerm6130  */
+static	ANTLR3_BITWORD FOLLOW_typeAscription_in_postfixTerm6130_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_typeAscription_in_postfixTerm6130	= { FOLLOW_typeAscription_in_postfixTerm6130_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVXOR_TOK_in_bvTerm6171  */
+static	ANTLR3_BITWORD FOLLOW_BVXOR_TOK_in_bvTerm6171_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVXOR_TOK_in_bvTerm6171	= { FOLLOW_BVXOR_TOK_in_bvTerm6171_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6173  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6173_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6173	= { FOLLOW_LPAREN_in_bvTerm6173_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6175  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6175_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6175	= { FOLLOW_formula_in_bvTerm6175_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6178  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6178_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6178	= { FOLLOW_COMMA_in_bvTerm6178_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6180  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6180_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6180	= { FOLLOW_formula_in_bvTerm6180_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6183  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6183_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6183	= { FOLLOW_RPAREN_in_bvTerm6183_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVNAND_TOK_in_bvTerm6195  */
+static	ANTLR3_BITWORD FOLLOW_BVNAND_TOK_in_bvTerm6195_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVNAND_TOK_in_bvTerm6195	= { FOLLOW_BVNAND_TOK_in_bvTerm6195_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6197  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6197_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6197	= { FOLLOW_LPAREN_in_bvTerm6197_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6199  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6199_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6199	= { FOLLOW_formula_in_bvTerm6199_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6202  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6202_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6202	= { FOLLOW_COMMA_in_bvTerm6202_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6204  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6204_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6204	= { FOLLOW_formula_in_bvTerm6204_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6207  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6207_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6207	= { FOLLOW_RPAREN_in_bvTerm6207_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVNOR_TOK_in_bvTerm6219  */
+static	ANTLR3_BITWORD FOLLOW_BVNOR_TOK_in_bvTerm6219_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVNOR_TOK_in_bvTerm6219	= { FOLLOW_BVNOR_TOK_in_bvTerm6219_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6221  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6221_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6221	= { FOLLOW_LPAREN_in_bvTerm6221_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6223  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6223_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6223	= { FOLLOW_formula_in_bvTerm6223_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6226  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6226_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6226	= { FOLLOW_COMMA_in_bvTerm6226_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6228  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6228_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6228	= { FOLLOW_formula_in_bvTerm6228_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6231  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6231_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6231	= { FOLLOW_RPAREN_in_bvTerm6231_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVCOMP_TOK_in_bvTerm6243  */
+static	ANTLR3_BITWORD FOLLOW_BVCOMP_TOK_in_bvTerm6243_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVCOMP_TOK_in_bvTerm6243	= { FOLLOW_BVCOMP_TOK_in_bvTerm6243_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6245  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6245_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6245	= { FOLLOW_LPAREN_in_bvTerm6245_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6247  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6247_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6247	= { FOLLOW_formula_in_bvTerm6247_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6250  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6250_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6250	= { FOLLOW_COMMA_in_bvTerm6250_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6252  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6252_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6252	= { FOLLOW_formula_in_bvTerm6252_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6255  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6255_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6255	= { FOLLOW_RPAREN_in_bvTerm6255_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVXNOR_TOK_in_bvTerm6267  */
+static	ANTLR3_BITWORD FOLLOW_BVXNOR_TOK_in_bvTerm6267_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVXNOR_TOK_in_bvTerm6267	= { FOLLOW_BVXNOR_TOK_in_bvTerm6267_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6269  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6269_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6269	= { FOLLOW_LPAREN_in_bvTerm6269_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6271  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6271_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6271	= { FOLLOW_formula_in_bvTerm6271_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6274  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6274_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6274	= { FOLLOW_COMMA_in_bvTerm6274_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6276  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6276_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6276	= { FOLLOW_formula_in_bvTerm6276_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6279  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6279_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6279	= { FOLLOW_RPAREN_in_bvTerm6279_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVUMINUS_TOK_in_bvTerm6298  */
+static	ANTLR3_BITWORD FOLLOW_BVUMINUS_TOK_in_bvTerm6298_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVUMINUS_TOK_in_bvTerm6298	= { FOLLOW_BVUMINUS_TOK_in_bvTerm6298_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6300  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6300_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6300	= { FOLLOW_LPAREN_in_bvTerm6300_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6302  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6302_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6302	= { FOLLOW_formula_in_bvTerm6302_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6305  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6305_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6305	= { FOLLOW_RPAREN_in_bvTerm6305_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVPLUS_TOK_in_bvTerm6323  */
+static	ANTLR3_BITWORD FOLLOW_BVPLUS_TOK_in_bvTerm6323_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVPLUS_TOK_in_bvTerm6323	= { FOLLOW_BVPLUS_TOK_in_bvTerm6323_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6325  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6325_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6325	= { FOLLOW_LPAREN_in_bvTerm6325_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6329  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6329_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6329	= { FOLLOW_numeral_in_bvTerm6329_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6331  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6331_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6331	= { FOLLOW_COMMA_in_bvTerm6331_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6333  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6333_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6333	= { FOLLOW_formula_in_bvTerm6333_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6344  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6344_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6344	= { FOLLOW_COMMA_in_bvTerm6344_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6346  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6346_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6346	= { FOLLOW_formula_in_bvTerm6346_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6354  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6354_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6354	= { FOLLOW_RPAREN_in_bvTerm6354_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSUB_TOK_in_bvTerm6372  */
+static	ANTLR3_BITWORD FOLLOW_BVSUB_TOK_in_bvTerm6372_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSUB_TOK_in_bvTerm6372	= { FOLLOW_BVSUB_TOK_in_bvTerm6372_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6374  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6374_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6374	= { FOLLOW_LPAREN_in_bvTerm6374_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6378  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6378_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6378	= { FOLLOW_numeral_in_bvTerm6378_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6380  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6380_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6380	= { FOLLOW_COMMA_in_bvTerm6380_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6382  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6382_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6382	= { FOLLOW_formula_in_bvTerm6382_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6385  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6385_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6385	= { FOLLOW_COMMA_in_bvTerm6385_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6387  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6387_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6387	= { FOLLOW_formula_in_bvTerm6387_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6390  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6390_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6390	= { FOLLOW_RPAREN_in_bvTerm6390_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVMULT_TOK_in_bvTerm6408  */
+static	ANTLR3_BITWORD FOLLOW_BVMULT_TOK_in_bvTerm6408_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVMULT_TOK_in_bvTerm6408	= { FOLLOW_BVMULT_TOK_in_bvTerm6408_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6410  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6410_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6410	= { FOLLOW_LPAREN_in_bvTerm6410_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6414  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6414_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6414	= { FOLLOW_numeral_in_bvTerm6414_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6416  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6416_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6416	= { FOLLOW_COMMA_in_bvTerm6416_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6418  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6418_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6418	= { FOLLOW_formula_in_bvTerm6418_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6421  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6421_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6421	= { FOLLOW_COMMA_in_bvTerm6421_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6423  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6423_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6423	= { FOLLOW_formula_in_bvTerm6423_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6426  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6426_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6426	= { FOLLOW_RPAREN_in_bvTerm6426_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVUDIV_TOK_in_bvTerm6444  */
+static	ANTLR3_BITWORD FOLLOW_BVUDIV_TOK_in_bvTerm6444_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVUDIV_TOK_in_bvTerm6444	= { FOLLOW_BVUDIV_TOK_in_bvTerm6444_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6446  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6446_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6446	= { FOLLOW_LPAREN_in_bvTerm6446_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6448  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6448_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6448	= { FOLLOW_formula_in_bvTerm6448_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6451  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6451_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6451	= { FOLLOW_COMMA_in_bvTerm6451_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6453  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6453_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6453	= { FOLLOW_formula_in_bvTerm6453_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6456  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6456_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6456	= { FOLLOW_RPAREN_in_bvTerm6456_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSDIV_TOK_in_bvTerm6474  */
+static	ANTLR3_BITWORD FOLLOW_BVSDIV_TOK_in_bvTerm6474_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSDIV_TOK_in_bvTerm6474	= { FOLLOW_BVSDIV_TOK_in_bvTerm6474_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6476  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6476_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6476	= { FOLLOW_LPAREN_in_bvTerm6476_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6478  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6478_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6478	= { FOLLOW_formula_in_bvTerm6478_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6481  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6481_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6481	= { FOLLOW_COMMA_in_bvTerm6481_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6483  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6483_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6483	= { FOLLOW_formula_in_bvTerm6483_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6486  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6486_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6486	= { FOLLOW_RPAREN_in_bvTerm6486_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVUREM_TOK_in_bvTerm6504  */
+static	ANTLR3_BITWORD FOLLOW_BVUREM_TOK_in_bvTerm6504_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVUREM_TOK_in_bvTerm6504	= { FOLLOW_BVUREM_TOK_in_bvTerm6504_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6506  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6506_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6506	= { FOLLOW_LPAREN_in_bvTerm6506_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6508  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6508_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6508	= { FOLLOW_formula_in_bvTerm6508_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6511  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6511_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6511	= { FOLLOW_COMMA_in_bvTerm6511_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6513  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6513_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6513	= { FOLLOW_formula_in_bvTerm6513_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6516  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6516_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6516	= { FOLLOW_RPAREN_in_bvTerm6516_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSREM_TOK_in_bvTerm6534  */
+static	ANTLR3_BITWORD FOLLOW_BVSREM_TOK_in_bvTerm6534_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSREM_TOK_in_bvTerm6534	= { FOLLOW_BVSREM_TOK_in_bvTerm6534_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6536  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6536_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6536	= { FOLLOW_LPAREN_in_bvTerm6536_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6538  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6538_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6538	= { FOLLOW_formula_in_bvTerm6538_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6541  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6541_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6541	= { FOLLOW_COMMA_in_bvTerm6541_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6543  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6543_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6543	= { FOLLOW_formula_in_bvTerm6543_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6546  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6546_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6546	= { FOLLOW_RPAREN_in_bvTerm6546_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSMOD_TOK_in_bvTerm6564  */
+static	ANTLR3_BITWORD FOLLOW_BVSMOD_TOK_in_bvTerm6564_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSMOD_TOK_in_bvTerm6564	= { FOLLOW_BVSMOD_TOK_in_bvTerm6564_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6566  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6566_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6566	= { FOLLOW_LPAREN_in_bvTerm6566_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6568  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6568_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6568	= { FOLLOW_formula_in_bvTerm6568_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6571  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6571_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6571	= { FOLLOW_COMMA_in_bvTerm6571_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6573  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6573_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6573	= { FOLLOW_formula_in_bvTerm6573_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6576  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6576_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6576	= { FOLLOW_RPAREN_in_bvTerm6576_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSHL_TOK_in_bvTerm6594  */
+static	ANTLR3_BITWORD FOLLOW_BVSHL_TOK_in_bvTerm6594_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSHL_TOK_in_bvTerm6594	= { FOLLOW_BVSHL_TOK_in_bvTerm6594_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6596  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6596_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6596	= { FOLLOW_LPAREN_in_bvTerm6596_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6598  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6598_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6598	= { FOLLOW_formula_in_bvTerm6598_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6601  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6601_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6601	= { FOLLOW_COMMA_in_bvTerm6601_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6603  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6603_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6603	= { FOLLOW_formula_in_bvTerm6603_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6606  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6606_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6606	= { FOLLOW_RPAREN_in_bvTerm6606_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVASHR_TOK_in_bvTerm6624  */
+static	ANTLR3_BITWORD FOLLOW_BVASHR_TOK_in_bvTerm6624_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVASHR_TOK_in_bvTerm6624	= { FOLLOW_BVASHR_TOK_in_bvTerm6624_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6626  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6626_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6626	= { FOLLOW_LPAREN_in_bvTerm6626_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6628  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6628_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6628	= { FOLLOW_formula_in_bvTerm6628_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6631  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6631_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6631	= { FOLLOW_COMMA_in_bvTerm6631_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6633  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6633_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6633	= { FOLLOW_formula_in_bvTerm6633_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6636  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6636_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6636	= { FOLLOW_RPAREN_in_bvTerm6636_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVLSHR_TOK_in_bvTerm6654  */
+static	ANTLR3_BITWORD FOLLOW_BVLSHR_TOK_in_bvTerm6654_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVLSHR_TOK_in_bvTerm6654	= { FOLLOW_BVLSHR_TOK_in_bvTerm6654_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6656  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6656_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6656	= { FOLLOW_LPAREN_in_bvTerm6656_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6658  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6658_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6658	= { FOLLOW_formula_in_bvTerm6658_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6661  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6661_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6661	= { FOLLOW_COMMA_in_bvTerm6661_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6663  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6663_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6663	= { FOLLOW_formula_in_bvTerm6663_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6666  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6666_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6666	= { FOLLOW_RPAREN_in_bvTerm6666_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SX_TOK_in_bvTerm6684  */
+static	ANTLR3_BITWORD FOLLOW_SX_TOK_in_bvTerm6684_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_SX_TOK_in_bvTerm6684	= { FOLLOW_SX_TOK_in_bvTerm6684_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6686  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6686_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6686	= { FOLLOW_LPAREN_in_bvTerm6686_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6688  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6688_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6688	= { FOLLOW_formula_in_bvTerm6688_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6691  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6691_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6691	= { FOLLOW_COMMA_in_bvTerm6691_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6695  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6695_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6695	= { FOLLOW_numeral_in_bvTerm6695_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6697  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6697_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6697	= { FOLLOW_RPAREN_in_bvTerm6697_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVZEROEXTEND_TOK_in_bvTerm6715  */
+static	ANTLR3_BITWORD FOLLOW_BVZEROEXTEND_TOK_in_bvTerm6715_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVZEROEXTEND_TOK_in_bvTerm6715	= { FOLLOW_BVZEROEXTEND_TOK_in_bvTerm6715_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6717  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6717_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6717	= { FOLLOW_LPAREN_in_bvTerm6717_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6719  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6719_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6719	= { FOLLOW_formula_in_bvTerm6719_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6722  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6722_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6722	= { FOLLOW_COMMA_in_bvTerm6722_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6726  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6726_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6726	= { FOLLOW_numeral_in_bvTerm6726_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6728  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6728_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6728	= { FOLLOW_RPAREN_in_bvTerm6728_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVREPEAT_TOK_in_bvTerm6746  */
+static	ANTLR3_BITWORD FOLLOW_BVREPEAT_TOK_in_bvTerm6746_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVREPEAT_TOK_in_bvTerm6746	= { FOLLOW_BVREPEAT_TOK_in_bvTerm6746_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6748  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6748_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6748	= { FOLLOW_LPAREN_in_bvTerm6748_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6750  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6750_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6750	= { FOLLOW_formula_in_bvTerm6750_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6753  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6753_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6753	= { FOLLOW_COMMA_in_bvTerm6753_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6757  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6757_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6757	= { FOLLOW_numeral_in_bvTerm6757_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6759  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6759_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6759	= { FOLLOW_RPAREN_in_bvTerm6759_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVROTR_TOK_in_bvTerm6777  */
+static	ANTLR3_BITWORD FOLLOW_BVROTR_TOK_in_bvTerm6777_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVROTR_TOK_in_bvTerm6777	= { FOLLOW_BVROTR_TOK_in_bvTerm6777_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6779  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6779_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6779	= { FOLLOW_LPAREN_in_bvTerm6779_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6781  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6781_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6781	= { FOLLOW_formula_in_bvTerm6781_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6784  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6784_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6784	= { FOLLOW_COMMA_in_bvTerm6784_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6788  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6788_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6788	= { FOLLOW_numeral_in_bvTerm6788_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6790  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6790_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6790	= { FOLLOW_RPAREN_in_bvTerm6790_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVROTL_TOK_in_bvTerm6808  */
+static	ANTLR3_BITWORD FOLLOW_BVROTL_TOK_in_bvTerm6808_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVROTL_TOK_in_bvTerm6808	= { FOLLOW_BVROTL_TOK_in_bvTerm6808_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6810  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6810_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6810	= { FOLLOW_LPAREN_in_bvTerm6810_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6812  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6812_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6812	= { FOLLOW_formula_in_bvTerm6812_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6815  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6815_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6815	= { FOLLOW_COMMA_in_bvTerm6815_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_numeral_in_bvTerm6819  */
+static	ANTLR3_BITWORD FOLLOW_numeral_in_bvTerm6819_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_numeral_in_bvTerm6819	= { FOLLOW_numeral_in_bvTerm6819_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6821  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6821_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6821	= { FOLLOW_RPAREN_in_bvTerm6821_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVLT_TOK_in_bvTerm6840  */
+static	ANTLR3_BITWORD FOLLOW_BVLT_TOK_in_bvTerm6840_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVLT_TOK_in_bvTerm6840	= { FOLLOW_BVLT_TOK_in_bvTerm6840_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6842  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6842_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6842	= { FOLLOW_LPAREN_in_bvTerm6842_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6844  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6844_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6844	= { FOLLOW_formula_in_bvTerm6844_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6847  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6847_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6847	= { FOLLOW_COMMA_in_bvTerm6847_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6849  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6849_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6849	= { FOLLOW_formula_in_bvTerm6849_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6852  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6852_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6852	= { FOLLOW_RPAREN_in_bvTerm6852_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVLE_TOK_in_bvTerm6864  */
+static	ANTLR3_BITWORD FOLLOW_BVLE_TOK_in_bvTerm6864_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVLE_TOK_in_bvTerm6864	= { FOLLOW_BVLE_TOK_in_bvTerm6864_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6866  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6866_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6866	= { FOLLOW_LPAREN_in_bvTerm6866_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6868  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6868_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6868	= { FOLLOW_formula_in_bvTerm6868_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6871  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6871_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6871	= { FOLLOW_COMMA_in_bvTerm6871_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6873  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6873_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6873	= { FOLLOW_formula_in_bvTerm6873_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6876  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6876_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6876	= { FOLLOW_RPAREN_in_bvTerm6876_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVGT_TOK_in_bvTerm6888  */
+static	ANTLR3_BITWORD FOLLOW_BVGT_TOK_in_bvTerm6888_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVGT_TOK_in_bvTerm6888	= { FOLLOW_BVGT_TOK_in_bvTerm6888_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6890  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6890_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6890	= { FOLLOW_LPAREN_in_bvTerm6890_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6892  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6892_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6892	= { FOLLOW_formula_in_bvTerm6892_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6895  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6895_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6895	= { FOLLOW_COMMA_in_bvTerm6895_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6897  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6897_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6897	= { FOLLOW_formula_in_bvTerm6897_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6900  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6900_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6900	= { FOLLOW_RPAREN_in_bvTerm6900_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVGE_TOK_in_bvTerm6912  */
+static	ANTLR3_BITWORD FOLLOW_BVGE_TOK_in_bvTerm6912_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVGE_TOK_in_bvTerm6912	= { FOLLOW_BVGE_TOK_in_bvTerm6912_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6914  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6914_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6914	= { FOLLOW_LPAREN_in_bvTerm6914_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6916  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6916_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6916	= { FOLLOW_formula_in_bvTerm6916_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6919  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6919_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6919	= { FOLLOW_COMMA_in_bvTerm6919_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6921  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6921_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6921	= { FOLLOW_formula_in_bvTerm6921_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6924  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6924_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6924	= { FOLLOW_RPAREN_in_bvTerm6924_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSLT_TOK_in_bvTerm6936  */
+static	ANTLR3_BITWORD FOLLOW_BVSLT_TOK_in_bvTerm6936_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSLT_TOK_in_bvTerm6936	= { FOLLOW_BVSLT_TOK_in_bvTerm6936_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6938  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6938_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6938	= { FOLLOW_LPAREN_in_bvTerm6938_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6940  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6940_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6940	= { FOLLOW_formula_in_bvTerm6940_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6943  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6943_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6943	= { FOLLOW_COMMA_in_bvTerm6943_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6945  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6945_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6945	= { FOLLOW_formula_in_bvTerm6945_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6948  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6948_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6948	= { FOLLOW_RPAREN_in_bvTerm6948_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSLE_TOK_in_bvTerm6960  */
+static	ANTLR3_BITWORD FOLLOW_BVSLE_TOK_in_bvTerm6960_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSLE_TOK_in_bvTerm6960	= { FOLLOW_BVSLE_TOK_in_bvTerm6960_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6962  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6962_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6962	= { FOLLOW_LPAREN_in_bvTerm6962_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6964  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6964_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6964	= { FOLLOW_formula_in_bvTerm6964_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6967  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6967_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6967	= { FOLLOW_COMMA_in_bvTerm6967_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6969  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6969_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6969	= { FOLLOW_formula_in_bvTerm6969_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6972  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6972_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6972	= { FOLLOW_RPAREN_in_bvTerm6972_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSGT_TOK_in_bvTerm6984  */
+static	ANTLR3_BITWORD FOLLOW_BVSGT_TOK_in_bvTerm6984_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSGT_TOK_in_bvTerm6984	= { FOLLOW_BVSGT_TOK_in_bvTerm6984_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm6986  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm6986_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm6986	= { FOLLOW_LPAREN_in_bvTerm6986_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6988  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6988_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6988	= { FOLLOW_formula_in_bvTerm6988_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm6991  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm6991_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm6991	= { FOLLOW_COMMA_in_bvTerm6991_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm6993  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm6993_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm6993	= { FOLLOW_formula_in_bvTerm6993_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm6996  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm6996_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm6996	= { FOLLOW_RPAREN_in_bvTerm6996_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BVSGE_TOK_in_bvTerm7008  */
+static	ANTLR3_BITWORD FOLLOW_BVSGE_TOK_in_bvTerm7008_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BVSGE_TOK_in_bvTerm7008	= { FOLLOW_BVSGE_TOK_in_bvTerm7008_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_bvTerm7010  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_bvTerm7010_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_bvTerm7010	= { FOLLOW_LPAREN_in_bvTerm7010_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm7012  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm7012_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm7012	= { FOLLOW_formula_in_bvTerm7012_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_bvTerm7015  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_bvTerm7015_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_bvTerm7015	= { FOLLOW_COMMA_in_bvTerm7015_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_bvTerm7017  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_bvTerm7017_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_bvTerm7017	= { FOLLOW_formula_in_bvTerm7017_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_bvTerm7020  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_bvTerm7020_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_bvTerm7020	= { FOLLOW_RPAREN_in_bvTerm7020_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_stringTerm_in_bvTerm7032  */
+static	ANTLR3_BITWORD FOLLOW_stringTerm_in_bvTerm7032_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_stringTerm_in_bvTerm7032	= { FOLLOW_stringTerm_in_bvTerm7032_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_CONCAT_TOK_in_stringTerm7058  */
+static	ANTLR3_BITWORD FOLLOW_STRING_CONCAT_TOK_in_stringTerm7058_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_CONCAT_TOK_in_stringTerm7058	= { FOLLOW_STRING_CONCAT_TOK_in_stringTerm7058_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7060  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7060_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7060	= { FOLLOW_LPAREN_in_stringTerm7060_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7062  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7062_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7062	= { FOLLOW_formula_in_stringTerm7062_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7073  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7073_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7073	= { FOLLOW_COMMA_in_stringTerm7073_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7075  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7075_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7075	= { FOLLOW_formula_in_stringTerm7075_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7083  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7083_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7083	= { FOLLOW_RPAREN_in_stringTerm7083_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_LENGTH_TOK_in_stringTerm7095  */
+static	ANTLR3_BITWORD FOLLOW_STRING_LENGTH_TOK_in_stringTerm7095_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_LENGTH_TOK_in_stringTerm7095	= { FOLLOW_STRING_LENGTH_TOK_in_stringTerm7095_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7097  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7097_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7097	= { FOLLOW_LPAREN_in_stringTerm7097_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7099  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7099_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7099	= { FOLLOW_formula_in_stringTerm7099_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7102  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7102_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7102	= { FOLLOW_RPAREN_in_stringTerm7102_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_CONTAINS_TOK_in_stringTerm7114  */
+static	ANTLR3_BITWORD FOLLOW_STRING_CONTAINS_TOK_in_stringTerm7114_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_CONTAINS_TOK_in_stringTerm7114	= { FOLLOW_STRING_CONTAINS_TOK_in_stringTerm7114_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7116  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7116_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7116	= { FOLLOW_LPAREN_in_stringTerm7116_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7118  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7118_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7118	= { FOLLOW_formula_in_stringTerm7118_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7121  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7121_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7121	= { FOLLOW_COMMA_in_stringTerm7121_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7123  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7123_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7123	= { FOLLOW_formula_in_stringTerm7123_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7126  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7126_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7126	= { FOLLOW_RPAREN_in_stringTerm7126_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_SUBSTR_TOK_in_stringTerm7138  */
+static	ANTLR3_BITWORD FOLLOW_STRING_SUBSTR_TOK_in_stringTerm7138_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_SUBSTR_TOK_in_stringTerm7138	= { FOLLOW_STRING_SUBSTR_TOK_in_stringTerm7138_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7140  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7140_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7140	= { FOLLOW_LPAREN_in_stringTerm7140_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7142  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7142_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7142	= { FOLLOW_formula_in_stringTerm7142_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7145  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7145_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7145	= { FOLLOW_COMMA_in_stringTerm7145_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7147  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7147_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7147	= { FOLLOW_formula_in_stringTerm7147_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7150  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7150_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7150	= { FOLLOW_COMMA_in_stringTerm7150_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7152  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7152_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7152	= { FOLLOW_formula_in_stringTerm7152_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7155  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7155_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7155	= { FOLLOW_RPAREN_in_stringTerm7155_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_INDEXOF_TOK_in_stringTerm7167  */
+static	ANTLR3_BITWORD FOLLOW_STRING_INDEXOF_TOK_in_stringTerm7167_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_INDEXOF_TOK_in_stringTerm7167	= { FOLLOW_STRING_INDEXOF_TOK_in_stringTerm7167_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7169  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7169_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7169	= { FOLLOW_LPAREN_in_stringTerm7169_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7171  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7171_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7171	= { FOLLOW_formula_in_stringTerm7171_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7174  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7174_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7174	= { FOLLOW_COMMA_in_stringTerm7174_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7176  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7176_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7176	= { FOLLOW_formula_in_stringTerm7176_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7179  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7179_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7179	= { FOLLOW_COMMA_in_stringTerm7179_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7181  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7181_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7181	= { FOLLOW_formula_in_stringTerm7181_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7184  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7184_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7184	= { FOLLOW_RPAREN_in_stringTerm7184_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_REPLACE_TOK_in_stringTerm7196  */
+static	ANTLR3_BITWORD FOLLOW_STRING_REPLACE_TOK_in_stringTerm7196_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_REPLACE_TOK_in_stringTerm7196	= { FOLLOW_STRING_REPLACE_TOK_in_stringTerm7196_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7198  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7198_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7198	= { FOLLOW_LPAREN_in_stringTerm7198_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7200  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7200_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7200	= { FOLLOW_formula_in_stringTerm7200_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7203  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7203_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7203	= { FOLLOW_COMMA_in_stringTerm7203_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7205  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7205_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7205	= { FOLLOW_formula_in_stringTerm7205_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7208  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7208_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7208	= { FOLLOW_COMMA_in_stringTerm7208_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7210  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7210_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7210	= { FOLLOW_formula_in_stringTerm7210_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7213  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7213_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7213	= { FOLLOW_RPAREN_in_stringTerm7213_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_PREFIXOF_TOK_in_stringTerm7225  */
+static	ANTLR3_BITWORD FOLLOW_STRING_PREFIXOF_TOK_in_stringTerm7225_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_PREFIXOF_TOK_in_stringTerm7225	= { FOLLOW_STRING_PREFIXOF_TOK_in_stringTerm7225_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7227  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7227_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7227	= { FOLLOW_LPAREN_in_stringTerm7227_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7229  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7229_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7229	= { FOLLOW_formula_in_stringTerm7229_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7232  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7232_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7232	= { FOLLOW_COMMA_in_stringTerm7232_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7234  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7234_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7234	= { FOLLOW_formula_in_stringTerm7234_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7237  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7237_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7237	= { FOLLOW_RPAREN_in_stringTerm7237_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_SUFFIXOF_TOK_in_stringTerm7249  */
+static	ANTLR3_BITWORD FOLLOW_STRING_SUFFIXOF_TOK_in_stringTerm7249_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_SUFFIXOF_TOK_in_stringTerm7249	= { FOLLOW_STRING_SUFFIXOF_TOK_in_stringTerm7249_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7251  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7251_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7251	= { FOLLOW_LPAREN_in_stringTerm7251_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7253  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7253_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7253	= { FOLLOW_formula_in_stringTerm7253_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stringTerm7256  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_stringTerm7256_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stringTerm7256	= { FOLLOW_COMMA_in_stringTerm7256_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7258  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7258_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7258	= { FOLLOW_formula_in_stringTerm7258_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7261  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7261_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7261	= { FOLLOW_RPAREN_in_stringTerm7261_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_STOI_TOK_in_stringTerm7273  */
+static	ANTLR3_BITWORD FOLLOW_STRING_STOI_TOK_in_stringTerm7273_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_STOI_TOK_in_stringTerm7273	= { FOLLOW_STRING_STOI_TOK_in_stringTerm7273_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7275  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7275_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7275	= { FOLLOW_LPAREN_in_stringTerm7275_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7277  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7277_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7277	= { FOLLOW_formula_in_stringTerm7277_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7280  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7280_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7280	= { FOLLOW_RPAREN_in_stringTerm7280_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_ITOS_TOK_in_stringTerm7292  */
+static	ANTLR3_BITWORD FOLLOW_STRING_ITOS_TOK_in_stringTerm7292_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_ITOS_TOK_in_stringTerm7292	= { FOLLOW_STRING_ITOS_TOK_in_stringTerm7292_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7294  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7294_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7294	= { FOLLOW_LPAREN_in_stringTerm7294_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7296  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7296_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7296	= { FOLLOW_formula_in_stringTerm7296_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7299  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7299_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7299	= { FOLLOW_RPAREN_in_stringTerm7299_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_U16TOS_TOK_in_stringTerm7311  */
+static	ANTLR3_BITWORD FOLLOW_STRING_U16TOS_TOK_in_stringTerm7311_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_U16TOS_TOK_in_stringTerm7311	= { FOLLOW_STRING_U16TOS_TOK_in_stringTerm7311_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7313  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7313_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7313	= { FOLLOW_LPAREN_in_stringTerm7313_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7315  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7315_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7315	= { FOLLOW_formula_in_stringTerm7315_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7318  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7318_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7318	= { FOLLOW_RPAREN_in_stringTerm7318_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_STOU16_TOK_in_stringTerm7330  */
+static	ANTLR3_BITWORD FOLLOW_STRING_STOU16_TOK_in_stringTerm7330_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_STOU16_TOK_in_stringTerm7330	= { FOLLOW_STRING_STOU16_TOK_in_stringTerm7330_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7332  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7332_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7332	= { FOLLOW_LPAREN_in_stringTerm7332_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7334  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7334_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7334	= { FOLLOW_formula_in_stringTerm7334_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7337  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7337_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7337	= { FOLLOW_RPAREN_in_stringTerm7337_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_U32TOS_TOK_in_stringTerm7349  */
+static	ANTLR3_BITWORD FOLLOW_STRING_U32TOS_TOK_in_stringTerm7349_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_U32TOS_TOK_in_stringTerm7349	= { FOLLOW_STRING_U32TOS_TOK_in_stringTerm7349_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7351  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7351_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7351	= { FOLLOW_LPAREN_in_stringTerm7351_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7353  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7353_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7353	= { FOLLOW_formula_in_stringTerm7353_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7356  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7356_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7356	= { FOLLOW_RPAREN_in_stringTerm7356_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_STOU32_TOK_in_stringTerm7368  */
+static	ANTLR3_BITWORD FOLLOW_STRING_STOU32_TOK_in_stringTerm7368_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_STOU32_TOK_in_stringTerm7368	= { FOLLOW_STRING_STOU32_TOK_in_stringTerm7368_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_stringTerm7370  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_stringTerm7370_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_stringTerm7370	= { FOLLOW_LPAREN_in_stringTerm7370_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_stringTerm7372  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_stringTerm7372_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_stringTerm7372	= { FOLLOW_formula_in_stringTerm7372_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_stringTerm7375  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_stringTerm7375_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_stringTerm7375	= { FOLLOW_RPAREN_in_stringTerm7375_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_stringTerm7398  */
+static	ANTLR3_BITWORD FOLLOW_str_in_stringTerm7398_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_stringTerm7398	= { FOLLOW_str_in_stringTerm7398_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_setsTerm_in_stringTerm7412  */
+static	ANTLR3_BITWORD FOLLOW_setsTerm_in_stringTerm7412_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_setsTerm_in_stringTerm7412	= { FOLLOW_setsTerm_in_stringTerm7412_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SETS_CARD_TOK_in_setsTerm7440  */
+static	ANTLR3_BITWORD FOLLOW_SETS_CARD_TOK_in_setsTerm7440_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_SETS_CARD_TOK_in_setsTerm7440	= { FOLLOW_SETS_CARD_TOK_in_setsTerm7440_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_setsTerm7442  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_setsTerm7442_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_setsTerm7442	= { FOLLOW_LPAREN_in_setsTerm7442_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_setsTerm7444  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_setsTerm7444_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_setsTerm7444	= { FOLLOW_formula_in_setsTerm7444_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_setsTerm7447  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_setsTerm7447_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_setsTerm7447	= { FOLLOW_RPAREN_in_setsTerm7447_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleTerm_in_setsTerm7459  */
+static	ANTLR3_BITWORD FOLLOW_simpleTerm_in_setsTerm7459_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleTerm_in_setsTerm7459	= { FOLLOW_simpleTerm_in_setsTerm7459_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_iteTerm_in_simpleTerm7490  */
+static	ANTLR3_BITWORD FOLLOW_iteTerm_in_simpleTerm7490_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_iteTerm_in_simpleTerm7490	= { FOLLOW_iteTerm_in_simpleTerm7490_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_simpleTerm7513  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_simpleTerm7513_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_simpleTerm7513	= { FOLLOW_LPAREN_in_simpleTerm7513_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_simpleTerm7515  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_simpleTerm7515_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_simpleTerm7515	= { FOLLOW_formula_in_simpleTerm7515_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_simpleTerm7526  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_simpleTerm7526_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_simpleTerm7526	= { FOLLOW_COMMA_in_simpleTerm7526_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_simpleTerm7528  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_simpleTerm7528_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_simpleTerm7528	= { FOLLOW_formula_in_simpleTerm7528_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_simpleTerm7536  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_simpleTerm7536_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_simpleTerm7536	= { FOLLOW_RPAREN_in_simpleTerm7536_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_simpleTerm7559  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_simpleTerm7559_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_simpleTerm7559	= { FOLLOW_LPAREN_in_simpleTerm7559_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_simpleTerm7561  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_simpleTerm7561_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_simpleTerm7561	= { FOLLOW_RPAREN_in_simpleTerm7561_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PARENHASH_in_simpleTerm7605  */
+static	ANTLR3_BITWORD FOLLOW_PARENHASH_in_simpleTerm7605_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000001000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_PARENHASH_in_simpleTerm7605	= { FOLLOW_PARENHASH_in_simpleTerm7605_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_HASHPAREN_in_simpleTerm7607  */
+static	ANTLR3_BITWORD FOLLOW_HASHPAREN_in_simpleTerm7607_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_HASHPAREN_in_simpleTerm7607	= { FOLLOW_HASHPAREN_in_simpleTerm7607_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACE_in_simpleTerm7625  */
+static	ANTLR3_BITWORD FOLLOW_LBRACE_in_simpleTerm7625_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACE_in_simpleTerm7625	= { FOLLOW_LBRACE_in_simpleTerm7625_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACE_in_simpleTerm7627  */
+static	ANTLR3_BITWORD FOLLOW_RBRACE_in_simpleTerm7627_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACE_in_simpleTerm7627	= { FOLLOW_RBRACE_in_simpleTerm7627_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_UNIVSET_TOK_in_simpleTerm7639  */
+static	ANTLR3_BITWORD FOLLOW_UNIVSET_TOK_in_simpleTerm7639_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_UNIVSET_TOK_in_simpleTerm7639	= { FOLLOW_UNIVSET_TOK_in_simpleTerm7639_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACE_in_simpleTerm7658  */
+static	ANTLR3_BITWORD FOLLOW_LBRACE_in_simpleTerm7658_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACE_in_simpleTerm7658	= { FOLLOW_LBRACE_in_simpleTerm7658_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_simpleTerm7660  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_simpleTerm7660_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_simpleTerm7660	= { FOLLOW_formula_in_simpleTerm7660_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_simpleTerm7671  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_simpleTerm7671_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_simpleTerm7671	= { FOLLOW_COMMA_in_simpleTerm7671_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_simpleTerm7673  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_simpleTerm7673_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000080000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_simpleTerm7673	= { FOLLOW_formula_in_simpleTerm7673_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACE_in_simpleTerm7681  */
+static	ANTLR3_BITWORD FOLLOW_RBRACE_in_simpleTerm7681_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACE_in_simpleTerm7681	= { FOLLOW_RBRACE_in_simpleTerm7681_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BAR_in_simpleTerm7700  */
+static	ANTLR3_BITWORD FOLLOW_BAR_in_simpleTerm7700_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000004000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BAR_in_simpleTerm7700	= { FOLLOW_BAR_in_simpleTerm7700_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BAR_in_simpleTerm7702  */
+static	ANTLR3_BITWORD FOLLOW_BAR_in_simpleTerm7702_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_BAR_in_simpleTerm7702	= { FOLLOW_BAR_in_simpleTerm7702_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_simpleTerm7704  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_simpleTerm7704_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000004000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_simpleTerm7704	= { FOLLOW_formula_in_simpleTerm7704_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BAR_in_simpleTerm7709  */
+static	ANTLR3_BITWORD FOLLOW_BAR_in_simpleTerm7709_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000004000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BAR_in_simpleTerm7709	= { FOLLOW_BAR_in_simpleTerm7709_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BAR_in_simpleTerm7711  */
+static	ANTLR3_BITWORD FOLLOW_BAR_in_simpleTerm7711_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BAR_in_simpleTerm7711	= { FOLLOW_BAR_in_simpleTerm7711_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ARRAY_TOK_in_simpleTerm7730  */
+static	ANTLR3_BITWORD FOLLOW_ARRAY_TOK_in_simpleTerm7730_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_ARRAY_TOK_in_simpleTerm7730	= { FOLLOW_ARRAY_TOK_in_simpleTerm7730_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_simpleTerm7734  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_simpleTerm7734_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1102020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_simpleTerm7734	= { FOLLOW_LPAREN_in_simpleTerm7734_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_simpleTerm7740  */
+static	ANTLR3_BITWORD FOLLOW_restrictedType_in_simpleTerm7740_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000008) };
+static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_simpleTerm7740	= { FOLLOW_restrictedType_in_simpleTerm7740_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_OF_TOK_in_simpleTerm7743  */
+static	ANTLR3_BITWORD FOLLOW_OF_TOK_in_simpleTerm7743_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1102020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_OF_TOK_in_simpleTerm7743	= { FOLLOW_OF_TOK_in_simpleTerm7743_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_restrictedType_in_simpleTerm7745  */
+static	ANTLR3_BITWORD FOLLOW_restrictedType_in_simpleTerm7745_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_restrictedType_in_simpleTerm7745	= { FOLLOW_restrictedType_in_simpleTerm7745_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_simpleTerm7752  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_simpleTerm7752_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_simpleTerm7752	= { FOLLOW_RPAREN_in_simpleTerm7752_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_simpleTerm7754  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_simpleTerm7754_bits[]	= { ANTLR3_UINT64_LIT(0x400000000000C100), ANTLR3_UINT64_LIT(0x1081130002000000), ANTLR3_UINT64_LIT(0x1100000000000040) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_simpleTerm7754	= { FOLLOW_COLON_in_simpleTerm7754_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleTerm_in_simpleTerm7756  */
+static	ANTLR3_BITWORD FOLLOW_simpleTerm_in_simpleTerm7756_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleTerm_in_simpleTerm7756	= { FOLLOW_simpleTerm_in_simpleTerm7756_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TRUE_TOK_in_simpleTerm7776  */
+static	ANTLR3_BITWORD FOLLOW_TRUE_TOK_in_simpleTerm7776_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_TRUE_TOK_in_simpleTerm7776	= { FOLLOW_TRUE_TOK_in_simpleTerm7776_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FALSE_TOK_in_simpleTerm7785  */
+static	ANTLR3_BITWORD FOLLOW_FALSE_TOK_in_simpleTerm7785_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FALSE_TOK_in_simpleTerm7785	= { FOLLOW_FALSE_TOK_in_simpleTerm7785_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECIMAL_LITERAL_in_simpleTerm7805  */
+static	ANTLR3_BITWORD FOLLOW_DECIMAL_LITERAL_in_simpleTerm7805_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECIMAL_LITERAL_in_simpleTerm7805	= { FOLLOW_DECIMAL_LITERAL_in_simpleTerm7805_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_simpleTerm7813  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_simpleTerm7813_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_simpleTerm7813	= { FOLLOW_INTEGER_LITERAL_in_simpleTerm7813_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_HEX_LITERAL_in_simpleTerm7827  */
+static	ANTLR3_BITWORD FOLLOW_HEX_LITERAL_in_simpleTerm7827_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_HEX_LITERAL_in_simpleTerm7827	= { FOLLOW_HEX_LITERAL_in_simpleTerm7827_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BINARY_LITERAL_in_simpleTerm7839  */
+static	ANTLR3_BITWORD FOLLOW_BINARY_LITERAL_in_simpleTerm7839_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BINARY_LITERAL_in_simpleTerm7839	= { FOLLOW_BINARY_LITERAL_in_simpleTerm7839_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PARENHASH_in_simpleTerm7857  */
+static	ANTLR3_BITWORD FOLLOW_PARENHASH_in_simpleTerm7857_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_PARENHASH_in_simpleTerm7857	= { FOLLOW_PARENHASH_in_simpleTerm7857_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordEntry_in_simpleTerm7859  */
+static	ANTLR3_BITWORD FOLLOW_recordEntry_in_simpleTerm7859_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000001000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_recordEntry_in_simpleTerm7859	= { FOLLOW_recordEntry_in_simpleTerm7859_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_simpleTerm7870  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_simpleTerm7870_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_simpleTerm7870	= { FOLLOW_COMMA_in_simpleTerm7870_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_recordEntry_in_simpleTerm7872  */
+static	ANTLR3_BITWORD FOLLOW_recordEntry_in_simpleTerm7872_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000001000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_recordEntry_in_simpleTerm7872	= { FOLLOW_recordEntry_in_simpleTerm7872_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_HASHPAREN_in_simpleTerm7880  */
+static	ANTLR3_BITWORD FOLLOW_HASHPAREN_in_simpleTerm7880_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_HASHPAREN_in_simpleTerm7880	= { FOLLOW_HASHPAREN_in_simpleTerm7880_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_simpleTerm7899  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_simpleTerm7899_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_simpleTerm7899	= { FOLLOW_identifier_in_simpleTerm7899_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_typeAscription7939  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_typeAscription7939_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_typeAscription7939	= { FOLLOW_COLON_in_typeAscription7939_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_typeAscription7941  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_typeAscription7941_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1902020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_typeAscription7941	= { FOLLOW_COLON_in_typeAscription7941_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_typeAscription7943  */
+static	ANTLR3_BITWORD FOLLOW_type_in_typeAscription7943_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_typeAscription7943	= { FOLLOW_type_in_typeAscription7943_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_recordEntry7960  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_recordEntry7960_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000001000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_recordEntry7960	= { FOLLOW_identifier_in_recordEntry7960_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSIGN_TOK_in_recordEntry7963  */
+static	ANTLR3_BITWORD FOLLOW_ASSIGN_TOK_in_recordEntry7963_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_ASSIGN_TOK_in_recordEntry7963	= { FOLLOW_ASSIGN_TOK_in_recordEntry7963_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_recordEntry7965  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_recordEntry7965_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_recordEntry7965	= { FOLLOW_formula_in_recordEntry7965_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IF_TOK_in_iteTerm7987  */
+static	ANTLR3_BITWORD FOLLOW_IF_TOK_in_iteTerm7987_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_IF_TOK_in_iteTerm7987	= { FOLLOW_IF_TOK_in_iteTerm7987_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_iteTerm7989  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_iteTerm7989_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0008000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_iteTerm7989	= { FOLLOW_formula_in_iteTerm7989_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_THEN_TOK_in_iteTerm7998  */
+static	ANTLR3_BITWORD FOLLOW_THEN_TOK_in_iteTerm7998_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_THEN_TOK_in_iteTerm7998	= { FOLLOW_THEN_TOK_in_iteTerm7998_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_iteTerm8000  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_iteTerm8000_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000030000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_iteTerm8000	= { FOLLOW_formula_in_iteTerm8000_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_iteElseTerm_in_iteTerm8009  */
+static	ANTLR3_BITWORD FOLLOW_iteElseTerm_in_iteTerm8009_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000040000) };
+static  ANTLR3_BITSET_LIST FOLLOW_iteElseTerm_in_iteTerm8009	= { FOLLOW_iteElseTerm_in_iteTerm8009_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ENDIF_TOK_in_iteTerm8018  */
+static	ANTLR3_BITWORD FOLLOW_ENDIF_TOK_in_iteTerm8018_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_ENDIF_TOK_in_iteTerm8018	= { FOLLOW_ENDIF_TOK_in_iteTerm8018_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ELSE_TOK_in_iteElseTerm8045  */
+static	ANTLR3_BITWORD FOLLOW_ELSE_TOK_in_iteElseTerm8045_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_ELSE_TOK_in_iteElseTerm8045	= { FOLLOW_ELSE_TOK_in_iteElseTerm8045_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_iteElseTerm8047  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_iteElseTerm8047_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_iteElseTerm8047	= { FOLLOW_formula_in_iteElseTerm8047_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ELSEIF_TOK_in_iteElseTerm8054  */
+static	ANTLR3_BITWORD FOLLOW_ELSEIF_TOK_in_iteElseTerm8054_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_ELSEIF_TOK_in_iteElseTerm8054	= { FOLLOW_ELSEIF_TOK_in_iteElseTerm8054_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_iteElseTerm8060  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_iteElseTerm8060_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0008000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_iteElseTerm8060	= { FOLLOW_formula_in_iteElseTerm8060_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_THEN_TOK_in_iteElseTerm8069  */
+static	ANTLR3_BITWORD FOLLOW_THEN_TOK_in_iteElseTerm8069_bits[]	= { ANTLR3_UINT64_LIT(0x4001FFFFFFF8C110), ANTLR3_UINT64_LIT(0x98C9170016400006), ANTLR3_UINT64_LIT(0x13A4DFFF08000042) };
+static  ANTLR3_BITSET_LIST FOLLOW_THEN_TOK_in_iteElseTerm8069	= { FOLLOW_THEN_TOK_in_iteElseTerm8069_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_formula_in_iteElseTerm8075  */
+static	ANTLR3_BITWORD FOLLOW_formula_in_iteElseTerm8075_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000030000) };
+static  ANTLR3_BITSET_LIST FOLLOW_formula_in_iteElseTerm8075	= { FOLLOW_formula_in_iteElseTerm8075_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_iteElseTerm_in_iteElseTerm8088  */
+static	ANTLR3_BITWORD FOLLOW_iteElseTerm_in_iteElseTerm8088_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_iteElseTerm_in_iteElseTerm8088	= { FOLLOW_iteElseTerm_in_iteElseTerm8088_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_datatypeDef8124  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_datatypeDef8124_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_datatypeDef8124	= { FOLLOW_identifier_in_datatypeDef8124_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACKET_in_datatypeDef8135  */
+static	ANTLR3_BITWORD FOLLOW_LBRACKET_in_datatypeDef8135_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LBRACKET_in_datatypeDef8135	= { FOLLOW_LBRACKET_in_datatypeDef8135_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_datatypeDef8137  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_datatypeDef8137_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_datatypeDef8137	= { FOLLOW_identifier_in_datatypeDef8137_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_datatypeDef8150  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_datatypeDef8150_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_datatypeDef8150	= { FOLLOW_COMMA_in_datatypeDef8150_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_datatypeDef8152  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_datatypeDef8152_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_datatypeDef8152	= { FOLLOW_identifier_in_datatypeDef8152_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACKET_in_datatypeDef8166  */
+static	ANTLR3_BITWORD FOLLOW_RBRACKET_in_datatypeDef8166_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000100000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RBRACKET_in_datatypeDef8166	= { FOLLOW_RBRACKET_in_datatypeDef8166_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_datatypeDef8185  */
+static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_datatypeDef8185_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_datatypeDef8185	= { FOLLOW_EQUAL_TOK_in_datatypeDef8185_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_constructorDef_in_datatypeDef8187  */
+static	ANTLR3_BITWORD FOLLOW_constructorDef_in_datatypeDef8187_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000004002) };
+static  ANTLR3_BITSET_LIST FOLLOW_constructorDef_in_datatypeDef8187	= { FOLLOW_constructorDef_in_datatypeDef8187_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BAR_in_datatypeDef8196  */
+static	ANTLR3_BITWORD FOLLOW_BAR_in_datatypeDef8196_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_BAR_in_datatypeDef8196	= { FOLLOW_BAR_in_datatypeDef8196_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_constructorDef_in_datatypeDef8198  */
+static	ANTLR3_BITWORD FOLLOW_constructorDef_in_datatypeDef8198_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000004002) };
+static  ANTLR3_BITSET_LIST FOLLOW_constructorDef_in_datatypeDef8198	= { FOLLOW_constructorDef_in_datatypeDef8198_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_constructorDef8229  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_constructorDef8229_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x1000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_constructorDef8229	= { FOLLOW_identifier_in_constructorDef8229_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_constructorDef8244  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_in_constructorDef8244_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_constructorDef8244	= { FOLLOW_LPAREN_in_constructorDef8244_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_selector_in_constructorDef8252  */
+static	ANTLR3_BITWORD FOLLOW_selector_in_constructorDef8252_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_selector_in_constructorDef8252	= { FOLLOW_selector_in_constructorDef8252_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_constructorDef8263  */
+static	ANTLR3_BITWORD FOLLOW_COMMA_in_constructorDef8263_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COMMA_in_constructorDef8263	= { FOLLOW_COMMA_in_constructorDef8263_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_selector_in_constructorDef8265  */
+static	ANTLR3_BITWORD FOLLOW_selector_in_constructorDef8265_bits[]	= { ANTLR3_UINT64_LIT(0x0020000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000002000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_selector_in_constructorDef8265	= { FOLLOW_selector_in_constructorDef8265_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_constructorDef8277  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_in_constructorDef8277_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_constructorDef8277	= { FOLLOW_RPAREN_in_constructorDef8277_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_selector8309  */
+static	ANTLR3_BITWORD FOLLOW_identifier_in_selector8309_bits[]	= { ANTLR3_UINT64_LIT(0x0010000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_selector8309	= { FOLLOW_identifier_in_selector8309_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_selector8312  */
+static	ANTLR3_BITWORD FOLLOW_COLON_in_selector8312_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000030100), ANTLR3_UINT64_LIT(0x1902020000000000), ANTLR3_UINT64_LIT(0x0002200030200000) };
+static  ANTLR3_BITSET_LIST FOLLOW_COLON_in_selector8312	= { FOLLOW_COLON_in_selector8312_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_type_in_selector8314  */
+static	ANTLR3_BITWORD FOLLOW_type_in_selector8314_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_type_in_selector8314	= { FOLLOW_type_in_selector8314_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_numeral8389  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_numeral8389_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_numeral8389	= { FOLLOW_INTEGER_LITERAL_in_numeral8389_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_integer8414  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_integer8414_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_integer8414	= { FOLLOW_INTEGER_LITERAL_in_integer8414_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_MINUS_TOK_in_integer8426  */
+static	ANTLR3_BITWORD FOLLOW_MINUS_TOK_in_integer8426_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0001000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_MINUS_TOK_in_integer8426	= { FOLLOW_MINUS_TOK_in_integer8426_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_integer8428  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_integer8428_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_integer8428	= { FOLLOW_INTEGER_LITERAL_in_integer8428_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_LITERAL_in_str8450  */
+static	ANTLR3_BITWORD FOLLOW_STRING_LITERAL_in_str8450_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_LITERAL_in_str8450	= { FOLLOW_STRING_LITERAL_in_str8450_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_letDecl_in_synpred1_Cvc2018  */
+static	ANTLR3_BITWORD FOLLOW_letDecl_in_synpred1_Cvc2018_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_letDecl_in_synpred1_Cvc2018	= { FOLLOW_letDecl_in_synpred1_Cvc2018_bits, 1	};
 
 
 /* ==============================================
@@ -3243,7 +3255,7 @@ static  ANTLR3_BITSET_LIST FOLLOW_letDecl_in_synpred1_Cvc1998	= { FOLLOW_letDecl
  */
 /**
  * $ANTLR start parseExpr
- * ../../../../../../src/parser/cvc/Cvc.g:646:1: parseExpr returns [CVC4::Expr expr = CVC4::Expr()] : ( formula[expr] | EOF );
+ * ../../../../src/parser/cvc/Cvc.g:651:1: parseExpr returns [CVC4::Expr expr = CVC4::Expr()] : ( formula[expr] | EOF );
  */
 static CVC4::Expr
 parseExpr(pCvcParser ctx)
@@ -3258,7 +3270,7 @@ parseExpr(pCvcParser ctx)
 
     {
         {
-            //  ../../../../../../src/parser/cvc/Cvc.g:647:3: ( formula[expr] | EOF )
+            //  ../../../../src/parser/cvc/Cvc.g:652:3: ( formula[expr] | EOF )
 
             ANTLR3_UINT32 alt1;
 
@@ -3309,6 +3321,7 @@ parseExpr(pCvcParser ctx)
             case FORALL_TOK:
             case HEX_LITERAL:
             case IDENTIFIER:
+            case IDEN_TOK:
             case IF_TOK:
             case INTEGER_LITERAL:
             case IS_INTEGER_TOK:
@@ -3372,9 +3385,9 @@ parseExpr(pCvcParser ctx)
             switch (alt1)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:647:5: formula[expr]
+        	    // ../../../../src/parser/cvc/Cvc.g:652:5: formula[expr]
         	    {
-        	        FOLLOWPUSH(FOLLOW_formula_in_parseExpr1800);
+        	        FOLLOWPUSH(FOLLOW_formula_in_parseExpr1820);
         	        formula(ctx, expr);
 
         	        FOLLOWPOP();
@@ -3391,9 +3404,9 @@ parseExpr(pCvcParser ctx)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:648:5: EOF
+        	    // ../../../../src/parser/cvc/Cvc.g:653:5: EOF
         	    {
-        	         MATCHT(EOF, &FOLLOW_EOF_in_parseExpr1807);
+        	         MATCHT(EOF, &FOLLOW_EOF_in_parseExpr1827);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleparseExprEx;
@@ -3427,7 +3440,7 @@ parseExpr(pCvcParser ctx)
 
 /**
  * $ANTLR start parseCommand
- * ../../../../../../src/parser/cvc/Cvc.g:655:1: parseCommand returns [CVC4::Command* cmd_return = NULL] : (c= command[&cmd] | LPAREN IDENTIFIER | EOF );
+ * ../../../../src/parser/cvc/Cvc.g:660:1: parseCommand returns [CVC4::Command* cmd_return = NULL] : (c= command[&cmd] | LPAREN IDENTIFIER | EOF );
  */
 static CVC4::Command*
 parseCommand(pCvcParser ctx)
@@ -3449,7 +3462,7 @@ parseCommand(pCvcParser ctx)
 
     {
         {
-            //  ../../../../../../src/parser/cvc/Cvc.g:662:3: (c= command[&cmd] | LPAREN IDENTIFIER | EOF )
+            //  ../../../../src/parser/cvc/Cvc.g:667:3: (c= command[&cmd] | LPAREN IDENTIFIER | EOF )
 
             ANTLR3_UINT32 alt2;
 
@@ -3544,9 +3557,9 @@ parseCommand(pCvcParser ctx)
             switch (alt2)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:662:5: c= command[&cmd]
+        	    // ../../../../src/parser/cvc/Cvc.g:667:5: c= command[&cmd]
         	    {
-        	        FOLLOWPUSH(FOLLOW_command_in_parseCommand1838);
+        	        FOLLOWPUSH(FOLLOW_command_in_parseCommand1858);
         	        command(ctx, &cmd);
 
         	        FOLLOWPOP();
@@ -3563,9 +3576,9 @@ parseCommand(pCvcParser ctx)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:663:5: LPAREN IDENTIFIER
+        	    // ../../../../src/parser/cvc/Cvc.g:668:5: LPAREN IDENTIFIER
         	    {
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_parseCommand1845);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_parseCommand1865);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleparseCommandEx;
@@ -3576,7 +3589,7 @@ parseCommand(pCvcParser ctx)
         	        }
 
 
-        	        IDENTIFIER1 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_parseCommand1847);
+        	        IDENTIFIER1 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_parseCommand1867);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleparseCommandEx;
@@ -3611,9 +3624,9 @@ parseCommand(pCvcParser ctx)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:680:5: EOF
+        	    // ../../../../src/parser/cvc/Cvc.g:685:5: EOF
         	    {
-        	         MATCHT(EOF, &FOLLOW_EOF_in_parseCommand1859);
+        	         MATCHT(EOF, &FOLLOW_EOF_in_parseCommand1879);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleparseCommandEx;
@@ -3657,7 +3670,7 @@ parseCommand(pCvcParser ctx)
 
 /**
  * $ANTLR start command
- * ../../../../../../src/parser/cvc/Cvc.g:687:1: command[CVC4::PtrCloser<CVC4::Command>* cmd] : ( ( mainCommand[cmd] SEMICOLON | SEMICOLON | LET_TOK typeOrVarLetDecl[CHECK_DECLARED] ( COMMA typeOrVarLetDecl[CHECK_DECLARED] )* IN_TOK command[cmd] ) | IDENTIFIER SEMICOLON );
+ * ../../../../src/parser/cvc/Cvc.g:692:1: command[CVC4::PtrCloser<CVC4::Command>* cmd] : ( ( mainCommand[cmd] SEMICOLON | SEMICOLON | LET_TOK typeOrVarLetDecl[CHECK_DECLARED] ( COMMA typeOrVarLetDecl[CHECK_DECLARED] )* IN_TOK command[cmd] ) | IDENTIFIER SEMICOLON );
  */
 static void
 command(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
@@ -3671,7 +3684,7 @@ command(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
     {
         {
-            //  ../../../../../../src/parser/cvc/Cvc.g:688:3: ( ( mainCommand[cmd] SEMICOLON | SEMICOLON | LET_TOK typeOrVarLetDecl[CHECK_DECLARED] ( COMMA typeOrVarLetDecl[CHECK_DECLARED] )* IN_TOK command[cmd] ) | IDENTIFIER SEMICOLON )
+            //  ../../../../src/parser/cvc/Cvc.g:693:3: ( ( mainCommand[cmd] SEMICOLON | SEMICOLON | LET_TOK typeOrVarLetDecl[CHECK_DECLARED] ( COMMA typeOrVarLetDecl[CHECK_DECLARED] )* IN_TOK command[cmd] ) | IDENTIFIER SEMICOLON )
 
             ANTLR3_UINT32 alt5;
 
@@ -3791,9 +3804,9 @@ command(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
             switch (alt5)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:688:5: ( mainCommand[cmd] SEMICOLON | SEMICOLON | LET_TOK typeOrVarLetDecl[CHECK_DECLARED] ( COMMA typeOrVarLetDecl[CHECK_DECLARED] )* IN_TOK command[cmd] )
+        	    // ../../../../src/parser/cvc/Cvc.g:693:5: ( mainCommand[cmd] SEMICOLON | SEMICOLON | LET_TOK typeOrVarLetDecl[CHECK_DECLARED] ( COMMA typeOrVarLetDecl[CHECK_DECLARED] )* IN_TOK command[cmd] )
         	    {
-        	        // ../../../../../../src/parser/cvc/Cvc.g:688:5: ( mainCommand[cmd] SEMICOLON | SEMICOLON | LET_TOK typeOrVarLetDecl[CHECK_DECLARED] ( COMMA typeOrVarLetDecl[CHECK_DECLARED] )* IN_TOK command[cmd] )
+        	        // ../../../../src/parser/cvc/Cvc.g:693:5: ( mainCommand[cmd] SEMICOLON | SEMICOLON | LET_TOK typeOrVarLetDecl[CHECK_DECLARED] ( COMMA typeOrVarLetDecl[CHECK_DECLARED] )* IN_TOK command[cmd] )
         	        {
         	            int alt4=3;
         	            switch ( LA(1) )
@@ -3883,9 +3896,9 @@ command(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt4)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:688:7: mainCommand[cmd] SEMICOLON
+        	        	    // ../../../../src/parser/cvc/Cvc.g:693:7: mainCommand[cmd] SEMICOLON
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_mainCommand_in_command1878);
+        	        	        FOLLOWPUSH(FOLLOW_mainCommand_in_command1898);
         	        	        mainCommand(ctx, cmd);
 
         	        	        FOLLOWPOP();
@@ -3899,7 +3912,7 @@ command(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        }
 
 
-        	        	         MATCHT(SEMICOLON, &FOLLOW_SEMICOLON_in_command1881);
+        	        	         MATCHT(SEMICOLON, &FOLLOW_SEMICOLON_in_command1901);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulecommandEx;
@@ -3913,9 +3926,9 @@ command(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:689:7: SEMICOLON
+        	        	    // ../../../../src/parser/cvc/Cvc.g:694:7: SEMICOLON
         	        	    {
-        	        	         MATCHT(SEMICOLON, &FOLLOW_SEMICOLON_in_command1889);
+        	        	         MATCHT(SEMICOLON, &FOLLOW_SEMICOLON_in_command1909);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulecommandEx;
@@ -3929,9 +3942,9 @@ command(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 3:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:690:7: LET_TOK typeOrVarLetDecl[CHECK_DECLARED] ( COMMA typeOrVarLetDecl[CHECK_DECLARED] )* IN_TOK command[cmd]
+        	        	    // ../../../../src/parser/cvc/Cvc.g:695:7: LET_TOK typeOrVarLetDecl[CHECK_DECLARED] ( COMMA typeOrVarLetDecl[CHECK_DECLARED] )* IN_TOK command[cmd]
         	        	    {
-        	        	         MATCHT(LET_TOK, &FOLLOW_LET_TOK_in_command1897);
+        	        	         MATCHT(LET_TOK, &FOLLOW_LET_TOK_in_command1917);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulecommandEx;
@@ -3948,7 +3961,7 @@ command(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        }
 
 
-        	        	        FOLLOWPUSH(FOLLOW_typeOrVarLetDecl_in_command1907);
+        	        	        FOLLOWPUSH(FOLLOW_typeOrVarLetDecl_in_command1927);
         	        	        typeOrVarLetDecl(ctx, CHECK_DECLARED);
 
         	        	        FOLLOWPOP();
@@ -3962,7 +3975,7 @@ command(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        }
 
 
-        	        	        // ../../../../../../src/parser/cvc/Cvc.g:691:40: ( COMMA typeOrVarLetDecl[CHECK_DECLARED] )*
+        	        	        // ../../../../src/parser/cvc/Cvc.g:696:40: ( COMMA typeOrVarLetDecl[CHECK_DECLARED] )*
 
         	        	        for (;;)
         	        	        {
@@ -3980,9 +3993,9 @@ command(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	            switch (alt3)
         	        	            {
         	        	        	case 1:
-        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:692:11: COMMA typeOrVarLetDecl[CHECK_DECLARED]
+        	        	        	    // ../../../../src/parser/cvc/Cvc.g:697:11: COMMA typeOrVarLetDecl[CHECK_DECLARED]
         	        	        	    {
-        	        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_command1922);
+        	        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_command1942);
         	        	        	        if  (HASEXCEPTION())
         	        	        	        {
         	        	        	            goto rulecommandEx;
@@ -3993,7 +4006,7 @@ command(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        	        }
 
 
-        	        	        	        FOLLOWPUSH(FOLLOW_typeOrVarLetDecl_in_command1924);
+        	        	        	        FOLLOWPUSH(FOLLOW_typeOrVarLetDecl_in_command1944);
         	        	        	        typeOrVarLetDecl(ctx, CHECK_DECLARED);
 
         	        	        	        FOLLOWPOP();
@@ -4018,7 +4031,7 @@ command(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        loop3: ; /* Jump out to here if this rule does not match */
 
 
-        	        	         MATCHT(IN_TOK, &FOLLOW_IN_TOK_in_command1936);
+        	        	         MATCHT(IN_TOK, &FOLLOW_IN_TOK_in_command1956);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulecommandEx;
@@ -4029,7 +4042,7 @@ command(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        }
 
 
-        	        	        FOLLOWPUSH(FOLLOW_command_in_command1938);
+        	        	        FOLLOWPUSH(FOLLOW_command_in_command1958);
         	        	        command(ctx, cmd);
 
         	        	        FOLLOWPOP();
@@ -4067,9 +4080,9 @@ command(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:700:5: IDENTIFIER SEMICOLON
+        	    // ../../../../src/parser/cvc/Cvc.g:705:5: IDENTIFIER SEMICOLON
         	    {
-        	        IDENTIFIER2 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_command1965);
+        	        IDENTIFIER2 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_command1985);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulecommandEx;
@@ -4080,7 +4093,7 @@ command(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	         MATCHT(SEMICOLON, &FOLLOW_SEMICOLON_in_command1967);
+        	         MATCHT(SEMICOLON, &FOLLOW_SEMICOLON_in_command1987);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulecommandEx;
@@ -4125,7 +4138,7 @@ command(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
 /**
  * $ANTLR start typeOrVarLetDecl
- * ../../../../../../src/parser/cvc/Cvc.g:709:1: typeOrVarLetDecl[CVC4::parser::DeclarationCheck check] options {backtrack=true; } : ( letDecl | typeLetDecl[check] );
+ * ../../../../src/parser/cvc/Cvc.g:714:1: typeOrVarLetDecl[CVC4::parser::DeclarationCheck check] options {backtrack=true; } : ( letDecl | typeLetDecl[check] );
  */
 static void
 typeOrVarLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
@@ -4135,7 +4148,7 @@ typeOrVarLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
 
     {
         {
-            //  ../../../../../../src/parser/cvc/Cvc.g:711:3: ( letDecl | typeLetDecl[check] )
+            //  ../../../../src/parser/cvc/Cvc.g:716:3: ( letDecl | typeLetDecl[check] )
 
             ANTLR3_UINT32 alt6;
 
@@ -4192,6 +4205,7 @@ typeOrVarLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
             				case FLOOR_TOK:
             				case FORALL_TOK:
             				case HEX_LITERAL:
+            				case IDEN_TOK:
             				case IF_TOK:
             				case INTEGER_LITERAL:
             				case IS_INTEGER_TOK:
@@ -4230,7 +4244,7 @@ typeOrVarLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
             				case LPAREN:
             					{
             						{
-            						    int LA6_61 = LA(4);
+            						    int LA6_62 = LA(4);
             						    if ( (synpred1_Cvc(ctx)))
             						    {
             						        alt6=1;
@@ -4252,7 +4266,7 @@ typeOrVarLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
             						        EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             						        EXCEPTION->message      = (void *)"";
             						        EXCEPTION->decisionNum  = 6;
-            						        EXCEPTION->state        = 61;
+            						        EXCEPTION->state        = 62;
 
 
             						        goto ruletypeOrVarLetDeclEx;
@@ -4264,7 +4278,7 @@ typeOrVarLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
             				case ARRAY_TOK:
             					{
             						{
-            						    int LA6_66 = LA(4);
+            						    int LA6_67 = LA(4);
             						    if ( (synpred1_Cvc(ctx)))
             						    {
             						        alt6=1;
@@ -4286,7 +4300,7 @@ typeOrVarLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
             						        EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             						        EXCEPTION->message      = (void *)"";
             						        EXCEPTION->decisionNum  = 6;
-            						        EXCEPTION->state        = 66;
+            						        EXCEPTION->state        = 67;
 
 
             						        goto ruletypeOrVarLetDeclEx;
@@ -4298,7 +4312,7 @@ typeOrVarLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
             				case IDENTIFIER:
             					{
             						{
-            						    int LA6_73 = LA(4);
+            						    int LA6_74 = LA(4);
             						    if ( (synpred1_Cvc(ctx)))
             						    {
             						        alt6=1;
@@ -4320,7 +4334,7 @@ typeOrVarLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
             						        EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             						        EXCEPTION->message      = (void *)"";
             						        EXCEPTION->decisionNum  = 6;
-            						        EXCEPTION->state        = 73;
+            						        EXCEPTION->state        = 74;
 
 
             						        goto ruletypeOrVarLetDeclEx;
@@ -4411,9 +4425,9 @@ typeOrVarLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
             switch (alt6)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:711:5: letDecl
+        	    // ../../../../src/parser/cvc/Cvc.g:716:5: letDecl
         	    {
-        	        FOLLOWPUSH(FOLLOW_letDecl_in_typeOrVarLetDecl1998);
+        	        FOLLOWPUSH(FOLLOW_letDecl_in_typeOrVarLetDecl2018);
         	        letDecl(ctx);
 
         	        FOLLOWPOP();
@@ -4430,9 +4444,9 @@ typeOrVarLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:711:15: typeLetDecl[check]
+        	    // ../../../../src/parser/cvc/Cvc.g:716:15: typeLetDecl[check]
         	    {
-        	        FOLLOWPUSH(FOLLOW_typeLetDecl_in_typeOrVarLetDecl2002);
+        	        FOLLOWPUSH(FOLLOW_typeLetDecl_in_typeOrVarLetDecl2022);
         	        typeLetDecl(ctx, check);
 
         	        FOLLOWPOP();
@@ -4469,7 +4483,7 @@ typeOrVarLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
 
 /**
  * $ANTLR start mainCommand
- * ../../../../../../src/parser/cvc/Cvc.g:714:1: mainCommand[CVC4::PtrCloser<CVC4::Command>* cmd] : ( ASSERT_TOK formula[f] | QUERY_TOK formula[f] | CHECKSAT_TOK ( formula[f] )? | OPTION_TOK ( str[s] | IDENTIFIER ) ( symbolicExpr[sexpr] | TRUE_TOK | FALSE_TOK |) | PUSH_TOK (k= numeral |) | POP_TOK (k= numeral |) | POPTO_TOK (k= numeral )? | PUSH_SCOPE_TOK (k= numeral )? | POP_SCOPE_TOK (k= numeral )? | POPTO_SCOPE_TOK (k= numeral )? | RESET_TOK | RESET_TOK ASSERTIONS_TOK | DATATYPE_TOK d [...]
+ * ../../../../src/parser/cvc/Cvc.g:719:1: mainCommand[CVC4::PtrCloser<CVC4::Command>* cmd] : ( ASSERT_TOK formula[f] | QUERY_TOK formula[f] | CHECKSAT_TOK ( formula[f] )? | OPTION_TOK ( str[s] | IDENTIFIER ) ( symbolicExpr[sexpr] | TRUE_TOK | FALSE_TOK |) | PUSH_TOK (k= numeral |) | POP_TOK (k= numeral |) | POPTO_TOK (k= numeral )? | PUSH_SCOPE_TOK (k= numeral )? | POP_SCOPE_TOK (k= numeral )? | POPTO_SCOPE_TOK (k= numeral )? | RESET_TOK | RESET_TOK ASSERTIONS_TOK | DATATYPE_TOK datatyp [...]
  */
 static void
 mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
@@ -4507,7 +4521,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
     {
         {
-            //  ../../../../../../src/parser/cvc/Cvc.g:725:3: ( ASSERT_TOK formula[f] | QUERY_TOK formula[f] | CHECKSAT_TOK ( formula[f] )? | OPTION_TOK ( str[s] | IDENTIFIER ) ( symbolicExpr[sexpr] | TRUE_TOK | FALSE_TOK |) | PUSH_TOK (k= numeral |) | POP_TOK (k= numeral |) | POPTO_TOK (k= numeral )? | PUSH_SCOPE_TOK (k= numeral )? | POP_SCOPE_TOK (k= numeral )? | POPTO_SCOPE_TOK (k= numeral )? | RESET_TOK | RESET_TOK ASSERTIONS_TOK | DATATYPE_TOK datatypeDef[dts] ( COMMA datatypeDef[dt [...]
+            //  ../../../../src/parser/cvc/Cvc.g:730:3: ( ASSERT_TOK formula[f] | QUERY_TOK formula[f] | CHECKSAT_TOK ( formula[f] )? | OPTION_TOK ( str[s] | IDENTIFIER ) ( symbolicExpr[sexpr] | TRUE_TOK | FALSE_TOK |) | PUSH_TOK (k= numeral |) | POP_TOK (k= numeral |) | POPTO_TOK (k= numeral )? | PUSH_SCOPE_TOK (k= numeral )? | POP_SCOPE_TOK (k= numeral )? | POPTO_SCOPE_TOK (k= numeral )? | RESET_TOK | RESET_TOK ASSERTIONS_TOK | DATATYPE_TOK datatypeDef[dts] ( COMMA datatypeDef[dts] )*  [...]
 
             ANTLR3_UINT32 alt31;
 
@@ -4780,9 +4794,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
             switch (alt31)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:725:5: ASSERT_TOK formula[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:730:5: ASSERT_TOK formula[f]
         	    {
-        	         MATCHT(ASSERT_TOK, &FOLLOW_ASSERT_TOK_in_mainCommand2028);
+        	         MATCHT(ASSERT_TOK, &FOLLOW_ASSERT_TOK_in_mainCommand2048);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -4793,7 +4807,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2030);
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2050);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -4816,9 +4830,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:727:5: QUERY_TOK formula[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:732:5: QUERY_TOK formula[f]
         	    {
-        	         MATCHT(QUERY_TOK, &FOLLOW_QUERY_TOK_in_mainCommand2040);
+        	         MATCHT(QUERY_TOK, &FOLLOW_QUERY_TOK_in_mainCommand2060);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -4829,7 +4843,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2042);
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2062);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -4852,9 +4866,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:728:5: CHECKSAT_TOK ( formula[f] )?
+        	    // ../../../../src/parser/cvc/Cvc.g:733:5: CHECKSAT_TOK ( formula[f] )?
         	    {
-        	         MATCHT(CHECKSAT_TOK, &FOLLOW_CHECKSAT_TOK_in_mainCommand2051);
+        	         MATCHT(CHECKSAT_TOK, &FOLLOW_CHECKSAT_TOK_in_mainCommand2071);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -4865,7 +4879,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:728:18: ( formula[f] )?
+        	        // ../../../../src/parser/cvc/Cvc.g:733:18: ( formula[f] )?
         	        {
         	            int alt7=2;
         	            switch ( LA(1) )
@@ -4913,6 +4927,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	                case FORALL_TOK:
         	                case HEX_LITERAL:
         	                case IDENTIFIER:
+        	                case IDEN_TOK:
         	                case IF_TOK:
         	                case INTEGER_LITERAL:
         	                case IS_INTEGER_TOK:
@@ -4954,9 +4969,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt7)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:728:18: formula[f]
+        	        	    // ../../../../src/parser/cvc/Cvc.g:733:18: formula[f]
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2053);
+        	        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2073);
         	        	        formula(ctx, f);
 
         	        	        FOLLOWPOP();
@@ -4985,9 +5000,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:731:5: OPTION_TOK ( str[s] | IDENTIFIER ) ( symbolicExpr[sexpr] | TRUE_TOK | FALSE_TOK |)
+        	    // ../../../../src/parser/cvc/Cvc.g:736:5: OPTION_TOK ( str[s] | IDENTIFIER ) ( symbolicExpr[sexpr] | TRUE_TOK | FALSE_TOK |)
         	    {
-        	         MATCHT(OPTION_TOK, &FOLLOW_OPTION_TOK_in_mainCommand2073);
+        	         MATCHT(OPTION_TOK, &FOLLOW_OPTION_TOK_in_mainCommand2093);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -4998,7 +5013,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:732:5: ( str[s] | IDENTIFIER )
+        	        // ../../../../src/parser/cvc/Cvc.g:737:5: ( str[s] | IDENTIFIER )
         	        {
         	            int alt8=2;
         	            switch ( LA(1) )
@@ -5035,9 +5050,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt8)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:732:7: str[s]
+        	        	    // ../../../../src/parser/cvc/Cvc.g:737:7: str[s]
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_str_in_mainCommand2081);
+        	        	        FOLLOWPUSH(FOLLOW_str_in_mainCommand2101);
         	        	        str(ctx, s);
 
         	        	        FOLLOWPOP();
@@ -5054,9 +5069,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:732:16: IDENTIFIER
+        	        	    // ../../../../src/parser/cvc/Cvc.g:737:16: IDENTIFIER
         	        	    {
-        	        	        IDENTIFIER3 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_mainCommand2086);
+        	        	        IDENTIFIER3 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_mainCommand2106);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulemainCommandEx;
@@ -5079,7 +5094,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            }
         	        }
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:733:5: ( symbolicExpr[sexpr] | TRUE_TOK | FALSE_TOK |)
+        	        // ../../../../src/parser/cvc/Cvc.g:738:5: ( symbolicExpr[sexpr] | TRUE_TOK | FALSE_TOK |)
         	        {
         	            int alt9=4;
         	            switch ( LA(1) )
@@ -5133,9 +5148,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt9)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:733:7: symbolicExpr[sexpr]
+        	        	    // ../../../../src/parser/cvc/Cvc.g:738:7: symbolicExpr[sexpr]
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_symbolicExpr_in_mainCommand2098);
+        	        	        FOLLOWPUSH(FOLLOW_symbolicExpr_in_mainCommand2118);
         	        	        symbolicExpr(ctx, sexpr);
 
         	        	        FOLLOWPOP();
@@ -5163,9 +5178,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:740:7: TRUE_TOK
+        	        	    // ../../../../src/parser/cvc/Cvc.g:745:7: TRUE_TOK
         	        	    {
-        	        	         MATCHT(TRUE_TOK, &FOLLOW_TRUE_TOK_in_mainCommand2115);
+        	        	         MATCHT(TRUE_TOK, &FOLLOW_TRUE_TOK_in_mainCommand2135);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulemainCommandEx;
@@ -5185,9 +5200,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 3:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:741:7: FALSE_TOK
+        	        	    // ../../../../src/parser/cvc/Cvc.g:746:7: FALSE_TOK
         	        	    {
-        	        	         MATCHT(FALSE_TOK, &FOLLOW_FALSE_TOK_in_mainCommand2125);
+        	        	         MATCHT(FALSE_TOK, &FOLLOW_FALSE_TOK_in_mainCommand2145);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulemainCommandEx;
@@ -5207,7 +5222,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 4:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:742:7: 
+        	        	    // ../../../../src/parser/cvc/Cvc.g:747:7: 
         	        	    {
         	        	        if ( BACKTRACKING==0 )
         	        	        {
@@ -5224,9 +5239,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:746:5: PUSH_TOK (k= numeral |)
+        	    // ../../../../src/parser/cvc/Cvc.g:751:5: PUSH_TOK (k= numeral |)
         	    {
-        	         MATCHT(PUSH_TOK, &FOLLOW_PUSH_TOK_in_mainCommand2154);
+        	         MATCHT(PUSH_TOK, &FOLLOW_PUSH_TOK_in_mainCommand2174);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -5237,7 +5252,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:746:14: (k= numeral |)
+        	        // ../../../../src/parser/cvc/Cvc.g:751:14: (k= numeral |)
         	        {
         	            int alt10=2;
         	            switch ( LA(1) )
@@ -5274,9 +5289,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt10)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:746:16: k= numeral
+        	        	    // ../../../../src/parser/cvc/Cvc.g:751:16: k= numeral
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_numeral_in_mainCommand2160);
+        	        	        FOLLOWPUSH(FOLLOW_numeral_in_mainCommand2180);
         	        	        k=numeral(ctx);
 
         	        	        FOLLOWPOP();
@@ -5299,7 +5314,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:747:18: 
+        	        	    // ../../../../src/parser/cvc/Cvc.g:752:18: 
         	        	    {
         	        	        if ( BACKTRACKING==0 )
         	        	        {
@@ -5316,9 +5331,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:748:5: POP_TOK (k= numeral |)
+        	    // ../../../../src/parser/cvc/Cvc.g:753:5: POP_TOK (k= numeral |)
         	    {
-        	         MATCHT(POP_TOK, &FOLLOW_POP_TOK_in_mainCommand2189);
+        	         MATCHT(POP_TOK, &FOLLOW_POP_TOK_in_mainCommand2209);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -5329,7 +5344,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:748:13: (k= numeral |)
+        	        // ../../../../src/parser/cvc/Cvc.g:753:13: (k= numeral |)
         	        {
         	            int alt11=2;
         	            switch ( LA(1) )
@@ -5366,9 +5381,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt11)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:748:15: k= numeral
+        	        	    // ../../../../src/parser/cvc/Cvc.g:753:15: k= numeral
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_numeral_in_mainCommand2195);
+        	        	        FOLLOWPUSH(FOLLOW_numeral_in_mainCommand2215);
         	        	        k=numeral(ctx);
 
         	        	        FOLLOWPOP();
@@ -5391,7 +5406,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:749:17: 
+        	        	    // ../../../../src/parser/cvc/Cvc.g:754:17: 
         	        	    {
         	        	        if ( BACKTRACKING==0 )
         	        	        {
@@ -5408,9 +5423,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 7:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:750:5: POPTO_TOK (k= numeral )?
+        	    // ../../../../src/parser/cvc/Cvc.g:755:5: POPTO_TOK (k= numeral )?
         	    {
-        	         MATCHT(POPTO_TOK, &FOLLOW_POPTO_TOK_in_mainCommand2223);
+        	         MATCHT(POPTO_TOK, &FOLLOW_POPTO_TOK_in_mainCommand2243);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -5421,7 +5436,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:750:16: (k= numeral )?
+        	        // ../../../../src/parser/cvc/Cvc.g:755:16: (k= numeral )?
         	        {
         	            int alt12=2;
         	            switch ( LA(1) )
@@ -5436,9 +5451,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt12)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:750:16: k= numeral
+        	        	    // ../../../../src/parser/cvc/Cvc.g:755:16: k= numeral
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_numeral_in_mainCommand2227);
+        	        	        FOLLOWPUSH(FOLLOW_numeral_in_mainCommand2247);
         	        	        k=numeral(ctx);
 
         	        	        FOLLOWPOP();
@@ -5467,9 +5482,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 8:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:754:5: PUSH_SCOPE_TOK (k= numeral )?
+        	    // ../../../../src/parser/cvc/Cvc.g:759:5: PUSH_SCOPE_TOK (k= numeral )?
         	    {
-        	         MATCHT(PUSH_SCOPE_TOK, &FOLLOW_PUSH_SCOPE_TOK_in_mainCommand2247);
+        	         MATCHT(PUSH_SCOPE_TOK, &FOLLOW_PUSH_SCOPE_TOK_in_mainCommand2267);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -5480,7 +5495,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:754:21: (k= numeral )?
+        	        // ../../../../src/parser/cvc/Cvc.g:759:21: (k= numeral )?
         	        {
         	            int alt13=2;
         	            switch ( LA(1) )
@@ -5495,9 +5510,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt13)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:754:21: k= numeral
+        	        	    // ../../../../src/parser/cvc/Cvc.g:759:21: k= numeral
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_numeral_in_mainCommand2251);
+        	        	        FOLLOWPUSH(FOLLOW_numeral_in_mainCommand2271);
         	        	        k=numeral(ctx);
 
         	        	        FOLLOWPOP();
@@ -5526,9 +5541,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 9:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:756:5: POP_SCOPE_TOK (k= numeral )?
+        	    // ../../../../src/parser/cvc/Cvc.g:761:5: POP_SCOPE_TOK (k= numeral )?
         	    {
-        	         MATCHT(POP_SCOPE_TOK, &FOLLOW_POP_SCOPE_TOK_in_mainCommand2264);
+        	         MATCHT(POP_SCOPE_TOK, &FOLLOW_POP_SCOPE_TOK_in_mainCommand2284);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -5539,7 +5554,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:756:20: (k= numeral )?
+        	        // ../../../../src/parser/cvc/Cvc.g:761:20: (k= numeral )?
         	        {
         	            int alt14=2;
         	            switch ( LA(1) )
@@ -5554,9 +5569,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt14)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:756:20: k= numeral
+        	        	    // ../../../../src/parser/cvc/Cvc.g:761:20: k= numeral
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_numeral_in_mainCommand2268);
+        	        	        FOLLOWPUSH(FOLLOW_numeral_in_mainCommand2288);
         	        	        k=numeral(ctx);
 
         	        	        FOLLOWPOP();
@@ -5585,9 +5600,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 10:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:758:5: POPTO_SCOPE_TOK (k= numeral )?
+        	    // ../../../../src/parser/cvc/Cvc.g:763:5: POPTO_SCOPE_TOK (k= numeral )?
         	    {
-        	         MATCHT(POPTO_SCOPE_TOK, &FOLLOW_POPTO_SCOPE_TOK_in_mainCommand2281);
+        	         MATCHT(POPTO_SCOPE_TOK, &FOLLOW_POPTO_SCOPE_TOK_in_mainCommand2301);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -5598,7 +5613,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:758:22: (k= numeral )?
+        	        // ../../../../src/parser/cvc/Cvc.g:763:22: (k= numeral )?
         	        {
         	            int alt15=2;
         	            switch ( LA(1) )
@@ -5613,9 +5628,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt15)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:758:22: k= numeral
+        	        	    // ../../../../src/parser/cvc/Cvc.g:763:22: k= numeral
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_numeral_in_mainCommand2285);
+        	        	        FOLLOWPUSH(FOLLOW_numeral_in_mainCommand2305);
         	        	        k=numeral(ctx);
 
         	        	        FOLLOWPOP();
@@ -5644,9 +5659,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 11:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:761:5: RESET_TOK
+        	    // ../../../../src/parser/cvc/Cvc.g:766:5: RESET_TOK
         	    {
-        	         MATCHT(RESET_TOK, &FOLLOW_RESET_TOK_in_mainCommand2299);
+        	         MATCHT(RESET_TOK, &FOLLOW_RESET_TOK_in_mainCommand2319);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -5668,9 +5683,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 12:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:766:5: RESET_TOK ASSERTIONS_TOK
+        	    // ../../../../src/parser/cvc/Cvc.g:771:5: RESET_TOK ASSERTIONS_TOK
         	    {
-        	         MATCHT(RESET_TOK, &FOLLOW_RESET_TOK_in_mainCommand2312);
+        	         MATCHT(RESET_TOK, &FOLLOW_RESET_TOK_in_mainCommand2332);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -5681,7 +5696,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	         MATCHT(ASSERTIONS_TOK, &FOLLOW_ASSERTIONS_TOK_in_mainCommand2314);
+        	         MATCHT(ASSERTIONS_TOK, &FOLLOW_ASSERTIONS_TOK_in_mainCommand2334);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -5703,9 +5718,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 13:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:774:5: DATATYPE_TOK datatypeDef[dts] ( COMMA datatypeDef[dts] )* END_TOK
+        	    // ../../../../src/parser/cvc/Cvc.g:779:5: DATATYPE_TOK datatypeDef[dts] ( COMMA datatypeDef[dts] )* END_TOK
         	    {
-        	         MATCHT(DATATYPE_TOK, &FOLLOW_DATATYPE_TOK_in_mainCommand2342);
+        	         MATCHT(DATATYPE_TOK, &FOLLOW_DATATYPE_TOK_in_mainCommand2362);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -5723,7 +5738,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_datatypeDef_in_mainCommand2354);
+        	        FOLLOWPUSH(FOLLOW_datatypeDef_in_mainCommand2374);
         	        datatypeDef(ctx, dts);
 
         	        FOLLOWPOP();
@@ -5737,7 +5752,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:778:5: ( COMMA datatypeDef[dts] )*
+        	        // ../../../../src/parser/cvc/Cvc.g:783:5: ( COMMA datatypeDef[dts] )*
 
         	        for (;;)
         	        {
@@ -5755,9 +5770,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt16)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:778:7: COMMA datatypeDef[dts]
+        	        	    // ../../../../src/parser/cvc/Cvc.g:783:7: COMMA datatypeDef[dts]
         	        	    {
-        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_mainCommand2363);
+        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_mainCommand2383);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulemainCommandEx;
@@ -5768,7 +5783,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        }
 
 
-        	        	        FOLLOWPUSH(FOLLOW_datatypeDef_in_mainCommand2365);
+        	        	        FOLLOWPUSH(FOLLOW_datatypeDef_in_mainCommand2385);
         	        	        datatypeDef(ctx, dts);
 
         	        	        FOLLOWPOP();
@@ -5793,7 +5808,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        loop16: ; /* Jump out to here if this rule does not match */
 
 
-        	         MATCHT(END_TOK, &FOLLOW_END_TOK_in_mainCommand2375);
+        	         MATCHT(END_TOK, &FOLLOW_END_TOK_in_mainCommand2395);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -5816,9 +5831,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 14:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:785:5: CONTEXT_TOK ( ( str[s] | IDENTIFIER ) |)
+        	    // ../../../../src/parser/cvc/Cvc.g:790:5: CONTEXT_TOK ( ( str[s] | IDENTIFIER ) |)
         	    {
-        	         MATCHT(CONTEXT_TOK, &FOLLOW_CONTEXT_TOK_in_mainCommand2388);
+        	         MATCHT(CONTEXT_TOK, &FOLLOW_CONTEXT_TOK_in_mainCommand2408);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -5829,7 +5844,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:786:5: ( ( str[s] | IDENTIFIER ) |)
+        	        // ../../../../src/parser/cvc/Cvc.g:791:5: ( ( str[s] | IDENTIFIER ) |)
         	        {
         	            int alt18=2;
         	            switch ( LA(1) )
@@ -5867,9 +5882,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt18)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:786:7: ( str[s] | IDENTIFIER )
+        	        	    // ../../../../src/parser/cvc/Cvc.g:791:7: ( str[s] | IDENTIFIER )
         	        	    {
-        	        	        // ../../../../../../src/parser/cvc/Cvc.g:786:7: ( str[s] | IDENTIFIER )
+        	        	        // ../../../../src/parser/cvc/Cvc.g:791:7: ( str[s] | IDENTIFIER )
         	        	        {
         	        	            int alt17=2;
         	        	            switch ( LA(1) )
@@ -5906,9 +5921,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	            switch (alt17)
         	        	            {
         	        	        	case 1:
-        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:786:9: str[s]
+        	        	        	    // ../../../../src/parser/cvc/Cvc.g:791:9: str[s]
         	        	        	    {
-        	        	        	        FOLLOWPUSH(FOLLOW_str_in_mainCommand2398);
+        	        	        	        FOLLOWPUSH(FOLLOW_str_in_mainCommand2418);
         	        	        	        str(ctx, s);
 
         	        	        	        FOLLOWPOP();
@@ -5925,9 +5940,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        	    }
         	        	        	    break;
         	        	        	case 2:
-        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:786:18: IDENTIFIER
+        	        	        	    // ../../../../src/parser/cvc/Cvc.g:791:18: IDENTIFIER
         	        	        	    {
-        	        	        	        IDENTIFIER4 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_mainCommand2403);
+        	        	        	        IDENTIFIER4 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_mainCommand2423);
         	        	        	        if  (HASEXCEPTION())
         	        	        	        {
         	        	        	            goto rulemainCommandEx;
@@ -5959,7 +5974,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:788:7: 
+        	        	    // ../../../../src/parser/cvc/Cvc.g:793:7: 
         	        	    {
         	        	        if ( BACKTRACKING==0 )
         	        	        {
@@ -5976,9 +5991,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 15:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:791:5: FORGET_TOK identifier[id,CHECK_NONE,SYM_VARIABLE]
+        	    // ../../../../src/parser/cvc/Cvc.g:796:5: FORGET_TOK identifier[id,CHECK_NONE,SYM_VARIABLE]
         	    {
-        	         MATCHT(FORGET_TOK, &FOLLOW_FORGET_TOK_in_mainCommand2436);
+        	         MATCHT(FORGET_TOK, &FOLLOW_FORGET_TOK_in_mainCommand2456);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -5989,7 +6004,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_identifier_in_mainCommand2438);
+        	        FOLLOWPUSH(FOLLOW_identifier_in_mainCommand2458);
         	        identifier(ctx, id, CHECK_NONE, SYM_VARIABLE);
 
         	        FOLLOWPOP();
@@ -6012,9 +6027,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 16:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:794:5: GET_TYPE_TOK formula[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:799:5: GET_TYPE_TOK formula[f]
         	    {
-        	         MATCHT(GET_TYPE_TOK, &FOLLOW_GET_TYPE_TOK_in_mainCommand2452);
+        	         MATCHT(GET_TYPE_TOK, &FOLLOW_GET_TYPE_TOK_in_mainCommand2472);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -6025,7 +6040,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2454);
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2474);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -6048,9 +6063,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 17:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:797:5: CHECK_TYPE_TOK formula[f] COLON type[t,CHECK_DECLARED]
+        	    // ../../../../src/parser/cvc/Cvc.g:802:5: CHECK_TYPE_TOK formula[f] COLON type[t,CHECK_DECLARED]
         	    {
-        	         MATCHT(CHECK_TYPE_TOK, &FOLLOW_CHECK_TYPE_TOK_in_mainCommand2468);
+        	         MATCHT(CHECK_TYPE_TOK, &FOLLOW_CHECK_TYPE_TOK_in_mainCommand2488);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -6061,7 +6076,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2470);
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2490);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -6075,7 +6090,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	         MATCHT(COLON, &FOLLOW_COLON_in_mainCommand2473);
+        	         MATCHT(COLON, &FOLLOW_COLON_in_mainCommand2493);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -6086,7 +6101,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_type_in_mainCommand2475);
+        	        FOLLOWPUSH(FOLLOW_type_in_mainCommand2495);
         	        type(ctx, t, CHECK_DECLARED);
 
         	        FOLLOWPOP();
@@ -6109,9 +6124,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 18:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:800:5: GET_CHILD_TOK formula[f] k= numeral
+        	    // ../../../../src/parser/cvc/Cvc.g:805:5: GET_CHILD_TOK formula[f] k= numeral
         	    {
-        	         MATCHT(GET_CHILD_TOK, &FOLLOW_GET_CHILD_TOK_in_mainCommand2489);
+        	         MATCHT(GET_CHILD_TOK, &FOLLOW_GET_CHILD_TOK_in_mainCommand2509);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -6122,7 +6137,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2491);
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2511);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -6136,7 +6151,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_numeral_in_mainCommand2496);
+        	        FOLLOWPUSH(FOLLOW_numeral_in_mainCommand2516);
         	        k=numeral(ctx);
 
         	        FOLLOWPOP();
@@ -6159,9 +6174,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 19:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:803:5: GET_OP_TOK formula[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:808:5: GET_OP_TOK formula[f]
         	    {
-        	         MATCHT(GET_OP_TOK, &FOLLOW_GET_OP_TOK_in_mainCommand2509);
+        	         MATCHT(GET_OP_TOK, &FOLLOW_GET_OP_TOK_in_mainCommand2529);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -6172,7 +6187,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2511);
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2531);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -6195,9 +6210,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 20:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:806:5: GET_VALUE_TOK formula[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:811:5: GET_VALUE_TOK formula[f]
         	    {
-        	         MATCHT(GET_VALUE_TOK, &FOLLOW_GET_VALUE_TOK_in_mainCommand2525);
+        	         MATCHT(GET_VALUE_TOK, &FOLLOW_GET_VALUE_TOK_in_mainCommand2545);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -6208,7 +6223,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2527);
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2547);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -6231,9 +6246,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 21:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:809:5: SUBSTITUTE_TOK identifier[id,CHECK_NONE,SYM_VARIABLE] COLON type[t,CHECK_DECLARED] EQUAL_TOK formula[f] LBRACKET identifier[id,CHECK_NONE,SYM_VARIABLE] ASSIGN_TOK formula[f] RBRACKET
+        	    // ../../../../src/parser/cvc/Cvc.g:814:5: SUBSTITUTE_TOK identifier[id,CHECK_NONE,SYM_VARIABLE] COLON type[t,CHECK_DECLARED] EQUAL_TOK formula[f] LBRACKET identifier[id,CHECK_NONE,SYM_VARIABLE] ASSIGN_TOK formula[f] RBRACKET
         	    {
-        	         MATCHT(SUBSTITUTE_TOK, &FOLLOW_SUBSTITUTE_TOK_in_mainCommand2541);
+        	         MATCHT(SUBSTITUTE_TOK, &FOLLOW_SUBSTITUTE_TOK_in_mainCommand2561);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -6244,7 +6259,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_identifier_in_mainCommand2543);
+        	        FOLLOWPUSH(FOLLOW_identifier_in_mainCommand2563);
         	        identifier(ctx, id, CHECK_NONE, SYM_VARIABLE);
 
         	        FOLLOWPOP();
@@ -6258,7 +6273,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	         MATCHT(COLON, &FOLLOW_COLON_in_mainCommand2546);
+        	         MATCHT(COLON, &FOLLOW_COLON_in_mainCommand2566);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -6269,7 +6284,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_type_in_mainCommand2552);
+        	        FOLLOWPUSH(FOLLOW_type_in_mainCommand2572);
         	        type(ctx, t, CHECK_DECLARED);
 
         	        FOLLOWPOP();
@@ -6283,7 +6298,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	         MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_mainCommand2555);
+        	         MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_mainCommand2575);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -6294,7 +6309,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2557);
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2577);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -6308,7 +6323,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	         MATCHT(LBRACKET, &FOLLOW_LBRACKET_in_mainCommand2560);
+        	         MATCHT(LBRACKET, &FOLLOW_LBRACKET_in_mainCommand2580);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -6319,7 +6334,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_identifier_in_mainCommand2566);
+        	        FOLLOWPUSH(FOLLOW_identifier_in_mainCommand2586);
         	        identifier(ctx, id, CHECK_NONE, SYM_VARIABLE);
 
         	        FOLLOWPOP();
@@ -6333,7 +6348,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	         MATCHT(ASSIGN_TOK, &FOLLOW_ASSIGN_TOK_in_mainCommand2569);
+        	         MATCHT(ASSIGN_TOK, &FOLLOW_ASSIGN_TOK_in_mainCommand2589);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -6344,7 +6359,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2571);
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2591);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -6358,7 +6373,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	         MATCHT(RBRACKET, &FOLLOW_RBRACKET_in_mainCommand2574);
+        	         MATCHT(RBRACKET, &FOLLOW_RBRACKET_in_mainCommand2594);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -6378,9 +6393,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 22:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:816:5: DBG_TOK ( ( str[s] | IDENTIFIER ) |)
+        	    // ../../../../src/parser/cvc/Cvc.g:821:5: DBG_TOK ( ( str[s] | IDENTIFIER ) |)
         	    {
-        	         MATCHT(DBG_TOK, &FOLLOW_DBG_TOK_in_mainCommand2593);
+        	         MATCHT(DBG_TOK, &FOLLOW_DBG_TOK_in_mainCommand2613);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -6391,7 +6406,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:817:5: ( ( str[s] | IDENTIFIER ) |)
+        	        // ../../../../src/parser/cvc/Cvc.g:822:5: ( ( str[s] | IDENTIFIER ) |)
         	        {
         	            int alt20=2;
         	            switch ( LA(1) )
@@ -6429,9 +6444,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt20)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:817:7: ( str[s] | IDENTIFIER )
+        	        	    // ../../../../src/parser/cvc/Cvc.g:822:7: ( str[s] | IDENTIFIER )
         	        	    {
-        	        	        // ../../../../../../src/parser/cvc/Cvc.g:817:7: ( str[s] | IDENTIFIER )
+        	        	        // ../../../../src/parser/cvc/Cvc.g:822:7: ( str[s] | IDENTIFIER )
         	        	        {
         	        	            int alt19=2;
         	        	            switch ( LA(1) )
@@ -6468,9 +6483,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	            switch (alt19)
         	        	            {
         	        	        	case 1:
-        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:817:9: str[s]
+        	        	        	    // ../../../../src/parser/cvc/Cvc.g:822:9: str[s]
         	        	        	    {
-        	        	        	        FOLLOWPUSH(FOLLOW_str_in_mainCommand2603);
+        	        	        	        FOLLOWPUSH(FOLLOW_str_in_mainCommand2623);
         	        	        	        str(ctx, s);
 
         	        	        	        FOLLOWPOP();
@@ -6487,9 +6502,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        	    }
         	        	        	    break;
         	        	        	case 2:
-        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:817:18: IDENTIFIER
+        	        	        	    // ../../../../src/parser/cvc/Cvc.g:822:18: IDENTIFIER
         	        	        	    {
-        	        	        	        IDENTIFIER5 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_mainCommand2608);
+        	        	        	        IDENTIFIER5 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_mainCommand2628);
         	        	        	        if  (HASEXCEPTION())
         	        	        	        {
         	        	        	            goto rulemainCommandEx;
@@ -6521,7 +6536,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:819:7: 
+        	        	    // ../../../../src/parser/cvc/Cvc.g:824:7: 
         	        	    {
         	        	        if ( BACKTRACKING==0 )
         	        	        {
@@ -6538,9 +6553,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 23:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:822:5: TRACE_TOK ( ( str[s] | IDENTIFIER ) |)
+        	    // ../../../../src/parser/cvc/Cvc.g:827:5: TRACE_TOK ( ( str[s] | IDENTIFIER ) |)
         	    {
-        	         MATCHT(TRACE_TOK, &FOLLOW_TRACE_TOK_in_mainCommand2641);
+        	         MATCHT(TRACE_TOK, &FOLLOW_TRACE_TOK_in_mainCommand2661);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -6551,7 +6566,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:823:5: ( ( str[s] | IDENTIFIER ) |)
+        	        // ../../../../src/parser/cvc/Cvc.g:828:5: ( ( str[s] | IDENTIFIER ) |)
         	        {
         	            int alt22=2;
         	            switch ( LA(1) )
@@ -6589,9 +6604,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt22)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:823:7: ( str[s] | IDENTIFIER )
+        	        	    // ../../../../src/parser/cvc/Cvc.g:828:7: ( str[s] | IDENTIFIER )
         	        	    {
-        	        	        // ../../../../../../src/parser/cvc/Cvc.g:823:7: ( str[s] | IDENTIFIER )
+        	        	        // ../../../../src/parser/cvc/Cvc.g:828:7: ( str[s] | IDENTIFIER )
         	        	        {
         	        	            int alt21=2;
         	        	            switch ( LA(1) )
@@ -6628,9 +6643,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	            switch (alt21)
         	        	            {
         	        	        	case 1:
-        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:823:9: str[s]
+        	        	        	    // ../../../../src/parser/cvc/Cvc.g:828:9: str[s]
         	        	        	    {
-        	        	        	        FOLLOWPUSH(FOLLOW_str_in_mainCommand2651);
+        	        	        	        FOLLOWPUSH(FOLLOW_str_in_mainCommand2671);
         	        	        	        str(ctx, s);
 
         	        	        	        FOLLOWPOP();
@@ -6647,9 +6662,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        	    }
         	        	        	    break;
         	        	        	case 2:
-        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:823:18: IDENTIFIER
+        	        	        	    // ../../../../src/parser/cvc/Cvc.g:828:18: IDENTIFIER
         	        	        	    {
-        	        	        	        IDENTIFIER6 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_mainCommand2656);
+        	        	        	        IDENTIFIER6 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_mainCommand2676);
         	        	        	        if  (HASEXCEPTION())
         	        	        	        {
         	        	        	            goto rulemainCommandEx;
@@ -6681,7 +6696,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:825:7: 
+        	        	    // ../../../../src/parser/cvc/Cvc.g:830:7: 
         	        	    {
         	        	        if ( BACKTRACKING==0 )
         	        	        {
@@ -6698,9 +6713,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 24:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:827:5: UNTRACE_TOK ( ( str[s] | IDENTIFIER ) |)
+        	    // ../../../../src/parser/cvc/Cvc.g:832:5: UNTRACE_TOK ( ( str[s] | IDENTIFIER ) |)
         	    {
-        	         MATCHT(UNTRACE_TOK, &FOLLOW_UNTRACE_TOK_in_mainCommand2688);
+        	         MATCHT(UNTRACE_TOK, &FOLLOW_UNTRACE_TOK_in_mainCommand2708);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -6711,7 +6726,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:828:5: ( ( str[s] | IDENTIFIER ) |)
+        	        // ../../../../src/parser/cvc/Cvc.g:833:5: ( ( str[s] | IDENTIFIER ) |)
         	        {
         	            int alt24=2;
         	            switch ( LA(1) )
@@ -6749,9 +6764,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt24)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:828:7: ( str[s] | IDENTIFIER )
+        	        	    // ../../../../src/parser/cvc/Cvc.g:833:7: ( str[s] | IDENTIFIER )
         	        	    {
-        	        	        // ../../../../../../src/parser/cvc/Cvc.g:828:7: ( str[s] | IDENTIFIER )
+        	        	        // ../../../../src/parser/cvc/Cvc.g:833:7: ( str[s] | IDENTIFIER )
         	        	        {
         	        	            int alt23=2;
         	        	            switch ( LA(1) )
@@ -6788,9 +6803,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	            switch (alt23)
         	        	            {
         	        	        	case 1:
-        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:828:9: str[s]
+        	        	        	    // ../../../../src/parser/cvc/Cvc.g:833:9: str[s]
         	        	        	    {
-        	        	        	        FOLLOWPUSH(FOLLOW_str_in_mainCommand2698);
+        	        	        	        FOLLOWPUSH(FOLLOW_str_in_mainCommand2718);
         	        	        	        str(ctx, s);
 
         	        	        	        FOLLOWPOP();
@@ -6807,9 +6822,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        	    }
         	        	        	    break;
         	        	        	case 2:
-        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:828:18: IDENTIFIER
+        	        	        	    // ../../../../src/parser/cvc/Cvc.g:833:18: IDENTIFIER
         	        	        	    {
-        	        	        	        IDENTIFIER7 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_mainCommand2703);
+        	        	        	        IDENTIFIER7 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_mainCommand2723);
         	        	        	        if  (HASEXCEPTION())
         	        	        	        {
         	        	        	            goto rulemainCommandEx;
@@ -6841,7 +6856,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:830:7: 
+        	        	    // ../../../../src/parser/cvc/Cvc.g:835:7: 
         	        	    {
         	        	        if ( BACKTRACKING==0 )
         	        	        {
@@ -6858,9 +6873,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 25:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:833:5: HELP_TOK ( ( str[s] | IDENTIFIER ) |)
+        	    // ../../../../src/parser/cvc/Cvc.g:838:5: HELP_TOK ( ( str[s] | IDENTIFIER ) |)
         	    {
-        	         MATCHT(HELP_TOK, &FOLLOW_HELP_TOK_in_mainCommand2736);
+        	         MATCHT(HELP_TOK, &FOLLOW_HELP_TOK_in_mainCommand2756);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -6871,7 +6886,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:834:5: ( ( str[s] | IDENTIFIER ) |)
+        	        // ../../../../src/parser/cvc/Cvc.g:839:5: ( ( str[s] | IDENTIFIER ) |)
         	        {
         	            int alt26=2;
         	            switch ( LA(1) )
@@ -6909,9 +6924,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt26)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:834:7: ( str[s] | IDENTIFIER )
+        	        	    // ../../../../src/parser/cvc/Cvc.g:839:7: ( str[s] | IDENTIFIER )
         	        	    {
-        	        	        // ../../../../../../src/parser/cvc/Cvc.g:834:7: ( str[s] | IDENTIFIER )
+        	        	        // ../../../../src/parser/cvc/Cvc.g:839:7: ( str[s] | IDENTIFIER )
         	        	        {
         	        	            int alt25=2;
         	        	            switch ( LA(1) )
@@ -6948,9 +6963,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	            switch (alt25)
         	        	            {
         	        	        	case 1:
-        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:834:9: str[s]
+        	        	        	    // ../../../../src/parser/cvc/Cvc.g:839:9: str[s]
         	        	        	    {
-        	        	        	        FOLLOWPUSH(FOLLOW_str_in_mainCommand2746);
+        	        	        	        FOLLOWPUSH(FOLLOW_str_in_mainCommand2766);
         	        	        	        str(ctx, s);
 
         	        	        	        FOLLOWPOP();
@@ -6967,9 +6982,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        	    }
         	        	        	    break;
         	        	        	case 2:
-        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:834:18: IDENTIFIER
+        	        	        	    // ../../../../src/parser/cvc/Cvc.g:839:18: IDENTIFIER
         	        	        	    {
-        	        	        	        IDENTIFIER8 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_mainCommand2751);
+        	        	        	        IDENTIFIER8 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_mainCommand2771);
         	        	        	        if  (HASEXCEPTION())
         	        	        	        {
         	        	        	            goto rulemainCommandEx;
@@ -7001,7 +7016,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:836:7: 
+        	        	    // ../../../../src/parser/cvc/Cvc.g:841:7: 
         	        	    {
         	        	        if ( BACKTRACKING==0 )
         	        	        {
@@ -7019,9 +7034,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 26:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:840:5: TRANSFORM_TOK formula[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:845:5: TRANSFORM_TOK formula[f]
         	    {
-        	         MATCHT(TRANSFORM_TOK, &FOLLOW_TRANSFORM_TOK_in_mainCommand2792);
+        	         MATCHT(TRANSFORM_TOK, &FOLLOW_TRANSFORM_TOK_in_mainCommand2812);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -7032,7 +7047,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2794);
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2814);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -7055,9 +7070,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 27:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:843:5: PRINT_TOK formula[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:848:5: PRINT_TOK formula[f]
         	    {
-        	         MATCHT(PRINT_TOK, &FOLLOW_PRINT_TOK_in_mainCommand2808);
+        	         MATCHT(PRINT_TOK, &FOLLOW_PRINT_TOK_in_mainCommand2828);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -7068,7 +7083,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2810);
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2830);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -7091,9 +7106,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 28:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:845:5: PRINT_TYPE_TOK type[t,CHECK_DECLARED]
+        	    // ../../../../src/parser/cvc/Cvc.g:850:5: PRINT_TYPE_TOK type[t,CHECK_DECLARED]
         	    {
-        	         MATCHT(PRINT_TYPE_TOK, &FOLLOW_PRINT_TYPE_TOK_in_mainCommand2823);
+        	         MATCHT(PRINT_TYPE_TOK, &FOLLOW_PRINT_TYPE_TOK_in_mainCommand2843);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -7104,7 +7119,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_type_in_mainCommand2825);
+        	        FOLLOWPUSH(FOLLOW_type_in_mainCommand2845);
         	        type(ctx, t, CHECK_DECLARED);
 
         	        FOLLOWPOP();
@@ -7127,9 +7142,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 29:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:848:5: CALL_TOK identifier[id,CHECK_NONE,SYM_VARIABLE] formula[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:853:5: CALL_TOK identifier[id,CHECK_NONE,SYM_VARIABLE] formula[f]
         	    {
-        	         MATCHT(CALL_TOK, &FOLLOW_CALL_TOK_in_mainCommand2839);
+        	         MATCHT(CALL_TOK, &FOLLOW_CALL_TOK_in_mainCommand2859);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -7140,7 +7155,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_identifier_in_mainCommand2841);
+        	        FOLLOWPUSH(FOLLOW_identifier_in_mainCommand2861);
         	        identifier(ctx, id, CHECK_NONE, SYM_VARIABLE);
 
         	        FOLLOWPOP();
@@ -7154,7 +7169,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2844);
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand2864);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -7177,9 +7192,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 30:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:851:5: ECHO_TOK ( simpleSymbolicExpr[sexpr] |)
+        	    // ../../../../src/parser/cvc/Cvc.g:856:5: ECHO_TOK ( simpleSymbolicExpr[sexpr] |)
         	    {
-        	         MATCHT(ECHO_TOK, &FOLLOW_ECHO_TOK_in_mainCommand2858);
+        	         MATCHT(ECHO_TOK, &FOLLOW_ECHO_TOK_in_mainCommand2878);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -7190,7 +7205,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:852:5: ( simpleSymbolicExpr[sexpr] |)
+        	        // ../../../../src/parser/cvc/Cvc.g:857:5: ( simpleSymbolicExpr[sexpr] |)
         	        {
         	            int alt27=2;
         	            switch ( LA(1) )
@@ -7233,9 +7248,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt27)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:852:7: simpleSymbolicExpr[sexpr]
+        	        	    // ../../../../src/parser/cvc/Cvc.g:857:7: simpleSymbolicExpr[sexpr]
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_simpleSymbolicExpr_in_mainCommand2866);
+        	        	        FOLLOWPUSH(FOLLOW_simpleSymbolicExpr_in_mainCommand2886);
         	        	        simpleSymbolicExpr(ctx, sexpr);
 
         	        	        FOLLOWPOP();
@@ -7258,7 +7273,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:854:7: 
+        	        	    // ../../../../src/parser/cvc/Cvc.g:859:7: 
         	        	    {
         	        	        if ( BACKTRACKING==0 )
         	        	        {
@@ -7275,9 +7290,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 31:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:857:5: EXIT_TOK
+        	    // ../../../../src/parser/cvc/Cvc.g:862:5: EXIT_TOK
         	    {
-        	         MATCHT(EXIT_TOK, &FOLLOW_EXIT_TOK_in_mainCommand2896);
+        	         MATCHT(EXIT_TOK, &FOLLOW_EXIT_TOK_in_mainCommand2916);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -7297,9 +7312,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 32:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:860:5: INCLUDE_TOK ( ( str[s] | IDENTIFIER ) |)
+        	    // ../../../../src/parser/cvc/Cvc.g:865:5: INCLUDE_TOK ( ( str[s] | IDENTIFIER ) |)
         	    {
-        	         MATCHT(INCLUDE_TOK, &FOLLOW_INCLUDE_TOK_in_mainCommand2909);
+        	         MATCHT(INCLUDE_TOK, &FOLLOW_INCLUDE_TOK_in_mainCommand2929);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -7310,7 +7325,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:861:5: ( ( str[s] | IDENTIFIER ) |)
+        	        // ../../../../src/parser/cvc/Cvc.g:866:5: ( ( str[s] | IDENTIFIER ) |)
         	        {
         	            int alt29=2;
         	            switch ( LA(1) )
@@ -7348,9 +7363,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt29)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:861:7: ( str[s] | IDENTIFIER )
+        	        	    // ../../../../src/parser/cvc/Cvc.g:866:7: ( str[s] | IDENTIFIER )
         	        	    {
-        	        	        // ../../../../../../src/parser/cvc/Cvc.g:861:7: ( str[s] | IDENTIFIER )
+        	        	        // ../../../../src/parser/cvc/Cvc.g:866:7: ( str[s] | IDENTIFIER )
         	        	        {
         	        	            int alt28=2;
         	        	            switch ( LA(1) )
@@ -7387,9 +7402,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	            switch (alt28)
         	        	            {
         	        	        	case 1:
-        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:861:9: str[s]
+        	        	        	    // ../../../../src/parser/cvc/Cvc.g:866:9: str[s]
         	        	        	    {
-        	        	        	        FOLLOWPUSH(FOLLOW_str_in_mainCommand2919);
+        	        	        	        FOLLOWPUSH(FOLLOW_str_in_mainCommand2939);
         	        	        	        str(ctx, s);
 
         	        	        	        FOLLOWPOP();
@@ -7406,9 +7421,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        	    }
         	        	        	    break;
         	        	        	case 2:
-        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:861:18: IDENTIFIER
+        	        	        	    // ../../../../src/parser/cvc/Cvc.g:866:18: IDENTIFIER
         	        	        	    {
-        	        	        	        IDENTIFIER9 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_mainCommand2924);
+        	        	        	        IDENTIFIER9 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_mainCommand2944);
         	        	        	        if  (HASEXCEPTION())
         	        	        	        {
         	        	        	            goto rulemainCommandEx;
@@ -7440,7 +7455,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:863:7: 
+        	        	    // ../../../../src/parser/cvc/Cvc.g:868:7: 
         	        	    {
         	        	        if ( BACKTRACKING==0 )
         	        	        {
@@ -7457,9 +7472,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 33:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:866:5: DUMP_PROOF_TOK
+        	    // ../../../../src/parser/cvc/Cvc.g:871:5: DUMP_PROOF_TOK
         	    {
-        	         MATCHT(DUMP_PROOF_TOK, &FOLLOW_DUMP_PROOF_TOK_in_mainCommand2957);
+        	         MATCHT(DUMP_PROOF_TOK, &FOLLOW_DUMP_PROOF_TOK_in_mainCommand2977);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -7479,9 +7494,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 34:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:869:5: DUMP_UNSAT_CORE_TOK
+        	    // ../../../../src/parser/cvc/Cvc.g:874:5: DUMP_UNSAT_CORE_TOK
         	    {
-        	         MATCHT(DUMP_UNSAT_CORE_TOK, &FOLLOW_DUMP_UNSAT_CORE_TOK_in_mainCommand2970);
+        	         MATCHT(DUMP_UNSAT_CORE_TOK, &FOLLOW_DUMP_UNSAT_CORE_TOK_in_mainCommand2990);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -7501,7 +7516,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 35:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:872:5: ( DUMP_ASSUMPTIONS_TOK | DUMP_SIG_TOK | DUMP_TCC_TOK | DUMP_TCC_ASSUMPTIONS_TOK | DUMP_TCC_PROOF_TOK | DUMP_CLOSURE_TOK | DUMP_CLOSURE_PROOF_TOK )
+        	    // ../../../../src/parser/cvc/Cvc.g:877:5: ( DUMP_ASSUMPTIONS_TOK | DUMP_SIG_TOK | DUMP_TCC_TOK | DUMP_TCC_ASSUMPTIONS_TOK | DUMP_TCC_PROOF_TOK | DUMP_CLOSURE_TOK | DUMP_CLOSURE_PROOF_TOK )
         	    {
         	        if ( ((LA(1) >= DUMP_ASSUMPTIONS_TOK) && (LA(1) <= DUMP_CLOSURE_TOK)) || ((LA(1) >= DUMP_SIG_TOK) && (LA(1) <= DUMP_TCC_TOK)) )
         	        {
@@ -7536,7 +7551,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 36:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:882:5: ( WHERE_TOK | ASSERTIONS_TOK | ASSUMPTIONS_TOK )
+        	    // ../../../../src/parser/cvc/Cvc.g:887:5: ( WHERE_TOK | ASSERTIONS_TOK | ASSUMPTIONS_TOK )
         	    {
         	        if ( LA(1) == ASSERTIONS_TOK || LA(1) == ASSUMPTIONS_TOK || LA(1) == WHERE_TOK )
         	        {
@@ -7571,9 +7586,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 37:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:885:5: COUNTEREXAMPLE_TOK
+        	    // ../../../../src/parser/cvc/Cvc.g:890:5: COUNTEREXAMPLE_TOK
         	    {
-        	         MATCHT(COUNTEREXAMPLE_TOK, &FOLLOW_COUNTEREXAMPLE_TOK_in_mainCommand3079);
+        	         MATCHT(COUNTEREXAMPLE_TOK, &FOLLOW_COUNTEREXAMPLE_TOK_in_mainCommand3099);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -7593,9 +7608,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 38:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:887:5: COUNTERMODEL_TOK
+        	    // ../../../../src/parser/cvc/Cvc.g:892:5: COUNTERMODEL_TOK
         	    {
-        	         MATCHT(COUNTERMODEL_TOK, &FOLLOW_COUNTERMODEL_TOK_in_mainCommand3091);
+        	         MATCHT(COUNTERMODEL_TOK, &FOLLOW_COUNTERMODEL_TOK_in_mainCommand3111);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -7615,9 +7630,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 39:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:890:5: ARITH_VAR_ORDER_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:895:5: ARITH_VAR_ORDER_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN
         	    {
-        	         MATCHT(ARITH_VAR_ORDER_TOK, &FOLLOW_ARITH_VAR_ORDER_TOK_in_mainCommand3104);
+        	         MATCHT(ARITH_VAR_ORDER_TOK, &FOLLOW_ARITH_VAR_ORDER_TOK_in_mainCommand3124);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -7628,7 +7643,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_mainCommand3106);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_mainCommand3126);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -7639,7 +7654,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand3108);
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand3128);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -7653,7 +7668,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:890:43: ( COMMA formula[f] )*
+        	        // ../../../../src/parser/cvc/Cvc.g:895:43: ( COMMA formula[f] )*
 
         	        for (;;)
         	        {
@@ -7671,9 +7686,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt30)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:890:45: COMMA formula[f]
+        	        	    // ../../../../src/parser/cvc/Cvc.g:895:45: COMMA formula[f]
         	        	    {
-        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_mainCommand3113);
+        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_mainCommand3133);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulemainCommandEx;
@@ -7684,7 +7699,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        }
 
 
-        	        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand3115);
+        	        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand3135);
         	        	        formula(ctx, f);
 
         	        	        FOLLOWPOP();
@@ -7709,7 +7724,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        loop30: ; /* Jump out to here if this rule does not match */
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_mainCommand3121);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_mainCommand3141);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -7729,9 +7744,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 40:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:893:5: CONTINUE_TOK
+        	    // ../../../../src/parser/cvc/Cvc.g:898:5: CONTINUE_TOK
         	    {
-        	         MATCHT(CONTINUE_TOK, &FOLLOW_CONTINUE_TOK_in_mainCommand3134);
+        	         MATCHT(CONTINUE_TOK, &FOLLOW_CONTINUE_TOK_in_mainCommand3154);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -7751,9 +7766,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 41:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:895:5: RESTART_TOK formula[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:900:5: RESTART_TOK formula[f]
         	    {
-        	         MATCHT(RESTART_TOK, &FOLLOW_RESTART_TOK_in_mainCommand3146);
+        	         MATCHT(RESTART_TOK, &FOLLOW_RESTART_TOK_in_mainCommand3166);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulemainCommandEx;
@@ -7764,7 +7779,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand3148);
+        	        FOLLOWPUSH(FOLLOW_formula_in_mainCommand3168);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -7787,9 +7802,9 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 42:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:896:5: toplevelDeclaration[cmd]
+        	    // ../../../../src/parser/cvc/Cvc.g:901:5: toplevelDeclaration[cmd]
         	    {
-        	        FOLLOWPUSH(FOLLOW_toplevelDeclaration_in_mainCommand3157);
+        	        FOLLOWPUSH(FOLLOW_toplevelDeclaration_in_mainCommand3177);
         	        toplevelDeclaration(ctx, cmd);
 
         	        FOLLOWPOP();
@@ -7826,7 +7841,7 @@ mainCommand(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
 /**
  * $ANTLR start simpleSymbolicExpr
- * ../../../../../../src/parser/cvc/Cvc.g:899:1: simpleSymbolicExpr[CVC4::SExpr& sexpr] : ( INTEGER_LITERAL | MINUS_TOK INTEGER_LITERAL | DECIMAL_LITERAL | HEX_LITERAL | BINARY_LITERAL | str[s] | IDENTIFIER );
+ * ../../../../src/parser/cvc/Cvc.g:904:1: simpleSymbolicExpr[CVC4::SExpr& sexpr] : ( INTEGER_LITERAL | MINUS_TOK INTEGER_LITERAL | DECIMAL_LITERAL | HEX_LITERAL | BINARY_LITERAL | str[s] | IDENTIFIER );
  */
 static void
 simpleSymbolicExpr(pCvcParser ctx, CVC4::SExpr& sexpr)
@@ -7854,7 +7869,7 @@ simpleSymbolicExpr(pCvcParser ctx, CVC4::SExpr& sexpr)
 
     {
         {
-            //  ../../../../../../src/parser/cvc/Cvc.g:904:3: ( INTEGER_LITERAL | MINUS_TOK INTEGER_LITERAL | DECIMAL_LITERAL | HEX_LITERAL | BINARY_LITERAL | str[s] | IDENTIFIER )
+            //  ../../../../src/parser/cvc/Cvc.g:909:3: ( INTEGER_LITERAL | MINUS_TOK INTEGER_LITERAL | DECIMAL_LITERAL | HEX_LITERAL | BINARY_LITERAL | str[s] | IDENTIFIER )
 
             ANTLR3_UINT32 alt32;
 
@@ -7919,9 +7934,9 @@ simpleSymbolicExpr(pCvcParser ctx, CVC4::SExpr& sexpr)
             switch (alt32)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:904:5: INTEGER_LITERAL
+        	    // ../../../../src/parser/cvc/Cvc.g:909:5: INTEGER_LITERAL
         	    {
-        	        INTEGER_LITERAL10 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3177);
+        	        INTEGER_LITERAL10 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3197);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleSymbolicExprEx;
@@ -7941,9 +7956,9 @@ simpleSymbolicExpr(pCvcParser ctx, CVC4::SExpr& sexpr)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:906:5: MINUS_TOK INTEGER_LITERAL
+        	    // ../../../../src/parser/cvc/Cvc.g:911:5: MINUS_TOK INTEGER_LITERAL
         	    {
-        	         MATCHT(MINUS_TOK, &FOLLOW_MINUS_TOK_in_simpleSymbolicExpr3189);
+        	         MATCHT(MINUS_TOK, &FOLLOW_MINUS_TOK_in_simpleSymbolicExpr3209);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleSymbolicExprEx;
@@ -7954,7 +7969,7 @@ simpleSymbolicExpr(pCvcParser ctx, CVC4::SExpr& sexpr)
         	        }
 
 
-        	        INTEGER_LITERAL11 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3191);
+        	        INTEGER_LITERAL11 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExpr3211);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleSymbolicExprEx;
@@ -7974,9 +7989,9 @@ simpleSymbolicExpr(pCvcParser ctx, CVC4::SExpr& sexpr)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:908:5: DECIMAL_LITERAL
+        	    // ../../../../src/parser/cvc/Cvc.g:913:5: DECIMAL_LITERAL
         	    {
-        	        DECIMAL_LITERAL12 = (pANTLR3_COMMON_TOKEN) MATCHT(DECIMAL_LITERAL, &FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExpr3203);
+        	        DECIMAL_LITERAL12 = (pANTLR3_COMMON_TOKEN) MATCHT(DECIMAL_LITERAL, &FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExpr3223);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleSymbolicExprEx;
@@ -7996,9 +8011,9 @@ simpleSymbolicExpr(pCvcParser ctx, CVC4::SExpr& sexpr)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:910:5: HEX_LITERAL
+        	    // ../../../../src/parser/cvc/Cvc.g:915:5: HEX_LITERAL
         	    {
-        	        HEX_LITERAL13 = (pANTLR3_COMMON_TOKEN) MATCHT(HEX_LITERAL, &FOLLOW_HEX_LITERAL_in_simpleSymbolicExpr3215);
+        	        HEX_LITERAL13 = (pANTLR3_COMMON_TOKEN) MATCHT(HEX_LITERAL, &FOLLOW_HEX_LITERAL_in_simpleSymbolicExpr3235);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleSymbolicExprEx;
@@ -8018,9 +8033,9 @@ simpleSymbolicExpr(pCvcParser ctx, CVC4::SExpr& sexpr)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:912:5: BINARY_LITERAL
+        	    // ../../../../src/parser/cvc/Cvc.g:917:5: BINARY_LITERAL
         	    {
-        	        BINARY_LITERAL14 = (pANTLR3_COMMON_TOKEN) MATCHT(BINARY_LITERAL, &FOLLOW_BINARY_LITERAL_in_simpleSymbolicExpr3227);
+        	        BINARY_LITERAL14 = (pANTLR3_COMMON_TOKEN) MATCHT(BINARY_LITERAL, &FOLLOW_BINARY_LITERAL_in_simpleSymbolicExpr3247);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleSymbolicExprEx;
@@ -8040,9 +8055,9 @@ simpleSymbolicExpr(pCvcParser ctx, CVC4::SExpr& sexpr)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:914:5: str[s]
+        	    // ../../../../src/parser/cvc/Cvc.g:919:5: str[s]
         	    {
-        	        FOLLOWPUSH(FOLLOW_str_in_simpleSymbolicExpr3239);
+        	        FOLLOWPUSH(FOLLOW_str_in_simpleSymbolicExpr3259);
         	        str(ctx, s);
 
         	        FOLLOWPOP();
@@ -8065,9 +8080,9 @@ simpleSymbolicExpr(pCvcParser ctx, CVC4::SExpr& sexpr)
         	    }
         	    break;
         	case 7:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:916:5: IDENTIFIER
+        	    // ../../../../src/parser/cvc/Cvc.g:921:5: IDENTIFIER
         	    {
-        	        IDENTIFIER15 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_simpleSymbolicExpr3252);
+        	        IDENTIFIER15 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_simpleSymbolicExpr3272);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleSymbolicExprEx;
@@ -8107,7 +8122,7 @@ simpleSymbolicExpr(pCvcParser ctx, CVC4::SExpr& sexpr)
 
 /**
  * $ANTLR start symbolicExpr
- * ../../../../../../src/parser/cvc/Cvc.g:920:1: symbolicExpr[CVC4::SExpr& sexpr] : ( simpleSymbolicExpr[sexpr] | LPAREN ( symbolicExpr[sexpr] )* RPAREN );
+ * ../../../../src/parser/cvc/Cvc.g:925:1: symbolicExpr[CVC4::SExpr& sexpr] : ( simpleSymbolicExpr[sexpr] | LPAREN ( symbolicExpr[sexpr] )* RPAREN );
  */
 static void
 symbolicExpr(pCvcParser ctx, CVC4::SExpr& sexpr)
@@ -8120,7 +8135,7 @@ symbolicExpr(pCvcParser ctx, CVC4::SExpr& sexpr)
 
     {
         {
-            //  ../../../../../../src/parser/cvc/Cvc.g:924:3: ( simpleSymbolicExpr[sexpr] | LPAREN ( symbolicExpr[sexpr] )* RPAREN )
+            //  ../../../../src/parser/cvc/Cvc.g:929:3: ( simpleSymbolicExpr[sexpr] | LPAREN ( symbolicExpr[sexpr] )* RPAREN )
 
             ANTLR3_UINT32 alt34;
 
@@ -8166,9 +8181,9 @@ symbolicExpr(pCvcParser ctx, CVC4::SExpr& sexpr)
             switch (alt34)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:924:5: simpleSymbolicExpr[sexpr]
+        	    // ../../../../src/parser/cvc/Cvc.g:929:5: simpleSymbolicExpr[sexpr]
         	    {
-        	        FOLLOWPUSH(FOLLOW_simpleSymbolicExpr_in_symbolicExpr3277);
+        	        FOLLOWPUSH(FOLLOW_simpleSymbolicExpr_in_symbolicExpr3297);
         	        simpleSymbolicExpr(ctx, sexpr);
 
         	        FOLLOWPOP();
@@ -8185,9 +8200,9 @@ symbolicExpr(pCvcParser ctx, CVC4::SExpr& sexpr)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:925:5: LPAREN ( symbolicExpr[sexpr] )* RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:930:5: LPAREN ( symbolicExpr[sexpr] )* RPAREN
         	    {
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_symbolicExpr3284);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_symbolicExpr3304);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesymbolicExprEx;
@@ -8198,7 +8213,7 @@ symbolicExpr(pCvcParser ctx, CVC4::SExpr& sexpr)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:925:12: ( symbolicExpr[sexpr] )*
+        	        // ../../../../src/parser/cvc/Cvc.g:930:12: ( symbolicExpr[sexpr] )*
 
         	        for (;;)
         	        {
@@ -8223,9 +8238,9 @@ symbolicExpr(pCvcParser ctx, CVC4::SExpr& sexpr)
         	            switch (alt33)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:925:13: symbolicExpr[sexpr]
+        	        	    // ../../../../src/parser/cvc/Cvc.g:930:13: symbolicExpr[sexpr]
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_symbolicExpr_in_symbolicExpr3287);
+        	        	        FOLLOWPUSH(FOLLOW_symbolicExpr_in_symbolicExpr3307);
         	        	        symbolicExpr(ctx, sexpr);
 
         	        	        FOLLOWPOP();
@@ -8256,7 +8271,7 @@ symbolicExpr(pCvcParser ctx, CVC4::SExpr& sexpr)
         	        loop33: ; /* Jump out to here if this rule does not match */
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_symbolicExpr3295);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_symbolicExpr3315);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesymbolicExprEx;
@@ -8296,7 +8311,7 @@ symbolicExpr(pCvcParser ctx, CVC4::SExpr& sexpr)
 
 /**
  * $ANTLR start toplevelDeclaration
- * ../../../../../../src/parser/cvc/Cvc.g:932:1: toplevelDeclaration[CVC4::PtrCloser<CVC4::Command>* cmd] : identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON ( declareVariables[cmd,t,ids,true] | declareTypes[cmd,ids] ) ;
+ * ../../../../src/parser/cvc/Cvc.g:937:1: toplevelDeclaration[CVC4::PtrCloser<CVC4::Command>* cmd] : identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON ( declareVariables[cmd,t,ids,true] | declareTypes[cmd,ids] ) ;
  */
 static void
 toplevelDeclaration(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
@@ -8311,10 +8326,10 @@ toplevelDeclaration(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
                             << std::endl;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:939:3: ( identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON ( declareVariables[cmd,t,ids,true] | declareTypes[cmd,ids] ) )
-        // ../../../../../../src/parser/cvc/Cvc.g:939:5: identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON ( declareVariables[cmd,t,ids,true] | declareTypes[cmd,ids] )
+        // ../../../../src/parser/cvc/Cvc.g:944:3: ( identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON ( declareVariables[cmd,t,ids,true] | declareTypes[cmd,ids] ) )
+        // ../../../../src/parser/cvc/Cvc.g:944:5: identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON ( declareVariables[cmd,t,ids,true] | declareTypes[cmd,ids] )
         {
-            FOLLOWPUSH(FOLLOW_identifierList_in_toplevelDeclaration3322);
+            FOLLOWPUSH(FOLLOW_identifierList_in_toplevelDeclaration3342);
             identifierList(ctx, ids, CHECK_NONE, SYM_VARIABLE);
 
             FOLLOWPOP();
@@ -8328,7 +8343,7 @@ toplevelDeclaration(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
             }
 
 
-             MATCHT(COLON, &FOLLOW_COLON_in_toplevelDeclaration3325);
+             MATCHT(COLON, &FOLLOW_COLON_in_toplevelDeclaration3345);
             if  (HASEXCEPTION())
             {
                 goto ruletoplevelDeclarationEx;
@@ -8339,7 +8354,7 @@ toplevelDeclaration(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
             }
 
 
-            // ../../../../../../src/parser/cvc/Cvc.g:940:5: ( declareVariables[cmd,t,ids,true] | declareTypes[cmd,ids] )
+            // ../../../../src/parser/cvc/Cvc.g:945:5: ( declareVariables[cmd,t,ids,true] | declareTypes[cmd,ids] )
             {
                 int alt35=2;
                 switch ( LA(1) )
@@ -8388,9 +8403,9 @@ toplevelDeclaration(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
                 switch (alt35)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:940:7: declareVariables[cmd,t,ids,true]
+            	    // ../../../../src/parser/cvc/Cvc.g:945:7: declareVariables[cmd,t,ids,true]
             	    {
-            	        FOLLOWPUSH(FOLLOW_declareVariables_in_toplevelDeclaration3333);
+            	        FOLLOWPUSH(FOLLOW_declareVariables_in_toplevelDeclaration3353);
             	        declareVariables(ctx, cmd, t, ids, true);
 
             	        FOLLOWPOP();
@@ -8407,9 +8422,9 @@ toplevelDeclaration(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
             	    }
             	    break;
             	case 2:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:941:7: declareTypes[cmd,ids]
+            	    // ../../../../src/parser/cvc/Cvc.g:946:7: declareTypes[cmd,ids]
             	    {
-            	        FOLLOWPUSH(FOLLOW_declareTypes_in_toplevelDeclaration3342);
+            	        FOLLOWPUSH(FOLLOW_declareTypes_in_toplevelDeclaration3362);
             	        declareTypes(ctx, cmd, ids);
 
             	        FOLLOWPOP();
@@ -8449,7 +8464,7 @@ toplevelDeclaration(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
 /**
  * $ANTLR start boundVarDecl
- * ../../../../../../src/parser/cvc/Cvc.g:947:1: boundVarDecl[std::vector<std::string>& ids, CVC4::Type& t] : identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON declareVariables[&local_cmd,t,ids,false] ;
+ * ../../../../src/parser/cvc/Cvc.g:952:1: boundVarDecl[std::vector<std::string>& ids, CVC4::Type& t] : identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON declareVariables[&local_cmd,t,ids,false] ;
  */
 static void
 boundVarDecl(pCvcParser ctx, std::vector<std::string>& ids, CVC4::Type& t)
@@ -8461,10 +8476,10 @@ boundVarDecl(pCvcParser ctx, std::vector<std::string>& ids, CVC4::Type& t)
       CVC4::PtrCloser<Command> local_cmd;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:951:3: ( identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON declareVariables[&local_cmd,t,ids,false] )
-        // ../../../../../../src/parser/cvc/Cvc.g:951:5: identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON declareVariables[&local_cmd,t,ids,false]
+        // ../../../../src/parser/cvc/Cvc.g:956:3: ( identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON declareVariables[&local_cmd,t,ids,false] )
+        // ../../../../src/parser/cvc/Cvc.g:956:5: identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON declareVariables[&local_cmd,t,ids,false]
         {
-            FOLLOWPUSH(FOLLOW_identifierList_in_boundVarDecl3366);
+            FOLLOWPUSH(FOLLOW_identifierList_in_boundVarDecl3386);
             identifierList(ctx, ids, CHECK_NONE, SYM_VARIABLE);
 
             FOLLOWPOP();
@@ -8478,7 +8493,7 @@ boundVarDecl(pCvcParser ctx, std::vector<std::string>& ids, CVC4::Type& t)
             }
 
 
-             MATCHT(COLON, &FOLLOW_COLON_in_boundVarDecl3369);
+             MATCHT(COLON, &FOLLOW_COLON_in_boundVarDecl3389);
             if  (HASEXCEPTION())
             {
                 goto ruleboundVarDeclEx;
@@ -8489,7 +8504,7 @@ boundVarDecl(pCvcParser ctx, std::vector<std::string>& ids, CVC4::Type& t)
             }
 
 
-            FOLLOWPUSH(FOLLOW_declareVariables_in_boundVarDecl3375);
+            FOLLOWPUSH(FOLLOW_declareVariables_in_boundVarDecl3395);
             declareVariables(ctx, &local_cmd, t, ids, false);
 
             FOLLOWPOP();
@@ -8523,7 +8538,7 @@ boundVarDecl(pCvcParser ctx, std::vector<std::string>& ids, CVC4::Type& t)
 
 /**
  * $ANTLR start boundVarDecls
- * ../../../../../../src/parser/cvc/Cvc.g:958:1: boundVarDecls : boundVarDecl[ids,t] ( COMMA boundVarDecl[ids,t] )* ;
+ * ../../../../src/parser/cvc/Cvc.g:963:1: boundVarDecls : boundVarDecl[ids,t] ( COMMA boundVarDecl[ids,t] )* ;
  */
 static void
 boundVarDecls(pCvcParser ctx)
@@ -8536,10 +8551,10 @@ boundVarDecls(pCvcParser ctx)
       Type t;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:963:3: ( boundVarDecl[ids,t] ( COMMA boundVarDecl[ids,t] )* )
-        // ../../../../../../src/parser/cvc/Cvc.g:963:5: boundVarDecl[ids,t] ( COMMA boundVarDecl[ids,t] )*
+        // ../../../../src/parser/cvc/Cvc.g:968:3: ( boundVarDecl[ids,t] ( COMMA boundVarDecl[ids,t] )* )
+        // ../../../../src/parser/cvc/Cvc.g:968:5: boundVarDecl[ids,t] ( COMMA boundVarDecl[ids,t] )*
         {
-            FOLLOWPUSH(FOLLOW_boundVarDecl_in_boundVarDecls3396);
+            FOLLOWPUSH(FOLLOW_boundVarDecl_in_boundVarDecls3416);
             boundVarDecl(ctx, ids, t);
 
             FOLLOWPOP();
@@ -8553,7 +8568,7 @@ boundVarDecls(pCvcParser ctx)
             }
 
 
-            // ../../../../../../src/parser/cvc/Cvc.g:963:25: ( COMMA boundVarDecl[ids,t] )*
+            // ../../../../src/parser/cvc/Cvc.g:968:25: ( COMMA boundVarDecl[ids,t] )*
 
             for (;;)
             {
@@ -8571,9 +8586,9 @@ boundVarDecls(pCvcParser ctx)
                 switch (alt36)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:963:27: COMMA boundVarDecl[ids,t]
+            	    // ../../../../src/parser/cvc/Cvc.g:968:27: COMMA boundVarDecl[ids,t]
             	    {
-            	         MATCHT(COMMA, &FOLLOW_COMMA_in_boundVarDecls3401);
+            	         MATCHT(COMMA, &FOLLOW_COMMA_in_boundVarDecls3421);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleboundVarDeclsEx;
@@ -8584,7 +8599,7 @@ boundVarDecls(pCvcParser ctx)
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_boundVarDecl_in_boundVarDecls3403);
+            	        FOLLOWPUSH(FOLLOW_boundVarDecl_in_boundVarDecls3423);
             	        boundVarDecl(ctx, ids, t);
 
             	        FOLLOWPOP();
@@ -8629,7 +8644,7 @@ boundVarDecls(pCvcParser ctx)
 
 /**
  * $ANTLR start boundVarDeclsReturn
- * ../../../../../../src/parser/cvc/Cvc.g:966:1: boundVarDeclsReturn[std::vector<CVC4::Expr>& terms,\n std::vector<CVC4::Type>& types] : boundVarDeclReturn[terms,types] ( COMMA boundVarDeclReturn[terms,types] )* ;
+ * ../../../../src/parser/cvc/Cvc.g:971:1: boundVarDeclsReturn[std::vector<CVC4::Expr>& terms,\n std::vector<CVC4::Type>& types] : boundVarDeclReturn[terms,types] ( COMMA boundVarDeclReturn[terms,types] )* ;
  */
 static void
 boundVarDeclsReturn(pCvcParser ctx, std::vector<CVC4::Expr>& terms, std::vector<CVC4::Type>& types)
@@ -8644,10 +8659,10 @@ boundVarDeclsReturn(pCvcParser ctx, std::vector<CVC4::Expr>& terms, std::vector<
       types.clear();
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:974:3: ( boundVarDeclReturn[terms,types] ( COMMA boundVarDeclReturn[terms,types] )* )
-        // ../../../../../../src/parser/cvc/Cvc.g:974:5: boundVarDeclReturn[terms,types] ( COMMA boundVarDeclReturn[terms,types] )*
+        // ../../../../src/parser/cvc/Cvc.g:979:3: ( boundVarDeclReturn[terms,types] ( COMMA boundVarDeclReturn[terms,types] )* )
+        // ../../../../src/parser/cvc/Cvc.g:979:5: boundVarDeclReturn[terms,types] ( COMMA boundVarDeclReturn[terms,types] )*
         {
-            FOLLOWPUSH(FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3426);
+            FOLLOWPUSH(FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3446);
             boundVarDeclReturn(ctx, terms, types);
 
             FOLLOWPOP();
@@ -8661,7 +8676,7 @@ boundVarDeclsReturn(pCvcParser ctx, std::vector<CVC4::Expr>& terms, std::vector<
             }
 
 
-            // ../../../../../../src/parser/cvc/Cvc.g:974:37: ( COMMA boundVarDeclReturn[terms,types] )*
+            // ../../../../src/parser/cvc/Cvc.g:979:37: ( COMMA boundVarDeclReturn[terms,types] )*
 
             for (;;)
             {
@@ -8679,9 +8694,9 @@ boundVarDeclsReturn(pCvcParser ctx, std::vector<CVC4::Expr>& terms, std::vector<
                 switch (alt37)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:974:39: COMMA boundVarDeclReturn[terms,types]
+            	    // ../../../../src/parser/cvc/Cvc.g:979:39: COMMA boundVarDeclReturn[terms,types]
             	    {
-            	         MATCHT(COMMA, &FOLLOW_COMMA_in_boundVarDeclsReturn3431);
+            	         MATCHT(COMMA, &FOLLOW_COMMA_in_boundVarDeclsReturn3451);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleboundVarDeclsReturnEx;
@@ -8692,7 +8707,7 @@ boundVarDeclsReturn(pCvcParser ctx, std::vector<CVC4::Expr>& terms, std::vector<
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3433);
+            	        FOLLOWPUSH(FOLLOW_boundVarDeclReturn_in_boundVarDeclsReturn3453);
             	        boundVarDeclReturn(ctx, terms, types);
 
             	        FOLLOWPOP();
@@ -8737,7 +8752,7 @@ boundVarDeclsReturn(pCvcParser ctx, std::vector<CVC4::Expr>& terms, std::vector<
 
 /**
  * $ANTLR start boundVarDeclReturn
- * ../../../../../../src/parser/cvc/Cvc.g:977:1: boundVarDeclReturn[std::vector<CVC4::Expr>& terms,\n std::vector<CVC4::Type>& types] : identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON type[t,CHECK_DECLARED] ;
+ * ../../../../src/parser/cvc/Cvc.g:982:1: boundVarDeclReturn[std::vector<CVC4::Expr>& terms,\n std::vector<CVC4::Type>& types] : identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON type[t,CHECK_DECLARED] ;
  */
 static void
 boundVarDeclReturn(pCvcParser ctx, std::vector<CVC4::Expr>& terms, std::vector<CVC4::Type>& types)
@@ -8751,10 +8766,10 @@ boundVarDeclReturn(pCvcParser ctx, std::vector<CVC4::Expr>& terms, std::vector<C
       // NOTE: do not clear the vectors here!
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:984:3: ( identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON type[t,CHECK_DECLARED] )
-        // ../../../../../../src/parser/cvc/Cvc.g:984:5: identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON type[t,CHECK_DECLARED]
+        // ../../../../src/parser/cvc/Cvc.g:989:3: ( identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON type[t,CHECK_DECLARED] )
+        // ../../../../src/parser/cvc/Cvc.g:989:5: identifierList[ids,CHECK_NONE,SYM_VARIABLE] COLON type[t,CHECK_DECLARED]
         {
-            FOLLOWPUSH(FOLLOW_identifierList_in_boundVarDeclReturn3456);
+            FOLLOWPUSH(FOLLOW_identifierList_in_boundVarDeclReturn3476);
             identifierList(ctx, ids, CHECK_NONE, SYM_VARIABLE);
 
             FOLLOWPOP();
@@ -8768,7 +8783,7 @@ boundVarDeclReturn(pCvcParser ctx, std::vector<CVC4::Expr>& terms, std::vector<C
             }
 
 
-             MATCHT(COLON, &FOLLOW_COLON_in_boundVarDeclReturn3459);
+             MATCHT(COLON, &FOLLOW_COLON_in_boundVarDeclReturn3479);
             if  (HASEXCEPTION())
             {
                 goto ruleboundVarDeclReturnEx;
@@ -8779,7 +8794,7 @@ boundVarDeclReturn(pCvcParser ctx, std::vector<CVC4::Expr>& terms, std::vector<C
             }
 
 
-            FOLLOWPUSH(FOLLOW_type_in_boundVarDeclReturn3461);
+            FOLLOWPUSH(FOLLOW_type_in_boundVarDeclReturn3481);
             type(ctx, t, CHECK_DECLARED);
 
             FOLLOWPOP();
@@ -8824,7 +8839,7 @@ boundVarDeclReturn(pCvcParser ctx, std::vector<CVC4::Expr>& terms, std::vector<C
 
 /**
  * $ANTLR start declareTypes
- * ../../../../../../src/parser/cvc/Cvc.g:1000:1: declareTypes[CVC4::PtrCloser<CVC4::Command>* cmd,\n const std::vector<std::string>& idList] : ( TYPE_TOK | TYPE_TOK EQUAL_TOK type[t,CHECK_DECLARED] );
+ * ../../../../src/parser/cvc/Cvc.g:1005:1: declareTypes[CVC4::PtrCloser<CVC4::Command>* cmd,\n const std::vector<std::string>& idList] : ( TYPE_TOK | TYPE_TOK EQUAL_TOK type[t,CHECK_DECLARED] );
  */
 static void
 declareTypes(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd, const std::vector<std::string>& idList)
@@ -8837,7 +8852,7 @@ declareTypes(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd, const std::vec
 
     {
         {
-            //  ../../../../../../src/parser/cvc/Cvc.g:1006:3: ( TYPE_TOK | TYPE_TOK EQUAL_TOK type[t,CHECK_DECLARED] )
+            //  ../../../../src/parser/cvc/Cvc.g:1011:3: ( TYPE_TOK | TYPE_TOK EQUAL_TOK type[t,CHECK_DECLARED] )
 
             ANTLR3_UINT32 alt38;
 
@@ -8902,9 +8917,9 @@ declareTypes(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd, const std::vec
             switch (alt38)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1006:5: TYPE_TOK
+        	    // ../../../../src/parser/cvc/Cvc.g:1011:5: TYPE_TOK
         	    {
-        	         MATCHT(TYPE_TOK, &FOLLOW_TYPE_TOK_in_declareTypes3495);
+        	         MATCHT(TYPE_TOK, &FOLLOW_TYPE_TOK_in_declareTypes3515);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruledeclareTypesEx;
@@ -8937,9 +8952,9 @@ declareTypes(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd, const std::vec
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1023:5: TYPE_TOK EQUAL_TOK type[t,CHECK_DECLARED]
+        	    // ../../../../src/parser/cvc/Cvc.g:1028:5: TYPE_TOK EQUAL_TOK type[t,CHECK_DECLARED]
         	    {
-        	         MATCHT(TYPE_TOK, &FOLLOW_TYPE_TOK_in_declareTypes3514);
+        	         MATCHT(TYPE_TOK, &FOLLOW_TYPE_TOK_in_declareTypes3534);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruledeclareTypesEx;
@@ -8950,7 +8965,7 @@ declareTypes(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd, const std::vec
         	        }
 
 
-        	         MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_declareTypes3516);
+        	         MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_declareTypes3536);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruledeclareTypesEx;
@@ -8961,7 +8976,7 @@ declareTypes(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd, const std::vec
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_type_in_declareTypes3518);
+        	        FOLLOWPUSH(FOLLOW_type_in_declareTypes3538);
         	        type(ctx, t, CHECK_DECLARED);
 
         	        FOLLOWPOP();
@@ -9010,7 +9025,7 @@ declareTypes(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd, const std::vec
 
 /**
  * $ANTLR start declareVariables
- * ../../../../../../src/parser/cvc/Cvc.g:1042:1: declareVariables[CVC4::PtrCloser<CVC4::Command>* cmd, CVC4::Type& t,\n const std::vector<std::string>& idList, bool topLevel] : type[t,CHECK_DECLARED] ( EQUAL_TOK formula[f] )? ;
+ * ../../../../src/parser/cvc/Cvc.g:1047:1: declareVariables[CVC4::PtrCloser<CVC4::Command>* cmd, CVC4::Type& t,\n const std::vector<std::string>& idList, bool topLevel] : type[t,CHECK_DECLARED] ( EQUAL_TOK formula[f] )? ;
  */
 static void
 declareVariables(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd, CVC4::Type& t, const std::vector<std::string>& idList, bool topLevel)
@@ -9023,10 +9038,10 @@ declareVariables(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd, CVC4::Type
       Debug("parser-extra") << "declType: " << AntlrInput::tokenText(LT(1)) << std::endl;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1049:3: ( type[t,CHECK_DECLARED] ( EQUAL_TOK formula[f] )? )
-        // ../../../../../../src/parser/cvc/Cvc.g:1049:5: type[t,CHECK_DECLARED] ( EQUAL_TOK formula[f] )?
+        // ../../../../src/parser/cvc/Cvc.g:1054:3: ( type[t,CHECK_DECLARED] ( EQUAL_TOK formula[f] )? )
+        // ../../../../src/parser/cvc/Cvc.g:1054:5: type[t,CHECK_DECLARED] ( EQUAL_TOK formula[f] )?
         {
-            FOLLOWPUSH(FOLLOW_type_in_declareVariables3552);
+            FOLLOWPUSH(FOLLOW_type_in_declareVariables3572);
             type(ctx, t, CHECK_DECLARED);
 
             FOLLOWPOP();
@@ -9040,7 +9055,7 @@ declareVariables(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd, CVC4::Type
             }
 
 
-            // ../../../../../../src/parser/cvc/Cvc.g:1049:28: ( EQUAL_TOK formula[f] )?
+            // ../../../../src/parser/cvc/Cvc.g:1054:28: ( EQUAL_TOK formula[f] )?
             {
                 int alt39=2;
                 switch ( LA(1) )
@@ -9055,9 +9070,9 @@ declareVariables(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd, CVC4::Type
                 switch (alt39)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1049:30: EQUAL_TOK formula[f]
+            	    // ../../../../src/parser/cvc/Cvc.g:1054:30: EQUAL_TOK formula[f]
             	    {
-            	         MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_declareVariables3557);
+            	         MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_declareVariables3577);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruledeclareVariablesEx;
@@ -9068,7 +9083,7 @@ declareVariables(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd, CVC4::Type
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_formula_in_declareVariables3559);
+            	        FOLLOWPUSH(FOLLOW_formula_in_declareVariables3579);
             	        formula(ctx, f);
 
             	        FOLLOWPOP();
@@ -9175,7 +9190,7 @@ declareVariables(pCvcParser ctx, CVC4::PtrCloser<CVC4::Command>* cmd, CVC4::Type
 
 /**
  * $ANTLR start identifierList
- * ../../../../../../src/parser/cvc/Cvc.g:1120:1: identifierList[std::vector<std::string>& idList,\n CVC4::parser::DeclarationCheck check,\n CVC4::parser::SymbolType type] : identifier[id,check,type] ( COMMA identifier[id,check,type] )* ;
+ * ../../../../src/parser/cvc/Cvc.g:1125:1: identifierList[std::vector<std::string>& idList,\n CVC4::parser::DeclarationCheck check,\n CVC4::parser::SymbolType type] : identifier[id,check,type] ( COMMA identifier[id,check,type] )* ;
  */
 static void
 identifierList(pCvcParser ctx, std::vector<std::string>& idList, CVC4::parser::DeclarationCheck check, CVC4::parser::SymbolType type)
@@ -9188,10 +9203,10 @@ identifierList(pCvcParser ctx, std::vector<std::string>& idList, CVC4::parser::D
       idList.clear();
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1127:3: ( identifier[id,check,type] ( COMMA identifier[id,check,type] )* )
-        // ../../../../../../src/parser/cvc/Cvc.g:1127:5: identifier[id,check,type] ( COMMA identifier[id,check,type] )*
+        // ../../../../src/parser/cvc/Cvc.g:1132:3: ( identifier[id,check,type] ( COMMA identifier[id,check,type] )* )
+        // ../../../../src/parser/cvc/Cvc.g:1132:5: identifier[id,check,type] ( COMMA identifier[id,check,type] )*
         {
-            FOLLOWPUSH(FOLLOW_identifier_in_identifierList3590);
+            FOLLOWPUSH(FOLLOW_identifier_in_identifierList3610);
             identifier(ctx, id, check, type);
 
             FOLLOWPOP();
@@ -9211,7 +9226,7 @@ identifierList(pCvcParser ctx, std::vector<std::string>& idList, CVC4::parser::D
             }
 
 
-            // ../../../../../../src/parser/cvc/Cvc.g:1128:5: ( COMMA identifier[id,check,type] )*
+            // ../../../../src/parser/cvc/Cvc.g:1133:5: ( COMMA identifier[id,check,type] )*
 
             for (;;)
             {
@@ -9229,9 +9244,9 @@ identifierList(pCvcParser ctx, std::vector<std::string>& idList, CVC4::parser::D
                 switch (alt40)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1128:7: COMMA identifier[id,check,type]
+            	    // ../../../../src/parser/cvc/Cvc.g:1133:7: COMMA identifier[id,check,type]
             	    {
-            	         MATCHT(COMMA, &FOLLOW_COMMA_in_identifierList3601);
+            	         MATCHT(COMMA, &FOLLOW_COMMA_in_identifierList3621);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleidentifierListEx;
@@ -9242,7 +9257,7 @@ identifierList(pCvcParser ctx, std::vector<std::string>& idList, CVC4::parser::D
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_identifier_in_identifierList3603);
+            	        FOLLOWPUSH(FOLLOW_identifier_in_identifierList3623);
             	        identifier(ctx, id, check, type);
 
             	        FOLLOWPOP();
@@ -9293,7 +9308,7 @@ identifierList(pCvcParser ctx, std::vector<std::string>& idList, CVC4::parser::D
 
 /**
  * $ANTLR start identifier
- * ../../../../../../src/parser/cvc/Cvc.g:1134:1: identifier[std::string& id,\n CVC4::parser::DeclarationCheck check,\n CVC4::parser::SymbolType type] : IDENTIFIER ;
+ * ../../../../src/parser/cvc/Cvc.g:1139:1: identifier[std::string& id,\n CVC4::parser::DeclarationCheck check,\n CVC4::parser::SymbolType type] : IDENTIFIER ;
  */
 static void
 identifier(pCvcParser ctx, std::string& id, CVC4::parser::DeclarationCheck check, CVC4::parser::SymbolType type)
@@ -9306,10 +9321,10 @@ identifier(pCvcParser ctx, std::string& id, CVC4::parser::DeclarationCheck check
     IDENTIFIER16       = NULL;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1137:3: ( IDENTIFIER )
-        // ../../../../../../src/parser/cvc/Cvc.g:1137:5: IDENTIFIER
+        // ../../../../src/parser/cvc/Cvc.g:1142:3: ( IDENTIFIER )
+        // ../../../../src/parser/cvc/Cvc.g:1142:5: IDENTIFIER
         {
-            IDENTIFIER16 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_identifier3625);
+            IDENTIFIER16 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_identifier3645);
             if  (HASEXCEPTION())
             {
                 goto ruleidentifierEx;
@@ -9347,7 +9362,7 @@ identifier(pCvcParser ctx, std::string& id, CVC4::parser::DeclarationCheck check
 
 /**
  * $ANTLR start type
- * ../../../../../../src/parser/cvc/Cvc.g:1154:1: type[CVC4::Type& t,\n CVC4::parser::DeclarationCheck check] : ( restrictedTypePossiblyFunctionLHS[t,check,lhs] ( ARROW_TOK type[t2,check] )? | LET_TOK typeLetDecl[check] ( COMMA typeLetDecl[check] )* IN_TOK type[t,check] );
+ * ../../../../src/parser/cvc/Cvc.g:1159:1: type[CVC4::Type& t,\n CVC4::parser::DeclarationCheck check] : ( restrictedTypePossiblyFunctionLHS[t,check,lhs] ( ARROW_TOK type[t2,check] )? | LET_TOK typeLetDecl[check] ( COMMA typeLetDecl[check] )* IN_TOK type[t,check] );
  */
 static void
 type(pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
@@ -9362,7 +9377,7 @@ type(pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
 
     {
         {
-            //  ../../../../../../src/parser/cvc/Cvc.g:1162:3: ( restrictedTypePossiblyFunctionLHS[t,check,lhs] ( ARROW_TOK type[t2,check] )? | LET_TOK typeLetDecl[check] ( COMMA typeLetDecl[check] )* IN_TOK type[t,check] )
+            //  ../../../../src/parser/cvc/Cvc.g:1167:3: ( restrictedTypePossiblyFunctionLHS[t,check,lhs] ( ARROW_TOK type[t2,check] )? | LET_TOK typeLetDecl[check] ( COMMA typeLetDecl[check] )* IN_TOK type[t,check] )
 
             ANTLR3_UINT32 alt43;
 
@@ -9413,9 +9428,9 @@ type(pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
             switch (alt43)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1162:5: restrictedTypePossiblyFunctionLHS[t,check,lhs] ( ARROW_TOK type[t2,check] )?
+        	    // ../../../../src/parser/cvc/Cvc.g:1167:5: restrictedTypePossiblyFunctionLHS[t,check,lhs] ( ARROW_TOK type[t2,check] )?
         	    {
-        	        FOLLOWPUSH(FOLLOW_restrictedTypePossiblyFunctionLHS_in_type3658);
+        	        FOLLOWPUSH(FOLLOW_restrictedTypePossiblyFunctionLHS_in_type3678);
         	        restrictedTypePossiblyFunctionLHS(ctx, t, check, lhs);
 
         	        FOLLOWPOP();
@@ -9441,7 +9456,7 @@ type(pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:1170:5: ( ARROW_TOK type[t2,check] )?
+        	        // ../../../../src/parser/cvc/Cvc.g:1175:5: ( ARROW_TOK type[t2,check] )?
         	        {
         	            int alt41=2;
         	            switch ( LA(1) )
@@ -9456,9 +9471,9 @@ type(pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
         	            switch (alt41)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1170:7: ARROW_TOK type[t2,check]
+        	        	    // ../../../../src/parser/cvc/Cvc.g:1175:7: ARROW_TOK type[t2,check]
         	        	    {
-        	        	         MATCHT(ARROW_TOK, &FOLLOW_ARROW_TOK_in_type3673);
+        	        	         MATCHT(ARROW_TOK, &FOLLOW_ARROW_TOK_in_type3693);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruletypeEx;
@@ -9469,7 +9484,7 @@ type(pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
         	        	        }
 
 
-        	        	        FOLLOWPUSH(FOLLOW_type_in_type3675);
+        	        	        FOLLOWPUSH(FOLLOW_type_in_type3695);
         	        	        type(ctx, t2, check);
 
         	        	        FOLLOWPOP();
@@ -9511,9 +9526,9 @@ type(pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1183:5: LET_TOK typeLetDecl[check] ( COMMA typeLetDecl[check] )* IN_TOK type[t,check]
+        	    // ../../../../src/parser/cvc/Cvc.g:1188:5: LET_TOK typeLetDecl[check] ( COMMA typeLetDecl[check] )* IN_TOK type[t,check]
         	    {
-        	         MATCHT(LET_TOK, &FOLLOW_LET_TOK_in_type3700);
+        	         MATCHT(LET_TOK, &FOLLOW_LET_TOK_in_type3720);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletypeEx;
@@ -9530,7 +9545,7 @@ type(pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_typeLetDecl_in_type3708);
+        	        FOLLOWPUSH(FOLLOW_typeLetDecl_in_type3728);
         	        typeLetDecl(ctx, check);
 
         	        FOLLOWPOP();
@@ -9544,7 +9559,7 @@ type(pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:1184:24: ( COMMA typeLetDecl[check] )*
+        	        // ../../../../src/parser/cvc/Cvc.g:1189:24: ( COMMA typeLetDecl[check] )*
 
         	        for (;;)
         	        {
@@ -9562,9 +9577,9 @@ type(pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
         	            switch (alt42)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1184:26: COMMA typeLetDecl[check]
+        	        	    // ../../../../src/parser/cvc/Cvc.g:1189:26: COMMA typeLetDecl[check]
         	        	    {
-        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_type3713);
+        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_type3733);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruletypeEx;
@@ -9575,7 +9590,7 @@ type(pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
         	        	        }
 
 
-        	        	        FOLLOWPUSH(FOLLOW_typeLetDecl_in_type3715);
+        	        	        FOLLOWPUSH(FOLLOW_typeLetDecl_in_type3735);
         	        	        typeLetDecl(ctx, check);
 
         	        	        FOLLOWPOP();
@@ -9600,7 +9615,7 @@ type(pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
         	        loop42: ; /* Jump out to here if this rule does not match */
 
 
-        	         MATCHT(IN_TOK, &FOLLOW_IN_TOK_in_type3721);
+        	         MATCHT(IN_TOK, &FOLLOW_IN_TOK_in_type3741);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletypeEx;
@@ -9611,7 +9626,7 @@ type(pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_type_in_type3723);
+        	        FOLLOWPUSH(FOLLOW_type_in_type3743);
         	        type(ctx, t, check);
 
         	        FOLLOWPOP();
@@ -9654,7 +9669,7 @@ type(pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
 
 /**
  * $ANTLR start restrictedType
- * ../../../../../../src/parser/cvc/Cvc.g:1198:1: restrictedType[CVC4::Type& t,\n CVC4::parser::DeclarationCheck check] : restrictedTypePossiblyFunctionLHS[t,check,lhs] ;
+ * ../../../../src/parser/cvc/Cvc.g:1203:1: restrictedType[CVC4::Type& t,\n CVC4::parser::DeclarationCheck check] : restrictedTypePossiblyFunctionLHS[t,check,lhs] ;
  */
 static void
 restrictedType(pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
@@ -9666,10 +9681,10 @@ restrictedType(pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck che
       bool lhs;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1203:3: ( restrictedTypePossiblyFunctionLHS[t,check,lhs] )
-        // ../../../../../../src/parser/cvc/Cvc.g:1203:5: restrictedTypePossiblyFunctionLHS[t,check,lhs]
+        // ../../../../src/parser/cvc/Cvc.g:1208:3: ( restrictedTypePossiblyFunctionLHS[t,check,lhs] )
+        // ../../../../src/parser/cvc/Cvc.g:1208:5: restrictedTypePossiblyFunctionLHS[t,check,lhs]
         {
-            FOLLOWPUSH(FOLLOW_restrictedTypePossiblyFunctionLHS_in_restrictedType3759);
+            FOLLOWPUSH(FOLLOW_restrictedTypePossiblyFunctionLHS_in_restrictedType3779);
             restrictedTypePossiblyFunctionLHS(ctx, t, check, lhs);
 
             FOLLOWPOP();
@@ -9709,7 +9724,7 @@ restrictedType(pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck che
 
 /**
  * $ANTLR start restrictedTypePossiblyFunctionLHS
- * ../../../../../../src/parser/cvc/Cvc.g:1211:1: restrictedTypePossiblyFunctionLHS[CVC4::Type& t,\n CVC4::parser::DeclarationCheck check,\n bool& lhs] : ( identifier[id,check,SYM_SORT] ( parameterization[check,types] )? | ARRAY_TOK restrictedType[t,check] OF_TOK restrictedType[t2,check] | SET_TOK OF_TOK restrictedType[t,check] | SUBTYPE_TOK LPAREN formula[f] ( COMMA formula[f2] )? RPAREN | LBRACKET k1= bound DOTDOT k2= bound RBRACKET | LBRACKET ( type[t,check] ( COMMA type[t,check] )* ) [...]
+ * ../../../../src/parser/cvc/Cvc.g:1216:1: restrictedTypePossiblyFunctionLHS[CVC4::Type& t,\n CVC4::parser::DeclarationCheck check,\n bool& lhs] : ( identifier[id,check,SYM_SORT] ( parameterization[check,types] )? | ARRAY_TOK restrictedType[t,check] OF_TOK restrictedType[t2,check] | SET_TOK OF_TOK restrictedType[t,check] | SUBTYPE_TOK LPAREN formula[f] ( COMMA formula[f2] )? RPAREN | LBRACKET k1= bound DOTDOT k2= bound RBRACKET | LBRACKET ( type[t,check] ( COMMA type[t,check] )* )? RBRA [...]
  */
 static void
 restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check, bool& lhs)
@@ -9741,7 +9756,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
 
     {
         {
-            //  ../../../../../../src/parser/cvc/Cvc.g:1225:3: ( identifier[id,check,SYM_SORT] ( parameterization[check,types] )? | ARRAY_TOK restrictedType[t,check] OF_TOK restrictedType[t2,check] | SET_TOK OF_TOK restrictedType[t,check] | SUBTYPE_TOK LPAREN formula[f] ( COMMA formula[f2] )? RPAREN | LBRACKET k1= bound DOTDOT k2= bound RBRACKET | LBRACKET ( type[t,check] ( COMMA type[t,check] )* )? RBRACKET | SQHASH ( identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] ( COMMA identi [...]
+            //  ../../../../src/parser/cvc/Cvc.g:1230:3: ( identifier[id,check,SYM_SORT] ( parameterization[check,types] )? | ARRAY_TOK restrictedType[t,check] OF_TOK restrictedType[t2,check] | SET_TOK OF_TOK restrictedType[t,check] | SUBTYPE_TOK LPAREN formula[f] ( COMMA formula[f2] )? RPAREN | LBRACKET k1= bound DOTDOT k2= bound RBRACKET | LBRACKET ( type[t,check] ( COMMA type[t,check] )* )? RBRACKET | SQHASH ( identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] ( COMMA identifier[i [...]
 
             ANTLR3_UINT32 alt51;
 
@@ -9876,9 +9891,9 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
             switch (alt51)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1225:5: identifier[id,check,SYM_SORT] ( parameterization[check,types] )?
+        	    // ../../../../src/parser/cvc/Cvc.g:1230:5: identifier[id,check,SYM_SORT] ( parameterization[check,types] )?
         	    {
-        	        FOLLOWPUSH(FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS3793);
+        	        FOLLOWPUSH(FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS3813);
         	        identifier(ctx, id, check, SYM_SORT);
 
         	        FOLLOWPOP();
@@ -9892,7 +9907,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:1226:5: ( parameterization[check,types] )?
+        	        // ../../../../src/parser/cvc/Cvc.g:1231:5: ( parameterization[check,types] )?
         	        {
         	            int alt44=2;
         	            switch ( LA(1) )
@@ -9940,9 +9955,9 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	            switch (alt44)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1226:5: parameterization[check,types]
+        	        	    // ../../../../src/parser/cvc/Cvc.g:1231:5: parameterization[check,types]
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_parameterization_in_restrictedTypePossiblyFunctionLHS3800);
+        	        	        FOLLOWPUSH(FOLLOW_parameterization_in_restrictedTypePossiblyFunctionLHS3820);
         	        	        parameterization(ctx, check, types);
 
         	        	        FOLLOWPOP();
@@ -9999,9 +10014,9 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1258:5: ARRAY_TOK restrictedType[t,check] OF_TOK restrictedType[t2,check]
+        	    // ../../../../src/parser/cvc/Cvc.g:1263:5: ARRAY_TOK restrictedType[t,check] OF_TOK restrictedType[t2,check]
         	    {
-        	         MATCHT(ARRAY_TOK, &FOLLOW_ARRAY_TOK_in_restrictedTypePossiblyFunctionLHS3821);
+        	         MATCHT(ARRAY_TOK, &FOLLOW_ARRAY_TOK_in_restrictedTypePossiblyFunctionLHS3841);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10012,7 +10027,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3823);
+        	        FOLLOWPUSH(FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3843);
         	        restrictedType(ctx, t, check);
 
         	        FOLLOWPOP();
@@ -10026,7 +10041,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        }
 
 
-        	         MATCHT(OF_TOK, &FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3826);
+        	         MATCHT(OF_TOK, &FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3846);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10037,7 +10052,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3828);
+        	        FOLLOWPUSH(FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3848);
         	        restrictedType(ctx, t2, check);
 
         	        FOLLOWPOP();
@@ -10060,9 +10075,9 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1260:5: SET_TOK OF_TOK restrictedType[t,check]
+        	    // ../../../../src/parser/cvc/Cvc.g:1265:5: SET_TOK OF_TOK restrictedType[t,check]
         	    {
-        	         MATCHT(SET_TOK, &FOLLOW_SET_TOK_in_restrictedTypePossiblyFunctionLHS3841);
+        	         MATCHT(SET_TOK, &FOLLOW_SET_TOK_in_restrictedTypePossiblyFunctionLHS3861);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10073,7 +10088,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        }
 
 
-        	         MATCHT(OF_TOK, &FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3843);
+        	         MATCHT(OF_TOK, &FOLLOW_OF_TOK_in_restrictedTypePossiblyFunctionLHS3863);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10084,7 +10099,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3845);
+        	        FOLLOWPUSH(FOLLOW_restrictedType_in_restrictedTypePossiblyFunctionLHS3865);
         	        restrictedType(ctx, t, check);
 
         	        FOLLOWPOP();
@@ -10107,9 +10122,9 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1264:5: SUBTYPE_TOK LPAREN formula[f] ( COMMA formula[f2] )? RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1269:5: SUBTYPE_TOK LPAREN formula[f] ( COMMA formula[f2] )? RPAREN
         	    {
-        	         MATCHT(SUBTYPE_TOK, &FOLLOW_SUBTYPE_TOK_in_restrictedTypePossiblyFunctionLHS3868);
+        	         MATCHT(SUBTYPE_TOK, &FOLLOW_SUBTYPE_TOK_in_restrictedTypePossiblyFunctionLHS3888);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10120,7 +10135,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS3870);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS3890);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10138,7 +10153,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3888);
+        	        FOLLOWPUSH(FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3908);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -10152,7 +10167,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:1271:16: ( COMMA formula[f2] )?
+        	        // ../../../../src/parser/cvc/Cvc.g:1276:16: ( COMMA formula[f2] )?
         	        {
         	            int alt45=2;
         	            switch ( LA(1) )
@@ -10167,9 +10182,9 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	            switch (alt45)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1271:18: COMMA formula[f2]
+        	        	    // ../../../../src/parser/cvc/Cvc.g:1276:18: COMMA formula[f2]
         	        	    {
-        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3893);
+        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3913);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10180,7 +10195,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        	        }
 
 
-        	        	        FOLLOWPUSH(FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3895);
+        	        	        FOLLOWPUSH(FOLLOW_formula_in_restrictedTypePossiblyFunctionLHS3915);
         	        	        formula(ctx, f2);
 
         	        	        FOLLOWPOP();
@@ -10200,7 +10215,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	            }
         	        }
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS3901);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS3921);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10228,9 +10243,9 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1283:5: LBRACKET k1= bound DOTDOT k2= bound RBRACKET
+        	    // ../../../../src/parser/cvc/Cvc.g:1288:5: LBRACKET k1= bound DOTDOT k2= bound RBRACKET
         	    {
-        	         MATCHT(LBRACKET, &FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3920);
+        	         MATCHT(LBRACKET, &FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3940);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10241,7 +10256,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3924);
+        	        FOLLOWPUSH(FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3944);
         	        k1=bound(ctx);
 
         	        FOLLOWPOP();
@@ -10255,7 +10270,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        }
 
 
-        	         MATCHT(DOTDOT, &FOLLOW_DOTDOT_in_restrictedTypePossiblyFunctionLHS3926);
+        	         MATCHT(DOTDOT, &FOLLOW_DOTDOT_in_restrictedTypePossiblyFunctionLHS3946);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10266,7 +10281,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3930);
+        	        FOLLOWPUSH(FOLLOW_bound_in_restrictedTypePossiblyFunctionLHS3950);
         	        k2=bound(ctx);
 
         	        FOLLOWPOP();
@@ -10280,7 +10295,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        }
 
 
-        	         MATCHT(RBRACKET, &FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3932);
+        	         MATCHT(RBRACKET, &FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3952);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10308,9 +10323,9 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1295:5: LBRACKET ( type[t,check] ( COMMA type[t,check] )* )? RBRACKET
+        	    // ../../../../src/parser/cvc/Cvc.g:1300:5: LBRACKET ( type[t,check] ( COMMA type[t,check] )* )? RBRACKET
         	    {
-        	         MATCHT(LBRACKET, &FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3951);
+        	         MATCHT(LBRACKET, &FOLLOW_LBRACKET_in_restrictedTypePossiblyFunctionLHS3971);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10321,7 +10336,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:1295:14: ( type[t,check] ( COMMA type[t,check] )* )?
+        	        // ../../../../src/parser/cvc/Cvc.g:1300:14: ( type[t,check] ( COMMA type[t,check] )* )?
         	        {
         	            int alt47=2;
         	            switch ( LA(1) )
@@ -10348,9 +10363,9 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	            switch (alt47)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1295:16: type[t,check] ( COMMA type[t,check] )*
+        	        	    // ../../../../src/parser/cvc/Cvc.g:1300:16: type[t,check] ( COMMA type[t,check] )*
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3955);
+        	        	        FOLLOWPUSH(FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3975);
         	        	        type(ctx, t, check);
 
         	        	        FOLLOWPOP();
@@ -10370,7 +10385,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        	        }
 
 
-        	        	        // ../../../../../../src/parser/cvc/Cvc.g:1296:5: ( COMMA type[t,check] )*
+        	        	        // ../../../../src/parser/cvc/Cvc.g:1301:5: ( COMMA type[t,check] )*
 
         	        	        for (;;)
         	        	        {
@@ -10388,9 +10403,9 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        	            switch (alt46)
         	        	            {
         	        	        	case 1:
-        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1296:7: COMMA type[t,check]
+        	        	        	    // ../../../../src/parser/cvc/Cvc.g:1301:7: COMMA type[t,check]
         	        	        	    {
-        	        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3966);
+        	        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS3986);
         	        	        	        if  (HASEXCEPTION())
         	        	        	        {
         	        	        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10401,7 +10416,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        	        	        }
 
 
-        	        	        	        FOLLOWPUSH(FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3968);
+        	        	        	        FOLLOWPUSH(FOLLOW_type_in_restrictedTypePossiblyFunctionLHS3988);
         	        	        	        type(ctx, t, check);
 
         	        	        	        FOLLOWPOP();
@@ -10438,7 +10453,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	            }
         	        }
 
-        	         MATCHT(RBRACKET, &FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3979);
+        	         MATCHT(RBRACKET, &FOLLOW_RBRACKET_in_restrictedTypePossiblyFunctionLHS3999);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10465,9 +10480,9 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	    }
         	    break;
         	case 7:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1307:5: SQHASH ( identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] ( COMMA identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] )* )? HASHSQ
+        	    // ../../../../src/parser/cvc/Cvc.g:1312:5: SQHASH ( identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] ( COMMA identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] )* )? HASHSQ
         	    {
-        	         MATCHT(SQHASH, &FOLLOW_SQHASH_in_restrictedTypePossiblyFunctionLHS3998);
+        	         MATCHT(SQHASH, &FOLLOW_SQHASH_in_restrictedTypePossiblyFunctionLHS4018);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10478,7 +10493,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:1307:12: ( identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] ( COMMA identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] )* )?
+        	        // ../../../../src/parser/cvc/Cvc.g:1312:12: ( identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] ( COMMA identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] )* )?
         	        {
         	            int alt49=2;
         	            switch ( LA(1) )
@@ -10493,9 +10508,9 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	            switch (alt49)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1307:14: identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] ( COMMA identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] )*
+        	        	    // ../../../../src/parser/cvc/Cvc.g:1312:14: identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] ( COMMA identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] )*
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4002);
+        	        	        FOLLOWPUSH(FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4022);
         	        	        identifier(ctx, id, CHECK_NONE, SYM_SORT);
 
         	        	        FOLLOWPOP();
@@ -10509,7 +10524,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        	        }
 
 
-        	        	         MATCHT(COLON, &FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4005);
+        	        	         MATCHT(COLON, &FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4025);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10520,7 +10535,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        	        }
 
 
-        	        	        FOLLOWPUSH(FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4007);
+        	        	        FOLLOWPUSH(FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4027);
         	        	        type(ctx, t, check);
 
         	        	        FOLLOWPOP();
@@ -10540,7 +10555,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        	        }
 
 
-        	        	        // ../../../../../../src/parser/cvc/Cvc.g:1308:5: ( COMMA identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] )*
+        	        	        // ../../../../src/parser/cvc/Cvc.g:1313:5: ( COMMA identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check] )*
 
         	        	        for (;;)
         	        	        {
@@ -10558,9 +10573,9 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        	            switch (alt48)
         	        	            {
         	        	        	case 1:
-        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1308:7: COMMA identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check]
+        	        	        	    // ../../../../src/parser/cvc/Cvc.g:1313:7: COMMA identifier[id,CHECK_NONE,SYM_SORT] COLON type[t,check]
         	        	        	    {
-        	        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4018);
+        	        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4038);
         	        	        	        if  (HASEXCEPTION())
         	        	        	        {
         	        	        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10571,7 +10586,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        	        	        }
 
 
-        	        	        	        FOLLOWPUSH(FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4020);
+        	        	        	        FOLLOWPUSH(FOLLOW_identifier_in_restrictedTypePossiblyFunctionLHS4040);
         	        	        	        identifier(ctx, id, CHECK_NONE, SYM_SORT);
 
         	        	        	        FOLLOWPOP();
@@ -10585,7 +10600,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        	        	        }
 
 
-        	        	        	         MATCHT(COLON, &FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4023);
+        	        	        	         MATCHT(COLON, &FOLLOW_COLON_in_restrictedTypePossiblyFunctionLHS4043);
         	        	        	        if  (HASEXCEPTION())
         	        	        	        {
         	        	        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10596,7 +10611,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        	        	        }
 
 
-        	        	        	        FOLLOWPUSH(FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4025);
+        	        	        	        FOLLOWPUSH(FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4045);
         	        	        	        type(ctx, t, check);
 
         	        	        	        FOLLOWPOP();
@@ -10633,7 +10648,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	            }
         	        }
 
-        	         MATCHT(HASHSQ, &FOLLOW_HASHSQ_in_restrictedTypePossiblyFunctionLHS4036);
+        	         MATCHT(HASHSQ, &FOLLOW_HASHSQ_in_restrictedTypePossiblyFunctionLHS4056);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10653,9 +10668,9 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	    }
         	    break;
         	case 8:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1312:5: BITVECTOR_TOK LPAREN k= numeral RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1317:5: BITVECTOR_TOK LPAREN k= numeral RPAREN
         	    {
-        	         MATCHT(BITVECTOR_TOK, &FOLLOW_BITVECTOR_TOK_in_restrictedTypePossiblyFunctionLHS4055);
+        	         MATCHT(BITVECTOR_TOK, &FOLLOW_BITVECTOR_TOK_in_restrictedTypePossiblyFunctionLHS4075);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10666,7 +10681,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4057);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4077);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10677,7 +10692,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_numeral_in_restrictedTypePossiblyFunctionLHS4061);
+        	        FOLLOWPUSH(FOLLOW_numeral_in_restrictedTypePossiblyFunctionLHS4081);
         	        k=numeral(ctx);
 
         	        FOLLOWPOP();
@@ -10691,7 +10706,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4063);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4083);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10715,9 +10730,9 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	    }
         	    break;
         	case 9:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1320:5: STRING_TOK
+        	    // ../../../../src/parser/cvc/Cvc.g:1325:5: STRING_TOK
         	    {
-        	         MATCHT(STRING_TOK, &FOLLOW_STRING_TOK_in_restrictedTypePossiblyFunctionLHS4082);
+        	         MATCHT(STRING_TOK, &FOLLOW_STRING_TOK_in_restrictedTypePossiblyFunctionLHS4102);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10737,9 +10752,9 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	    }
         	    break;
         	case 10:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1323:5: BOOLEAN_TOK
+        	    // ../../../../src/parser/cvc/Cvc.g:1328:5: BOOLEAN_TOK
         	    {
-        	         MATCHT(BOOLEAN_TOK, &FOLLOW_BOOLEAN_TOK_in_restrictedTypePossiblyFunctionLHS4097);
+        	         MATCHT(BOOLEAN_TOK, &FOLLOW_BOOLEAN_TOK_in_restrictedTypePossiblyFunctionLHS4117);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10759,9 +10774,9 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	    }
         	    break;
         	case 11:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1324:5: REAL_TOK
+        	    // ../../../../src/parser/cvc/Cvc.g:1329:5: REAL_TOK
         	    {
-        	         MATCHT(REAL_TOK, &FOLLOW_REAL_TOK_in_restrictedTypePossiblyFunctionLHS4105);
+        	         MATCHT(REAL_TOK, &FOLLOW_REAL_TOK_in_restrictedTypePossiblyFunctionLHS4125);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10781,9 +10796,9 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	    }
         	    break;
         	case 12:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1325:5: INT_TOK
+        	    // ../../../../src/parser/cvc/Cvc.g:1330:5: INT_TOK
         	    {
-        	         MATCHT(INT_TOK, &FOLLOW_INT_TOK_in_restrictedTypePossiblyFunctionLHS4113);
+        	         MATCHT(INT_TOK, &FOLLOW_INT_TOK_in_restrictedTypePossiblyFunctionLHS4133);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10803,9 +10818,9 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	    }
         	    break;
         	case 13:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1330:5: LPAREN type[t,check] ( COMMA type[t,check] )* RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1335:5: LPAREN type[t,check] ( COMMA type[t,check] )* RPAREN
         	    {
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4128);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_restrictedTypePossiblyFunctionLHS4148);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10816,7 +10831,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4130);
+        	        FOLLOWPUSH(FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4150);
         	        type(ctx, t, check);
 
         	        FOLLOWPOP();
@@ -10836,7 +10851,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:1331:5: ( COMMA type[t,check] )*
+        	        // ../../../../src/parser/cvc/Cvc.g:1336:5: ( COMMA type[t,check] )*
 
         	        for (;;)
         	        {
@@ -10854,9 +10869,9 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	            switch (alt50)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1331:7: COMMA type[t,check]
+        	        	    // ../../../../src/parser/cvc/Cvc.g:1336:7: COMMA type[t,check]
         	        	    {
-        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4141);
+        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_restrictedTypePossiblyFunctionLHS4161);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10867,7 +10882,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        	        }
 
 
-        	        	        FOLLOWPUSH(FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4143);
+        	        	        FOLLOWPUSH(FOLLOW_type_in_restrictedTypePossiblyFunctionLHS4163);
         	        	        type(ctx, t, check);
 
         	        	        FOLLOWPOP();
@@ -10898,7 +10913,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
         	        loop50: ; /* Jump out to here if this rule does not match */
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4151);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_restrictedTypePossiblyFunctionLHS4171);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerestrictedTypePossiblyFunctionLHSEx;
@@ -10940,7 +10955,7 @@ restrictedTypePossiblyFunctionLHS(pCvcParser ctx, CVC4::Type& t, CVC4::parser::D
 
 /**
  * $ANTLR start parameterization
- * ../../../../../../src/parser/cvc/Cvc.g:1337:1: parameterization[CVC4::parser::DeclarationCheck check,\n std::vector<CVC4::Type>& params] : LBRACKET restrictedType[t,check] ( COMMA restrictedType[t,check] )* RBRACKET ;
+ * ../../../../src/parser/cvc/Cvc.g:1342:1: parameterization[CVC4::parser::DeclarationCheck check,\n std::vector<CVC4::Type>& params] : LBRACKET restrictedType[t,check] ( COMMA restrictedType[t,check] )* RBRACKET ;
  */
 static void
 parameterization(pCvcParser ctx, CVC4::parser::DeclarationCheck check, std::vector<CVC4::Type>& params)
@@ -10952,10 +10967,10 @@ parameterization(pCvcParser ctx, CVC4::parser::DeclarationCheck check, std::vect
       Type t;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1342:3: ( LBRACKET restrictedType[t,check] ( COMMA restrictedType[t,check] )* RBRACKET )
-        // ../../../../../../src/parser/cvc/Cvc.g:1342:5: LBRACKET restrictedType[t,check] ( COMMA restrictedType[t,check] )* RBRACKET
+        // ../../../../src/parser/cvc/Cvc.g:1347:3: ( LBRACKET restrictedType[t,check] ( COMMA restrictedType[t,check] )* RBRACKET )
+        // ../../../../src/parser/cvc/Cvc.g:1347:5: LBRACKET restrictedType[t,check] ( COMMA restrictedType[t,check] )* RBRACKET
         {
-             MATCHT(LBRACKET, &FOLLOW_LBRACKET_in_parameterization4176);
+             MATCHT(LBRACKET, &FOLLOW_LBRACKET_in_parameterization4196);
             if  (HASEXCEPTION())
             {
                 goto ruleparameterizationEx;
@@ -10966,7 +10981,7 @@ parameterization(pCvcParser ctx, CVC4::parser::DeclarationCheck check, std::vect
             }
 
 
-            FOLLOWPUSH(FOLLOW_restrictedType_in_parameterization4178);
+            FOLLOWPUSH(FOLLOW_restrictedType_in_parameterization4198);
             restrictedType(ctx, t, check);
 
             FOLLOWPOP();
@@ -10986,7 +11001,7 @@ parameterization(pCvcParser ctx, CVC4::parser::DeclarationCheck check, std::vect
             }
 
 
-            // ../../../../../../src/parser/cvc/Cvc.g:1343:5: ( COMMA restrictedType[t,check] )*
+            // ../../../../src/parser/cvc/Cvc.g:1348:5: ( COMMA restrictedType[t,check] )*
 
             for (;;)
             {
@@ -11004,9 +11019,9 @@ parameterization(pCvcParser ctx, CVC4::parser::DeclarationCheck check, std::vect
                 switch (alt52)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1343:7: COMMA restrictedType[t,check]
+            	    // ../../../../src/parser/cvc/Cvc.g:1348:7: COMMA restrictedType[t,check]
             	    {
-            	         MATCHT(COMMA, &FOLLOW_COMMA_in_parameterization4189);
+            	         MATCHT(COMMA, &FOLLOW_COMMA_in_parameterization4209);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleparameterizationEx;
@@ -11017,7 +11032,7 @@ parameterization(pCvcParser ctx, CVC4::parser::DeclarationCheck check, std::vect
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_restrictedType_in_parameterization4191);
+            	        FOLLOWPUSH(FOLLOW_restrictedType_in_parameterization4211);
             	        restrictedType(ctx, t, check);
 
             	        FOLLOWPOP();
@@ -11048,7 +11063,7 @@ parameterization(pCvcParser ctx, CVC4::parser::DeclarationCheck check, std::vect
             loop52: ; /* Jump out to here if this rule does not match */
 
 
-             MATCHT(RBRACKET, &FOLLOW_RBRACKET_in_parameterization4199);
+             MATCHT(RBRACKET, &FOLLOW_RBRACKET_in_parameterization4219);
             if  (HASEXCEPTION())
             {
                 goto ruleparameterizationEx;
@@ -11079,7 +11094,7 @@ parameterization(pCvcParser ctx, CVC4::parser::DeclarationCheck check, std::vect
 
 /**
  * $ANTLR start bound
- * ../../../../../../src/parser/cvc/Cvc.g:1346:1: bound returns [CVC4::parser::cvc::mySubrangeBound bound] : ( UNDERSCORE |k= integer );
+ * ../../../../src/parser/cvc/Cvc.g:1351:1: bound returns [CVC4::parser::cvc::mySubrangeBound bound] : ( UNDERSCORE |k= integer );
  */
 static CVC4::parser::cvc::mySubrangeBound
 bound(pCvcParser ctx)
@@ -11096,7 +11111,7 @@ bound(pCvcParser ctx)
 
     {
         {
-            //  ../../../../../../src/parser/cvc/Cvc.g:1347:3: ( UNDERSCORE |k= integer )
+            //  ../../../../src/parser/cvc/Cvc.g:1352:3: ( UNDERSCORE |k= integer )
 
             ANTLR3_UINT32 alt53;
 
@@ -11137,9 +11152,9 @@ bound(pCvcParser ctx)
             switch (alt53)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1347:5: UNDERSCORE
+        	    // ../../../../src/parser/cvc/Cvc.g:1352:5: UNDERSCORE
         	    {
-        	         MATCHT(UNDERSCORE, &FOLLOW_UNDERSCORE_in_bound4216);
+        	         MATCHT(UNDERSCORE, &FOLLOW_UNDERSCORE_in_bound4236);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleboundEx;
@@ -11160,9 +11175,9 @@ bound(pCvcParser ctx)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1348:5: k= integer
+        	    // ../../../../src/parser/cvc/Cvc.g:1353:5: k= integer
         	    {
-        	        FOLLOWPUSH(FOLLOW_integer_in_bound4226);
+        	        FOLLOWPUSH(FOLLOW_integer_in_bound4246);
         	        k=integer(ctx);
 
         	        FOLLOWPOP();
@@ -11206,7 +11221,7 @@ bound(pCvcParser ctx)
 
 /**
  * $ANTLR start typeLetDecl
- * ../../../../../../src/parser/cvc/Cvc.g:1351:1: typeLetDecl[CVC4::parser::DeclarationCheck check] : identifier[id,CHECK_NONE,SYM_SORT] ( COLON TYPE_TOK )? EQUAL_TOK restrictedType[t,check] ;
+ * ../../../../src/parser/cvc/Cvc.g:1356:1: typeLetDecl[CVC4::parser::DeclarationCheck check] : identifier[id,CHECK_NONE,SYM_SORT] ( COLON TYPE_TOK )? EQUAL_TOK restrictedType[t,check] ;
  */
 static void
 typeLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
@@ -11219,10 +11234,10 @@ typeLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
       std::string id;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1356:3: ( identifier[id,CHECK_NONE,SYM_SORT] ( COLON TYPE_TOK )? EQUAL_TOK restrictedType[t,check] )
-        // ../../../../../../src/parser/cvc/Cvc.g:1356:5: identifier[id,CHECK_NONE,SYM_SORT] ( COLON TYPE_TOK )? EQUAL_TOK restrictedType[t,check]
+        // ../../../../src/parser/cvc/Cvc.g:1361:3: ( identifier[id,CHECK_NONE,SYM_SORT] ( COLON TYPE_TOK )? EQUAL_TOK restrictedType[t,check] )
+        // ../../../../src/parser/cvc/Cvc.g:1361:5: identifier[id,CHECK_NONE,SYM_SORT] ( COLON TYPE_TOK )? EQUAL_TOK restrictedType[t,check]
         {
-            FOLLOWPUSH(FOLLOW_identifier_in_typeLetDecl4245);
+            FOLLOWPUSH(FOLLOW_identifier_in_typeLetDecl4265);
             identifier(ctx, id, CHECK_NONE, SYM_SORT);
 
             FOLLOWPOP();
@@ -11236,7 +11251,7 @@ typeLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
             }
 
 
-            // ../../../../../../src/parser/cvc/Cvc.g:1356:40: ( COLON TYPE_TOK )?
+            // ../../../../src/parser/cvc/Cvc.g:1361:40: ( COLON TYPE_TOK )?
             {
                 int alt54=2;
                 switch ( LA(1) )
@@ -11251,9 +11266,9 @@ typeLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
                 switch (alt54)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1356:41: COLON TYPE_TOK
+            	    // ../../../../src/parser/cvc/Cvc.g:1361:41: COLON TYPE_TOK
             	    {
-            	         MATCHT(COLON, &FOLLOW_COLON_in_typeLetDecl4249);
+            	         MATCHT(COLON, &FOLLOW_COLON_in_typeLetDecl4269);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruletypeLetDeclEx;
@@ -11264,7 +11279,7 @@ typeLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
             	        }
 
 
-            	         MATCHT(TYPE_TOK, &FOLLOW_TYPE_TOK_in_typeLetDecl4251);
+            	         MATCHT(TYPE_TOK, &FOLLOW_TYPE_TOK_in_typeLetDecl4271);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruletypeLetDeclEx;
@@ -11281,7 +11296,7 @@ typeLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
                 }
             }
 
-             MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_typeLetDecl4255);
+             MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_typeLetDecl4275);
             if  (HASEXCEPTION())
             {
                 goto ruletypeLetDeclEx;
@@ -11292,7 +11307,7 @@ typeLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
             }
 
 
-            FOLLOWPUSH(FOLLOW_restrictedType_in_typeLetDecl4257);
+            FOLLOWPUSH(FOLLOW_restrictedType_in_typeLetDecl4277);
             restrictedType(ctx, t, check);
 
             FOLLOWPOP();
@@ -11332,7 +11347,7 @@ typeLetDecl(pCvcParser ctx, CVC4::parser::DeclarationCheck check)
 
 /**
  * $ANTLR start formula
- * ../../../../../../src/parser/cvc/Cvc.g:1367:1: formula[CVC4::Expr& f] : n= nots ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? ) ;
+ * ../../../../src/parser/cvc/Cvc.g:1372:1: formula[CVC4::Expr& f] : n= nots ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? ) ;
  */
 static void
 formula(pCvcParser ctx, CVC4::Expr& f)
@@ -11352,10 +11367,10 @@ formula(pCvcParser ctx, CVC4::Expr& f)
       unsigned op;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1375:3: (n= nots ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? ) )
-        // ../../../../../../src/parser/cvc/Cvc.g:1375:5: n= nots ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? )
+        // ../../../../src/parser/cvc/Cvc.g:1380:3: (n= nots ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? ) )
+        // ../../../../src/parser/cvc/Cvc.g:1380:5: n= nots ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? )
         {
-            FOLLOWPUSH(FOLLOW_nots_in_formula4287);
+            FOLLOWPUSH(FOLLOW_nots_in_formula4307);
             n=nots(ctx);
 
             FOLLOWPOP();
@@ -11369,7 +11384,7 @@ formula(pCvcParser ctx, CVC4::Expr& f)
             }
 
 
-            // ../../../../../../src/parser/cvc/Cvc.g:1376:5: ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? )
+            // ../../../../src/parser/cvc/Cvc.g:1381:5: ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? )
             {
                 int alt56=2;
                 switch ( LA(1) )
@@ -11423,13 +11438,13 @@ formula(pCvcParser ctx, CVC4::Expr& f)
                 case FLOOR_TOK:
                 case HEX_LITERAL:
                 case IDENTIFIER:
+                case IDEN_TOK:
                 case IF_TOK:
                 case INTEGER_LITERAL:
                 case IS_INTEGER_TOK:
                 case LBRACE:
                 case LPAREN:
                 case MINUS_TOK:
-                case NOT_TOK:
                 case PARENHASH:
                 case SETS_CARD_TOK:
                 case STRING_CONCAT_TOK:
@@ -11479,9 +11494,9 @@ formula(pCvcParser ctx, CVC4::Expr& f)
                 switch (alt56)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1376:7: prefixFormula[f]
+            	    // ../../../../src/parser/cvc/Cvc.g:1381:7: prefixFormula[f]
             	    {
-            	        FOLLOWPUSH(FOLLOW_prefixFormula_in_formula4295);
+            	        FOLLOWPUSH(FOLLOW_prefixFormula_in_formula4315);
             	        prefixFormula(ctx, f);
 
             	        FOLLOWPOP();
@@ -11504,9 +11519,9 @@ formula(pCvcParser ctx, CVC4::Expr& f)
             	    }
             	    break;
             	case 2:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1378:7: comparison[f] ( morecomparisons[expressions,operators] )?
+            	    // ../../../../src/parser/cvc/Cvc.g:1383:7: comparison[f] ( morecomparisons[expressions,operators] )?
             	    {
-            	        FOLLOWPUSH(FOLLOW_comparison_in_formula4312);
+            	        FOLLOWPUSH(FOLLOW_comparison_in_formula4332);
             	        comparison(ctx, f);
 
             	        FOLLOWPOP();
@@ -11528,7 +11543,7 @@ formula(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	        // ../../../../../../src/parser/cvc/Cvc.g:1382:7: ( morecomparisons[expressions,operators] )?
+            	        // ../../../../src/parser/cvc/Cvc.g:1387:7: ( morecomparisons[expressions,operators] )?
             	        {
             	            int alt55=2;
             	            switch ( LA(1) )
@@ -11536,6 +11551,7 @@ formula(pCvcParser ctx, CVC4::Expr& f)
             	                case AND_TOK:
             	                case IFF_TOK:
             	                case IMPLIES_TOK:
+            	                case JOIN_IMAGE_TOK:
             	                case JOIN_TOK:
             	                case OR_TOK:
             	                case PRODUCT_TOK:
@@ -11549,9 +11565,9 @@ formula(pCvcParser ctx, CVC4::Expr& f)
             	            switch (alt55)
             	            {
             	        	case 1:
-            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1382:7: morecomparisons[expressions,operators]
+            	        	    // ../../../../src/parser/cvc/Cvc.g:1387:7: morecomparisons[expressions,operators]
             	        	    {
-            	        	        FOLLOWPUSH(FOLLOW_morecomparisons_in_formula4329);
+            	        	        FOLLOWPUSH(FOLLOW_morecomparisons_in_formula4349);
             	        	        morecomparisons(ctx, expressions, operators);
 
             	        	        FOLLOWPOP();
@@ -11603,7 +11619,7 @@ formula(pCvcParser ctx, CVC4::Expr& f)
 
 /**
  * $ANTLR start morecomparisons
- * ../../../../../../src/parser/cvc/Cvc.g:1387:1: morecomparisons[std::vector<CVC4::Expr>& expressions,\n std::vector<unsigned>& operators] returns [size_t i = 0] : booleanBinop[op] n= nots ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? ) ;
+ * ../../../../src/parser/cvc/Cvc.g:1392:1: morecomparisons[std::vector<CVC4::Expr>& expressions,\n std::vector<unsigned>& operators] returns [size_t i = 0] : booleanBinop[op] n= nots ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? ) ;
  */
 static size_t
 morecomparisons(pCvcParser ctx, std::vector<CVC4::Expr>& expressions, std::vector<unsigned>& operators)
@@ -11627,10 +11643,10 @@ morecomparisons(pCvcParser ctx, std::vector<CVC4::Expr>& expressions, std::vecto
 
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1394:3: ( booleanBinop[op] n= nots ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? ) )
-        // ../../../../../../src/parser/cvc/Cvc.g:1394:5: booleanBinop[op] n= nots ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? )
+        // ../../../../src/parser/cvc/Cvc.g:1399:3: ( booleanBinop[op] n= nots ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? ) )
+        // ../../../../src/parser/cvc/Cvc.g:1399:5: booleanBinop[op] n= nots ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? )
         {
-            FOLLOWPUSH(FOLLOW_booleanBinop_in_morecomparisons4368);
+            FOLLOWPUSH(FOLLOW_booleanBinop_in_morecomparisons4388);
             booleanBinop(ctx, op);
 
             FOLLOWPOP();
@@ -11650,7 +11666,7 @@ morecomparisons(pCvcParser ctx, std::vector<CVC4::Expr>& expressions, std::vecto
             }
 
 
-            FOLLOWPUSH(FOLLOW_nots_in_morecomparisons4379);
+            FOLLOWPUSH(FOLLOW_nots_in_morecomparisons4399);
             n=nots(ctx);
 
             FOLLOWPOP();
@@ -11664,7 +11680,7 @@ morecomparisons(pCvcParser ctx, std::vector<CVC4::Expr>& expressions, std::vecto
             }
 
 
-            // ../../../../../../src/parser/cvc/Cvc.g:1396:5: ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? )
+            // ../../../../src/parser/cvc/Cvc.g:1401:5: ( prefixFormula[f] | comparison[f] ( morecomparisons[expressions,operators] )? )
             {
                 int alt58=2;
                 switch ( LA(1) )
@@ -11718,13 +11734,13 @@ morecomparisons(pCvcParser ctx, std::vector<CVC4::Expr>& expressions, std::vecto
                 case FLOOR_TOK:
                 case HEX_LITERAL:
                 case IDENTIFIER:
+                case IDEN_TOK:
                 case IF_TOK:
                 case INTEGER_LITERAL:
                 case IS_INTEGER_TOK:
                 case LBRACE:
                 case LPAREN:
                 case MINUS_TOK:
-                case NOT_TOK:
                 case PARENHASH:
                 case SETS_CARD_TOK:
                 case STRING_CONCAT_TOK:
@@ -11774,9 +11790,9 @@ morecomparisons(pCvcParser ctx, std::vector<CVC4::Expr>& expressions, std::vecto
                 switch (alt58)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1396:7: prefixFormula[f]
+            	    // ../../../../src/parser/cvc/Cvc.g:1401:7: prefixFormula[f]
             	    {
-            	        FOLLOWPUSH(FOLLOW_prefixFormula_in_morecomparisons4387);
+            	        FOLLOWPUSH(FOLLOW_prefixFormula_in_morecomparisons4407);
             	        prefixFormula(ctx, f);
 
             	        FOLLOWPOP();
@@ -11799,9 +11815,9 @@ morecomparisons(pCvcParser ctx, std::vector<CVC4::Expr>& expressions, std::vecto
             	    }
             	    break;
             	case 2:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1398:7: comparison[f] ( morecomparisons[expressions,operators] )?
+            	    // ../../../../src/parser/cvc/Cvc.g:1403:7: comparison[f] ( morecomparisons[expressions,operators] )?
             	    {
-            	        FOLLOWPUSH(FOLLOW_comparison_in_morecomparisons4404);
+            	        FOLLOWPUSH(FOLLOW_comparison_in_morecomparisons4424);
             	        comparison(ctx, f);
 
             	        FOLLOWPOP();
@@ -11823,7 +11839,7 @@ morecomparisons(pCvcParser ctx, std::vector<CVC4::Expr>& expressions, std::vecto
             	        }
 
 
-            	        // ../../../../../../src/parser/cvc/Cvc.g:1402:7: ( morecomparisons[expressions,operators] )?
+            	        // ../../../../src/parser/cvc/Cvc.g:1407:7: ( morecomparisons[expressions,operators] )?
             	        {
             	            int alt57=2;
             	            switch ( LA(1) )
@@ -11831,6 +11847,7 @@ morecomparisons(pCvcParser ctx, std::vector<CVC4::Expr>& expressions, std::vecto
             	                case AND_TOK:
             	                case IFF_TOK:
             	                case IMPLIES_TOK:
+            	                case JOIN_IMAGE_TOK:
             	                case JOIN_TOK:
             	                case OR_TOK:
             	                case PRODUCT_TOK:
@@ -11844,9 +11861,9 @@ morecomparisons(pCvcParser ctx, std::vector<CVC4::Expr>& expressions, std::vecto
             	            switch (alt57)
             	            {
             	        	case 1:
-            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1402:7: morecomparisons[expressions,operators]
+            	        	    // ../../../../src/parser/cvc/Cvc.g:1407:7: morecomparisons[expressions,operators]
             	        	    {
-            	        	        FOLLOWPUSH(FOLLOW_morecomparisons_in_morecomparisons4421);
+            	        	        FOLLOWPUSH(FOLLOW_morecomparisons_in_morecomparisons4441);
             	        	        morecomparisons(ctx, expressions, operators);
 
             	        	        FOLLOWPOP();
@@ -11892,7 +11909,7 @@ morecomparisons(pCvcParser ctx, std::vector<CVC4::Expr>& expressions, std::vecto
 
 /**
  * $ANTLR start nots
- * ../../../../../../src/parser/cvc/Cvc.g:1407:1: nots returns [size_t n = 0] : ( NOT_TOK )* ;
+ * ../../../../src/parser/cvc/Cvc.g:1412:1: nots returns [size_t n = 0] : ( NOT_TOK )* ;
  */
 static size_t
 nots(pCvcParser ctx)
@@ -11906,10 +11923,10 @@ nots(pCvcParser ctx)
 
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1408:3: ( ( NOT_TOK )* )
-        // ../../../../../../src/parser/cvc/Cvc.g:1408:5: ( NOT_TOK )*
+        // ../../../../src/parser/cvc/Cvc.g:1413:3: ( ( NOT_TOK )* )
+        // ../../../../src/parser/cvc/Cvc.g:1413:5: ( NOT_TOK )*
         {
-            // ../../../../../../src/parser/cvc/Cvc.g:1408:5: ( NOT_TOK )*
+            // ../../../../src/parser/cvc/Cvc.g:1413:5: ( NOT_TOK )*
 
             for (;;)
             {
@@ -11918,3436 +11935,18 @@ nots(pCvcParser ctx)
                 {
                 case NOT_TOK:
                 	{
-                		switch ( LA(2) )
-                		{
-                		case BVNEG_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case BVNEG_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case NOT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TRANSPOSE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TRANSCLOSURE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TUPLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVXOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVNAND_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVNOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVCOMP_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVXNOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVUMINUS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVPLUS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSUB_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVMULT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVUDIV_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSDIV_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVUREM_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSREM_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSMOD_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSHL_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVASHR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVLSHR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case SX_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVZEROEXTEND_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVREPEAT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVROTR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVROTL_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVLT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVGT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVGE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSLT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSGT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSGE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_CONCAT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_LENGTH_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_CONTAINS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_SUBSTR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_INDEXOF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_REPLACE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_PREFIXOF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_SUFFIXOF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_STOI_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_ITOS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_U16TOS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_STOU16_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_U32TOS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_STOU32_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case SETS_CARD_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case IF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case PARENHASH:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case LBRACE:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case UNIVSET_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BAR:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case ARRAY_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TRUE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case FALSE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case DECIMAL_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case INTEGER_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case HEX_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BINARY_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case IDENTIFIER:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case FLOOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case IS_INTEGER_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case ABS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case DIVISIBLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case DISTINCT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
+                		alt59=1;
+                	}
+                    break;
 
-                				}
-
-                			}
-                		    break;
-                		case NOT_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case BVNEG_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case NOT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TRANSPOSE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TRANSCLOSURE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TUPLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVXOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVNAND_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVNOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVCOMP_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVXNOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVUMINUS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVPLUS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSUB_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVMULT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVUDIV_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSDIV_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVUREM_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSREM_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSMOD_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSHL_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVASHR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVLSHR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case SX_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVZEROEXTEND_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVREPEAT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVROTR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVROTL_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVLT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVGT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVGE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSLT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSGT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSGE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_CONCAT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_LENGTH_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_CONTAINS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_SUBSTR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_INDEXOF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_REPLACE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_PREFIXOF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_SUFFIXOF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_STOI_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_ITOS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_U16TOS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_STOU16_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_U32TOS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_STOU32_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case SETS_CARD_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case IF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case PARENHASH:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case LBRACE:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case UNIVSET_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BAR:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case ARRAY_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TRUE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case FALSE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case DECIMAL_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case INTEGER_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case HEX_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BINARY_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case EXISTS_TOK:
-                				case FORALL_TOK:
-                				case IDENTIFIER:
-                				case LAMBDA:
-                				case LET_TOK:
-                				case MINUS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case FLOOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case IS_INTEGER_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case ABS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case DIVISIBLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case DISTINCT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case TRANSPOSE_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case BVNEG_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case NOT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TRANSPOSE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TRANSCLOSURE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TUPLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVXOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVNAND_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVNOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVCOMP_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVXNOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVUMINUS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVPLUS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSUB_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVMULT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVUDIV_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSDIV_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVUREM_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSREM_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSMOD_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSHL_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVASHR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVLSHR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case SX_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVZEROEXTEND_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVREPEAT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVROTR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVROTL_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVLT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVGT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVGE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSLT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSGT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSGE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_CONCAT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_LENGTH_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_CONTAINS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_SUBSTR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_INDEXOF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_REPLACE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_PREFIXOF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_SUFFIXOF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_STOI_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_ITOS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_U16TOS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_STOU16_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_U32TOS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_STOU32_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case SETS_CARD_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case IF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case PARENHASH:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case LBRACE:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case UNIVSET_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BAR:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case ARRAY_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TRUE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case FALSE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case DECIMAL_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case INTEGER_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case HEX_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BINARY_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case IDENTIFIER:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case FLOOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case IS_INTEGER_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case ABS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case DIVISIBLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case DISTINCT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case TRANSCLOSURE_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case BVNEG_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case NOT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TRANSPOSE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TRANSCLOSURE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TUPLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVXOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVNAND_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVNOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVCOMP_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVXNOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVUMINUS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVPLUS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSUB_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVMULT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVUDIV_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSDIV_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVUREM_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSREM_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSMOD_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSHL_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVASHR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVLSHR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case SX_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVZEROEXTEND_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVREPEAT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVROTR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVROTL_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVLT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVGT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVGE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSLT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSGT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSGE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_CONCAT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_LENGTH_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_CONTAINS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_SUBSTR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_INDEXOF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_REPLACE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_PREFIXOF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_SUFFIXOF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_STOI_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_ITOS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_U16TOS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_STOU16_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_U32TOS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_STOU32_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case SETS_CARD_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case IF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case PARENHASH:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case LBRACE:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case UNIVSET_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BAR:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case ARRAY_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TRUE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case FALSE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case DECIMAL_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case INTEGER_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case HEX_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BINARY_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case IDENTIFIER:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case FLOOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case IS_INTEGER_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case ABS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case DIVISIBLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case DISTINCT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case TUPLE_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVXOR_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVNAND_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVNOR_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVCOMP_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVXNOR_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVUMINUS_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVPLUS_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVSUB_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVMULT_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVUDIV_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVSDIV_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVUREM_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVSREM_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVSMOD_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVSHL_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVASHR_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVLSHR_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case SX_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVZEROEXTEND_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVREPEAT_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVROTR_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVROTL_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVLT_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVLE_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVGT_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVGE_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVSLT_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVSLE_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVSGT_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case BVSGE_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case STRING_CONCAT_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case STRING_LENGTH_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case STRING_CONTAINS_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case STRING_SUBSTR_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case STRING_INDEXOF_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case STRING_REPLACE_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case STRING_PREFIXOF_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case STRING_SUFFIXOF_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case STRING_STOI_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case STRING_ITOS_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case STRING_U16TOS_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case STRING_STOU16_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case STRING_U32TOS_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case STRING_STOU32_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case STRING_LITERAL:
-                			{
-                				alt59=1;
-                			}
-                		    break;
-                		case SETS_CARD_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case IF_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case NOT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case FORALL_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case EXISTS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case LET_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case LAMBDA:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case MINUS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVNEG_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TRANSPOSE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TRANSCLOSURE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TUPLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVXOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVNAND_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVNOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVCOMP_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVXNOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVUMINUS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVPLUS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSUB_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVMULT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVUDIV_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSDIV_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVUREM_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSREM_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSMOD_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSHL_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVASHR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVLSHR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case SX_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVZEROEXTEND_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVREPEAT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVROTR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVROTL_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVLT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVGT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVGE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSLT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSGT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSGE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_CONCAT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_LENGTH_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_CONTAINS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_SUBSTR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_INDEXOF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_REPLACE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_PREFIXOF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_SUFFIXOF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_STOI_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_ITOS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_U16TOS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_STOU16_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_U32TOS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_STOU32_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case SETS_CARD_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case IF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case PARENHASH:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case LBRACE:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case UNIVSET_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BAR:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case ARRAY_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TRUE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case FALSE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case DECIMAL_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case INTEGER_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case HEX_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BINARY_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case IDENTIFIER:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case FLOOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case IS_INTEGER_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case ABS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case DIVISIBLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case DISTINCT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case LPAREN:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case RPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case NOT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case FORALL_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case EXISTS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case LET_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case LAMBDA:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case MINUS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVNEG_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TRANSPOSE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TRANSCLOSURE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TUPLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVXOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVNAND_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVNOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVCOMP_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVXNOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVUMINUS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVPLUS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSUB_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVMULT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVUDIV_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSDIV_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVUREM_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSREM_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSMOD_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSHL_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVASHR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVLSHR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case SX_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVZEROEXTEND_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVREPEAT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVROTR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVROTL_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVLT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVGT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVGE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSLT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSGT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSGE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_CONCAT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_LENGTH_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_CONTAINS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_SUBSTR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_INDEXOF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_REPLACE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_PREFIXOF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_SUFFIXOF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_STOI_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_ITOS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_U16TOS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_STOU16_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_U32TOS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_STOU32_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case SETS_CARD_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case IF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case PARENHASH:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case LBRACE:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case UNIVSET_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BAR:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case ARRAY_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TRUE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case FALSE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case DECIMAL_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case INTEGER_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case HEX_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BINARY_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case IDENTIFIER:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case FLOOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case IS_INTEGER_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case ABS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case DIVISIBLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case DISTINCT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case PARENHASH:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case HASHPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case IDENTIFIER:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case LBRACE:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case RBRACE:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case NOT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case FORALL_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case EXISTS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case LET_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case LAMBDA:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case MINUS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVNEG_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TRANSPOSE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TRANSCLOSURE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TUPLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVXOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVNAND_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVNOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVCOMP_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVXNOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVUMINUS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVPLUS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSUB_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVMULT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVUDIV_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSDIV_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVUREM_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSREM_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSMOD_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSHL_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVASHR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVLSHR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case SX_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVZEROEXTEND_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVREPEAT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVROTR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVROTL_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVLT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVGT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVGE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSLT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSGT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BVSGE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_CONCAT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_LENGTH_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_CONTAINS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_SUBSTR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_INDEXOF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_REPLACE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_PREFIXOF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_SUFFIXOF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_STOI_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_ITOS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_U16TOS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_STOU16_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_U32TOS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_STOU32_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case STRING_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case SETS_CARD_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case IF_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case PARENHASH:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case LBRACE:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case UNIVSET_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BAR:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case ARRAY_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case TRUE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case FALSE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case DECIMAL_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case INTEGER_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case HEX_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case BINARY_LITERAL:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case IDENTIFIER:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case FLOOR_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case IS_INTEGER_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case ABS_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case DIVISIBLE_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-                				case DISTINCT_TOK:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case UNIVSET_TOK:
-                			{
-                				alt59=1;
-                			}
-                		    break;
-                		case BAR:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case BAR:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case ARRAY_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case TRUE_TOK:
-                			{
-                				alt59=1;
-                			}
-                		    break;
-                		case FALSE_TOK:
-                			{
-                				alt59=1;
-                			}
-                		    break;
-                		case DECIMAL_LITERAL:
-                			{
-                				alt59=1;
-                			}
-                		    break;
-                		case INTEGER_LITERAL:
-                			{
-                				alt59=1;
-                			}
-                		    break;
-                		case HEX_LITERAL:
-                			{
-                				alt59=1;
-                			}
-                		    break;
-                		case BINARY_LITERAL:
-                			{
-                				alt59=1;
-                			}
-                		    break;
-                		case EXISTS_TOK:
-                		case FORALL_TOK:
-                		case IDENTIFIER:
-                		case LAMBDA:
-                		case LET_TOK:
-                		case MINUS_TOK:
-                			{
-                				alt59=1;
-                			}
-                		    break;
-                		case FLOOR_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case IS_INTEGER_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case ABS_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case DIVISIBLE_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-                		case DISTINCT_TOK:
-                			{
-                				switch ( LA(3) )
-                				{
-                				case LPAREN:
-                					{
-                						alt59=1;
-                					}
-                				    break;
-
-                				}
-
-                			}
-                		    break;
-
-                		}
-
-                	}
-                    break;
-
-                }
+                }
 
                 switch (alt59)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1408:7: NOT_TOK
+            	    // ../../../../src/parser/cvc/Cvc.g:1413:7: NOT_TOK
             	    {
-            	         MATCHT(NOT_TOK, &FOLLOW_NOT_TOK_in_nots4450);
+            	         MATCHT(NOT_TOK, &FOLLOW_NOT_TOK_in_nots4470);
             	        if  (HASEXCEPTION())
             	        {
             	            goto rulenotsEx;
@@ -15396,7 +11995,7 @@ nots(pCvcParser ctx)
 
 /**
  * $ANTLR start prefixFormula
- * ../../../../../../src/parser/cvc/Cvc.g:1411:1: prefixFormula[CVC4::Expr& f] : ( ( FORALL_TOK | EXISTS_TOK ) LPAREN boundVarDecl[ids,t] ( COMMA boundVarDecl[ids,t] )* RPAREN COLON ( instantiationPatterns[ipl] )? formula[f] | LET_TOK letDecl ( COMMA letDecl )* IN_TOK formula[f] | LAMBDA LPAREN boundVarDeclsReturn[terms,types] RPAREN COLON formula[f] );
+ * ../../../../src/parser/cvc/Cvc.g:1416:1: prefixFormula[CVC4::Expr& f] : ( ( FORALL_TOK | EXISTS_TOK ) LPAREN boundVarDecl[ids,t] ( COMMA boundVarDecl[ids,t] )* RPAREN COLON ( instantiationPatterns[ipl] )? formula[f] | LET_TOK letDecl ( COMMA letDecl )* IN_TOK formula[f] | LAMBDA LPAREN boundVarDeclsReturn[terms,types] RPAREN COLON formula[f] );
  */
 static void
 prefixFormula(pCvcParser ctx, CVC4::Expr& f)
@@ -15415,7 +12014,7 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
 
     {
         {
-            //  ../../../../../../src/parser/cvc/Cvc.g:1422:3: ( ( FORALL_TOK | EXISTS_TOK ) LPAREN boundVarDecl[ids,t] ( COMMA boundVarDecl[ids,t] )* RPAREN COLON ( instantiationPatterns[ipl] )? formula[f] | LET_TOK letDecl ( COMMA letDecl )* IN_TOK formula[f] | LAMBDA LPAREN boundVarDeclsReturn[terms,types] RPAREN COLON formula[f] )
+            //  ../../../../src/parser/cvc/Cvc.g:1427:3: ( ( FORALL_TOK | EXISTS_TOK ) LPAREN boundVarDecl[ids,t] ( COMMA boundVarDecl[ids,t] )* RPAREN COLON ( instantiationPatterns[ipl] )? formula[f] | LET_TOK letDecl ( COMMA letDecl )* IN_TOK formula[f] | LAMBDA LPAREN boundVarDeclsReturn[terms,types] RPAREN COLON formula[f] )
 
             ANTLR3_UINT32 alt64;
 
@@ -15461,9 +12060,9 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
             switch (alt64)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1422:5: ( FORALL_TOK | EXISTS_TOK ) LPAREN boundVarDecl[ids,t] ( COMMA boundVarDecl[ids,t] )* RPAREN COLON ( instantiationPatterns[ipl] )? formula[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:1427:5: ( FORALL_TOK | EXISTS_TOK ) LPAREN boundVarDecl[ids,t] ( COMMA boundVarDecl[ids,t] )* RPAREN COLON ( instantiationPatterns[ipl] )? formula[f]
         	    {
-        	        // ../../../../../../src/parser/cvc/Cvc.g:1422:5: ( FORALL_TOK | EXISTS_TOK )
+        	        // ../../../../src/parser/cvc/Cvc.g:1427:5: ( FORALL_TOK | EXISTS_TOK )
         	        {
         	            int alt60=2;
         	            switch ( LA(1) )
@@ -15500,9 +12099,9 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	            switch (alt60)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1422:7: FORALL_TOK
+        	        	    // ../../../../src/parser/cvc/Cvc.g:1427:7: FORALL_TOK
         	        	    {
-        	        	         MATCHT(FORALL_TOK, &FOLLOW_FORALL_TOK_in_prefixFormula4482);
+        	        	         MATCHT(FORALL_TOK, &FOLLOW_FORALL_TOK_in_prefixFormula4502);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruleprefixFormulaEx;
@@ -15522,9 +12121,9 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1422:42: EXISTS_TOK
+        	        	    // ../../../../src/parser/cvc/Cvc.g:1427:42: EXISTS_TOK
         	        	    {
-        	        	         MATCHT(EXISTS_TOK, &FOLLOW_EXISTS_TOK_in_prefixFormula4488);
+        	        	         MATCHT(EXISTS_TOK, &FOLLOW_EXISTS_TOK_in_prefixFormula4508);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruleprefixFormulaEx;
@@ -15553,7 +12152,7 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_prefixFormula4500);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_prefixFormula4520);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleprefixFormulaEx;
@@ -15564,7 +12163,7 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_boundVarDecl_in_prefixFormula4506);
+        	        FOLLOWPUSH(FOLLOW_boundVarDecl_in_prefixFormula4526);
         	        boundVarDecl(ctx, ids, t);
 
         	        FOLLOWPOP();
@@ -15588,7 +12187,7 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:1430:5: ( COMMA boundVarDecl[ids,t] )*
+        	        // ../../../../src/parser/cvc/Cvc.g:1435:5: ( COMMA boundVarDecl[ids,t] )*
 
         	        for (;;)
         	        {
@@ -15606,9 +12205,9 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	            switch (alt61)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1430:7: COMMA boundVarDecl[ids,t]
+        	        	    // ../../../../src/parser/cvc/Cvc.g:1435:7: COMMA boundVarDecl[ids,t]
         	        	    {
-        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_prefixFormula4521);
+        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_prefixFormula4541);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruleprefixFormulaEx;
@@ -15619,7 +12218,7 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	        	        }
 
 
-        	        	        FOLLOWPUSH(FOLLOW_boundVarDecl_in_prefixFormula4523);
+        	        	        FOLLOWPUSH(FOLLOW_boundVarDecl_in_prefixFormula4543);
         	        	        boundVarDecl(ctx, ids, t);
 
         	        	        FOLLOWPOP();
@@ -15655,7 +12254,7 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	        loop61: ; /* Jump out to here if this rule does not match */
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_prefixFormula4541);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_prefixFormula4561);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleprefixFormulaEx;
@@ -15673,7 +12272,7 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COLON, &FOLLOW_COLON_in_prefixFormula4549);
+        	         MATCHT(COLON, &FOLLOW_COLON_in_prefixFormula4569);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleprefixFormulaEx;
@@ -15684,7 +12283,7 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:1439:11: ( instantiationPatterns[ipl] )?
+        	        // ../../../../src/parser/cvc/Cvc.g:1444:11: ( instantiationPatterns[ipl] )?
         	        {
         	            int alt62=2;
         	            switch ( LA(1) )
@@ -15699,9 +12298,9 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	            switch (alt62)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1439:11: instantiationPatterns[ipl]
+        	        	    // ../../../../src/parser/cvc/Cvc.g:1444:11: instantiationPatterns[ipl]
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_instantiationPatterns_in_prefixFormula4551);
+        	        	        FOLLOWPUSH(FOLLOW_instantiationPatterns_in_prefixFormula4571);
         	        	        instantiationPatterns(ctx, ipl);
 
         	        	        FOLLOWPOP();
@@ -15721,7 +12320,7 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	            }
         	        }
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_prefixFormula4555);
+        	        FOLLOWPUSH(FOLLOW_formula_in_prefixFormula4575);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -15750,9 +12349,9 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1451:5: LET_TOK letDecl ( COMMA letDecl )* IN_TOK formula[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:1456:5: LET_TOK letDecl ( COMMA letDecl )* IN_TOK formula[f]
         	    {
-        	         MATCHT(LET_TOK, &FOLLOW_LET_TOK_in_prefixFormula4574);
+        	         MATCHT(LET_TOK, &FOLLOW_LET_TOK_in_prefixFormula4594);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleprefixFormulaEx;
@@ -15769,7 +12368,7 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_letDecl_in_prefixFormula4582);
+        	        FOLLOWPUSH(FOLLOW_letDecl_in_prefixFormula4602);
         	        letDecl(ctx);
 
         	        FOLLOWPOP();
@@ -15783,7 +12382,7 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:1452:13: ( COMMA letDecl )*
+        	        // ../../../../src/parser/cvc/Cvc.g:1457:13: ( COMMA letDecl )*
 
         	        for (;;)
         	        {
@@ -15801,9 +12400,9 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	            switch (alt63)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1452:15: COMMA letDecl
+        	        	    // ../../../../src/parser/cvc/Cvc.g:1457:15: COMMA letDecl
         	        	    {
-        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_prefixFormula4586);
+        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_prefixFormula4606);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruleprefixFormulaEx;
@@ -15814,7 +12413,7 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	        	        }
 
 
-        	        	        FOLLOWPUSH(FOLLOW_letDecl_in_prefixFormula4588);
+        	        	        FOLLOWPUSH(FOLLOW_letDecl_in_prefixFormula4608);
         	        	        letDecl(ctx);
 
         	        	        FOLLOWPOP();
@@ -15839,7 +12438,7 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	        loop63: ; /* Jump out to here if this rule does not match */
 
 
-        	         MATCHT(IN_TOK, &FOLLOW_IN_TOK_in_prefixFormula4597);
+        	         MATCHT(IN_TOK, &FOLLOW_IN_TOK_in_prefixFormula4617);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleprefixFormulaEx;
@@ -15850,7 +12449,7 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_prefixFormula4599);
+        	        FOLLOWPUSH(FOLLOW_formula_in_prefixFormula4619);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -15873,9 +12472,9 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1456:5: LAMBDA LPAREN boundVarDeclsReturn[terms,types] RPAREN COLON formula[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:1461:5: LAMBDA LPAREN boundVarDeclsReturn[terms,types] RPAREN COLON formula[f]
         	    {
-        	         MATCHT(LAMBDA, &FOLLOW_LAMBDA_in_prefixFormula4614);
+        	         MATCHT(LAMBDA, &FOLLOW_LAMBDA_in_prefixFormula4634);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleprefixFormulaEx;
@@ -15892,7 +12491,7 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_prefixFormula4618);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_prefixFormula4638);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleprefixFormulaEx;
@@ -15903,7 +12502,7 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_boundVarDeclsReturn_in_prefixFormula4624);
+        	        FOLLOWPUSH(FOLLOW_boundVarDeclsReturn_in_prefixFormula4644);
         	        boundVarDeclsReturn(ctx, terms, types);
 
         	        FOLLOWPOP();
@@ -15917,7 +12516,7 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_prefixFormula4631);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_prefixFormula4651);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleprefixFormulaEx;
@@ -15928,7 +12527,7 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COLON, &FOLLOW_COLON_in_prefixFormula4633);
+        	         MATCHT(COLON, &FOLLOW_COLON_in_prefixFormula4653);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleprefixFormulaEx;
@@ -15939,7 +12538,7 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_prefixFormula4635);
+        	        FOLLOWPUSH(FOLLOW_formula_in_prefixFormula4655);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -15989,7 +12588,7 @@ prefixFormula(pCvcParser ctx, CVC4::Expr& f)
 
 /**
  * $ANTLR start instantiationPatterns
- * ../../../../../../src/parser/cvc/Cvc.g:1469:1: instantiationPatterns[ CVC4::Expr& expr ] : ( PATTERN_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN COLON )+ ;
+ * ../../../../src/parser/cvc/Cvc.g:1474:1: instantiationPatterns[ CVC4::Expr& expr ] : ( PATTERN_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN COLON )+ ;
  */
 static void
 instantiationPatterns(pCvcParser ctx, CVC4::Expr& expr)
@@ -16003,10 +12602,10 @@ instantiationPatterns(pCvcParser ctx, CVC4::Expr& expr)
       std::vector<Expr> patterns;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1475:3: ( ( PATTERN_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN COLON )+ )
-        // ../../../../../../src/parser/cvc/Cvc.g:1475:5: ( PATTERN_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN COLON )+
+        // ../../../../src/parser/cvc/Cvc.g:1480:3: ( ( PATTERN_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN COLON )+ )
+        // ../../../../src/parser/cvc/Cvc.g:1480:5: ( PATTERN_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN COLON )+
         {
-            // ../../../../../../src/parser/cvc/Cvc.g:1475:5: ( PATTERN_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN COLON )+
+            // ../../../../src/parser/cvc/Cvc.g:1480:5: ( PATTERN_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN COLON )+
             {
                 int cnt66=0;
 
@@ -16026,9 +12625,9 @@ instantiationPatterns(pCvcParser ctx, CVC4::Expr& expr)
             	switch (alt66)
             	{
             	    case 1:
-            	        // ../../../../../../src/parser/cvc/Cvc.g:1475:7: PATTERN_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN COLON
+            	        // ../../../../src/parser/cvc/Cvc.g:1480:7: PATTERN_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN COLON
             	        {
-            	             MATCHT(PATTERN_TOK, &FOLLOW_PATTERN_TOK_in_instantiationPatterns4663);
+            	             MATCHT(PATTERN_TOK, &FOLLOW_PATTERN_TOK_in_instantiationPatterns4683);
             	            if  (HASEXCEPTION())
             	            {
             	                goto ruleinstantiationPatternsEx;
@@ -16039,7 +12638,7 @@ instantiationPatterns(pCvcParser ctx, CVC4::Expr& expr)
             	            }
 
 
-            	             MATCHT(LPAREN, &FOLLOW_LPAREN_in_instantiationPatterns4665);
+            	             MATCHT(LPAREN, &FOLLOW_LPAREN_in_instantiationPatterns4685);
             	            if  (HASEXCEPTION())
             	            {
             	                goto ruleinstantiationPatternsEx;
@@ -16050,7 +12649,7 @@ instantiationPatterns(pCvcParser ctx, CVC4::Expr& expr)
             	            }
 
 
-            	            FOLLOWPUSH(FOLLOW_formula_in_instantiationPatterns4667);
+            	            FOLLOWPUSH(FOLLOW_formula_in_instantiationPatterns4687);
             	            formula(ctx, f);
 
             	            FOLLOWPOP();
@@ -16070,7 +12669,7 @@ instantiationPatterns(pCvcParser ctx, CVC4::Expr& expr)
             	            }
 
 
-            	            // ../../../../../../src/parser/cvc/Cvc.g:1475:62: ( COMMA formula[f] )*
+            	            // ../../../../src/parser/cvc/Cvc.g:1480:62: ( COMMA formula[f] )*
 
             	            for (;;)
             	            {
@@ -16088,9 +12687,9 @@ instantiationPatterns(pCvcParser ctx, CVC4::Expr& expr)
             	                switch (alt65)
             	                {
             	            	case 1:
-            	            	    // ../../../../../../src/parser/cvc/Cvc.g:1475:63: COMMA formula[f]
+            	            	    // ../../../../src/parser/cvc/Cvc.g:1480:63: COMMA formula[f]
             	            	    {
-            	            	         MATCHT(COMMA, &FOLLOW_COMMA_in_instantiationPatterns4673);
+            	            	         MATCHT(COMMA, &FOLLOW_COMMA_in_instantiationPatterns4693);
             	            	        if  (HASEXCEPTION())
             	            	        {
             	            	            goto ruleinstantiationPatternsEx;
@@ -16101,7 +12700,7 @@ instantiationPatterns(pCvcParser ctx, CVC4::Expr& expr)
             	            	        }
 
 
-            	            	        FOLLOWPUSH(FOLLOW_formula_in_instantiationPatterns4675);
+            	            	        FOLLOWPUSH(FOLLOW_formula_in_instantiationPatterns4695);
             	            	        formula(ctx, f);
 
             	            	        FOLLOWPOP();
@@ -16132,7 +12731,7 @@ instantiationPatterns(pCvcParser ctx, CVC4::Expr& expr)
             	            loop65: ; /* Jump out to here if this rule does not match */
 
 
-            	             MATCHT(RPAREN, &FOLLOW_RPAREN_in_instantiationPatterns4683);
+            	             MATCHT(RPAREN, &FOLLOW_RPAREN_in_instantiationPatterns4703);
             	            if  (HASEXCEPTION())
             	            {
             	                goto ruleinstantiationPatternsEx;
@@ -16143,7 +12742,7 @@ instantiationPatterns(pCvcParser ctx, CVC4::Expr& expr)
             	            }
 
 
-            	             MATCHT(COLON, &FOLLOW_COLON_in_instantiationPatterns4685);
+            	             MATCHT(COLON, &FOLLOW_COLON_in_instantiationPatterns4705);
             	            if  (HASEXCEPTION())
             	            {
             	                goto ruleinstantiationPatternsEx;
@@ -16220,7 +12819,7 @@ instantiationPatterns(pCvcParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start letDecl
- * ../../../../../../src/parser/cvc/Cvc.g:1488:1: letDecl : identifier[name,CHECK_NONE,SYM_VARIABLE] EQUAL_TOK formula[e] ;
+ * ../../../../src/parser/cvc/Cvc.g:1493:1: letDecl : identifier[name,CHECK_NONE,SYM_VARIABLE] EQUAL_TOK formula[e] ;
  */
 static void
 letDecl(pCvcParser ctx)
@@ -16233,10 +12832,10 @@ letDecl(pCvcParser ctx)
       std::string name;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1493:3: ( identifier[name,CHECK_NONE,SYM_VARIABLE] EQUAL_TOK formula[e] )
-        // ../../../../../../src/parser/cvc/Cvc.g:1493:5: identifier[name,CHECK_NONE,SYM_VARIABLE] EQUAL_TOK formula[e]
+        // ../../../../src/parser/cvc/Cvc.g:1498:3: ( identifier[name,CHECK_NONE,SYM_VARIABLE] EQUAL_TOK formula[e] )
+        // ../../../../src/parser/cvc/Cvc.g:1498:5: identifier[name,CHECK_NONE,SYM_VARIABLE] EQUAL_TOK formula[e]
         {
-            FOLLOWPUSH(FOLLOW_identifier_in_letDecl4722);
+            FOLLOWPUSH(FOLLOW_identifier_in_letDecl4742);
             identifier(ctx, name, CHECK_NONE, SYM_VARIABLE);
 
             FOLLOWPOP();
@@ -16250,7 +12849,7 @@ letDecl(pCvcParser ctx)
             }
 
 
-             MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_letDecl4725);
+             MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_letDecl4745);
             if  (HASEXCEPTION())
             {
                 goto ruleletDeclEx;
@@ -16261,7 +12860,7 @@ letDecl(pCvcParser ctx)
             }
 
 
-            FOLLOWPUSH(FOLLOW_formula_in_letDecl4727);
+            FOLLOWPUSH(FOLLOW_formula_in_letDecl4747);
             formula(ctx, e);
 
             FOLLOWPOP();
@@ -16306,7 +12905,7 @@ letDecl(pCvcParser ctx)
 
 /**
  * $ANTLR start booleanBinop
- * ../../../../../../src/parser/cvc/Cvc.g:1502:1: booleanBinop[unsigned& op] : ( IFF_TOK | IMPLIES_TOK | OR_TOK | XOR_TOK | AND_TOK | JOIN_TOK | PRODUCT_TOK );
+ * ../../../../src/parser/cvc/Cvc.g:1507:1: booleanBinop[unsigned& op] : ( IFF_TOK | IMPLIES_TOK | OR_TOK | XOR_TOK | AND_TOK | JOIN_TOK | PRODUCT_TOK | JOIN_IMAGE_TOK );
  */
 static void
 booleanBinop(pCvcParser ctx, unsigned& op)
@@ -16318,10 +12917,10 @@ booleanBinop(pCvcParser ctx, unsigned& op)
       op = LT(1)->getType(LT(1));
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1506:3: ( IFF_TOK | IMPLIES_TOK | OR_TOK | XOR_TOK | AND_TOK | JOIN_TOK | PRODUCT_TOK )
-        // ../../../../../../src/parser/cvc/Cvc.g:
+        // ../../../../src/parser/cvc/Cvc.g:1511:3: ( IFF_TOK | IMPLIES_TOK | OR_TOK | XOR_TOK | AND_TOK | JOIN_TOK | PRODUCT_TOK | JOIN_IMAGE_TOK )
+        // ../../../../src/parser/cvc/Cvc.g:
         {
-            if ( LA(1) == AND_TOK || LA(1) == IFF_TOK || LA(1) == IMPLIES_TOK || LA(1) == JOIN_TOK || LA(1) == OR_TOK || LA(1) == PRODUCT_TOK || LA(1) == XOR_TOK )
+            if ( LA(1) == AND_TOK || LA(1) == IFF_TOK || LA(1) == IMPLIES_TOK || ((LA(1) >= JOIN_IMAGE_TOK) && (LA(1) <= JOIN_TOK)) || LA(1) == OR_TOK || LA(1) == PRODUCT_TOK || LA(1) == XOR_TOK )
             {
                 CONSUME();
                 PERRORRECOVERY=ANTLR3_FALSE;
@@ -16365,7 +12964,7 @@ booleanBinop(pCvcParser ctx, unsigned& op)
 
 /**
  * $ANTLR start comparison
- * ../../../../../../src/parser/cvc/Cvc.g:1515:1: comparison[CVC4::Expr& f] : term[f] ( comparisonBinop[op] term[f] )* ;
+ * ../../../../src/parser/cvc/Cvc.g:1521:1: comparison[CVC4::Expr& f] : term[f] ( comparisonBinop[op] term[f] )* ;
  */
 static void
 comparison(pCvcParser ctx, CVC4::Expr& f)
@@ -16379,10 +12978,10 @@ comparison(pCvcParser ctx, CVC4::Expr& f)
       unsigned op;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1521:3: ( term[f] ( comparisonBinop[op] term[f] )* )
-        // ../../../../../../src/parser/cvc/Cvc.g:1521:5: term[f] ( comparisonBinop[op] term[f] )*
+        // ../../../../src/parser/cvc/Cvc.g:1527:3: ( term[f] ( comparisonBinop[op] term[f] )* )
+        // ../../../../src/parser/cvc/Cvc.g:1527:5: term[f] ( comparisonBinop[op] term[f] )*
         {
-            FOLLOWPUSH(FOLLOW_term_in_comparison4808);
+            FOLLOWPUSH(FOLLOW_term_in_comparison4836);
             term(ctx, f);
 
             FOLLOWPOP();
@@ -16402,7 +13001,7 @@ comparison(pCvcParser ctx, CVC4::Expr& f)
             }
 
 
-            // ../../../../../../src/parser/cvc/Cvc.g:1522:5: ( comparisonBinop[op] term[f] )*
+            // ../../../../src/parser/cvc/Cvc.g:1528:5: ( comparisonBinop[op] term[f] )*
 
             for (;;)
             {
@@ -16427,9 +13026,9 @@ comparison(pCvcParser ctx, CVC4::Expr& f)
                 switch (alt67)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1522:7: comparisonBinop[op] term[f]
+            	    // ../../../../src/parser/cvc/Cvc.g:1528:7: comparisonBinop[op] term[f]
             	    {
-            	        FOLLOWPUSH(FOLLOW_comparisonBinop_in_comparison4819);
+            	        FOLLOWPUSH(FOLLOW_comparisonBinop_in_comparison4847);
             	        comparisonBinop(ctx, op);
 
             	        FOLLOWPOP();
@@ -16443,7 +13042,7 @@ comparison(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_term_in_comparison4822);
+            	        FOLLOWPUSH(FOLLOW_term_in_comparison4850);
             	        term(ctx, f);
 
             	        FOLLOWPOP();
@@ -16500,7 +13099,7 @@ comparison(pCvcParser ctx, CVC4::Expr& f)
 
 /**
  * $ANTLR start comparisonBinop
- * ../../../../../../src/parser/cvc/Cvc.g:1527:1: comparisonBinop[unsigned& op] : ( EQUAL_TOK | DISEQUAL_TOK | GT_TOK | GEQ_TOK | LT_TOK | LEQ_TOK | MEMBER_TOK | FMF_CARD_TOK );
+ * ../../../../src/parser/cvc/Cvc.g:1533:1: comparisonBinop[unsigned& op] : ( EQUAL_TOK | DISEQUAL_TOK | GT_TOK | GEQ_TOK | LT_TOK | LEQ_TOK | MEMBER_TOK | FMF_CARD_TOK );
  */
 static void
 comparisonBinop(pCvcParser ctx, unsigned& op)
@@ -16512,8 +13111,8 @@ comparisonBinop(pCvcParser ctx, unsigned& op)
       op = LT(1)->getType(LT(1));
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1531:3: ( EQUAL_TOK | DISEQUAL_TOK | GT_TOK | GEQ_TOK | LT_TOK | LEQ_TOK | MEMBER_TOK | FMF_CARD_TOK )
-        // ../../../../../../src/parser/cvc/Cvc.g:
+        // ../../../../src/parser/cvc/Cvc.g:1537:3: ( EQUAL_TOK | DISEQUAL_TOK | GT_TOK | GEQ_TOK | LT_TOK | LEQ_TOK | MEMBER_TOK | FMF_CARD_TOK )
+        // ../../../../src/parser/cvc/Cvc.g:
         {
             if ( LA(1) == DISEQUAL_TOK || LA(1) == EQUAL_TOK || LA(1) == FMF_CARD_TOK || LA(1) == GEQ_TOK || LA(1) == GT_TOK || LA(1) == LEQ_TOK || ((LA(1) >= LT_TOK) && (LA(1) <= MEMBER_TOK)) )
             {
@@ -16559,7 +13158,7 @@ comparisonBinop(pCvcParser ctx, unsigned& op)
 
 /**
  * $ANTLR start arithmeticBinop
- * ../../../../../../src/parser/cvc/Cvc.g:1541:1: arithmeticBinop[unsigned& op] : ( PLUS_TOK | MINUS_TOK | STAR_TOK | INTDIV_TOK | MOD_TOK | DIV_TOK | EXP_TOK );
+ * ../../../../src/parser/cvc/Cvc.g:1547:1: arithmeticBinop[unsigned& op] : ( PLUS_TOK | MINUS_TOK | STAR_TOK | INTDIV_TOK | MOD_TOK | DIV_TOK | EXP_TOK );
  */
 static void
 arithmeticBinop(pCvcParser ctx, unsigned& op)
@@ -16571,8 +13170,8 @@ arithmeticBinop(pCvcParser ctx, unsigned& op)
       op = LT(1)->getType(LT(1));
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1545:3: ( PLUS_TOK | MINUS_TOK | STAR_TOK | INTDIV_TOK | MOD_TOK | DIV_TOK | EXP_TOK )
-        // ../../../../../../src/parser/cvc/Cvc.g:
+        // ../../../../src/parser/cvc/Cvc.g:1551:3: ( PLUS_TOK | MINUS_TOK | STAR_TOK | INTDIV_TOK | MOD_TOK | DIV_TOK | EXP_TOK )
+        // ../../../../src/parser/cvc/Cvc.g:
         {
             if ( LA(1) == DIV_TOK || LA(1) == EXP_TOK || LA(1) == INTDIV_TOK || ((LA(1) >= MINUS_TOK) && (LA(1) <= MOD_TOK)) || LA(1) == PLUS_TOK || LA(1) == STAR_TOK )
             {
@@ -16618,7 +13217,7 @@ arithmeticBinop(pCvcParser ctx, unsigned& op)
 
 /**
  * $ANTLR start term
- * ../../../../../../src/parser/cvc/Cvc.g:1555:1: term[CVC4::Expr& f] : uminusTerm[f] ( WITH_TOK ( arrayStore[f] ( COMMA arrayStore[f] )* | DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* ) ) | ( arithmeticBinop[op] uminusTerm[f] )* ) ;
+ * ../../../../src/parser/cvc/Cvc.g:1561:1: term[CVC4::Expr& f] : uminusTerm[f] ( WITH_TOK ( arrayStore[f] ( COMMA arrayStore[f] )* | DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* ) ) | ( arithmeticBinop[op] uminusTerm[f] )* ) ;
  */
 static void
 term(pCvcParser ctx, CVC4::Expr& f)
@@ -16633,10 +13232,10 @@ term(pCvcParser ctx, CVC4::Expr& f)
       Type t;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1562:3: ( uminusTerm[f] ( WITH_TOK ( arrayStore[f] ( COMMA arrayStore[f] )* | DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* ) ) | ( arithmeticBinop[op] uminusTerm[f] )* ) )
-        // ../../../../../../src/parser/cvc/Cvc.g:1562:5: uminusTerm[f] ( WITH_TOK ( arrayStore[f] ( COMMA arrayStore[f] )* | DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* ) ) | ( arithmeticBinop[op] uminusTerm[f] )* )
+        // ../../../../src/parser/cvc/Cvc.g:1568:3: ( uminusTerm[f] ( WITH_TOK ( arrayStore[f] ( COMMA arrayStore[f] )* | DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* ) ) | ( arithmeticBinop[op] uminusTerm[f] )* ) )
+        // ../../../../src/parser/cvc/Cvc.g:1568:5: uminusTerm[f] ( WITH_TOK ( arrayStore[f] ( COMMA arrayStore[f] )* | DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* ) ) | ( arithmeticBinop[op] uminusTerm[f] )* )
         {
-            FOLLOWPUSH(FOLLOW_uminusTerm_in_term4977);
+            FOLLOWPUSH(FOLLOW_uminusTerm_in_term5005);
             uminusTerm(ctx, f);
 
             FOLLOWPOP();
@@ -16650,7 +13249,7 @@ term(pCvcParser ctx, CVC4::Expr& f)
             }
 
 
-            // ../../../../../../src/parser/cvc/Cvc.g:1563:5: ( WITH_TOK ( arrayStore[f] ( COMMA arrayStore[f] )* | DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* ) ) | ( arithmeticBinop[op] uminusTerm[f] )* )
+            // ../../../../src/parser/cvc/Cvc.g:1569:5: ( WITH_TOK ( arrayStore[f] ( COMMA arrayStore[f] )* | DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* ) ) | ( arithmeticBinop[op] uminusTerm[f] )* )
             {
                 int alt74=2;
                 switch ( LA(1) )
@@ -16681,6 +13280,7 @@ term(pCvcParser ctx, CVC4::Expr& f)
                 case INTDIV_TOK:
                 case INTEGER_LITERAL:
                 case IN_TOK:
+                case JOIN_IMAGE_TOK:
                 case JOIN_TOK:
                 case LBRACKET:
                 case LEQ_TOK:
@@ -16724,9 +13324,9 @@ term(pCvcParser ctx, CVC4::Expr& f)
                 switch (alt74)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1563:7: WITH_TOK ( arrayStore[f] ( COMMA arrayStore[f] )* | DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* ) )
+            	    // ../../../../src/parser/cvc/Cvc.g:1569:7: WITH_TOK ( arrayStore[f] ( COMMA arrayStore[f] )* | DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* ) )
             	    {
-            	         MATCHT(WITH_TOK, &FOLLOW_WITH_TOK_in_term4986);
+            	         MATCHT(WITH_TOK, &FOLLOW_WITH_TOK_in_term5014);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruletermEx;
@@ -16737,7 +13337,7 @@ term(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	        // ../../../../../../src/parser/cvc/Cvc.g:1564:7: ( arrayStore[f] ( COMMA arrayStore[f] )* | DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* ) )
+            	        // ../../../../src/parser/cvc/Cvc.g:1570:7: ( arrayStore[f] ( COMMA arrayStore[f] )* | DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* ) )
             	        {
             	            int alt72=2;
             	            switch ( LA(1) )
@@ -16774,9 +13374,9 @@ term(pCvcParser ctx, CVC4::Expr& f)
             	            switch (alt72)
             	            {
             	        	case 1:
-            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1564:9: arrayStore[f] ( COMMA arrayStore[f] )*
+            	        	    // ../../../../src/parser/cvc/Cvc.g:1570:9: arrayStore[f] ( COMMA arrayStore[f] )*
             	        	    {
-            	        	        FOLLOWPUSH(FOLLOW_arrayStore_in_term4996);
+            	        	        FOLLOWPUSH(FOLLOW_arrayStore_in_term5024);
             	        	        arrayStore(ctx, f);
 
             	        	        FOLLOWPOP();
@@ -16790,7 +13390,7 @@ term(pCvcParser ctx, CVC4::Expr& f)
             	        	        }
 
 
-            	        	        // ../../../../../../src/parser/cvc/Cvc.g:1564:23: ( COMMA arrayStore[f] )*
+            	        	        // ../../../../src/parser/cvc/Cvc.g:1570:23: ( COMMA arrayStore[f] )*
 
             	        	        for (;;)
             	        	        {
@@ -16808,9 +13408,9 @@ term(pCvcParser ctx, CVC4::Expr& f)
             	        	            switch (alt68)
             	        	            {
             	        	        	case 1:
-            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1564:25: COMMA arrayStore[f]
+            	        	        	    // ../../../../src/parser/cvc/Cvc.g:1570:25: COMMA arrayStore[f]
             	        	        	    {
-            	        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_term5001);
+            	        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_term5029);
             	        	        	        if  (HASEXCEPTION())
             	        	        	        {
             	        	        	            goto ruletermEx;
@@ -16821,7 +13421,7 @@ term(pCvcParser ctx, CVC4::Expr& f)
             	        	        	        }
 
 
-            	        	        	        FOLLOWPUSH(FOLLOW_arrayStore_in_term5003);
+            	        	        	        FOLLOWPUSH(FOLLOW_arrayStore_in_term5031);
             	        	        	        arrayStore(ctx, f);
 
             	        	        	        FOLLOWPOP();
@@ -16849,9 +13449,9 @@ term(pCvcParser ctx, CVC4::Expr& f)
             	        	    }
             	        	    break;
             	        	case 2:
-            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1565:9: DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* )
+            	        	    // ../../../../src/parser/cvc/Cvc.g:1571:9: DOT ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* )
             	        	    {
-            	        	         MATCHT(DOT, &FOLLOW_DOT_in_term5017);
+            	        	         MATCHT(DOT, &FOLLOW_DOT_in_term5045);
             	        	        if  (HASEXCEPTION())
             	        	        {
             	        	            goto ruletermEx;
@@ -16862,7 +13462,7 @@ term(pCvcParser ctx, CVC4::Expr& f)
             	        	        }
 
 
-            	        	        // ../../../../../../src/parser/cvc/Cvc.g:1565:13: ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* )
+            	        	        // ../../../../src/parser/cvc/Cvc.g:1571:13: ( tupleStore[f] ( COMMA DOT tupleStore[f] )* | recordStore[f] ( COMMA DOT recordStore[f] )* )
             	        	        {
             	        	            int alt71=2;
             	        	            switch ( LA(1) )
@@ -16899,9 +13499,9 @@ term(pCvcParser ctx, CVC4::Expr& f)
             	        	            switch (alt71)
             	        	            {
             	        	        	case 1:
-            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1565:15: tupleStore[f] ( COMMA DOT tupleStore[f] )*
+            	        	        	    // ../../../../src/parser/cvc/Cvc.g:1571:15: tupleStore[f] ( COMMA DOT tupleStore[f] )*
             	        	        	    {
-            	        	        	        FOLLOWPUSH(FOLLOW_tupleStore_in_term5021);
+            	        	        	        FOLLOWPUSH(FOLLOW_tupleStore_in_term5049);
             	        	        	        tupleStore(ctx, f);
 
             	        	        	        FOLLOWPOP();
@@ -16915,7 +13515,7 @@ term(pCvcParser ctx, CVC4::Expr& f)
             	        	        	        }
 
 
-            	        	        	        // ../../../../../../src/parser/cvc/Cvc.g:1565:29: ( COMMA DOT tupleStore[f] )*
+            	        	        	        // ../../../../src/parser/cvc/Cvc.g:1571:29: ( COMMA DOT tupleStore[f] )*
 
             	        	        	        for (;;)
             	        	        	        {
@@ -16933,9 +13533,9 @@ term(pCvcParser ctx, CVC4::Expr& f)
             	        	        	            switch (alt69)
             	        	        	            {
             	        	        	        	case 1:
-            	        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1565:31: COMMA DOT tupleStore[f]
+            	        	        	        	    // ../../../../src/parser/cvc/Cvc.g:1571:31: COMMA DOT tupleStore[f]
             	        	        	        	    {
-            	        	        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_term5026);
+            	        	        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_term5054);
             	        	        	        	        if  (HASEXCEPTION())
             	        	        	        	        {
             	        	        	        	            goto ruletermEx;
@@ -16946,7 +13546,7 @@ term(pCvcParser ctx, CVC4::Expr& f)
             	        	        	        	        }
 
 
-            	        	        	        	         MATCHT(DOT, &FOLLOW_DOT_in_term5028);
+            	        	        	        	         MATCHT(DOT, &FOLLOW_DOT_in_term5056);
             	        	        	        	        if  (HASEXCEPTION())
             	        	        	        	        {
             	        	        	        	            goto ruletermEx;
@@ -16957,7 +13557,7 @@ term(pCvcParser ctx, CVC4::Expr& f)
             	        	        	        	        }
 
 
-            	        	        	        	        FOLLOWPUSH(FOLLOW_tupleStore_in_term5030);
+            	        	        	        	        FOLLOWPUSH(FOLLOW_tupleStore_in_term5058);
             	        	        	        	        tupleStore(ctx, f);
 
             	        	        	        	        FOLLOWPOP();
@@ -16985,9 +13585,9 @@ term(pCvcParser ctx, CVC4::Expr& f)
             	        	        	    }
             	        	        	    break;
             	        	        	case 2:
-            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1566:15: recordStore[f] ( COMMA DOT recordStore[f] )*
+            	        	        	    // ../../../../src/parser/cvc/Cvc.g:1572:15: recordStore[f] ( COMMA DOT recordStore[f] )*
             	        	        	    {
-            	        	        	        FOLLOWPUSH(FOLLOW_recordStore_in_term5050);
+            	        	        	        FOLLOWPUSH(FOLLOW_recordStore_in_term5078);
             	        	        	        recordStore(ctx, f);
 
             	        	        	        FOLLOWPOP();
@@ -17001,7 +13601,7 @@ term(pCvcParser ctx, CVC4::Expr& f)
             	        	        	        }
 
 
-            	        	        	        // ../../../../../../src/parser/cvc/Cvc.g:1566:30: ( COMMA DOT recordStore[f] )*
+            	        	        	        // ../../../../src/parser/cvc/Cvc.g:1572:30: ( COMMA DOT recordStore[f] )*
 
             	        	        	        for (;;)
             	        	        	        {
@@ -17019,9 +13619,9 @@ term(pCvcParser ctx, CVC4::Expr& f)
             	        	        	            switch (alt70)
             	        	        	            {
             	        	        	        	case 1:
-            	        	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1566:32: COMMA DOT recordStore[f]
+            	        	        	        	    // ../../../../src/parser/cvc/Cvc.g:1572:32: COMMA DOT recordStore[f]
             	        	        	        	    {
-            	        	        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_term5055);
+            	        	        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_term5083);
             	        	        	        	        if  (HASEXCEPTION())
             	        	        	        	        {
             	        	        	        	            goto ruletermEx;
@@ -17032,7 +13632,7 @@ term(pCvcParser ctx, CVC4::Expr& f)
             	        	        	        	        }
 
 
-            	        	        	        	         MATCHT(DOT, &FOLLOW_DOT_in_term5057);
+            	        	        	        	         MATCHT(DOT, &FOLLOW_DOT_in_term5085);
             	        	        	        	        if  (HASEXCEPTION())
             	        	        	        	        {
             	        	        	        	            goto ruletermEx;
@@ -17043,7 +13643,7 @@ term(pCvcParser ctx, CVC4::Expr& f)
             	        	        	        	        }
 
 
-            	        	        	        	        FOLLOWPUSH(FOLLOW_recordStore_in_term5059);
+            	        	        	        	        FOLLOWPUSH(FOLLOW_recordStore_in_term5087);
             	        	        	        	        recordStore(ctx, f);
 
             	        	        	        	        FOLLOWPOP();
@@ -17083,7 +13683,7 @@ term(pCvcParser ctx, CVC4::Expr& f)
             	    }
             	    break;
             	case 2:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1567:7: ( arithmeticBinop[op] uminusTerm[f] )*
+            	    // ../../../../src/parser/cvc/Cvc.g:1573:7: ( arithmeticBinop[op] uminusTerm[f] )*
             	    {
             	        if ( BACKTRACKING==0 )
             	        {
@@ -17091,7 +13691,7 @@ term(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	        // ../../../../../../src/parser/cvc/Cvc.g:1568:7: ( arithmeticBinop[op] uminusTerm[f] )*
+            	        // ../../../../src/parser/cvc/Cvc.g:1574:7: ( arithmeticBinop[op] uminusTerm[f] )*
 
             	        for (;;)
             	        {
@@ -17115,9 +13715,9 @@ term(pCvcParser ctx, CVC4::Expr& f)
             	            switch (alt73)
             	            {
             	        	case 1:
-            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1568:9: arithmeticBinop[op] uminusTerm[f]
+            	        	    // ../../../../src/parser/cvc/Cvc.g:1574:9: arithmeticBinop[op] uminusTerm[f]
             	        	    {
-            	        	        FOLLOWPUSH(FOLLOW_arithmeticBinop_in_term5085);
+            	        	        FOLLOWPUSH(FOLLOW_arithmeticBinop_in_term5113);
             	        	        arithmeticBinop(ctx, op);
 
             	        	        FOLLOWPOP();
@@ -17131,7 +13731,7 @@ term(pCvcParser ctx, CVC4::Expr& f)
             	        	        }
 
 
-            	        	        FOLLOWPUSH(FOLLOW_uminusTerm_in_term5088);
+            	        	        FOLLOWPUSH(FOLLOW_uminusTerm_in_term5116);
             	        	        uminusTerm(ctx, f);
 
             	        	        FOLLOWPOP();
@@ -17194,7 +13794,7 @@ term(pCvcParser ctx, CVC4::Expr& f)
 
 /**
  * $ANTLR start arrayStore
- * ../../../../../../src/parser/cvc/Cvc.g:1577:1: arrayStore[CVC4::Expr& f] : LBRACKET formula[k] RBRACKET ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] ) ;
+ * ../../../../src/parser/cvc/Cvc.g:1583:1: arrayStore[CVC4::Expr& f] : LBRACKET formula[k] RBRACKET ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] ) ;
  */
 static void
 arrayStore(pCvcParser ctx, CVC4::Expr& f)
@@ -17206,10 +13806,10 @@ arrayStore(pCvcParser ctx, CVC4::Expr& f)
       Expr f2, k;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1581:3: ( LBRACKET formula[k] RBRACKET ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] ) )
-        // ../../../../../../src/parser/cvc/Cvc.g:1581:5: LBRACKET formula[k] RBRACKET ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] )
+        // ../../../../src/parser/cvc/Cvc.g:1587:3: ( LBRACKET formula[k] RBRACKET ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] ) )
+        // ../../../../src/parser/cvc/Cvc.g:1587:5: LBRACKET formula[k] RBRACKET ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] )
         {
-             MATCHT(LBRACKET, &FOLLOW_LBRACKET_in_arrayStore5129);
+             MATCHT(LBRACKET, &FOLLOW_LBRACKET_in_arrayStore5157);
             if  (HASEXCEPTION())
             {
                 goto rulearrayStoreEx;
@@ -17220,7 +13820,7 @@ arrayStore(pCvcParser ctx, CVC4::Expr& f)
             }
 
 
-            FOLLOWPUSH(FOLLOW_formula_in_arrayStore5131);
+            FOLLOWPUSH(FOLLOW_formula_in_arrayStore5159);
             formula(ctx, k);
 
             FOLLOWPOP();
@@ -17234,7 +13834,7 @@ arrayStore(pCvcParser ctx, CVC4::Expr& f)
             }
 
 
-             MATCHT(RBRACKET, &FOLLOW_RBRACKET_in_arrayStore5134);
+             MATCHT(RBRACKET, &FOLLOW_RBRACKET_in_arrayStore5162);
             if  (HASEXCEPTION())
             {
                 goto rulearrayStoreEx;
@@ -17251,7 +13851,7 @@ arrayStore(pCvcParser ctx, CVC4::Expr& f)
             }
 
 
-            // ../../../../../../src/parser/cvc/Cvc.g:1583:5: ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] )
+            // ../../../../src/parser/cvc/Cvc.g:1589:5: ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] )
             {
                 int alt77=2;
                 switch ( LA(1) )
@@ -17289,9 +13889,9 @@ arrayStore(pCvcParser ctx, CVC4::Expr& f)
                 switch (alt77)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1583:7: ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) )
+            	    // ../../../../src/parser/cvc/Cvc.g:1589:7: ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) )
             	    {
-            	        // ../../../../../../src/parser/cvc/Cvc.g:1583:7: ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) )
+            	        // ../../../../src/parser/cvc/Cvc.g:1589:7: ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) )
             	        {
             	            int alt76=2;
             	            switch ( LA(1) )
@@ -17328,9 +13928,9 @@ arrayStore(pCvcParser ctx, CVC4::Expr& f)
             	            switch (alt76)
             	            {
             	        	case 1:
-            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1583:9: arrayStore[f2]
+            	        	    // ../../../../src/parser/cvc/Cvc.g:1589:9: arrayStore[f2]
             	        	    {
-            	        	        FOLLOWPUSH(FOLLOW_arrayStore_in_arrayStore5150);
+            	        	        FOLLOWPUSH(FOLLOW_arrayStore_in_arrayStore5178);
             	        	        arrayStore(ctx, f2);
 
             	        	        FOLLOWPOP();
@@ -17347,9 +13947,9 @@ arrayStore(pCvcParser ctx, CVC4::Expr& f)
             	        	    }
             	        	    break;
             	        	case 2:
-            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1584:9: DOT ( tupleStore[f2] | recordStore[f2] )
+            	        	    // ../../../../src/parser/cvc/Cvc.g:1590:9: DOT ( tupleStore[f2] | recordStore[f2] )
             	        	    {
-            	        	         MATCHT(DOT, &FOLLOW_DOT_in_arrayStore5161);
+            	        	         MATCHT(DOT, &FOLLOW_DOT_in_arrayStore5189);
             	        	        if  (HASEXCEPTION())
             	        	        {
             	        	            goto rulearrayStoreEx;
@@ -17360,7 +13960,7 @@ arrayStore(pCvcParser ctx, CVC4::Expr& f)
             	        	        }
 
 
-            	        	        // ../../../../../../src/parser/cvc/Cvc.g:1584:13: ( tupleStore[f2] | recordStore[f2] )
+            	        	        // ../../../../src/parser/cvc/Cvc.g:1590:13: ( tupleStore[f2] | recordStore[f2] )
             	        	        {
             	        	            int alt75=2;
             	        	            switch ( LA(1) )
@@ -17397,9 +13997,9 @@ arrayStore(pCvcParser ctx, CVC4::Expr& f)
             	        	            switch (alt75)
             	        	            {
             	        	        	case 1:
-            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1584:15: tupleStore[f2]
+            	        	        	    // ../../../../src/parser/cvc/Cvc.g:1590:15: tupleStore[f2]
             	        	        	    {
-            	        	        	        FOLLOWPUSH(FOLLOW_tupleStore_in_arrayStore5165);
+            	        	        	        FOLLOWPUSH(FOLLOW_tupleStore_in_arrayStore5193);
             	        	        	        tupleStore(ctx, f2);
 
             	        	        	        FOLLOWPOP();
@@ -17416,9 +14016,9 @@ arrayStore(pCvcParser ctx, CVC4::Expr& f)
             	        	        	    }
             	        	        	    break;
             	        	        	case 2:
-            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1585:15: recordStore[f2]
+            	        	        	    // ../../../../src/parser/cvc/Cvc.g:1591:15: recordStore[f2]
             	        	        	    {
-            	        	        	        FOLLOWPUSH(FOLLOW_recordStore_in_arrayStore5182);
+            	        	        	        FOLLOWPUSH(FOLLOW_recordStore_in_arrayStore5210);
             	        	        	        recordStore(ctx, f2);
 
             	        	        	        FOLLOWPOP();
@@ -17447,9 +14047,9 @@ arrayStore(pCvcParser ctx, CVC4::Expr& f)
             	    }
             	    break;
             	case 2:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1586:7: ASSIGN_TOK term[f2]
+            	    // ../../../../src/parser/cvc/Cvc.g:1592:7: ASSIGN_TOK term[f2]
             	    {
-            	         MATCHT(ASSIGN_TOK, &FOLLOW_ASSIGN_TOK_in_arrayStore5195);
+            	         MATCHT(ASSIGN_TOK, &FOLLOW_ASSIGN_TOK_in_arrayStore5223);
             	        if  (HASEXCEPTION())
             	        {
             	            goto rulearrayStoreEx;
@@ -17460,7 +14060,7 @@ arrayStore(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_term_in_arrayStore5197);
+            	        FOLLOWPUSH(FOLLOW_term_in_arrayStore5225);
             	        term(ctx, f2);
 
             	        FOLLOWPOP();
@@ -17506,7 +14106,7 @@ arrayStore(pCvcParser ctx, CVC4::Expr& f)
 
 /**
  * $ANTLR start tupleStore
- * ../../../../../../src/parser/cvc/Cvc.g:1594:1: tupleStore[CVC4::Expr& f] : k= numeral ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] ) ;
+ * ../../../../src/parser/cvc/Cvc.g:1600:1: tupleStore[CVC4::Expr& f] : k= numeral ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] ) ;
  */
 static void
 tupleStore(pCvcParser ctx, CVC4::Expr& f)
@@ -17522,10 +14122,10 @@ tupleStore(pCvcParser ctx, CVC4::Expr& f)
       Expr f2;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1598:3: (k= numeral ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] ) )
-        // ../../../../../../src/parser/cvc/Cvc.g:1598:5: k= numeral ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] )
+        // ../../../../src/parser/cvc/Cvc.g:1604:3: (k= numeral ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] ) )
+        // ../../../../src/parser/cvc/Cvc.g:1604:5: k= numeral ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] )
         {
-            FOLLOWPUSH(FOLLOW_numeral_in_tupleStore5229);
+            FOLLOWPUSH(FOLLOW_numeral_in_tupleStore5257);
             k=numeral(ctx);
 
             FOLLOWPOP();
@@ -17560,7 +14160,7 @@ tupleStore(pCvcParser ctx, CVC4::Expr& f)
             }
 
 
-            // ../../../../../../src/parser/cvc/Cvc.g:1615:5: ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] )
+            // ../../../../src/parser/cvc/Cvc.g:1621:5: ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] )
             {
                 int alt80=2;
                 switch ( LA(1) )
@@ -17598,9 +14198,9 @@ tupleStore(pCvcParser ctx, CVC4::Expr& f)
                 switch (alt80)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1615:7: ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) )
+            	    // ../../../../src/parser/cvc/Cvc.g:1621:7: ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) )
             	    {
-            	        // ../../../../../../src/parser/cvc/Cvc.g:1615:7: ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) )
+            	        // ../../../../src/parser/cvc/Cvc.g:1621:7: ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) )
             	        {
             	            int alt79=2;
             	            switch ( LA(1) )
@@ -17637,9 +14237,9 @@ tupleStore(pCvcParser ctx, CVC4::Expr& f)
             	            switch (alt79)
             	            {
             	        	case 1:
-            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1615:9: arrayStore[f2]
+            	        	    // ../../../../src/parser/cvc/Cvc.g:1621:9: arrayStore[f2]
             	        	    {
-            	        	        FOLLOWPUSH(FOLLOW_arrayStore_in_tupleStore5245);
+            	        	        FOLLOWPUSH(FOLLOW_arrayStore_in_tupleStore5273);
             	        	        arrayStore(ctx, f2);
 
             	        	        FOLLOWPOP();
@@ -17656,9 +14256,9 @@ tupleStore(pCvcParser ctx, CVC4::Expr& f)
             	        	    }
             	        	    break;
             	        	case 2:
-            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1616:9: DOT ( tupleStore[f2] | recordStore[f2] )
+            	        	    // ../../../../src/parser/cvc/Cvc.g:1622:9: DOT ( tupleStore[f2] | recordStore[f2] )
             	        	    {
-            	        	         MATCHT(DOT, &FOLLOW_DOT_in_tupleStore5256);
+            	        	         MATCHT(DOT, &FOLLOW_DOT_in_tupleStore5284);
             	        	        if  (HASEXCEPTION())
             	        	        {
             	        	            goto ruletupleStoreEx;
@@ -17669,7 +14269,7 @@ tupleStore(pCvcParser ctx, CVC4::Expr& f)
             	        	        }
 
 
-            	        	        // ../../../../../../src/parser/cvc/Cvc.g:1616:13: ( tupleStore[f2] | recordStore[f2] )
+            	        	        // ../../../../src/parser/cvc/Cvc.g:1622:13: ( tupleStore[f2] | recordStore[f2] )
             	        	        {
             	        	            int alt78=2;
             	        	            switch ( LA(1) )
@@ -17706,9 +14306,9 @@ tupleStore(pCvcParser ctx, CVC4::Expr& f)
             	        	            switch (alt78)
             	        	            {
             	        	        	case 1:
-            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1616:15: tupleStore[f2]
+            	        	        	    // ../../../../src/parser/cvc/Cvc.g:1622:15: tupleStore[f2]
             	        	        	    {
-            	        	        	        FOLLOWPUSH(FOLLOW_tupleStore_in_tupleStore5260);
+            	        	        	        FOLLOWPUSH(FOLLOW_tupleStore_in_tupleStore5288);
             	        	        	        tupleStore(ctx, f2);
 
             	        	        	        FOLLOWPOP();
@@ -17725,9 +14325,9 @@ tupleStore(pCvcParser ctx, CVC4::Expr& f)
             	        	        	    }
             	        	        	    break;
             	        	        	case 2:
-            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1617:15: recordStore[f2]
+            	        	        	    // ../../../../src/parser/cvc/Cvc.g:1623:15: recordStore[f2]
             	        	        	    {
-            	        	        	        FOLLOWPUSH(FOLLOW_recordStore_in_tupleStore5277);
+            	        	        	        FOLLOWPUSH(FOLLOW_recordStore_in_tupleStore5305);
             	        	        	        recordStore(ctx, f2);
 
             	        	        	        FOLLOWPOP();
@@ -17756,9 +14356,9 @@ tupleStore(pCvcParser ctx, CVC4::Expr& f)
             	    }
             	    break;
             	case 2:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1618:7: ASSIGN_TOK term[f2]
+            	    // ../../../../src/parser/cvc/Cvc.g:1624:7: ASSIGN_TOK term[f2]
             	    {
-            	         MATCHT(ASSIGN_TOK, &FOLLOW_ASSIGN_TOK_in_tupleStore5290);
+            	         MATCHT(ASSIGN_TOK, &FOLLOW_ASSIGN_TOK_in_tupleStore5318);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruletupleStoreEx;
@@ -17769,7 +14369,7 @@ tupleStore(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_term_in_tupleStore5292);
+            	        FOLLOWPUSH(FOLLOW_term_in_tupleStore5320);
             	        term(ctx, f2);
 
             	        FOLLOWPOP();
@@ -17815,7 +14415,7 @@ tupleStore(pCvcParser ctx, CVC4::Expr& f)
 
 /**
  * $ANTLR start recordStore
- * ../../../../../../src/parser/cvc/Cvc.g:1626:1: recordStore[CVC4::Expr& f] : identifier[id,CHECK_NONE,SYM_VARIABLE] ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] ) ;
+ * ../../../../src/parser/cvc/Cvc.g:1632:1: recordStore[CVC4::Expr& f] : identifier[id,CHECK_NONE,SYM_VARIABLE] ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] ) ;
  */
 static void
 recordStore(pCvcParser ctx, CVC4::Expr& f)
@@ -17828,10 +14428,10 @@ recordStore(pCvcParser ctx, CVC4::Expr& f)
       Expr f2;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1631:3: ( identifier[id,CHECK_NONE,SYM_VARIABLE] ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] ) )
-        // ../../../../../../src/parser/cvc/Cvc.g:1631:5: identifier[id,CHECK_NONE,SYM_VARIABLE] ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] )
+        // ../../../../src/parser/cvc/Cvc.g:1637:3: ( identifier[id,CHECK_NONE,SYM_VARIABLE] ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] ) )
+        // ../../../../src/parser/cvc/Cvc.g:1637:5: identifier[id,CHECK_NONE,SYM_VARIABLE] ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] )
         {
-            FOLLOWPUSH(FOLLOW_identifier_in_recordStore5322);
+            FOLLOWPUSH(FOLLOW_identifier_in_recordStore5350);
             identifier(ctx, id, CHECK_NONE, SYM_VARIABLE);
 
             FOLLOWPOP();
@@ -17868,7 +14468,7 @@ recordStore(pCvcParser ctx, CVC4::Expr& f)
             }
 
 
-            // ../../../../../../src/parser/cvc/Cvc.g:1650:5: ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] )
+            // ../../../../src/parser/cvc/Cvc.g:1656:5: ( ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) ) | ASSIGN_TOK term[f2] )
             {
                 int alt83=2;
                 switch ( LA(1) )
@@ -17906,9 +14506,9 @@ recordStore(pCvcParser ctx, CVC4::Expr& f)
                 switch (alt83)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1650:7: ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) )
+            	    // ../../../../src/parser/cvc/Cvc.g:1656:7: ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) )
             	    {
-            	        // ../../../../../../src/parser/cvc/Cvc.g:1650:7: ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) )
+            	        // ../../../../src/parser/cvc/Cvc.g:1656:7: ( arrayStore[f2] | DOT ( tupleStore[f2] | recordStore[f2] ) )
             	        {
             	            int alt82=2;
             	            switch ( LA(1) )
@@ -17945,9 +14545,9 @@ recordStore(pCvcParser ctx, CVC4::Expr& f)
             	            switch (alt82)
             	            {
             	        	case 1:
-            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1650:9: arrayStore[f2]
+            	        	    // ../../../../src/parser/cvc/Cvc.g:1656:9: arrayStore[f2]
             	        	    {
-            	        	        FOLLOWPUSH(FOLLOW_arrayStore_in_recordStore5339);
+            	        	        FOLLOWPUSH(FOLLOW_arrayStore_in_recordStore5367);
             	        	        arrayStore(ctx, f2);
 
             	        	        FOLLOWPOP();
@@ -17964,9 +14564,9 @@ recordStore(pCvcParser ctx, CVC4::Expr& f)
             	        	    }
             	        	    break;
             	        	case 2:
-            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1651:9: DOT ( tupleStore[f2] | recordStore[f2] )
+            	        	    // ../../../../src/parser/cvc/Cvc.g:1657:9: DOT ( tupleStore[f2] | recordStore[f2] )
             	        	    {
-            	        	         MATCHT(DOT, &FOLLOW_DOT_in_recordStore5350);
+            	        	         MATCHT(DOT, &FOLLOW_DOT_in_recordStore5378);
             	        	        if  (HASEXCEPTION())
             	        	        {
             	        	            goto rulerecordStoreEx;
@@ -17977,7 +14577,7 @@ recordStore(pCvcParser ctx, CVC4::Expr& f)
             	        	        }
 
 
-            	        	        // ../../../../../../src/parser/cvc/Cvc.g:1651:13: ( tupleStore[f2] | recordStore[f2] )
+            	        	        // ../../../../src/parser/cvc/Cvc.g:1657:13: ( tupleStore[f2] | recordStore[f2] )
             	        	        {
             	        	            int alt81=2;
             	        	            switch ( LA(1) )
@@ -18014,9 +14614,9 @@ recordStore(pCvcParser ctx, CVC4::Expr& f)
             	        	            switch (alt81)
             	        	            {
             	        	        	case 1:
-            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1651:15: tupleStore[f2]
+            	        	        	    // ../../../../src/parser/cvc/Cvc.g:1657:15: tupleStore[f2]
             	        	        	    {
-            	        	        	        FOLLOWPUSH(FOLLOW_tupleStore_in_recordStore5354);
+            	        	        	        FOLLOWPUSH(FOLLOW_tupleStore_in_recordStore5382);
             	        	        	        tupleStore(ctx, f2);
 
             	        	        	        FOLLOWPOP();
@@ -18033,9 +14633,9 @@ recordStore(pCvcParser ctx, CVC4::Expr& f)
             	        	        	    }
             	        	        	    break;
             	        	        	case 2:
-            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1652:15: recordStore[f2]
+            	        	        	    // ../../../../src/parser/cvc/Cvc.g:1658:15: recordStore[f2]
             	        	        	    {
-            	        	        	        FOLLOWPUSH(FOLLOW_recordStore_in_recordStore5371);
+            	        	        	        FOLLOWPUSH(FOLLOW_recordStore_in_recordStore5399);
             	        	        	        recordStore(ctx, f2);
 
             	        	        	        FOLLOWPOP();
@@ -18064,9 +14664,9 @@ recordStore(pCvcParser ctx, CVC4::Expr& f)
             	    }
             	    break;
             	case 2:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1653:7: ASSIGN_TOK term[f2]
+            	    // ../../../../src/parser/cvc/Cvc.g:1659:7: ASSIGN_TOK term[f2]
             	    {
-            	         MATCHT(ASSIGN_TOK, &FOLLOW_ASSIGN_TOK_in_recordStore5384);
+            	         MATCHT(ASSIGN_TOK, &FOLLOW_ASSIGN_TOK_in_recordStore5412);
             	        if  (HASEXCEPTION())
             	        {
             	            goto rulerecordStoreEx;
@@ -18077,7 +14677,7 @@ recordStore(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_term_in_recordStore5386);
+            	        FOLLOWPUSH(FOLLOW_term_in_recordStore5414);
             	        term(ctx, f2);
 
             	        FOLLOWPOP();
@@ -18123,7 +14723,7 @@ recordStore(pCvcParser ctx, CVC4::Expr& f)
 
 /**
  * $ANTLR start uminusTerm
- * ../../../../../../src/parser/cvc/Cvc.g:1658:1: uminusTerm[CVC4::Expr& f] : ( ( MINUS_TOK )+ bvBinaryOpTerm[f] | bvBinaryOpTerm[f] );
+ * ../../../../src/parser/cvc/Cvc.g:1664:1: uminusTerm[CVC4::Expr& f] : ( ( MINUS_TOK )+ bvBinaryOpTerm[f] | bvBinaryOpTerm[f] );
  */
 static void
 uminusTerm(pCvcParser ctx, CVC4::Expr& f)
@@ -18136,7 +14736,7 @@ uminusTerm(pCvcParser ctx, CVC4::Expr& f)
 
     {
         {
-            //  ../../../../../../src/parser/cvc/Cvc.g:1663:3: ( ( MINUS_TOK )+ bvBinaryOpTerm[f] | bvBinaryOpTerm[f] )
+            //  ../../../../src/parser/cvc/Cvc.g:1669:3: ( ( MINUS_TOK )+ bvBinaryOpTerm[f] | bvBinaryOpTerm[f] )
 
             ANTLR3_UINT32 alt85;
 
@@ -18190,12 +14790,12 @@ uminusTerm(pCvcParser ctx, CVC4::Expr& f)
             case FLOOR_TOK:
             case HEX_LITERAL:
             case IDENTIFIER:
+            case IDEN_TOK:
             case IF_TOK:
             case INTEGER_LITERAL:
             case IS_INTEGER_TOK:
             case LBRACE:
             case LPAREN:
-            case NOT_TOK:
             case PARENHASH:
             case SETS_CARD_TOK:
             case STRING_CONCAT_TOK:
@@ -18245,9 +14845,9 @@ uminusTerm(pCvcParser ctx, CVC4::Expr& f)
             switch (alt85)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1663:5: ( MINUS_TOK )+ bvBinaryOpTerm[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:1669:5: ( MINUS_TOK )+ bvBinaryOpTerm[f]
         	    {
-        	        // ../../../../../../src/parser/cvc/Cvc.g:1663:5: ( MINUS_TOK )+
+        	        // ../../../../src/parser/cvc/Cvc.g:1669:5: ( MINUS_TOK )+
         	        {
         	            int cnt84=0;
 
@@ -18267,9 +14867,9 @@ uminusTerm(pCvcParser ctx, CVC4::Expr& f)
         	        	switch (alt84)
         	        	{
         	        	    case 1:
-        	        	        // ../../../../../../src/parser/cvc/Cvc.g:1663:6: MINUS_TOK
+        	        	        // ../../../../src/parser/cvc/Cvc.g:1669:6: MINUS_TOK
         	        	        {
-        	        	             MATCHT(MINUS_TOK, &FOLLOW_MINUS_TOK_in_uminusTerm5423);
+        	        	             MATCHT(MINUS_TOK, &FOLLOW_MINUS_TOK_in_uminusTerm5451);
         	        	            if  (HASEXCEPTION())
         	        	            {
         	        	                goto ruleuminusTermEx;
@@ -18315,7 +14915,7 @@ uminusTerm(pCvcParser ctx, CVC4::Expr& f)
         	            loop84: ;	/* Jump to here if this rule does not match */
         	        }
 
-        	        FOLLOWPUSH(FOLLOW_bvBinaryOpTerm_in_uminusTerm5429);
+        	        FOLLOWPUSH(FOLLOW_bvBinaryOpTerm_in_uminusTerm5457);
         	        bvBinaryOpTerm(ctx, f);
 
         	        FOLLOWPOP();
@@ -18338,9 +14938,9 @@ uminusTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1665:5: bvBinaryOpTerm[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:1671:5: bvBinaryOpTerm[f]
         	    {
-        	        FOLLOWPUSH(FOLLOW_bvBinaryOpTerm_in_uminusTerm5442);
+        	        FOLLOWPUSH(FOLLOW_bvBinaryOpTerm_in_uminusTerm5470);
         	        bvBinaryOpTerm(ctx, f);
 
         	        FOLLOWPOP();
@@ -18377,7 +14977,7 @@ uminusTerm(pCvcParser ctx, CVC4::Expr& f)
 
 /**
  * $ANTLR start bvBinaryOpTerm
- * ../../../../../../src/parser/cvc/Cvc.g:1669:1: bvBinaryOpTerm[CVC4::Expr& f] : bvNegTerm[f] ( bvBinop[op] bvNegTerm[f] )* ;
+ * ../../../../src/parser/cvc/Cvc.g:1675:1: bvBinaryOpTerm[CVC4::Expr& f] : bvNegTerm[f] ( bvBinop[op] bvNegTerm[f] )* ;
  */
 static void
 bvBinaryOpTerm(pCvcParser ctx, CVC4::Expr& f)
@@ -18391,10 +14991,10 @@ bvBinaryOpTerm(pCvcParser ctx, CVC4::Expr& f)
       unsigned op;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1675:3: ( bvNegTerm[f] ( bvBinop[op] bvNegTerm[f] )* )
-        // ../../../../../../src/parser/cvc/Cvc.g:1675:5: bvNegTerm[f] ( bvBinop[op] bvNegTerm[f] )*
+        // ../../../../src/parser/cvc/Cvc.g:1681:3: ( bvNegTerm[f] ( bvBinop[op] bvNegTerm[f] )* )
+        // ../../../../src/parser/cvc/Cvc.g:1681:5: bvNegTerm[f] ( bvBinop[op] bvNegTerm[f] )*
         {
-            FOLLOWPUSH(FOLLOW_bvNegTerm_in_bvBinaryOpTerm5464);
+            FOLLOWPUSH(FOLLOW_bvNegTerm_in_bvBinaryOpTerm5492);
             bvNegTerm(ctx, f);
 
             FOLLOWPOP();
@@ -18414,7 +15014,7 @@ bvBinaryOpTerm(pCvcParser ctx, CVC4::Expr& f)
             }
 
 
-            // ../../../../../../src/parser/cvc/Cvc.g:1676:5: ( bvBinop[op] bvNegTerm[f] )*
+            // ../../../../src/parser/cvc/Cvc.g:1682:5: ( bvBinop[op] bvNegTerm[f] )*
 
             for (;;)
             {
@@ -18479,12 +15079,12 @@ bvBinaryOpTerm(pCvcParser ctx, CVC4::Expr& f)
                 		case FLOOR_TOK:
                 		case HEX_LITERAL:
                 		case IDENTIFIER:
+                		case IDEN_TOK:
                 		case IF_TOK:
                 		case INTEGER_LITERAL:
                 		case IS_INTEGER_TOK:
                 		case LBRACE:
                 		case LPAREN:
-                		case NOT_TOK:
                 		case PARENHASH:
                 		case SETS_CARD_TOK:
                 		case STRING_CONCAT_TOK:
@@ -18529,9 +15129,9 @@ bvBinaryOpTerm(pCvcParser ctx, CVC4::Expr& f)
                 switch (alt86)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1676:7: bvBinop[op] bvNegTerm[f]
+            	    // ../../../../src/parser/cvc/Cvc.g:1682:7: bvBinop[op] bvNegTerm[f]
             	    {
-            	        FOLLOWPUSH(FOLLOW_bvBinop_in_bvBinaryOpTerm5475);
+            	        FOLLOWPUSH(FOLLOW_bvBinop_in_bvBinaryOpTerm5503);
             	        bvBinop(ctx, op);
 
             	        FOLLOWPOP();
@@ -18545,7 +15145,7 @@ bvBinaryOpTerm(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_bvNegTerm_in_bvBinaryOpTerm5478);
+            	        FOLLOWPUSH(FOLLOW_bvNegTerm_in_bvBinaryOpTerm5506);
             	        bvNegTerm(ctx, f);
 
             	        FOLLOWPOP();
@@ -18602,7 +15202,7 @@ bvBinaryOpTerm(pCvcParser ctx, CVC4::Expr& f)
 
 /**
  * $ANTLR start bvBinop
- * ../../../../../../src/parser/cvc/Cvc.g:1679:1: bvBinop[unsigned& op] : ( CONCAT_TOK | BAR | BVAND_TOK );
+ * ../../../../src/parser/cvc/Cvc.g:1685:1: bvBinop[unsigned& op] : ( CONCAT_TOK | BAR | BVAND_TOK );
  */
 static void
 bvBinop(pCvcParser ctx, unsigned& op)
@@ -18614,8 +15214,8 @@ bvBinop(pCvcParser ctx, unsigned& op)
       op = LT(1)->getType(LT(1));
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1683:3: ( CONCAT_TOK | BAR | BVAND_TOK )
-        // ../../../../../../src/parser/cvc/Cvc.g:
+        // ../../../../src/parser/cvc/Cvc.g:1689:3: ( CONCAT_TOK | BAR | BVAND_TOK )
+        // ../../../../src/parser/cvc/Cvc.g:
         {
             if ( LA(1) == BAR || LA(1) == BVAND_TOK || LA(1) == CONCAT_TOK )
             {
@@ -18623,9 +15223,142 @@ bvBinop(pCvcParser ctx, unsigned& op)
                 PERRORRECOVERY=ANTLR3_FALSE;
                 FAILEDFLAG=ANTLR3_FALSE;
 
-            }
-            else
-            {
+            }
+            else
+            {
+                if (BACKTRACKING>0)
+                {
+                    FAILEDFLAG = ANTLR3_TRUE;
+                    return ;
+                }
+
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
+                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
+                EXCEPTION->expectingSet = NULL;
+
+                goto rulebvBinopEx;
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto rulebvBinopEx; /* Prevent compiler warnings */
+    rulebvBinopEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end bvBinop */
+
+/**
+ * $ANTLR start bvNegTerm
+ * ../../../../src/parser/cvc/Cvc.g:1694:1: bvNegTerm[CVC4::Expr& f] : ( BVNEG_TOK bvNegTerm[f] | relationTerm[f] );
+ */
+static void
+bvNegTerm(pCvcParser ctx, CVC4::Expr& f)
+{
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../src/parser/cvc/Cvc.g:1696:3: ( BVNEG_TOK bvNegTerm[f] | relationTerm[f] )
+
+            ANTLR3_UINT32 alt87;
+
+            alt87=2;
+
+            switch ( LA(1) )
+            {
+            case BVNEG_TOK:
+            	{
+            		alt87=1;
+            	}
+                break;
+            case ABS_TOK:
+            case ARRAY_TOK:
+            case BAR:
+            case BINARY_LITERAL:
+            case BVASHR_TOK:
+            case BVCOMP_TOK:
+            case BVGE_TOK:
+            case BVGT_TOK:
+            case BVLE_TOK:
+            case BVLSHR_TOK:
+            case BVLT_TOK:
+            case BVMULT_TOK:
+            case BVNAND_TOK:
+            case BVNOR_TOK:
+            case BVPLUS_TOK:
+            case BVREPEAT_TOK:
+            case BVROTL_TOK:
+            case BVROTR_TOK:
+            case BVSDIV_TOK:
+            case BVSGE_TOK:
+            case BVSGT_TOK:
+            case BVSHL_TOK:
+            case BVSLE_TOK:
+            case BVSLT_TOK:
+            case BVSMOD_TOK:
+            case BVSREM_TOK:
+            case BVSUB_TOK:
+            case BVUDIV_TOK:
+            case BVUMINUS_TOK:
+            case BVUREM_TOK:
+            case BVXNOR_TOK:
+            case BVXOR_TOK:
+            case BVZEROEXTEND_TOK:
+            case DECIMAL_LITERAL:
+            case DISTINCT_TOK:
+            case DIVISIBLE_TOK:
+            case FALSE_TOK:
+            case FLOOR_TOK:
+            case HEX_LITERAL:
+            case IDENTIFIER:
+            case IDEN_TOK:
+            case IF_TOK:
+            case INTEGER_LITERAL:
+            case IS_INTEGER_TOK:
+            case LBRACE:
+            case LPAREN:
+            case PARENHASH:
+            case SETS_CARD_TOK:
+            case STRING_CONCAT_TOK:
+            case STRING_CONTAINS_TOK:
+            case STRING_INDEXOF_TOK:
+            case STRING_ITOS_TOK:
+            case STRING_LENGTH_TOK:
+            case STRING_LITERAL:
+            case STRING_PREFIXOF_TOK:
+            case STRING_REPLACE_TOK:
+            case STRING_STOI_TOK:
+            case STRING_STOU16_TOK:
+            case STRING_STOU32_TOK:
+            case STRING_SUBSTR_TOK:
+            case STRING_SUFFIXOF_TOK:
+            case STRING_U16TOS_TOK:
+            case STRING_U32TOS_TOK:
+            case SX_TOK:
+            case TRANSCLOSURE_TOK:
+            case TRANSPOSE_TOK:
+            case TRUE_TOK:
+            case TUPLE_TOK:
+            case UNIVSET_TOK:
+            	{
+            		alt87=2;
+            	}
+                break;
+
+            default:
                 if (BACKTRACKING>0)
                 {
                     FAILEDFLAG = ANTLR3_TRUE;
@@ -18633,22 +15366,82 @@ bvBinop(pCvcParser ctx, unsigned& op)
                 }
 
                 CONSTRUCTEX();
-                EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
-                EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
-                EXCEPTION->expectingSet = NULL;
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 87;
+                EXCEPTION->state        = 0;
+
+
+                goto rulebvNegTermEx;
 
-                goto rulebvBinopEx;
             }
 
+            switch (alt87)
+            {
+        	case 1:
+        	    // ../../../../src/parser/cvc/Cvc.g:1696:5: BVNEG_TOK bvNegTerm[f]
+        	    {
+        	         MATCHT(BVNEG_TOK, &FOLLOW_BVNEG_TOK_in_bvNegTerm5569);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvNegTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_bvNegTerm_in_bvNegTerm5571);
+        	        bvNegTerm(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvNegTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
+
+
+        	        if ( BACKTRACKING==0 )
+        	        {
+        	             f = f.getType().isSet() ? MK_EXPR(CVC4::kind::COMPLEMENT, f) : MK_EXPR(CVC4::kind::BITVECTOR_NOT, f); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 2:
+        	    // ../../../../src/parser/cvc/Cvc.g:1698:5: relationTerm[f]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_relationTerm_in_bvNegTerm5584);
+        	        relationTerm(ctx, f);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulebvNegTermEx;
+        	        }
+        	        if (HASFAILED())
+        	        {
+        	            return ;
+        	        }
 
-        }
 
+        	    }
+        	    break;
+
+            }
+        }
     }
 
     // This is where rules clean up and exit
     //
-    goto rulebvBinopEx; /* Prevent compiler warnings */
-    rulebvBinopEx: ;
+    goto rulebvNegTermEx; /* Prevent compiler warnings */
+    rulebvNegTermEx: ;
 
             if (HASEXCEPTION())
             {
@@ -18657,51 +15450,46 @@ bvBinop(pCvcParser ctx, unsigned& op)
             }
     return ;
 }
-/* $ANTLR end bvBinop */
+/* $ANTLR end bvNegTerm */
 
 /**
- * $ANTLR start bvNegTerm
- * ../../../../../../src/parser/cvc/Cvc.g:1688:1: bvNegTerm[CVC4::Expr& f] : ( BVNEG_TOK bvNegTerm[f] | NOT_TOK bvNegTerm[f] | TRANSPOSE_TOK bvNegTerm[f] | TRANSCLOSURE_TOK bvNegTerm[f] | TUPLE_TOK LPAREN bvNegTerm[f] RPAREN | postfixTerm[f] );
+ * $ANTLR start relationTerm
+ * ../../../../src/parser/cvc/Cvc.g:1701:1: relationTerm[CVC4::Expr& f] : ( TRANSPOSE_TOK relationTerm[f] | TRANSCLOSURE_TOK relationTerm[f] | TUPLE_TOK LPAREN relationTerm[f] RPAREN | IDEN_TOK relationTerm[f] | postfixTerm[f] );
  */
 static void
-bvNegTerm(pCvcParser ctx, CVC4::Expr& f)
+relationTerm(pCvcParser ctx, CVC4::Expr& f)
 {
     /* Initialize rule variables
      */
 
     {
         {
-            //  ../../../../../../src/parser/cvc/Cvc.g:1690:3: ( BVNEG_TOK bvNegTerm[f] | NOT_TOK bvNegTerm[f] | TRANSPOSE_TOK bvNegTerm[f] | TRANSCLOSURE_TOK bvNegTerm[f] | TUPLE_TOK LPAREN bvNegTerm[f] RPAREN | postfixTerm[f] )
+            //  ../../../../src/parser/cvc/Cvc.g:1703:3: ( TRANSPOSE_TOK relationTerm[f] | TRANSCLOSURE_TOK relationTerm[f] | TUPLE_TOK LPAREN relationTerm[f] RPAREN | IDEN_TOK relationTerm[f] | postfixTerm[f] )
 
-            ANTLR3_UINT32 alt87;
+            ANTLR3_UINT32 alt88;
 
-            alt87=6;
+            alt88=5;
 
             switch ( LA(1) )
             {
-            case BVNEG_TOK:
-            	{
-            		alt87=1;
-            	}
-                break;
-            case NOT_TOK:
-            	{
-            		alt87=2;
-            	}
-                break;
             case TRANSPOSE_TOK:
             	{
-            		alt87=3;
+            		alt88=1;
             	}
                 break;
             case TRANSCLOSURE_TOK:
             	{
-            		alt87=4;
+            		alt88=2;
             	}
                 break;
             case TUPLE_TOK:
             	{
-            		alt87=5;
+            		alt88=3;
+            	}
+                break;
+            case IDEN_TOK:
+            	{
+            		alt88=4;
             	}
                 break;
             case ABS_TOK:
@@ -18770,7 +15558,7 @@ bvNegTerm(pCvcParser ctx, CVC4::Expr& f)
             case TRUE_TOK:
             case UNIVSET_TOK:
             	{
-            		alt87=6;
+            		alt88=5;
             	}
                 break;
 
@@ -18784,23 +15572,23 @@ bvNegTerm(pCvcParser ctx, CVC4::Expr& f)
                 CONSTRUCTEX();
                 EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
                 EXCEPTION->message      = (void *)"";
-                EXCEPTION->decisionNum  = 87;
+                EXCEPTION->decisionNum  = 88;
                 EXCEPTION->state        = 0;
 
 
-                goto rulebvNegTermEx;
+                goto rulerelationTermEx;
 
             }
 
-            switch (alt87)
+            switch (alt88)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1690:5: BVNEG_TOK bvNegTerm[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:1703:5: TRANSPOSE_TOK relationTerm[f]
         	    {
-        	         MATCHT(BVNEG_TOK, &FOLLOW_BVNEG_TOK_in_bvNegTerm5541);
+        	         MATCHT(TRANSPOSE_TOK, &FOLLOW_TRANSPOSE_TOK_in_relationTerm5605);
         	        if  (HASEXCEPTION())
         	        {
-        	            goto rulebvNegTermEx;
+        	            goto rulerelationTermEx;
         	        }
         	        if (HASFAILED())
         	        {
@@ -18808,13 +15596,13 @@ bvNegTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_bvNegTerm_in_bvNegTerm5543);
-        	        bvNegTerm(ctx, f);
+        	        FOLLOWPUSH(FOLLOW_relationTerm_in_relationTerm5607);
+        	        relationTerm(ctx, f);
 
         	        FOLLOWPOP();
         	        if  (HASEXCEPTION())
         	        {
-        	            goto rulebvNegTermEx;
+        	            goto rulerelationTermEx;
         	        }
         	        if (HASFAILED())
         	        {
@@ -18824,19 +15612,19 @@ bvNegTerm(pCvcParser ctx, CVC4::Expr& f)
 
         	        if ( BACKTRACKING==0 )
         	        {
-        	             f = MK_EXPR(CVC4::kind::BITVECTOR_NOT, f); 
+        	             f = MK_EXPR(CVC4::kind::TRANSPOSE, f); 
         	        }
 
 
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1692:5: NOT_TOK bvNegTerm[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:1705:5: TRANSCLOSURE_TOK relationTerm[f]
         	    {
-        	         MATCHT(NOT_TOK, &FOLLOW_NOT_TOK_in_bvNegTerm5556);
+        	         MATCHT(TRANSCLOSURE_TOK, &FOLLOW_TRANSCLOSURE_TOK_in_relationTerm5621);
         	        if  (HASEXCEPTION())
         	        {
-        	            goto rulebvNegTermEx;
+        	            goto rulerelationTermEx;
         	        }
         	        if (HASFAILED())
         	        {
@@ -18844,13 +15632,13 @@ bvNegTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_bvNegTerm_in_bvNegTerm5558);
-        	        bvNegTerm(ctx, f);
+        	        FOLLOWPUSH(FOLLOW_relationTerm_in_relationTerm5623);
+        	        relationTerm(ctx, f);
 
         	        FOLLOWPOP();
         	        if  (HASEXCEPTION())
         	        {
-        	            goto rulebvNegTermEx;
+        	            goto rulerelationTermEx;
         	        }
         	        if (HASFAILED())
         	        {
@@ -18860,19 +15648,19 @@ bvNegTerm(pCvcParser ctx, CVC4::Expr& f)
 
         	        if ( BACKTRACKING==0 )
         	        {
-        	             f = MK_EXPR(CVC4::kind::COMPLEMENT, f); 
+        	             f = MK_EXPR(CVC4::kind::TCLOSURE, f); 
         	        }
 
 
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1694:5: TRANSPOSE_TOK bvNegTerm[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:1707:5: TUPLE_TOK LPAREN relationTerm[f] RPAREN
         	    {
-        	         MATCHT(TRANSPOSE_TOK, &FOLLOW_TRANSPOSE_TOK_in_bvNegTerm5572);
+        	         MATCHT(TUPLE_TOK, &FOLLOW_TUPLE_TOK_in_relationTerm5636);
         	        if  (HASEXCEPTION())
         	        {
-        	            goto rulebvNegTermEx;
+        	            goto rulerelationTermEx;
         	        }
         	        if (HASFAILED())
         	        {
@@ -18880,13 +15668,10 @@ bvNegTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_bvNegTerm_in_bvNegTerm5574);
-        	        bvNegTerm(ctx, f);
-
-        	        FOLLOWPOP();
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_relationTerm5638);
         	        if  (HASEXCEPTION())
         	        {
-        	            goto rulebvNegTermEx;
+        	            goto rulerelationTermEx;
         	        }
         	        if (HASFAILED())
         	        {
@@ -18894,21 +15679,13 @@ bvNegTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        if ( BACKTRACKING==0 )
-        	        {
-        	             f = MK_EXPR(CVC4::kind::TRANSPOSE, f); 
-        	        }
-
+        	        FOLLOWPUSH(FOLLOW_relationTerm_in_relationTerm5640);
+        	        relationTerm(ctx, f);
 
-        	    }
-        	    break;
-        	case 4:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1696:5: TRANSCLOSURE_TOK bvNegTerm[f]
-        	    {
-        	         MATCHT(TRANSCLOSURE_TOK, &FOLLOW_TRANSCLOSURE_TOK_in_bvNegTerm5588);
+        	        FOLLOWPOP();
         	        if  (HASEXCEPTION())
         	        {
-        	            goto rulebvNegTermEx;
+        	            goto rulerelationTermEx;
         	        }
         	        if (HASFAILED())
         	        {
@@ -18916,13 +15693,10 @@ bvNegTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_bvNegTerm_in_bvNegTerm5590);
-        	        bvNegTerm(ctx, f);
-
-        	        FOLLOWPOP();
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_relationTerm5643);
         	        if  (HASEXCEPTION())
         	        {
-        	            goto rulebvNegTermEx;
+        	            goto rulerelationTermEx;
         	        }
         	        if (HASFAILED())
         	        {
@@ -18932,30 +15706,27 @@ bvNegTerm(pCvcParser ctx, CVC4::Expr& f)
 
         	        if ( BACKTRACKING==0 )
         	        {
-        	             f = MK_EXPR(CVC4::kind::TCLOSURE, f); 
+        	             std::vector<Type> types;
+        	                  std::vector<Expr> args;
+        	                  args.push_back(f);
+        	            	    types.push_back(f.getType());
+        	                  DatatypeType t = EXPR_MANAGER->mkTupleType(types);
+        	                  const Datatype& dt = t.getDatatype();
+        	                  args.insert( args.begin(), dt[0].getConstructor() );
+        	                  f = MK_EXPR(kind::APPLY_CONSTRUCTOR, args);
+        	                
         	        }
 
 
         	    }
         	    break;
-        	case 5:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1698:5: TUPLE_TOK LPAREN bvNegTerm[f] RPAREN
+        	case 4:
+        	    // ../../../../src/parser/cvc/Cvc.g:1717:5: IDEN_TOK relationTerm[f]
         	    {
-        	         MATCHT(TUPLE_TOK, &FOLLOW_TUPLE_TOK_in_bvNegTerm5603);
-        	        if  (HASEXCEPTION())
-        	        {
-        	            goto rulebvNegTermEx;
-        	        }
-        	        if (HASFAILED())
-        	        {
-        	            return ;
-        	        }
-
-
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvNegTerm5605);
+        	         MATCHT(IDEN_TOK, &FOLLOW_IDEN_TOK_in_relationTerm5655);
         	        if  (HASEXCEPTION())
         	        {
-        	            goto rulebvNegTermEx;
+        	            goto rulerelationTermEx;
         	        }
         	        if (HASFAILED())
         	        {
@@ -18963,24 +15734,13 @@ bvNegTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_bvNegTerm_in_bvNegTerm5607);
-        	        bvNegTerm(ctx, f);
+        	        FOLLOWPUSH(FOLLOW_relationTerm_in_relationTerm5657);
+        	        relationTerm(ctx, f);
 
         	        FOLLOWPOP();
         	        if  (HASEXCEPTION())
         	        {
-        	            goto rulebvNegTermEx;
-        	        }
-        	        if (HASFAILED())
-        	        {
-        	            return ;
-        	        }
-
-
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvNegTerm5610);
-        	        if  (HASEXCEPTION())
-        	        {
-        	            goto rulebvNegTermEx;
+        	            goto rulerelationTermEx;
         	        }
         	        if (HASFAILED())
         	        {
@@ -18990,30 +15750,22 @@ bvNegTerm(pCvcParser ctx, CVC4::Expr& f)
 
         	        if ( BACKTRACKING==0 )
         	        {
-        	             std::vector<Type> types;
-        	                  std::vector<Expr> args;
-        	                  args.push_back(f);
-        	            	  types.push_back(f.getType());
-        	                  DatatypeType t = EXPR_MANAGER->mkTupleType(types);
-        	                  const Datatype& dt = t.getDatatype();
-        	                  args.insert( args.begin(), dt[0].getConstructor() );
-        	                  f = MK_EXPR(kind::APPLY_CONSTRUCTOR, args);
-        	                
+        	             f = MK_EXPR(CVC4::kind::IDEN, f); 
         	        }
 
 
         	    }
         	    break;
-        	case 6:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1708:5: postfixTerm[f]
+        	case 5:
+        	    // ../../../../src/parser/cvc/Cvc.g:1719:5: postfixTerm[f]
         	    {
-        	        FOLLOWPUSH(FOLLOW_postfixTerm_in_bvNegTerm5635);
+        	        FOLLOWPUSH(FOLLOW_postfixTerm_in_relationTerm5687);
         	        postfixTerm(ctx, f);
 
         	        FOLLOWPOP();
         	        if  (HASEXCEPTION())
         	        {
-        	            goto rulebvNegTermEx;
+        	            goto rulerelationTermEx;
         	        }
         	        if (HASFAILED())
         	        {
@@ -19030,8 +15782,8 @@ bvNegTerm(pCvcParser ctx, CVC4::Expr& f)
 
     // This is where rules clean up and exit
     //
-    goto rulebvNegTermEx; /* Prevent compiler warnings */
-    rulebvNegTermEx: ;
+    goto rulerelationTermEx; /* Prevent compiler warnings */
+    rulerelationTermEx: ;
 
             if (HASEXCEPTION())
             {
@@ -19040,11 +15792,11 @@ bvNegTerm(pCvcParser ctx, CVC4::Expr& f)
             }
     return ;
 }
-/* $ANTLR end bvNegTerm */
+/* $ANTLR end relationTerm */
 
 /**
  * $ANTLR start postfixTerm
- * ../../../../../../src/parser/cvc/Cvc.g:1720:1: postfixTerm[CVC4::Expr& f] : ( bvTerm[f] ( LBRACKET ( formula[f2] |k1= numeral COLON k2= numeral ) RBRACKET | ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK ) k= numeral | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | DOT ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral ) )* | FLOOR_TOK LPAREN formula[f] RPAREN | IS_INTEGER_TOK LPAREN formula[f] RPAREN | ABS_TOK LPAREN formula[f] RPAREN | DIVISIBLE_TOK LPAREN formula[f] COMMA n= numeral RPAREN | [...]
+ * ../../../../src/parser/cvc/Cvc.g:1731:1: postfixTerm[CVC4::Expr& f] : ( bvTerm[f] ( LBRACKET ( formula[f2] |k1= numeral COLON k2= numeral ) RBRACKET | ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK ) k= numeral | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | DOT ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral ) )* | FLOOR_TOK LPAREN formula[f] RPAREN | IS_INTEGER_TOK LPAREN formula[f] RPAREN | ABS_TOK LPAREN formula[f] RPAREN | DIVISIBLE_TOK LPAREN formula[f] COMMA n= numeral RPAREN | DISTI [...]
  */
 static void
 postfixTerm(pCvcParser ctx, CVC4::Expr& f)
@@ -19076,12 +15828,12 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
       Type t;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:1728:3: ( ( bvTerm[f] ( LBRACKET ( formula[f2] |k1= numeral COLON k2= numeral ) RBRACKET | ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK ) k= numeral | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | DOT ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral ) )* | FLOOR_TOK LPAREN formula[f] RPAREN | IS_INTEGER_TOK LPAREN formula[f] RPAREN | ABS_TOK LPAREN formula[f] RPAREN | DIVISIBLE_TOK LPAREN formula[f] COMMA n= numeral RPAREN | DISTINCT_TOK LPARE [...]
-        // ../../../../../../src/parser/cvc/Cvc.g:1728:5: ( bvTerm[f] ( LBRACKET ( formula[f2] |k1= numeral COLON k2= numeral ) RBRACKET | ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK ) k= numeral | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | DOT ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral ) )* | FLOOR_TOK LPAREN formula[f] RPAREN | IS_INTEGER_TOK LPAREN formula[f] RPAREN | ABS_TOK LPAREN formula[f] RPAREN | DIVISIBLE_TOK LPAREN formula[f] COMMA n= numeral RPAREN | DISTINCT_TOK LPAREN  [...]
+        // ../../../../src/parser/cvc/Cvc.g:1739:3: ( ( bvTerm[f] ( LBRACKET ( formula[f2] |k1= numeral COLON k2= numeral ) RBRACKET | ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK ) k= numeral | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | DOT ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral ) )* | FLOOR_TOK LPAREN formula[f] RPAREN | IS_INTEGER_TOK LPAREN formula[f] RPAREN | ABS_TOK LPAREN formula[f] RPAREN | DIVISIBLE_TOK LPAREN formula[f] COMMA n= numeral RPAREN | DISTINCT_TOK LPAREN form [...]
+        // ../../../../src/parser/cvc/Cvc.g:1739:5: ( bvTerm[f] ( LBRACKET ( formula[f2] |k1= numeral COLON k2= numeral ) RBRACKET | ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK ) k= numeral | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | DOT ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral ) )* | FLOOR_TOK LPAREN formula[f] RPAREN | IS_INTEGER_TOK LPAREN formula[f] RPAREN | ABS_TOK LPAREN formula[f] RPAREN | DIVISIBLE_TOK LPAREN formula[f] COMMA n= numeral RPAREN | DISTINCT_TOK LPAREN formul [...]
         {
-            // ../../../../../../src/parser/cvc/Cvc.g:1728:5: ( bvTerm[f] ( LBRACKET ( formula[f2] |k1= numeral COLON k2= numeral ) RBRACKET | ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK ) k= numeral | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | DOT ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral ) )* | FLOOR_TOK LPAREN formula[f] RPAREN | IS_INTEGER_TOK LPAREN formula[f] RPAREN | ABS_TOK LPAREN formula[f] RPAREN | DIVISIBLE_TOK LPAREN formula[f] COMMA n= numeral RPAREN | DISTINCT_TOK LPA [...]
+            // ../../../../src/parser/cvc/Cvc.g:1739:5: ( bvTerm[f] ( LBRACKET ( formula[f2] |k1= numeral COLON k2= numeral ) RBRACKET | ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK ) k= numeral | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | DOT ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral ) )* | FLOOR_TOK LPAREN formula[f] RPAREN | IS_INTEGER_TOK LPAREN formula[f] RPAREN | ABS_TOK LPAREN formula[f] RPAREN | DIVISIBLE_TOK LPAREN formula[f] COMMA n= numeral RPAREN | DISTINCT_TOK LPAREN fo [...]
             {
-                int alt94=6;
+                int alt95=6;
                 switch ( LA(1) )
                 {
                 case ARRAY_TOK:
@@ -19145,32 +15897,32 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
                 case TRUE_TOK:
                 case UNIVSET_TOK:
                 	{
-                		alt94=1;
+                		alt95=1;
                 	}
                     break;
                 case FLOOR_TOK:
                 	{
-                		alt94=2;
+                		alt95=2;
                 	}
                     break;
                 case IS_INTEGER_TOK:
                 	{
-                		alt94=3;
+                		alt95=3;
                 	}
                     break;
                 case ABS_TOK:
                 	{
-                		alt94=4;
+                		alt95=4;
                 	}
                     break;
                 case DIVISIBLE_TOK:
                 	{
-                		alt94=5;
+                		alt95=5;
                 	}
                     break;
                 case DISTINCT_TOK:
                 	{
-                		alt94=6;
+                		alt95=6;
                 	}
                     break;
 
@@ -19184,7 +15936,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
                     CONSTRUCTEX();
                     EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
                     EXCEPTION->message      = (void *)"";
-                    EXCEPTION->decisionNum  = 94;
+                    EXCEPTION->decisionNum  = 95;
                     EXCEPTION->state        = 0;
 
 
@@ -19192,12 +15944,12 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
 
                 }
 
-                switch (alt94)
+                switch (alt95)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1728:7: bvTerm[f] ( LBRACKET ( formula[f2] |k1= numeral COLON k2= numeral ) RBRACKET | ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK ) k= numeral | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | DOT ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral ) )*
+            	    // ../../../../src/parser/cvc/Cvc.g:1739:7: bvTerm[f] ( LBRACKET ( formula[f2] |k1= numeral COLON k2= numeral ) RBRACKET | ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK ) k= numeral | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | DOT ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral ) )*
             	    {
-            	        FOLLOWPUSH(FOLLOW_bvTerm_in_postfixTerm5659);
+            	        FOLLOWPUSH(FOLLOW_bvTerm_in_postfixTerm5711);
             	        bvTerm(ctx, f);
 
             	        FOLLOWPOP();
@@ -19211,11 +15963,11 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	        // ../../../../../../src/parser/cvc/Cvc.g:1729:5: ( LBRACKET ( formula[f2] |k1= numeral COLON k2= numeral ) RBRACKET | ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK ) k= numeral | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | DOT ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral ) )*
+            	        // ../../../../src/parser/cvc/Cvc.g:1740:5: ( LBRACKET ( formula[f2] |k1= numeral COLON k2= numeral ) RBRACKET | ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK ) k= numeral | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | DOT ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral ) )*
 
             	        for (;;)
             	        {
-            	            int alt92=5;
+            	            int alt93=5;
             	            switch ( LA(1) )
             	            {
             	            case LBRACKET:
@@ -19242,6 +15994,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	            				case IFF_TOK:
             	            				case IMPLIES_TOK:
             	            				case INTDIV_TOK:
+            	            				case JOIN_IMAGE_TOK:
             	            				case JOIN_TOK:
             	            				case LBRACKET:
             	            				case LEFTSHIFT_TOK:
@@ -19260,7 +16013,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	            				case WITH_TOK:
             	            				case XOR_TOK:
             	            					{
-            	            						alt92=1;
+            	            						alt93=1;
             	            					}
             	            				    break;
 
@@ -19310,6 +16063,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	            		case FLOOR_TOK:
             	            		case FORALL_TOK:
             	            		case HEX_LITERAL:
+            	            		case IDEN_TOK:
             	            		case IF_TOK:
             	            		case INTEGER_LITERAL:
             	            		case IS_INTEGER_TOK:
@@ -19343,7 +16097,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	            		case TUPLE_TOK:
             	            		case UNIVSET_TOK:
             	            			{
-            	            				alt92=1;
+            	            				alt93=1;
             	            			}
             	            		    break;
 
@@ -19354,28 +16108,28 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	            case LEFTSHIFT_TOK:
             	            case RIGHTSHIFT_TOK:
             	            	{
-            	            		alt92=2;
+            	            		alt93=2;
             	            	}
             	                break;
             	            case LPAREN:
             	            	{
-            	            		alt92=3;
+            	            		alt93=3;
             	            	}
             	                break;
             	            case DOT:
             	            	{
-            	            		alt92=4;
+            	            		alt93=4;
             	            	}
             	                break;
 
             	            }
 
-            	            switch (alt92)
+            	            switch (alt93)
             	            {
             	        	case 1:
-            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1730:7: LBRACKET ( formula[f2] |k1= numeral COLON k2= numeral ) RBRACKET
+            	        	    // ../../../../src/parser/cvc/Cvc.g:1741:7: LBRACKET ( formula[f2] |k1= numeral COLON k2= numeral ) RBRACKET
             	        	    {
-            	        	         MATCHT(LBRACKET, &FOLLOW_LBRACKET_in_postfixTerm5676);
+            	        	         MATCHT(LBRACKET, &FOLLOW_LBRACKET_in_postfixTerm5728);
             	        	        if  (HASEXCEPTION())
             	        	        {
             	        	            goto rulepostfixTermEx;
@@ -19386,9 +16140,9 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	        }
 
 
-            	        	        // ../../../../../../src/parser/cvc/Cvc.g:1731:9: ( formula[f2] |k1= numeral COLON k2= numeral )
+            	        	        // ../../../../src/parser/cvc/Cvc.g:1742:9: ( formula[f2] |k1= numeral COLON k2= numeral )
             	        	        {
-            	        	            int alt88=2;
+            	        	            int alt89=2;
             	        	            switch ( LA(1) )
             	        	            {
             	        	            case ABS_TOK:
@@ -19434,6 +16188,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	            case FORALL_TOK:
             	        	            case HEX_LITERAL:
             	        	            case IDENTIFIER:
+            	        	            case IDEN_TOK:
             	        	            case IF_TOK:
             	        	            case IS_INTEGER_TOK:
             	        	            case LAMBDA:
@@ -19466,7 +16221,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	            case TUPLE_TOK:
             	        	            case UNIVSET_TOK:
             	        	            	{
-            	        	            		alt88=1;
+            	        	            		alt89=1;
             	        	            	}
             	        	                break;
             	        	            case INTEGER_LITERAL:
@@ -19488,6 +16243,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	            		case IFF_TOK:
             	        	            		case IMPLIES_TOK:
             	        	            		case INTDIV_TOK:
+            	        	            		case JOIN_IMAGE_TOK:
             	        	            		case JOIN_TOK:
             	        	            		case LBRACKET:
             	        	            		case LEFTSHIFT_TOK:
@@ -19506,7 +16262,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	            		case WITH_TOK:
             	        	            		case XOR_TOK:
             	        	            			{
-            	        	            				alt88=1;
+            	        	            				alt89=1;
             	        	            			}
             	        	            		    break;
             	        	            		case COLON:
@@ -19515,12 +16271,12 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	            				{
             	        	            				case COLON:
             	        	            					{
-            	        	            						alt88=1;
+            	        	            						alt89=1;
             	        	            					}
             	        	            				    break;
             	        	            				case INTEGER_LITERAL:
             	        	            					{
-            	        	            						alt88=2;
+            	        	            						alt89=2;
             	        	            					}
             	        	            				    break;
 
@@ -19534,8 +16290,8 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	            				    CONSTRUCTEX();
             	        	            				    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             	        	            				    EXCEPTION->message      = (void *)"";
-            	        	            				    EXCEPTION->decisionNum  = 88;
-            	        	            				    EXCEPTION->state        = 81;
+            	        	            				    EXCEPTION->decisionNum  = 89;
+            	        	            				    EXCEPTION->state        = 82;
 
 
             	        	            				    goto rulepostfixTermEx;
@@ -19555,8 +16311,8 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	            		    CONSTRUCTEX();
             	        	            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             	        	            		    EXCEPTION->message      = (void *)"";
-            	        	            		    EXCEPTION->decisionNum  = 88;
-            	        	            		    EXCEPTION->state        = 67;
+            	        	            		    EXCEPTION->decisionNum  = 89;
+            	        	            		    EXCEPTION->state        = 68;
 
 
             	        	            		    goto rulepostfixTermEx;
@@ -19576,7 +16332,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	                CONSTRUCTEX();
             	        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             	        	                EXCEPTION->message      = (void *)"";
-            	        	                EXCEPTION->decisionNum  = 88;
+            	        	                EXCEPTION->decisionNum  = 89;
             	        	                EXCEPTION->state        = 0;
 
 
@@ -19584,12 +16340,12 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
 
             	        	            }
 
-            	        	            switch (alt88)
+            	        	            switch (alt89)
             	        	            {
             	        	        	case 1:
-            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1731:11: formula[f2]
+            	        	        	    // ../../../../src/parser/cvc/Cvc.g:1742:11: formula[f2]
             	        	        	    {
-            	        	        	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm5688);
+            	        	        	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm5740);
             	        	        	        formula(ctx, f2);
 
             	        	        	        FOLLOWPOP();
@@ -19612,9 +16368,9 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	        	    }
             	        	        	    break;
             	        	        	case 2:
-            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1732:11: k1= numeral COLON k2= numeral
+            	        	        	    // ../../../../src/parser/cvc/Cvc.g:1743:11: k1= numeral COLON k2= numeral
             	        	        	    {
-            	        	        	        FOLLOWPUSH(FOLLOW_numeral_in_postfixTerm5705);
+            	        	        	        FOLLOWPUSH(FOLLOW_numeral_in_postfixTerm5757);
             	        	        	        k1=numeral(ctx);
 
             	        	        	        FOLLOWPOP();
@@ -19628,7 +16384,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	        	        }
 
 
-            	        	        	         MATCHT(COLON, &FOLLOW_COLON_in_postfixTerm5707);
+            	        	        	         MATCHT(COLON, &FOLLOW_COLON_in_postfixTerm5759);
             	        	        	        if  (HASEXCEPTION())
             	        	        	        {
             	        	        	            goto rulepostfixTermEx;
@@ -19639,7 +16395,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	        	        }
 
 
-            	        	        	        FOLLOWPUSH(FOLLOW_numeral_in_postfixTerm5711);
+            	        	        	        FOLLOWPUSH(FOLLOW_numeral_in_postfixTerm5763);
             	        	        	        k2=numeral(ctx);
 
             	        	        	        FOLLOWPOP();
@@ -19665,7 +16421,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	            }
             	        	        }
 
-            	        	         MATCHT(RBRACKET, &FOLLOW_RBRACKET_in_postfixTerm5723);
+            	        	         MATCHT(RBRACKET, &FOLLOW_RBRACKET_in_postfixTerm5775);
             	        	        if  (HASEXCEPTION())
             	        	        {
             	        	            goto rulepostfixTermEx;
@@ -19692,21 +16448,21 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	    }
             	        	    break;
             	        	case 2:
-            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1743:7: ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK ) k= numeral
+            	        	    // ../../../../src/parser/cvc/Cvc.g:1754:7: ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK ) k= numeral
             	        	    {
-            	        	        // ../../../../../../src/parser/cvc/Cvc.g:1743:7: ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK )
+            	        	        // ../../../../src/parser/cvc/Cvc.g:1754:7: ( LEFTSHIFT_TOK | RIGHTSHIFT_TOK )
             	        	        {
-            	        	            int alt89=2;
+            	        	            int alt90=2;
             	        	            switch ( LA(1) )
             	        	            {
             	        	            case LEFTSHIFT_TOK:
             	        	            	{
-            	        	            		alt89=1;
+            	        	            		alt90=1;
             	        	            	}
             	        	                break;
             	        	            case RIGHTSHIFT_TOK:
             	        	            	{
-            	        	            		alt89=2;
+            	        	            		alt90=2;
             	        	            	}
             	        	                break;
 
@@ -19720,7 +16476,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	                CONSTRUCTEX();
             	        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             	        	                EXCEPTION->message      = (void *)"";
-            	        	                EXCEPTION->decisionNum  = 89;
+            	        	                EXCEPTION->decisionNum  = 90;
             	        	                EXCEPTION->state        = 0;
 
 
@@ -19728,12 +16484,12 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
 
             	        	            }
 
-            	        	            switch (alt89)
+            	        	            switch (alt90)
             	        	            {
             	        	        	case 1:
-            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1743:9: LEFTSHIFT_TOK
+            	        	        	    // ../../../../src/parser/cvc/Cvc.g:1754:9: LEFTSHIFT_TOK
             	        	        	    {
-            	        	        	         MATCHT(LEFTSHIFT_TOK, &FOLLOW_LEFTSHIFT_TOK_in_postfixTerm5749);
+            	        	        	         MATCHT(LEFTSHIFT_TOK, &FOLLOW_LEFTSHIFT_TOK_in_postfixTerm5801);
             	        	        	        if  (HASEXCEPTION())
             	        	        	        {
             	        	        	            goto rulepostfixTermEx;
@@ -19753,9 +16509,9 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	        	    }
             	        	        	    break;
             	        	        	case 2:
-            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1744:9: RIGHTSHIFT_TOK
+            	        	        	    // ../../../../src/parser/cvc/Cvc.g:1755:9: RIGHTSHIFT_TOK
             	        	        	    {
-            	        	        	         MATCHT(RIGHTSHIFT_TOK, &FOLLOW_RIGHTSHIFT_TOK_in_postfixTerm5761);
+            	        	        	         MATCHT(RIGHTSHIFT_TOK, &FOLLOW_RIGHTSHIFT_TOK_in_postfixTerm5813);
             	        	        	        if  (HASEXCEPTION())
             	        	        	        {
             	        	        	            goto rulepostfixTermEx;
@@ -19778,7 +16534,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	            }
             	        	        }
 
-            	        	        FOLLOWPUSH(FOLLOW_numeral_in_postfixTerm5769);
+            	        	        FOLLOWPUSH(FOLLOW_numeral_in_postfixTerm5821);
             	        	        k=numeral(ctx);
 
             	        	        FOLLOWPOP();
@@ -19810,9 +16566,9 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	    }
             	        	    break;
             	        	case 3:
-            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1757:7: LPAREN formula[f] ( COMMA formula[f] )* RPAREN
+            	        	    // ../../../../src/parser/cvc/Cvc.g:1768:7: LPAREN formula[f] ( COMMA formula[f] )* RPAREN
             	        	    {
-            	        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_postfixTerm5794);
+            	        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_postfixTerm5846);
             	        	        if  (HASEXCEPTION())
             	        	        {
             	        	            goto rulepostfixTermEx;
@@ -19829,7 +16585,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	        }
 
 
-            	        	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm5804);
+            	        	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm5856);
             	        	        formula(ctx, f);
 
             	        	        FOLLOWPOP();
@@ -19849,27 +16605,27 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	        }
 
 
-            	        	        // ../../../../../../src/parser/cvc/Cvc.g:1759:7: ( COMMA formula[f] )*
+            	        	        // ../../../../src/parser/cvc/Cvc.g:1770:7: ( COMMA formula[f] )*
 
             	        	        for (;;)
             	        	        {
-            	        	            int alt90=2;
+            	        	            int alt91=2;
             	        	            switch ( LA(1) )
             	        	            {
             	        	            case COMMA:
             	        	            	{
-            	        	            		alt90=1;
+            	        	            		alt91=1;
             	        	            	}
             	        	                break;
 
             	        	            }
 
-            	        	            switch (alt90)
+            	        	            switch (alt91)
             	        	            {
             	        	        	case 1:
-            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1759:9: COMMA formula[f]
+            	        	        	    // ../../../../src/parser/cvc/Cvc.g:1770:9: COMMA formula[f]
             	        	        	    {
-            	        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_postfixTerm5817);
+            	        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_postfixTerm5869);
             	        	        	        if  (HASEXCEPTION())
             	        	        	        {
             	        	        	            goto rulepostfixTermEx;
@@ -19880,7 +16636,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	        	        }
 
 
-            	        	        	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm5819);
+            	        	        	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm5871);
             	        	        	        formula(ctx, f);
 
             	        	        	        FOLLOWPOP();
@@ -19904,14 +16660,14 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	        	    break;
 
             	        	        	default:
-            	        	        	    goto loop90;	/* break out of the loop */
+            	        	        	    goto loop91;	/* break out of the loop */
             	        	        	    break;
             	        	            }
             	        	        }
-            	        	        loop90: ; /* Jump out to here if this rule does not match */
+            	        	        loop91: ; /* Jump out to here if this rule does not match */
 
 
-            	        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_postfixTerm5827);
+            	        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_postfixTerm5879);
             	        	        if  (HASEXCEPTION())
             	        	        {
             	        	            goto rulepostfixTermEx;
@@ -19947,9 +16703,9 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	    }
             	        	    break;
             	        	case 4:
-            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1780:7: DOT ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral )
+            	        	    // ../../../../src/parser/cvc/Cvc.g:1791:7: DOT ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral )
             	        	    {
-            	        	         MATCHT(DOT, &FOLLOW_DOT_in_postfixTerm5859);
+            	        	         MATCHT(DOT, &FOLLOW_DOT_in_postfixTerm5911);
             	        	        if  (HASEXCEPTION())
             	        	        {
             	        	            goto rulepostfixTermEx;
@@ -19960,19 +16716,19 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	        }
 
 
-            	        	        // ../../../../../../src/parser/cvc/Cvc.g:1781:7: ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral )
+            	        	        // ../../../../src/parser/cvc/Cvc.g:1792:7: ( identifier[id,CHECK_NONE,SYM_VARIABLE] |k= numeral )
             	        	        {
-            	        	            int alt91=2;
+            	        	            int alt92=2;
             	        	            switch ( LA(1) )
             	        	            {
             	        	            case IDENTIFIER:
             	        	            	{
-            	        	            		alt91=1;
+            	        	            		alt92=1;
             	        	            	}
             	        	                break;
             	        	            case INTEGER_LITERAL:
             	        	            	{
-            	        	            		alt91=2;
+            	        	            		alt92=2;
             	        	            	}
             	        	                break;
 
@@ -19986,7 +16742,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	                CONSTRUCTEX();
             	        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             	        	                EXCEPTION->message      = (void *)"";
-            	        	                EXCEPTION->decisionNum  = 91;
+            	        	                EXCEPTION->decisionNum  = 92;
             	        	                EXCEPTION->state        = 0;
 
 
@@ -19994,12 +16750,12 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
 
             	        	            }
 
-            	        	            switch (alt91)
+            	        	            switch (alt92)
             	        	            {
             	        	        	case 1:
-            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1781:9: identifier[id,CHECK_NONE,SYM_VARIABLE]
+            	        	        	    // ../../../../src/parser/cvc/Cvc.g:1792:9: identifier[id,CHECK_NONE,SYM_VARIABLE]
             	        	        	    {
-            	        	        	        FOLLOWPUSH(FOLLOW_identifier_in_postfixTerm5869);
+            	        	        	        FOLLOWPUSH(FOLLOW_identifier_in_postfixTerm5921);
             	        	        	        identifier(ctx, id, CHECK_NONE, SYM_VARIABLE);
 
             	        	        	        FOLLOWPOP();
@@ -20035,9 +16791,9 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	        	    }
             	        	        	    break;
             	        	        	case 2:
-            	        	        	    // ../../../../../../src/parser/cvc/Cvc.g:1796:9: k= numeral
+            	        	        	    // ../../../../src/parser/cvc/Cvc.g:1807:9: k= numeral
             	        	        	    {
-            	        	        	        FOLLOWPUSH(FOLLOW_numeral_in_postfixTerm5892);
+            	        	        	        FOLLOWPUSH(FOLLOW_numeral_in_postfixTerm5944);
             	        	        	        k=numeral(ctx);
 
             	        	        	        FOLLOWPOP();
@@ -20082,19 +16838,19 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	    break;
 
             	        	default:
-            	        	    goto loop92;	/* break out of the loop */
+            	        	    goto loop93;	/* break out of the loop */
             	        	    break;
             	            }
             	        }
-            	        loop92: ; /* Jump out to here if this rule does not match */
+            	        loop93: ; /* Jump out to here if this rule does not match */
 
 
             	    }
             	    break;
             	case 2:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1815:7: FLOOR_TOK LPAREN formula[f] RPAREN
+            	    // ../../../../src/parser/cvc/Cvc.g:1826:7: FLOOR_TOK LPAREN formula[f] RPAREN
             	    {
-            	         MATCHT(FLOOR_TOK, &FOLLOW_FLOOR_TOK_in_postfixTerm5925);
+            	         MATCHT(FLOOR_TOK, &FOLLOW_FLOOR_TOK_in_postfixTerm5977);
             	        if  (HASEXCEPTION())
             	        {
             	            goto rulepostfixTermEx;
@@ -20105,7 +16861,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_postfixTerm5927);
+            	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_postfixTerm5979);
             	        if  (HASEXCEPTION())
             	        {
             	            goto rulepostfixTermEx;
@@ -20116,7 +16872,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm5929);
+            	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm5981);
             	        formula(ctx, f);
 
             	        FOLLOWPOP();
@@ -20130,7 +16886,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_postfixTerm5932);
+            	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_postfixTerm5984);
             	        if  (HASEXCEPTION())
             	        {
             	            goto rulepostfixTermEx;
@@ -20150,9 +16906,9 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	    }
             	    break;
             	case 3:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1817:7: IS_INTEGER_TOK LPAREN formula[f] RPAREN
+            	    // ../../../../src/parser/cvc/Cvc.g:1828:7: IS_INTEGER_TOK LPAREN formula[f] RPAREN
             	    {
-            	         MATCHT(IS_INTEGER_TOK, &FOLLOW_IS_INTEGER_TOK_in_postfixTerm5948);
+            	         MATCHT(IS_INTEGER_TOK, &FOLLOW_IS_INTEGER_TOK_in_postfixTerm6000);
             	        if  (HASEXCEPTION())
             	        {
             	            goto rulepostfixTermEx;
@@ -20163,7 +16919,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_postfixTerm5950);
+            	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_postfixTerm6002);
             	        if  (HASEXCEPTION())
             	        {
             	            goto rulepostfixTermEx;
@@ -20174,7 +16930,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm5952);
+            	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm6004);
             	        formula(ctx, f);
 
             	        FOLLOWPOP();
@@ -20188,7 +16944,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_postfixTerm5955);
+            	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_postfixTerm6007);
             	        if  (HASEXCEPTION())
             	        {
             	            goto rulepostfixTermEx;
@@ -20208,9 +16964,9 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	    }
             	    break;
             	case 4:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1819:7: ABS_TOK LPAREN formula[f] RPAREN
+            	    // ../../../../src/parser/cvc/Cvc.g:1830:7: ABS_TOK LPAREN formula[f] RPAREN
             	    {
-            	         MATCHT(ABS_TOK, &FOLLOW_ABS_TOK_in_postfixTerm5971);
+            	         MATCHT(ABS_TOK, &FOLLOW_ABS_TOK_in_postfixTerm6023);
             	        if  (HASEXCEPTION())
             	        {
             	            goto rulepostfixTermEx;
@@ -20221,7 +16977,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_postfixTerm5973);
+            	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_postfixTerm6025);
             	        if  (HASEXCEPTION())
             	        {
             	            goto rulepostfixTermEx;
@@ -20232,7 +16988,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm5975);
+            	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm6027);
             	        formula(ctx, f);
 
             	        FOLLOWPOP();
@@ -20246,7 +17002,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_postfixTerm5978);
+            	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_postfixTerm6030);
             	        if  (HASEXCEPTION())
             	        {
             	            goto rulepostfixTermEx;
@@ -20266,9 +17022,9 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	    }
             	    break;
             	case 5:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1821:7: DIVISIBLE_TOK LPAREN formula[f] COMMA n= numeral RPAREN
+            	    // ../../../../src/parser/cvc/Cvc.g:1832:7: DIVISIBLE_TOK LPAREN formula[f] COMMA n= numeral RPAREN
             	    {
-            	         MATCHT(DIVISIBLE_TOK, &FOLLOW_DIVISIBLE_TOK_in_postfixTerm5994);
+            	         MATCHT(DIVISIBLE_TOK, &FOLLOW_DIVISIBLE_TOK_in_postfixTerm6046);
             	        if  (HASEXCEPTION())
             	        {
             	            goto rulepostfixTermEx;
@@ -20279,7 +17035,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_postfixTerm5996);
+            	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_postfixTerm6048);
             	        if  (HASEXCEPTION())
             	        {
             	            goto rulepostfixTermEx;
@@ -20290,7 +17046,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm5998);
+            	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm6050);
             	        formula(ctx, f);
 
             	        FOLLOWPOP();
@@ -20304,7 +17060,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	         MATCHT(COMMA, &FOLLOW_COMMA_in_postfixTerm6001);
+            	         MATCHT(COMMA, &FOLLOW_COMMA_in_postfixTerm6053);
             	        if  (HASEXCEPTION())
             	        {
             	            goto rulepostfixTermEx;
@@ -20315,7 +17071,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_numeral_in_postfixTerm6005);
+            	        FOLLOWPUSH(FOLLOW_numeral_in_postfixTerm6057);
             	        n=numeral(ctx);
 
             	        FOLLOWPOP();
@@ -20329,7 +17085,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_postfixTerm6007);
+            	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_postfixTerm6059);
             	        if  (HASEXCEPTION())
             	        {
             	            goto rulepostfixTermEx;
@@ -20349,9 +17105,9 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	    }
             	    break;
             	case 6:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1823:7: DISTINCT_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN
+            	    // ../../../../src/parser/cvc/Cvc.g:1834:7: DISTINCT_TOK LPAREN formula[f] ( COMMA formula[f] )* RPAREN
             	    {
-            	         MATCHT(DISTINCT_TOK, &FOLLOW_DISTINCT_TOK_in_postfixTerm6023);
+            	         MATCHT(DISTINCT_TOK, &FOLLOW_DISTINCT_TOK_in_postfixTerm6075);
             	        if  (HASEXCEPTION())
             	        {
             	            goto rulepostfixTermEx;
@@ -20362,7 +17118,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_postfixTerm6025);
+            	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_postfixTerm6077);
             	        if  (HASEXCEPTION())
             	        {
             	            goto rulepostfixTermEx;
@@ -20373,7 +17129,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm6033);
+            	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm6085);
             	        formula(ctx, f);
 
             	        FOLLOWPOP();
@@ -20393,27 +17149,27 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        }
 
 
-            	        // ../../../../../../src/parser/cvc/Cvc.g:1825:7: ( COMMA formula[f] )*
+            	        // ../../../../src/parser/cvc/Cvc.g:1836:7: ( COMMA formula[f] )*
 
             	        for (;;)
             	        {
-            	            int alt93=2;
+            	            int alt94=2;
             	            switch ( LA(1) )
             	            {
             	            case COMMA:
             	            	{
-            	            		alt93=1;
+            	            		alt94=1;
             	            	}
             	                break;
 
             	            }
 
-            	            switch (alt93)
+            	            switch (alt94)
             	            {
             	        	case 1:
-            	        	    // ../../../../../../src/parser/cvc/Cvc.g:1825:9: COMMA formula[f]
+            	        	    // ../../../../src/parser/cvc/Cvc.g:1836:9: COMMA formula[f]
             	        	    {
-            	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_postfixTerm6046);
+            	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_postfixTerm6098);
             	        	        if  (HASEXCEPTION())
             	        	        {
             	        	            goto rulepostfixTermEx;
@@ -20424,7 +17180,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	        }
 
 
-            	        	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm6048);
+            	        	        FOLLOWPUSH(FOLLOW_formula_in_postfixTerm6100);
             	        	        formula(ctx, f);
 
             	        	        FOLLOWPOP();
@@ -20448,14 +17204,14 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	        	    break;
 
             	        	default:
-            	        	    goto loop93;	/* break out of the loop */
+            	        	    goto loop94;	/* break out of the loop */
             	        	    break;
             	            }
             	        }
-            	        loop93: ; /* Jump out to here if this rule does not match */
+            	        loop94: ; /* Jump out to here if this rule does not match */
 
 
-            	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_postfixTerm6056);
+            	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_postfixTerm6108);
             	        if  (HASEXCEPTION())
             	        {
             	            goto rulepostfixTermEx;
@@ -20478,9 +17234,9 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
                 }
             }
 
-            // ../../../../../../src/parser/cvc/Cvc.g:1828:5: ( typeAscription[f, t] )?
+            // ../../../../src/parser/cvc/Cvc.g:1839:5: ( typeAscription[f, t] )?
             {
-                int alt95=2;
+                int alt96=2;
                 switch ( LA(1) )
                 {
                     case COLON:
@@ -20489,7 +17245,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
                     		{
                     		    case COLON:
                     		    	{
-                    		    		alt95=1;
+                    		    		alt96=1;
                     		    	}
                     		        break;
                     		}
@@ -20498,12 +17254,12 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
                         break;
                 }
 
-                switch (alt95)
+                switch (alt96)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:1828:7: typeAscription[f, t]
+            	    // ../../../../src/parser/cvc/Cvc.g:1839:7: typeAscription[f, t]
             	    {
-            	        FOLLOWPUSH(FOLLOW_typeAscription_in_postfixTerm6078);
+            	        FOLLOWPUSH(FOLLOW_typeAscription_in_postfixTerm6130);
             	        typeAscription(ctx, f, t);
 
             	        FOLLOWPOP();
@@ -20530,7 +17286,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
             	                    } else if(f.getKind() == CVC4::kind::EMPTYSET && t.isSet()) {
             	                      f = MK_CONST(CVC4::EmptySet(t));
             	                    } else if(f.getKind() == CVC4::kind::UNIVERSE_SET && t.isSet()) {
-            	                      f = EXPR_MANAGER->mkUniqueVar(t, kind::UNIVERSE_SET);
+            	                      f = EXPR_MANAGER->mkNullaryOperator(t, kind::UNIVERSE_SET);
             	                    } else {
             	                      if(f.getType() != t) {
             	                        PARSER_STATE->parseError("Type ascription not satisfied.");
@@ -20566,7 +17322,7 @@ postfixTerm(pCvcParser ctx, CVC4::Expr& f)
 
 /**
  * $ANTLR start bvTerm
- * ../../../../../../src/parser/cvc/Cvc.g:1850:1: bvTerm[CVC4::Expr& f] : ( BVXOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVNAND_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVCOMP_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVXNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVUMINUS_TOK LPAREN formula[f] RPAREN | BVPLUS_TOK LPAREN k= numeral COMMA formula[f] ( COMMA formula[f2] )+ RPAREN | BVSUB_TOK LPAREN k=  [...]
+ * ../../../../src/parser/cvc/Cvc.g:1861:1: bvTerm[CVC4::Expr& f] : ( BVXOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVNAND_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVCOMP_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVXNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVUMINUS_TOK LPAREN formula[f] RPAREN | BVPLUS_TOK LPAREN k= numeral COMMA formula[f] ( COMMA formula[f2] )+ RPAREN | BVSUB_TOK LPAREN k= numera [...]
  */
 static void
 bvTerm(pCvcParser ctx, CVC4::Expr& f)
@@ -20584,162 +17340,162 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
 
     {
         {
-            //  ../../../../../../src/parser/cvc/Cvc.g:1856:3: ( BVXOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVNAND_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVCOMP_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVXNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVUMINUS_TOK LPAREN formula[f] RPAREN | BVPLUS_TOK LPAREN k= numeral COMMA formula[f] ( COMMA formula[f2] )+ RPAREN | BVSUB_TOK LPAREN k= numeral COM [...]
+            //  ../../../../src/parser/cvc/Cvc.g:1867:3: ( BVXOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVNAND_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVCOMP_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVXNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | BVUMINUS_TOK LPAREN formula[f] RPAREN | BVPLUS_TOK LPAREN k= numeral COMMA formula[f] ( COMMA formula[f2] )+ RPAREN | BVSUB_TOK LPAREN k= numeral COMMA for [...]
 
-            ANTLR3_UINT32 alt97;
+            ANTLR3_UINT32 alt98;
 
-            alt97=31;
+            alt98=31;
 
             switch ( LA(1) )
             {
             case BVXOR_TOK:
             	{
-            		alt97=1;
+            		alt98=1;
             	}
                 break;
             case BVNAND_TOK:
             	{
-            		alt97=2;
+            		alt98=2;
             	}
                 break;
             case BVNOR_TOK:
             	{
-            		alt97=3;
+            		alt98=3;
             	}
                 break;
             case BVCOMP_TOK:
             	{
-            		alt97=4;
+            		alt98=4;
             	}
                 break;
             case BVXNOR_TOK:
             	{
-            		alt97=5;
+            		alt98=5;
             	}
                 break;
             case BVUMINUS_TOK:
             	{
-            		alt97=6;
+            		alt98=6;
             	}
                 break;
             case BVPLUS_TOK:
             	{
-            		alt97=7;
+            		alt98=7;
             	}
                 break;
             case BVSUB_TOK:
             	{
-            		alt97=8;
+            		alt98=8;
             	}
                 break;
             case BVMULT_TOK:
             	{
-            		alt97=9;
+            		alt98=9;
             	}
                 break;
             case BVUDIV_TOK:
             	{
-            		alt97=10;
+            		alt98=10;
             	}
                 break;
             case BVSDIV_TOK:
             	{
-            		alt97=11;
+            		alt98=11;
             	}
                 break;
             case BVUREM_TOK:
             	{
-            		alt97=12;
+            		alt98=12;
             	}
                 break;
             case BVSREM_TOK:
             	{
-            		alt97=13;
+            		alt98=13;
             	}
                 break;
             case BVSMOD_TOK:
             	{
-            		alt97=14;
+            		alt98=14;
             	}
                 break;
             case BVSHL_TOK:
             	{
-            		alt97=15;
+            		alt98=15;
             	}
                 break;
             case BVASHR_TOK:
             	{
-            		alt97=16;
+            		alt98=16;
             	}
                 break;
             case BVLSHR_TOK:
             	{
-            		alt97=17;
+            		alt98=17;
             	}
                 break;
             case SX_TOK:
             	{
-            		alt97=18;
+            		alt98=18;
             	}
                 break;
             case BVZEROEXTEND_TOK:
             	{
-            		alt97=19;
+            		alt98=19;
             	}
                 break;
             case BVREPEAT_TOK:
             	{
-            		alt97=20;
+            		alt98=20;
             	}
                 break;
             case BVROTR_TOK:
             	{
-            		alt97=21;
+            		alt98=21;
             	}
                 break;
             case BVROTL_TOK:
             	{
-            		alt97=22;
+            		alt98=22;
             	}
                 break;
             case BVLT_TOK:
             	{
-            		alt97=23;
+            		alt98=23;
             	}
                 break;
             case BVLE_TOK:
             	{
-            		alt97=24;
+            		alt98=24;
             	}
                 break;
             case BVGT_TOK:
             	{
-            		alt97=25;
+            		alt98=25;
             	}
                 break;
             case BVGE_TOK:
             	{
-            		alt97=26;
+            		alt98=26;
             	}
                 break;
             case BVSLT_TOK:
             	{
-            		alt97=27;
+            		alt98=27;
             	}
                 break;
             case BVSLE_TOK:
             	{
-            		alt97=28;
+            		alt98=28;
             	}
                 break;
             case BVSGT_TOK:
             	{
-            		alt97=29;
+            		alt98=29;
             	}
                 break;
             case BVSGE_TOK:
             	{
-            		alt97=30;
+            		alt98=30;
             	}
                 break;
             case ARRAY_TOK:
@@ -20773,7 +17529,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
             case TRUE_TOK:
             case UNIVSET_TOK:
             	{
-            		alt97=31;
+            		alt98=31;
             	}
                 break;
 
@@ -20787,7 +17543,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
                 CONSTRUCTEX();
                 EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
                 EXCEPTION->message      = (void *)"";
-                EXCEPTION->decisionNum  = 97;
+                EXCEPTION->decisionNum  = 98;
                 EXCEPTION->state        = 0;
 
 
@@ -20795,12 +17551,12 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
 
             }
 
-            switch (alt97)
+            switch (alt98)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1856:5: BVXOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1867:5: BVXOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVXOR_TOK, &FOLLOW_BVXOR_TOK_in_bvTerm6119);
+        	         MATCHT(BVXOR_TOK, &FOLLOW_BVXOR_TOK_in_bvTerm6171);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -20811,7 +17567,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6121);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6173);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -20822,7 +17578,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6123);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6175);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -20836,7 +17592,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6126);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6178);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -20847,7 +17603,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6128);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6180);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -20861,7 +17617,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6131);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6183);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -20881,9 +17637,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1858:5: BVNAND_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1869:5: BVNAND_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVNAND_TOK, &FOLLOW_BVNAND_TOK_in_bvTerm6143);
+        	         MATCHT(BVNAND_TOK, &FOLLOW_BVNAND_TOK_in_bvTerm6195);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -20894,7 +17650,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6145);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6197);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -20905,7 +17661,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6147);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6199);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -20919,7 +17675,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6150);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6202);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -20930,7 +17686,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6152);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6204);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -20944,7 +17700,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6155);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6207);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -20964,9 +17720,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1860:5: BVNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1871:5: BVNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVNOR_TOK, &FOLLOW_BVNOR_TOK_in_bvTerm6167);
+        	         MATCHT(BVNOR_TOK, &FOLLOW_BVNOR_TOK_in_bvTerm6219);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -20977,7 +17733,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6169);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6221);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -20988,7 +17744,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6171);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6223);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -21002,7 +17758,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6174);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6226);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21013,7 +17769,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6176);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6228);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -21027,7 +17783,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6179);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6231);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21047,9 +17803,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1862:5: BVCOMP_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1873:5: BVCOMP_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVCOMP_TOK, &FOLLOW_BVCOMP_TOK_in_bvTerm6191);
+        	         MATCHT(BVCOMP_TOK, &FOLLOW_BVCOMP_TOK_in_bvTerm6243);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21060,7 +17816,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6193);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6245);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21071,7 +17827,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6195);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6247);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -21085,7 +17841,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6198);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6250);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21096,7 +17852,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6200);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6252);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -21110,7 +17866,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6203);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6255);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21130,9 +17886,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1864:5: BVXNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1875:5: BVXNOR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVXNOR_TOK, &FOLLOW_BVXNOR_TOK_in_bvTerm6215);
+        	         MATCHT(BVXNOR_TOK, &FOLLOW_BVXNOR_TOK_in_bvTerm6267);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21143,7 +17899,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6217);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6269);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21154,7 +17910,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6219);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6271);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -21168,7 +17924,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6222);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6274);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21179,7 +17935,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6224);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6276);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -21193,7 +17949,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6227);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6279);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21213,9 +17969,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1868:5: BVUMINUS_TOK LPAREN formula[f] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1879:5: BVUMINUS_TOK LPAREN formula[f] RPAREN
         	    {
-        	         MATCHT(BVUMINUS_TOK, &FOLLOW_BVUMINUS_TOK_in_bvTerm6246);
+        	         MATCHT(BVUMINUS_TOK, &FOLLOW_BVUMINUS_TOK_in_bvTerm6298);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21226,7 +17982,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6248);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6300);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21237,7 +17993,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6250);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6302);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -21251,7 +18007,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6253);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6305);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21271,9 +18027,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 7:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1871:5: BVPLUS_TOK LPAREN k= numeral COMMA formula[f] ( COMMA formula[f2] )+ RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1882:5: BVPLUS_TOK LPAREN k= numeral COMMA formula[f] ( COMMA formula[f2] )+ RPAREN
         	    {
-        	         MATCHT(BVPLUS_TOK, &FOLLOW_BVPLUS_TOK_in_bvTerm6271);
+        	         MATCHT(BVPLUS_TOK, &FOLLOW_BVPLUS_TOK_in_bvTerm6323);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21284,7 +18040,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6273);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6325);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21295,7 +18051,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6277);
+        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6329);
         	        k=numeral(ctx);
 
         	        FOLLOWPOP();
@@ -21309,7 +18065,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6279);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6331);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21320,7 +18076,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6281);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6333);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -21340,29 +18096,29 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:1872:5: ( COMMA formula[f2] )+
+        	        // ../../../../src/parser/cvc/Cvc.g:1883:5: ( COMMA formula[f2] )+
         	        {
-        	            int cnt96=0;
+        	            int cnt97=0;
 
         	            for (;;)
         	            {
-        	                int alt96=2;
+        	                int alt97=2;
         	        	switch ( LA(1) )
         	        	{
         	        	case COMMA:
         	        		{
-        	        			alt96=1;
+        	        			alt97=1;
         	        		}
         	        	    break;
 
         	        	}
 
-        	        	switch (alt96)
+        	        	switch (alt97)
         	        	{
         	        	    case 1:
-        	        	        // ../../../../../../src/parser/cvc/Cvc.g:1872:7: COMMA formula[f2]
+        	        	        // ../../../../src/parser/cvc/Cvc.g:1883:7: COMMA formula[f2]
         	        	        {
-        	        	             MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6292);
+        	        	             MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6344);
         	        	            if  (HASEXCEPTION())
         	        	            {
         	        	                goto rulebvTermEx;
@@ -21373,7 +18129,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        	            }
 
 
-        	        	            FOLLOWPUSH(FOLLOW_formula_in_bvTerm6294);
+        	        	            FOLLOWPUSH(FOLLOW_formula_in_bvTerm6346);
         	        	            formula(ctx, f2);
 
         	        	            FOLLOWPOP();
@@ -21398,9 +18154,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
 
         	        	    default:
 
-        	        		if ( cnt96 >= 1 )
+        	        		if ( cnt97 >= 1 )
         	        		{
-        	        		    goto loop96;
+        	        		    goto loop97;
         	        		}
         	        		if (BACKTRACKING>0)
         	        		{
@@ -21417,12 +18173,12 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
 
         	        		goto rulebvTermEx;
         	        	}
-        	        	cnt96++;
+        	        	cnt97++;
         	            }
-        	            loop96: ;	/* Jump to here if this rule does not match */
+        	            loop97: ;	/* Jump to here if this rule does not match */
         	        }
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6302);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6354);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21450,9 +18206,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 8:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1883:5: BVSUB_TOK LPAREN k= numeral COMMA formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1894:5: BVSUB_TOK LPAREN k= numeral COMMA formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVSUB_TOK, &FOLLOW_BVSUB_TOK_in_bvTerm6320);
+        	         MATCHT(BVSUB_TOK, &FOLLOW_BVSUB_TOK_in_bvTerm6372);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21463,7 +18219,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6322);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6374);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21474,7 +18230,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6326);
+        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6378);
         	        k=numeral(ctx);
 
         	        FOLLOWPOP();
@@ -21488,7 +18244,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6328);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6380);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21499,7 +18255,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6330);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6382);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -21513,7 +18269,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6333);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6385);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21524,7 +18280,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6335);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6387);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -21538,7 +18294,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6338);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6390);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21565,9 +18321,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 9:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1893:5: BVMULT_TOK LPAREN k= numeral COMMA formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1904:5: BVMULT_TOK LPAREN k= numeral COMMA formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVMULT_TOK, &FOLLOW_BVMULT_TOK_in_bvTerm6356);
+        	         MATCHT(BVMULT_TOK, &FOLLOW_BVMULT_TOK_in_bvTerm6408);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21578,7 +18334,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6358);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6410);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21589,7 +18345,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6362);
+        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6414);
         	        k=numeral(ctx);
 
         	        FOLLOWPOP();
@@ -21603,7 +18359,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6364);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6416);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21614,7 +18370,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6366);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6418);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -21628,7 +18384,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6369);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6421);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21639,7 +18395,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6371);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6423);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -21653,7 +18409,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6374);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6426);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21680,9 +18436,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 10:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1903:5: BVUDIV_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1914:5: BVUDIV_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVUDIV_TOK, &FOLLOW_BVUDIV_TOK_in_bvTerm6392);
+        	         MATCHT(BVUDIV_TOK, &FOLLOW_BVUDIV_TOK_in_bvTerm6444);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21693,7 +18449,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6394);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6446);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21704,7 +18460,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6396);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6448);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -21718,7 +18474,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6399);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6451);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21729,7 +18485,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6401);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6453);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -21743,7 +18499,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6404);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6456);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21763,9 +18519,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 11:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1906:5: BVSDIV_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1917:5: BVSDIV_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVSDIV_TOK, &FOLLOW_BVSDIV_TOK_in_bvTerm6422);
+        	         MATCHT(BVSDIV_TOK, &FOLLOW_BVSDIV_TOK_in_bvTerm6474);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21776,7 +18532,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6424);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6476);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21787,7 +18543,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6426);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6478);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -21801,7 +18557,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6429);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6481);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21812,7 +18568,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6431);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6483);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -21826,7 +18582,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6434);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6486);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21846,9 +18602,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 12:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1909:5: BVUREM_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1920:5: BVUREM_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVUREM_TOK, &FOLLOW_BVUREM_TOK_in_bvTerm6452);
+        	         MATCHT(BVUREM_TOK, &FOLLOW_BVUREM_TOK_in_bvTerm6504);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21859,7 +18615,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6454);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6506);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21870,7 +18626,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6456);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6508);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -21884,7 +18640,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6459);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6511);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21895,7 +18651,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6461);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6513);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -21909,7 +18665,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6464);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6516);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21929,9 +18685,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 13:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1912:5: BVSREM_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1923:5: BVSREM_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVSREM_TOK, &FOLLOW_BVSREM_TOK_in_bvTerm6482);
+        	         MATCHT(BVSREM_TOK, &FOLLOW_BVSREM_TOK_in_bvTerm6534);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21942,7 +18698,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6484);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6536);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21953,7 +18709,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6486);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6538);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -21967,7 +18723,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6489);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6541);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -21978,7 +18734,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6491);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6543);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -21992,7 +18748,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6494);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6546);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22012,9 +18768,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 14:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1915:5: BVSMOD_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1926:5: BVSMOD_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVSMOD_TOK, &FOLLOW_BVSMOD_TOK_in_bvTerm6512);
+        	         MATCHT(BVSMOD_TOK, &FOLLOW_BVSMOD_TOK_in_bvTerm6564);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22025,7 +18781,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6514);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6566);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22036,7 +18792,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6516);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6568);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -22050,7 +18806,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6519);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6571);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22061,7 +18817,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6521);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6573);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -22075,7 +18831,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6524);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6576);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22095,9 +18851,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 15:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1918:5: BVSHL_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1929:5: BVSHL_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVSHL_TOK, &FOLLOW_BVSHL_TOK_in_bvTerm6542);
+        	         MATCHT(BVSHL_TOK, &FOLLOW_BVSHL_TOK_in_bvTerm6594);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22108,7 +18864,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6544);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6596);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22119,7 +18875,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6546);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6598);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -22133,7 +18889,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6549);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6601);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22144,7 +18900,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6551);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6603);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -22158,7 +18914,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6554);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6606);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22178,9 +18934,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 16:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1921:5: BVASHR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1932:5: BVASHR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVASHR_TOK, &FOLLOW_BVASHR_TOK_in_bvTerm6572);
+        	         MATCHT(BVASHR_TOK, &FOLLOW_BVASHR_TOK_in_bvTerm6624);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22191,7 +18947,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6574);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6626);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22202,7 +18958,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6576);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6628);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -22216,7 +18972,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6579);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6631);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22227,7 +18983,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6581);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6633);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -22241,7 +18997,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6584);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6636);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22261,9 +19017,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 17:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1924:5: BVLSHR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1935:5: BVLSHR_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVLSHR_TOK, &FOLLOW_BVLSHR_TOK_in_bvTerm6602);
+        	         MATCHT(BVLSHR_TOK, &FOLLOW_BVLSHR_TOK_in_bvTerm6654);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22274,7 +19030,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6604);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6656);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22285,7 +19041,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6606);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6658);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -22299,7 +19055,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6609);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6661);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22310,7 +19066,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6611);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6663);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -22324,7 +19080,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6614);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6666);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22344,9 +19100,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 18:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1927:5: SX_TOK LPAREN formula[f] COMMA k= numeral RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1938:5: SX_TOK LPAREN formula[f] COMMA k= numeral RPAREN
         	    {
-        	         MATCHT(SX_TOK, &FOLLOW_SX_TOK_in_bvTerm6632);
+        	         MATCHT(SX_TOK, &FOLLOW_SX_TOK_in_bvTerm6684);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22357,7 +19113,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6634);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6686);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22368,7 +19124,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6636);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6688);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -22382,7 +19138,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6639);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6691);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22393,7 +19149,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6643);
+        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6695);
         	        k=numeral(ctx);
 
         	        FOLLOWPOP();
@@ -22407,7 +19163,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6645);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6697);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22432,9 +19188,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 19:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1935:5: BVZEROEXTEND_TOK LPAREN formula[f] COMMA k= numeral RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1946:5: BVZEROEXTEND_TOK LPAREN formula[f] COMMA k= numeral RPAREN
         	    {
-        	         MATCHT(BVZEROEXTEND_TOK, &FOLLOW_BVZEROEXTEND_TOK_in_bvTerm6663);
+        	         MATCHT(BVZEROEXTEND_TOK, &FOLLOW_BVZEROEXTEND_TOK_in_bvTerm6715);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22445,7 +19201,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6665);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6717);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22456,7 +19212,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6667);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6719);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -22470,7 +19226,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6670);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6722);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22481,7 +19237,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6674);
+        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6726);
         	        k=numeral(ctx);
 
         	        FOLLOWPOP();
@@ -22495,7 +19251,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6676);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6728);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22520,9 +19276,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 20:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1943:5: BVREPEAT_TOK LPAREN formula[f] COMMA k= numeral RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1954:5: BVREPEAT_TOK LPAREN formula[f] COMMA k= numeral RPAREN
         	    {
-        	         MATCHT(BVREPEAT_TOK, &FOLLOW_BVREPEAT_TOK_in_bvTerm6694);
+        	         MATCHT(BVREPEAT_TOK, &FOLLOW_BVREPEAT_TOK_in_bvTerm6746);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22533,7 +19289,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6696);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6748);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22544,7 +19300,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6698);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6750);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -22558,7 +19314,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6701);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6753);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22569,7 +19325,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6705);
+        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6757);
         	        k=numeral(ctx);
 
         	        FOLLOWPOP();
@@ -22583,7 +19339,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6707);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6759);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22603,9 +19359,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 21:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1946:5: BVROTR_TOK LPAREN formula[f] COMMA k= numeral RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1957:5: BVROTR_TOK LPAREN formula[f] COMMA k= numeral RPAREN
         	    {
-        	         MATCHT(BVROTR_TOK, &FOLLOW_BVROTR_TOK_in_bvTerm6725);
+        	         MATCHT(BVROTR_TOK, &FOLLOW_BVROTR_TOK_in_bvTerm6777);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22616,7 +19372,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6727);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6779);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22627,7 +19383,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6729);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6781);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -22641,7 +19397,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6732);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6784);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22652,7 +19408,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6736);
+        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6788);
         	        k=numeral(ctx);
 
         	        FOLLOWPOP();
@@ -22666,7 +19422,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6738);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6790);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22686,9 +19442,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 22:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1949:5: BVROTL_TOK LPAREN formula[f] COMMA k= numeral RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1960:5: BVROTL_TOK LPAREN formula[f] COMMA k= numeral RPAREN
         	    {
-        	         MATCHT(BVROTL_TOK, &FOLLOW_BVROTL_TOK_in_bvTerm6756);
+        	         MATCHT(BVROTL_TOK, &FOLLOW_BVROTL_TOK_in_bvTerm6808);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22699,7 +19455,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6758);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6810);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22710,7 +19466,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6760);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6812);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -22724,7 +19480,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6763);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6815);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22735,7 +19491,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6767);
+        	        FOLLOWPUSH(FOLLOW_numeral_in_bvTerm6819);
         	        k=numeral(ctx);
 
         	        FOLLOWPOP();
@@ -22749,7 +19505,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6769);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6821);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22769,9 +19525,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 23:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1953:5: BVLT_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1964:5: BVLT_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVLT_TOK, &FOLLOW_BVLT_TOK_in_bvTerm6788);
+        	         MATCHT(BVLT_TOK, &FOLLOW_BVLT_TOK_in_bvTerm6840);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22782,7 +19538,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6790);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6842);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22793,7 +19549,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6792);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6844);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -22807,7 +19563,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6795);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6847);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22818,7 +19574,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6797);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6849);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -22832,7 +19588,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6800);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6852);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22852,9 +19608,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 24:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1955:5: BVLE_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1966:5: BVLE_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVLE_TOK, &FOLLOW_BVLE_TOK_in_bvTerm6812);
+        	         MATCHT(BVLE_TOK, &FOLLOW_BVLE_TOK_in_bvTerm6864);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22865,7 +19621,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6814);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6866);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22876,7 +19632,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6816);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6868);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -22890,7 +19646,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6819);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6871);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22901,7 +19657,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6821);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6873);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -22915,7 +19671,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6824);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6876);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22935,9 +19691,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 25:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1957:5: BVGT_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1968:5: BVGT_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVGT_TOK, &FOLLOW_BVGT_TOK_in_bvTerm6836);
+        	         MATCHT(BVGT_TOK, &FOLLOW_BVGT_TOK_in_bvTerm6888);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22948,7 +19704,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6838);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6890);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22959,7 +19715,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6840);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6892);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -22973,7 +19729,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6843);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6895);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -22984,7 +19740,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6845);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6897);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -22998,7 +19754,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6848);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6900);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -23018,9 +19774,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 26:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1959:5: BVGE_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1970:5: BVGE_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVGE_TOK, &FOLLOW_BVGE_TOK_in_bvTerm6860);
+        	         MATCHT(BVGE_TOK, &FOLLOW_BVGE_TOK_in_bvTerm6912);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -23031,7 +19787,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6862);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6914);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -23042,7 +19798,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6864);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6916);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -23056,7 +19812,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6867);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6919);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -23067,7 +19823,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6869);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6921);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -23081,7 +19837,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6872);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6924);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -23101,9 +19857,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 27:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1961:5: BVSLT_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1972:5: BVSLT_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVSLT_TOK, &FOLLOW_BVSLT_TOK_in_bvTerm6884);
+        	         MATCHT(BVSLT_TOK, &FOLLOW_BVSLT_TOK_in_bvTerm6936);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -23114,7 +19870,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6886);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6938);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -23125,7 +19881,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6888);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6940);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -23139,7 +19895,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6891);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6943);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -23150,7 +19906,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6893);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6945);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -23164,7 +19920,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6896);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6948);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -23184,9 +19940,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 28:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1963:5: BVSLE_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1974:5: BVSLE_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVSLE_TOK, &FOLLOW_BVSLE_TOK_in_bvTerm6908);
+        	         MATCHT(BVSLE_TOK, &FOLLOW_BVSLE_TOK_in_bvTerm6960);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -23197,7 +19953,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6910);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6962);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -23208,7 +19964,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6912);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6964);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -23222,7 +19978,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6915);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6967);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -23233,7 +19989,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6917);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6969);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -23247,7 +20003,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6920);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6972);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -23267,9 +20023,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 29:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1965:5: BVSGT_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1976:5: BVSGT_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVSGT_TOK, &FOLLOW_BVSGT_TOK_in_bvTerm6932);
+        	         MATCHT(BVSGT_TOK, &FOLLOW_BVSGT_TOK_in_bvTerm6984);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -23280,7 +20036,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6934);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6986);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -23291,7 +20047,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6936);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6988);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -23305,7 +20061,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6939);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6991);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -23316,7 +20072,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6941);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6993);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -23330,7 +20086,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6944);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6996);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -23350,9 +20106,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 30:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1967:5: BVSGE_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1978:5: BVSGE_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(BVSGE_TOK, &FOLLOW_BVSGE_TOK_in_bvTerm6956);
+        	         MATCHT(BVSGE_TOK, &FOLLOW_BVSGE_TOK_in_bvTerm7008);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -23363,7 +20119,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm6958);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_bvTerm7010);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -23374,7 +20130,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6960);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm7012);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -23388,7 +20144,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm6963);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_bvTerm7015);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -23399,7 +20155,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm6965);
+        	        FOLLOWPUSH(FOLLOW_formula_in_bvTerm7017);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -23413,7 +20169,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm6968);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_bvTerm7020);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebvTermEx;
@@ -23433,9 +20189,9 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 31:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1969:5: stringTerm[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:1980:5: stringTerm[f]
         	    {
-        	        FOLLOWPUSH(FOLLOW_stringTerm_in_bvTerm6980);
+        	        FOLLOWPUSH(FOLLOW_stringTerm_in_bvTerm7032);
         	        stringTerm(ctx, f);
 
         	        FOLLOWPOP();
@@ -23472,7 +20228,7 @@ bvTerm(pCvcParser ctx, CVC4::Expr& f)
 
 /**
  * $ANTLR start stringTerm
- * ../../../../../../src/parser/cvc/Cvc.g:1972:1: stringTerm[CVC4::Expr& f] : ( STRING_CONCAT_TOK LPAREN formula[f] ( COMMA formula[f2] )+ RPAREN | STRING_LENGTH_TOK LPAREN formula[f] RPAREN | STRING_CONTAINS_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | STRING_SUBSTR_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN | STRING_INDEXOF_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN | STRING_REPLACE_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3 [...]
+ * ../../../../src/parser/cvc/Cvc.g:1983:1: stringTerm[CVC4::Expr& f] : ( STRING_CONCAT_TOK LPAREN formula[f] ( COMMA formula[f2] )+ RPAREN | STRING_LENGTH_TOK LPAREN formula[f] RPAREN | STRING_CONTAINS_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | STRING_SUBSTR_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN | STRING_INDEXOF_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN | STRING_REPLACE_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAR [...]
  */
 static void
 stringTerm(pCvcParser ctx, CVC4::Expr& f)
@@ -23488,87 +20244,87 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
 
     {
         {
-            //  ../../../../../../src/parser/cvc/Cvc.g:1980:3: ( STRING_CONCAT_TOK LPAREN formula[f] ( COMMA formula[f2] )+ RPAREN | STRING_LENGTH_TOK LPAREN formula[f] RPAREN | STRING_CONTAINS_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | STRING_SUBSTR_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN | STRING_INDEXOF_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN | STRING_REPLACE_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN | STRI [...]
+            //  ../../../../src/parser/cvc/Cvc.g:1991:3: ( STRING_CONCAT_TOK LPAREN formula[f] ( COMMA formula[f2] )+ RPAREN | STRING_LENGTH_TOK LPAREN formula[f] RPAREN | STRING_CONTAINS_TOK LPAREN formula[f] COMMA formula[f2] RPAREN | STRING_SUBSTR_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN | STRING_INDEXOF_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN | STRING_REPLACE_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN | STRING_PRE [...]
 
-            ANTLR3_UINT32 alt99;
+            ANTLR3_UINT32 alt100;
 
-            alt99=16;
+            alt100=16;
 
             switch ( LA(1) )
             {
             case STRING_CONCAT_TOK:
             	{
-            		alt99=1;
+            		alt100=1;
             	}
                 break;
             case STRING_LENGTH_TOK:
             	{
-            		alt99=2;
+            		alt100=2;
             	}
                 break;
             case STRING_CONTAINS_TOK:
             	{
-            		alt99=3;
+            		alt100=3;
             	}
                 break;
             case STRING_SUBSTR_TOK:
             	{
-            		alt99=4;
+            		alt100=4;
             	}
                 break;
             case STRING_INDEXOF_TOK:
             	{
-            		alt99=5;
+            		alt100=5;
             	}
                 break;
             case STRING_REPLACE_TOK:
             	{
-            		alt99=6;
+            		alt100=6;
             	}
                 break;
             case STRING_PREFIXOF_TOK:
             	{
-            		alt99=7;
+            		alt100=7;
             	}
                 break;
             case STRING_SUFFIXOF_TOK:
             	{
-            		alt99=8;
+            		alt100=8;
             	}
                 break;
             case STRING_STOI_TOK:
             	{
-            		alt99=9;
+            		alt100=9;
             	}
                 break;
             case STRING_ITOS_TOK:
             	{
-            		alt99=10;
+            		alt100=10;
             	}
                 break;
             case STRING_U16TOS_TOK:
             	{
-            		alt99=11;
+            		alt100=11;
             	}
                 break;
             case STRING_STOU16_TOK:
             	{
-            		alt99=12;
+            		alt100=12;
             	}
                 break;
             case STRING_U32TOS_TOK:
             	{
-            		alt99=13;
+            		alt100=13;
             	}
                 break;
             case STRING_STOU32_TOK:
             	{
-            		alt99=14;
+            		alt100=14;
             	}
                 break;
             case STRING_LITERAL:
             	{
-            		alt99=15;
+            		alt100=15;
             	}
                 break;
             case ARRAY_TOK:
@@ -23587,7 +20343,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
             case TRUE_TOK:
             case UNIVSET_TOK:
             	{
-            		alt99=16;
+            		alt100=16;
             	}
                 break;
 
@@ -23601,7 +20357,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
                 CONSTRUCTEX();
                 EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
                 EXCEPTION->message      = (void *)"";
-                EXCEPTION->decisionNum  = 99;
+                EXCEPTION->decisionNum  = 100;
                 EXCEPTION->state        = 0;
 
 
@@ -23609,12 +20365,12 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
 
             }
 
-            switch (alt99)
+            switch (alt100)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1980:5: STRING_CONCAT_TOK LPAREN formula[f] ( COMMA formula[f2] )+ RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1991:5: STRING_CONCAT_TOK LPAREN formula[f] ( COMMA formula[f2] )+ RPAREN
         	    {
-        	         MATCHT(STRING_CONCAT_TOK, &FOLLOW_STRING_CONCAT_TOK_in_stringTerm7006);
+        	         MATCHT(STRING_CONCAT_TOK, &FOLLOW_STRING_CONCAT_TOK_in_stringTerm7058);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -23625,7 +20381,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7008);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7060);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -23636,7 +20392,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7010);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7062);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -23656,29 +20412,29 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:1981:5: ( COMMA formula[f2] )+
+        	        // ../../../../src/parser/cvc/Cvc.g:1992:5: ( COMMA formula[f2] )+
         	        {
-        	            int cnt98=0;
+        	            int cnt99=0;
 
         	            for (;;)
         	            {
-        	                int alt98=2;
+        	                int alt99=2;
         	        	switch ( LA(1) )
         	        	{
         	        	case COMMA:
         	        		{
-        	        			alt98=1;
+        	        			alt99=1;
         	        		}
         	        	    break;
 
         	        	}
 
-        	        	switch (alt98)
+        	        	switch (alt99)
         	        	{
         	        	    case 1:
-        	        	        // ../../../../../../src/parser/cvc/Cvc.g:1981:7: COMMA formula[f2]
+        	        	        // ../../../../src/parser/cvc/Cvc.g:1992:7: COMMA formula[f2]
         	        	        {
-        	        	             MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7021);
+        	        	             MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7073);
         	        	            if  (HASEXCEPTION())
         	        	            {
         	        	                goto rulestringTermEx;
@@ -23689,7 +20445,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        	            }
 
 
-        	        	            FOLLOWPUSH(FOLLOW_formula_in_stringTerm7023);
+        	        	            FOLLOWPUSH(FOLLOW_formula_in_stringTerm7075);
         	        	            formula(ctx, f2);
 
         	        	            FOLLOWPOP();
@@ -23714,9 +20470,9 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
 
         	        	    default:
 
-        	        		if ( cnt98 >= 1 )
+        	        		if ( cnt99 >= 1 )
         	        		{
-        	        		    goto loop98;
+        	        		    goto loop99;
         	        		}
         	        		if (BACKTRACKING>0)
         	        		{
@@ -23733,12 +20489,12 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
 
         	        		goto rulestringTermEx;
         	        	}
-        	        	cnt98++;
+        	        	cnt99++;
         	            }
-        	            loop98: ;	/* Jump to here if this rule does not match */
+        	            loop99: ;	/* Jump to here if this rule does not match */
         	        }
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7031);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7083);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -23758,9 +20514,9 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1983:5: STRING_LENGTH_TOK LPAREN formula[f] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1994:5: STRING_LENGTH_TOK LPAREN formula[f] RPAREN
         	    {
-        	         MATCHT(STRING_LENGTH_TOK, &FOLLOW_STRING_LENGTH_TOK_in_stringTerm7043);
+        	         MATCHT(STRING_LENGTH_TOK, &FOLLOW_STRING_LENGTH_TOK_in_stringTerm7095);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -23771,7 +20527,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7045);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7097);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -23782,7 +20538,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7047);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7099);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -23796,7 +20552,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7050);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7102);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -23816,9 +20572,9 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1985:5: STRING_CONTAINS_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1996:5: STRING_CONTAINS_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(STRING_CONTAINS_TOK, &FOLLOW_STRING_CONTAINS_TOK_in_stringTerm7062);
+        	         MATCHT(STRING_CONTAINS_TOK, &FOLLOW_STRING_CONTAINS_TOK_in_stringTerm7114);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -23829,7 +20585,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7064);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7116);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -23840,7 +20596,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7066);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7118);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -23854,7 +20610,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7069);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7121);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -23865,7 +20621,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7071);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7123);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -23879,7 +20635,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7074);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7126);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -23899,9 +20655,9 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1987:5: STRING_SUBSTR_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:1998:5: STRING_SUBSTR_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN
         	    {
-        	         MATCHT(STRING_SUBSTR_TOK, &FOLLOW_STRING_SUBSTR_TOK_in_stringTerm7086);
+        	         MATCHT(STRING_SUBSTR_TOK, &FOLLOW_STRING_SUBSTR_TOK_in_stringTerm7138);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -23912,7 +20668,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7088);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7140);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -23923,7 +20679,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7090);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7142);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -23937,7 +20693,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7093);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7145);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -23948,7 +20704,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7095);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7147);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -23962,7 +20718,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7098);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7150);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -23973,7 +20729,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7100);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7152);
         	        formula(ctx, f3);
 
         	        FOLLOWPOP();
@@ -23987,7 +20743,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7103);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7155);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24007,9 +20763,9 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1989:5: STRING_INDEXOF_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:2000:5: STRING_INDEXOF_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN
         	    {
-        	         MATCHT(STRING_INDEXOF_TOK, &FOLLOW_STRING_INDEXOF_TOK_in_stringTerm7115);
+        	         MATCHT(STRING_INDEXOF_TOK, &FOLLOW_STRING_INDEXOF_TOK_in_stringTerm7167);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24020,7 +20776,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7117);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7169);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24031,7 +20787,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7119);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7171);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -24045,7 +20801,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7122);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7174);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24056,7 +20812,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7124);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7176);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -24070,7 +20826,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7127);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7179);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24081,7 +20837,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7129);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7181);
         	        formula(ctx, f3);
 
         	        FOLLOWPOP();
@@ -24095,7 +20851,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7132);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7184);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24115,9 +20871,9 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1991:5: STRING_REPLACE_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:2002:5: STRING_REPLACE_TOK LPAREN formula[f] COMMA formula[f2] COMMA formula[f3] RPAREN
         	    {
-        	         MATCHT(STRING_REPLACE_TOK, &FOLLOW_STRING_REPLACE_TOK_in_stringTerm7144);
+        	         MATCHT(STRING_REPLACE_TOK, &FOLLOW_STRING_REPLACE_TOK_in_stringTerm7196);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24128,7 +20884,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7146);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7198);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24139,7 +20895,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7148);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7200);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -24153,7 +20909,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7151);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7203);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24164,7 +20920,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7153);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7205);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -24178,7 +20934,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7156);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7208);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24189,7 +20945,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7158);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7210);
         	        formula(ctx, f3);
 
         	        FOLLOWPOP();
@@ -24203,7 +20959,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7161);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7213);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24223,9 +20979,9 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 7:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1993:5: STRING_PREFIXOF_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:2004:5: STRING_PREFIXOF_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(STRING_PREFIXOF_TOK, &FOLLOW_STRING_PREFIXOF_TOK_in_stringTerm7173);
+        	         MATCHT(STRING_PREFIXOF_TOK, &FOLLOW_STRING_PREFIXOF_TOK_in_stringTerm7225);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24236,7 +20992,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7175);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7227);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24247,7 +21003,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7177);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7229);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -24261,7 +21017,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7180);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7232);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24272,7 +21028,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7182);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7234);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -24286,7 +21042,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7185);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7237);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24306,9 +21062,9 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 8:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1995:5: STRING_SUFFIXOF_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:2006:5: STRING_SUFFIXOF_TOK LPAREN formula[f] COMMA formula[f2] RPAREN
         	    {
-        	         MATCHT(STRING_SUFFIXOF_TOK, &FOLLOW_STRING_SUFFIXOF_TOK_in_stringTerm7197);
+        	         MATCHT(STRING_SUFFIXOF_TOK, &FOLLOW_STRING_SUFFIXOF_TOK_in_stringTerm7249);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24319,7 +21075,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7199);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7251);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24330,7 +21086,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7201);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7253);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -24344,7 +21100,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7204);
+        	         MATCHT(COMMA, &FOLLOW_COMMA_in_stringTerm7256);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24355,7 +21111,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7206);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7258);
         	        formula(ctx, f2);
 
         	        FOLLOWPOP();
@@ -24369,7 +21125,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7209);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7261);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24389,9 +21145,9 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 9:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1997:5: STRING_STOI_TOK LPAREN formula[f] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:2008:5: STRING_STOI_TOK LPAREN formula[f] RPAREN
         	    {
-        	         MATCHT(STRING_STOI_TOK, &FOLLOW_STRING_STOI_TOK_in_stringTerm7221);
+        	         MATCHT(STRING_STOI_TOK, &FOLLOW_STRING_STOI_TOK_in_stringTerm7273);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24402,7 +21158,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7223);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7275);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24413,7 +21169,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7225);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7277);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -24427,7 +21183,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7228);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7280);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24447,9 +21203,9 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 10:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:1999:5: STRING_ITOS_TOK LPAREN formula[f] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:2010:5: STRING_ITOS_TOK LPAREN formula[f] RPAREN
         	    {
-        	         MATCHT(STRING_ITOS_TOK, &FOLLOW_STRING_ITOS_TOK_in_stringTerm7240);
+        	         MATCHT(STRING_ITOS_TOK, &FOLLOW_STRING_ITOS_TOK_in_stringTerm7292);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24460,7 +21216,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7242);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7294);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24471,7 +21227,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7244);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7296);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -24485,7 +21241,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7247);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7299);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24505,9 +21261,9 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 11:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2001:5: STRING_U16TOS_TOK LPAREN formula[f] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:2012:5: STRING_U16TOS_TOK LPAREN formula[f] RPAREN
         	    {
-        	         MATCHT(STRING_U16TOS_TOK, &FOLLOW_STRING_U16TOS_TOK_in_stringTerm7259);
+        	         MATCHT(STRING_U16TOS_TOK, &FOLLOW_STRING_U16TOS_TOK_in_stringTerm7311);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24518,7 +21274,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7261);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7313);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24529,7 +21285,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7263);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7315);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -24543,7 +21299,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7266);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7318);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24563,9 +21319,9 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 12:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2003:5: STRING_STOU16_TOK LPAREN formula[f] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:2014:5: STRING_STOU16_TOK LPAREN formula[f] RPAREN
         	    {
-        	         MATCHT(STRING_STOU16_TOK, &FOLLOW_STRING_STOU16_TOK_in_stringTerm7278);
+        	         MATCHT(STRING_STOU16_TOK, &FOLLOW_STRING_STOU16_TOK_in_stringTerm7330);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24576,7 +21332,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7280);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7332);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24587,7 +21343,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7282);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7334);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -24601,7 +21357,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7285);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7337);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24621,9 +21377,9 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 13:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2005:5: STRING_U32TOS_TOK LPAREN formula[f] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:2016:5: STRING_U32TOS_TOK LPAREN formula[f] RPAREN
         	    {
-        	         MATCHT(STRING_U32TOS_TOK, &FOLLOW_STRING_U32TOS_TOK_in_stringTerm7297);
+        	         MATCHT(STRING_U32TOS_TOK, &FOLLOW_STRING_U32TOS_TOK_in_stringTerm7349);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24634,7 +21390,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7299);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7351);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24645,7 +21401,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7301);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7353);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -24659,7 +21415,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7304);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7356);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24679,9 +21435,9 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 14:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2007:5: STRING_STOU32_TOK LPAREN formula[f] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:2018:5: STRING_STOU32_TOK LPAREN formula[f] RPAREN
         	    {
-        	         MATCHT(STRING_STOU32_TOK, &FOLLOW_STRING_STOU32_TOK_in_stringTerm7316);
+        	         MATCHT(STRING_STOU32_TOK, &FOLLOW_STRING_STOU32_TOK_in_stringTerm7368);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24692,7 +21448,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7318);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_stringTerm7370);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24703,7 +21459,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7320);
+        	        FOLLOWPUSH(FOLLOW_formula_in_stringTerm7372);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -24717,7 +21473,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7323);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_stringTerm7375);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestringTermEx;
@@ -24737,9 +21493,9 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 15:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2011:5: str[s]
+        	    // ../../../../src/parser/cvc/Cvc.g:2022:5: str[s]
         	    {
-        	        FOLLOWPUSH(FOLLOW_str_in_stringTerm7346);
+        	        FOLLOWPUSH(FOLLOW_str_in_stringTerm7398);
         	        str(ctx, s);
 
         	        FOLLOWPOP();
@@ -24762,9 +21518,9 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 16:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2014:5: setsTerm[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:2025:5: setsTerm[f]
         	    {
-        	        FOLLOWPUSH(FOLLOW_setsTerm_in_stringTerm7360);
+        	        FOLLOWPUSH(FOLLOW_setsTerm_in_stringTerm7412);
         	        setsTerm(ctx, f);
 
         	        FOLLOWPOP();
@@ -24801,7 +21557,7 @@ stringTerm(pCvcParser ctx, CVC4::Expr& f)
 
 /**
  * $ANTLR start setsTerm
- * ../../../../../../src/parser/cvc/Cvc.g:2017:1: setsTerm[CVC4::Expr& f] : ( SETS_CARD_TOK LPAREN formula[f] RPAREN | simpleTerm[f] );
+ * ../../../../src/parser/cvc/Cvc.g:2028:1: setsTerm[CVC4::Expr& f] : ( SETS_CARD_TOK LPAREN formula[f] RPAREN | simpleTerm[f] );
  */
 static void
 setsTerm(pCvcParser ctx, CVC4::Expr& f)
@@ -24813,17 +21569,17 @@ setsTerm(pCvcParser ctx, CVC4::Expr& f)
 
     {
         {
-            //  ../../../../../../src/parser/cvc/Cvc.g:2021:3: ( SETS_CARD_TOK LPAREN formula[f] RPAREN | simpleTerm[f] )
+            //  ../../../../src/parser/cvc/Cvc.g:2032:3: ( SETS_CARD_TOK LPAREN formula[f] RPAREN | simpleTerm[f] )
 
-            ANTLR3_UINT32 alt100;
+            ANTLR3_UINT32 alt101;
 
-            alt100=2;
+            alt101=2;
 
             switch ( LA(1) )
             {
             case SETS_CARD_TOK:
             	{
-            		alt100=1;
+            		alt101=1;
             	}
                 break;
             case ARRAY_TOK:
@@ -24841,7 +21597,7 @@ setsTerm(pCvcParser ctx, CVC4::Expr& f)
             case TRUE_TOK:
             case UNIVSET_TOK:
             	{
-            		alt100=2;
+            		alt101=2;
             	}
                 break;
 
@@ -24855,7 +21611,7 @@ setsTerm(pCvcParser ctx, CVC4::Expr& f)
                 CONSTRUCTEX();
                 EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
                 EXCEPTION->message      = (void *)"";
-                EXCEPTION->decisionNum  = 100;
+                EXCEPTION->decisionNum  = 101;
                 EXCEPTION->state        = 0;
 
 
@@ -24863,12 +21619,12 @@ setsTerm(pCvcParser ctx, CVC4::Expr& f)
 
             }
 
-            switch (alt100)
+            switch (alt101)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2021:5: SETS_CARD_TOK LPAREN formula[f] RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:2032:5: SETS_CARD_TOK LPAREN formula[f] RPAREN
         	    {
-        	         MATCHT(SETS_CARD_TOK, &FOLLOW_SETS_CARD_TOK_in_setsTerm7388);
+        	         MATCHT(SETS_CARD_TOK, &FOLLOW_SETS_CARD_TOK_in_setsTerm7440);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesetsTermEx;
@@ -24879,7 +21635,7 @@ setsTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_setsTerm7390);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_setsTerm7442);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesetsTermEx;
@@ -24890,7 +21646,7 @@ setsTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_setsTerm7392);
+        	        FOLLOWPUSH(FOLLOW_formula_in_setsTerm7444);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -24904,7 +21660,7 @@ setsTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_setsTerm7395);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_setsTerm7447);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesetsTermEx;
@@ -24924,9 +21680,9 @@ setsTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2023:5: simpleTerm[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:2034:5: simpleTerm[f]
         	    {
-        	        FOLLOWPUSH(FOLLOW_simpleTerm_in_setsTerm7407);
+        	        FOLLOWPUSH(FOLLOW_simpleTerm_in_setsTerm7459);
         	        simpleTerm(ctx, f);
 
         	        FOLLOWPOP();
@@ -24963,7 +21719,7 @@ setsTerm(pCvcParser ctx, CVC4::Expr& f)
 
 /**
  * $ANTLR start simpleTerm
- * ../../../../../../src/parser/cvc/Cvc.g:2028:1: simpleTerm[CVC4::Expr& f] : ( iteTerm[f] | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | LPAREN RPAREN | PARENHASH HASHPAREN | LBRACE RBRACE | UNIVSET_TOK | LBRACE formula[f] ( COMMA formula[f] )* RBRACE | BAR BAR formula[f] BAR BAR | ARRAY_TOK LPAREN restrictedType[t, CHECK_DECLARED] OF_TOK restrictedType[t2, CHECK_DECLARED] RPAREN COLON simpleTerm[f] | TRUE_TOK | FALSE_TOK | DECIMAL_LITERAL | INTEGER_LITERAL | HEX_LITERAL | BINARY_LI [...]
+ * ../../../../src/parser/cvc/Cvc.g:2039:1: simpleTerm[CVC4::Expr& f] : ( iteTerm[f] | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | LPAREN RPAREN | PARENHASH HASHPAREN | LBRACE RBRACE | UNIVSET_TOK | LBRACE formula[f] ( COMMA formula[f] )* RBRACE | BAR BAR formula[f] BAR BAR | ARRAY_TOK LPAREN restrictedType[t, CHECK_DECLARED] OF_TOK restrictedType[t2, CHECK_DECLARED] RPAREN COLON simpleTerm[f] | TRUE_TOK | FALSE_TOK | DECIMAL_LITERAL | INTEGER_LITERAL | HEX_LITERAL | BINARY_LITERAL  [...]
  */
 static void
 simpleTerm(pCvcParser ctx, CVC4::Expr& f)
@@ -24991,17 +21747,17 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
 
     {
         {
-            //  ../../../../../../src/parser/cvc/Cvc.g:2038:3: ( iteTerm[f] | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | LPAREN RPAREN | PARENHASH HASHPAREN | LBRACE RBRACE | UNIVSET_TOK | LBRACE formula[f] ( COMMA formula[f] )* RBRACE | BAR BAR formula[f] BAR BAR | ARRAY_TOK LPAREN restrictedType[t, CHECK_DECLARED] OF_TOK restrictedType[t2, CHECK_DECLARED] RPAREN COLON simpleTerm[f] | TRUE_TOK | FALSE_TOK | DECIMAL_LITERAL | INTEGER_LITERAL | HEX_LITERAL | BINARY_LITERAL | PARENHA [...]
+            //  ../../../../src/parser/cvc/Cvc.g:2049:3: ( iteTerm[f] | LPAREN formula[f] ( COMMA formula[f] )* RPAREN | LPAREN RPAREN | PARENHASH HASHPAREN | LBRACE RBRACE | UNIVSET_TOK | LBRACE formula[f] ( COMMA formula[f] )* RBRACE | BAR BAR formula[f] BAR BAR | ARRAY_TOK LPAREN restrictedType[t, CHECK_DECLARED] OF_TOK restrictedType[t2, CHECK_DECLARED] RPAREN COLON simpleTerm[f] | TRUE_TOK | FALSE_TOK | DECIMAL_LITERAL | INTEGER_LITERAL | HEX_LITERAL | BINARY_LITERAL | PARENHASH rec [...]
 
-            ANTLR3_UINT32 alt104;
+            ANTLR3_UINT32 alt105;
 
-            alt104=17;
+            alt105=17;
 
             switch ( LA(1) )
             {
             case IF_TOK:
             	{
-            		alt104=1;
+            		alt105=1;
             	}
                 break;
             case LPAREN:
@@ -25010,7 +21766,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
             		{
             		case RPAREN:
             			{
-            				alt104=3;
+            				alt105=3;
             			}
             		    break;
             		case ABS_TOK:
@@ -25056,6 +21812,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
             		case FORALL_TOK:
             		case HEX_LITERAL:
             		case IDENTIFIER:
+            		case IDEN_TOK:
             		case IF_TOK:
             		case INTEGER_LITERAL:
             		case IS_INTEGER_TOK:
@@ -25089,7 +21846,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
             		case TUPLE_TOK:
             		case UNIVSET_TOK:
             			{
-            				alt104=2;
+            				alt105=2;
             			}
             		    break;
 
@@ -25103,7 +21860,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
             		    CONSTRUCTEX();
             		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             		    EXCEPTION->message      = (void *)"";
-            		    EXCEPTION->decisionNum  = 104;
+            		    EXCEPTION->decisionNum  = 105;
             		    EXCEPTION->state        = 2;
 
 
@@ -25119,12 +21876,12 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
             		{
             		case HASHPAREN:
             			{
-            				alt104=4;
+            				alt105=4;
             			}
             		    break;
             		case IDENTIFIER:
             			{
-            				alt104=16;
+            				alt105=16;
             			}
             		    break;
 
@@ -25138,7 +21895,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
             		    CONSTRUCTEX();
             		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             		    EXCEPTION->message      = (void *)"";
-            		    EXCEPTION->decisionNum  = 104;
+            		    EXCEPTION->decisionNum  = 105;
             		    EXCEPTION->state        = 3;
 
 
@@ -25154,7 +21911,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
             		{
             		case RBRACE:
             			{
-            				alt104=5;
+            				alt105=5;
             			}
             		    break;
             		case ABS_TOK:
@@ -25200,6 +21957,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
             		case FORALL_TOK:
             		case HEX_LITERAL:
             		case IDENTIFIER:
+            		case IDEN_TOK:
             		case IF_TOK:
             		case INTEGER_LITERAL:
             		case IS_INTEGER_TOK:
@@ -25233,7 +21991,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
             		case TUPLE_TOK:
             		case UNIVSET_TOK:
             			{
-            				alt104=7;
+            				alt105=7;
             			}
             		    break;
 
@@ -25247,7 +22005,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
             		    CONSTRUCTEX();
             		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             		    EXCEPTION->message      = (void *)"";
-            		    EXCEPTION->decisionNum  = 104;
+            		    EXCEPTION->decisionNum  = 105;
             		    EXCEPTION->state        = 4;
 
 
@@ -25259,52 +22017,52 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
                 break;
             case UNIVSET_TOK:
             	{
-            		alt104=6;
+            		alt105=6;
             	}
                 break;
             case BAR:
             	{
-            		alt104=8;
+            		alt105=8;
             	}
                 break;
             case ARRAY_TOK:
             	{
-            		alt104=9;
+            		alt105=9;
             	}
                 break;
             case TRUE_TOK:
             	{
-            		alt104=10;
+            		alt105=10;
             	}
                 break;
             case FALSE_TOK:
             	{
-            		alt104=11;
+            		alt105=11;
             	}
                 break;
             case DECIMAL_LITERAL:
             	{
-            		alt104=12;
+            		alt105=12;
             	}
                 break;
             case INTEGER_LITERAL:
             	{
-            		alt104=13;
+            		alt105=13;
             	}
                 break;
             case HEX_LITERAL:
             	{
-            		alt104=14;
+            		alt105=14;
             	}
                 break;
             case BINARY_LITERAL:
             	{
-            		alt104=15;
+            		alt105=15;
             	}
                 break;
             case IDENTIFIER:
             	{
-            		alt104=17;
+            		alt105=17;
             	}
                 break;
 
@@ -25318,7 +22076,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
                 CONSTRUCTEX();
                 EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
                 EXCEPTION->message      = (void *)"";
-                EXCEPTION->decisionNum  = 104;
+                EXCEPTION->decisionNum  = 105;
                 EXCEPTION->state        = 0;
 
 
@@ -25326,12 +22084,12 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
 
             }
 
-            switch (alt104)
+            switch (alt105)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2038:5: iteTerm[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:2049:5: iteTerm[f]
         	    {
-        	        FOLLOWPUSH(FOLLOW_iteTerm_in_simpleTerm7438);
+        	        FOLLOWPUSH(FOLLOW_iteTerm_in_simpleTerm7490);
         	        iteTerm(ctx, f);
 
         	        FOLLOWPOP();
@@ -25348,9 +22106,9 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2041:5: LPAREN formula[f] ( COMMA formula[f] )* RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:2052:5: LPAREN formula[f] ( COMMA formula[f] )* RPAREN
         	    {
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_simpleTerm7461);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_simpleTerm7513);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25361,7 +22119,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_simpleTerm7463);
+        	        FOLLOWPUSH(FOLLOW_formula_in_simpleTerm7515);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -25381,27 +22139,27 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:2042:5: ( COMMA formula[f] )*
+        	        // ../../../../src/parser/cvc/Cvc.g:2053:5: ( COMMA formula[f] )*
 
         	        for (;;)
         	        {
-        	            int alt101=2;
+        	            int alt102=2;
         	            switch ( LA(1) )
         	            {
         	            case COMMA:
         	            	{
-        	            		alt101=1;
+        	            		alt102=1;
         	            	}
         	                break;
 
         	            }
 
-        	            switch (alt101)
+        	            switch (alt102)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:2042:7: COMMA formula[f]
+        	        	    // ../../../../src/parser/cvc/Cvc.g:2053:7: COMMA formula[f]
         	        	    {
-        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_simpleTerm7474);
+        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_simpleTerm7526);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulesimpleTermEx;
@@ -25412,7 +22170,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        	        }
 
 
-        	        	        FOLLOWPUSH(FOLLOW_formula_in_simpleTerm7476);
+        	        	        FOLLOWPUSH(FOLLOW_formula_in_simpleTerm7528);
         	        	        formula(ctx, f);
 
         	        	        FOLLOWPOP();
@@ -25436,14 +22194,14 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        	    break;
 
         	        	default:
-        	        	    goto loop101;	/* break out of the loop */
+        	        	    goto loop102;	/* break out of the loop */
         	        	    break;
         	            }
         	        }
-        	        loop101: ; /* Jump out to here if this rule does not match */
+        	        loop102: ; /* Jump out to here if this rule does not match */
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_simpleTerm7484);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_simpleTerm7536);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25476,9 +22234,9 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2059:5: LPAREN RPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:2070:5: LPAREN RPAREN
         	    {
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_simpleTerm7507);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_simpleTerm7559);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25489,7 +22247,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_simpleTerm7509);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_simpleTerm7561);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25512,9 +22270,9 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2066:5: PARENHASH HASHPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:2077:5: PARENHASH HASHPAREN
         	    {
-        	         MATCHT(PARENHASH, &FOLLOW_PARENHASH_in_simpleTerm7553);
+        	         MATCHT(PARENHASH, &FOLLOW_PARENHASH_in_simpleTerm7605);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25525,7 +22283,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(HASHPAREN, &FOLLOW_HASHPAREN_in_simpleTerm7555);
+        	         MATCHT(HASHPAREN, &FOLLOW_HASHPAREN_in_simpleTerm7607);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25548,9 +22306,9 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2072:5: LBRACE RBRACE
+        	    // ../../../../src/parser/cvc/Cvc.g:2083:5: LBRACE RBRACE
         	    {
-        	         MATCHT(LBRACE, &FOLLOW_LBRACE_in_simpleTerm7573);
+        	         MATCHT(LBRACE, &FOLLOW_LBRACE_in_simpleTerm7625);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25561,7 +22319,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RBRACE, &FOLLOW_RBRACE_in_simpleTerm7575);
+        	         MATCHT(RBRACE, &FOLLOW_RBRACE_in_simpleTerm7627);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25581,9 +22339,9 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2074:5: UNIVSET_TOK
+        	    // ../../../../src/parser/cvc/Cvc.g:2085:5: UNIVSET_TOK
         	    {
-        	         MATCHT(UNIVSET_TOK, &FOLLOW_UNIVSET_TOK_in_simpleTerm7587);
+        	         MATCHT(UNIVSET_TOK, &FOLLOW_UNIVSET_TOK_in_simpleTerm7639);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25597,7 +22355,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        if ( BACKTRACKING==0 )
         	        {
         	             //booleanType is placeholder
-        	                  f = EXPR_MANAGER->mkUniqueVar(EXPR_MANAGER->booleanType(), kind::UNIVERSE_SET);
+        	                  f = EXPR_MANAGER->mkNullaryOperator(EXPR_MANAGER->booleanType(), kind::UNIVERSE_SET);
         	                
         	        }
 
@@ -25605,9 +22363,9 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 7:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2080:5: LBRACE formula[f] ( COMMA formula[f] )* RBRACE
+        	    // ../../../../src/parser/cvc/Cvc.g:2091:5: LBRACE formula[f] ( COMMA formula[f] )* RBRACE
         	    {
-        	         MATCHT(LBRACE, &FOLLOW_LBRACE_in_simpleTerm7606);
+        	         MATCHT(LBRACE, &FOLLOW_LBRACE_in_simpleTerm7658);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25618,7 +22376,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_simpleTerm7608);
+        	        FOLLOWPUSH(FOLLOW_formula_in_simpleTerm7660);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -25638,27 +22396,27 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:2081:5: ( COMMA formula[f] )*
+        	        // ../../../../src/parser/cvc/Cvc.g:2092:5: ( COMMA formula[f] )*
 
         	        for (;;)
         	        {
-        	            int alt102=2;
+        	            int alt103=2;
         	            switch ( LA(1) )
         	            {
         	            case COMMA:
         	            	{
-        	            		alt102=1;
+        	            		alt103=1;
         	            	}
         	                break;
 
         	            }
 
-        	            switch (alt102)
+        	            switch (alt103)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:2081:7: COMMA formula[f]
+        	        	    // ../../../../src/parser/cvc/Cvc.g:2092:7: COMMA formula[f]
         	        	    {
-        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_simpleTerm7619);
+        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_simpleTerm7671);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulesimpleTermEx;
@@ -25669,7 +22427,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        	        }
 
 
-        	        	        FOLLOWPUSH(FOLLOW_formula_in_simpleTerm7621);
+        	        	        FOLLOWPUSH(FOLLOW_formula_in_simpleTerm7673);
         	        	        formula(ctx, f);
 
         	        	        FOLLOWPOP();
@@ -25693,14 +22451,14 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        	    break;
 
         	        	default:
-        	        	    goto loop102;	/* break out of the loop */
+        	        	    goto loop103;	/* break out of the loop */
         	        	    break;
         	            }
         	        }
-        	        loop102: ; /* Jump out to here if this rule does not match */
+        	        loop103: ; /* Jump out to here if this rule does not match */
 
 
-        	         MATCHT(RBRACE, &FOLLOW_RBRACE_in_simpleTerm7629);
+        	         MATCHT(RBRACE, &FOLLOW_RBRACE_in_simpleTerm7681);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25724,9 +22482,9 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 8:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2089:5: BAR BAR formula[f] BAR BAR
+        	    // ../../../../src/parser/cvc/Cvc.g:2100:5: BAR BAR formula[f] BAR BAR
         	    {
-        	         MATCHT(BAR, &FOLLOW_BAR_in_simpleTerm7648);
+        	         MATCHT(BAR, &FOLLOW_BAR_in_simpleTerm7700);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25737,7 +22495,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(BAR, &FOLLOW_BAR_in_simpleTerm7650);
+        	         MATCHT(BAR, &FOLLOW_BAR_in_simpleTerm7702);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25748,7 +22506,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_simpleTerm7652);
+        	        FOLLOWPUSH(FOLLOW_formula_in_simpleTerm7704);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -25768,7 +22526,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(BAR, &FOLLOW_BAR_in_simpleTerm7657);
+        	         MATCHT(BAR, &FOLLOW_BAR_in_simpleTerm7709);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25779,7 +22537,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(BAR, &FOLLOW_BAR_in_simpleTerm7659);
+        	         MATCHT(BAR, &FOLLOW_BAR_in_simpleTerm7711);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25800,9 +22558,9 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 9:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2094:5: ARRAY_TOK LPAREN restrictedType[t, CHECK_DECLARED] OF_TOK restrictedType[t2, CHECK_DECLARED] RPAREN COLON simpleTerm[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:2105:5: ARRAY_TOK LPAREN restrictedType[t, CHECK_DECLARED] OF_TOK restrictedType[t2, CHECK_DECLARED] RPAREN COLON simpleTerm[f]
         	    {
-        	         MATCHT(ARRAY_TOK, &FOLLOW_ARRAY_TOK_in_simpleTerm7678);
+        	         MATCHT(ARRAY_TOK, &FOLLOW_ARRAY_TOK_in_simpleTerm7730);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25813,7 +22571,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_simpleTerm7682);
+        	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_simpleTerm7734);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25824,7 +22582,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_restrictedType_in_simpleTerm7688);
+        	        FOLLOWPUSH(FOLLOW_restrictedType_in_simpleTerm7740);
         	        restrictedType(ctx, t, CHECK_DECLARED);
 
         	        FOLLOWPOP();
@@ -25838,7 +22596,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(OF_TOK, &FOLLOW_OF_TOK_in_simpleTerm7691);
+        	         MATCHT(OF_TOK, &FOLLOW_OF_TOK_in_simpleTerm7743);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25849,7 +22607,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_restrictedType_in_simpleTerm7693);
+        	        FOLLOWPUSH(FOLLOW_restrictedType_in_simpleTerm7745);
         	        restrictedType(ctx, t2, CHECK_DECLARED);
 
         	        FOLLOWPOP();
@@ -25863,7 +22621,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_simpleTerm7700);
+        	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_simpleTerm7752);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25874,7 +22632,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(COLON, &FOLLOW_COLON_in_simpleTerm7702);
+        	         MATCHT(COLON, &FOLLOW_COLON_in_simpleTerm7754);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25885,7 +22643,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_simpleTerm_in_simpleTerm7704);
+        	        FOLLOWPUSH(FOLLOW_simpleTerm_in_simpleTerm7756);
         	        simpleTerm(ctx, f);
 
         	        FOLLOWPOP();
@@ -25928,9 +22686,9 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 10:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2120:5: TRUE_TOK
+        	    // ../../../../src/parser/cvc/Cvc.g:2131:5: TRUE_TOK
         	    {
-        	         MATCHT(TRUE_TOK, &FOLLOW_TRUE_TOK_in_simpleTerm7724);
+        	         MATCHT(TRUE_TOK, &FOLLOW_TRUE_TOK_in_simpleTerm7776);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25950,9 +22708,9 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 11:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2121:5: FALSE_TOK
+        	    // ../../../../src/parser/cvc/Cvc.g:2132:5: FALSE_TOK
         	    {
-        	         MATCHT(FALSE_TOK, &FOLLOW_FALSE_TOK_in_simpleTerm7733);
+        	         MATCHT(FALSE_TOK, &FOLLOW_FALSE_TOK_in_simpleTerm7785);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25972,9 +22730,9 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 12:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2126:5: DECIMAL_LITERAL
+        	    // ../../../../src/parser/cvc/Cvc.g:2137:5: DECIMAL_LITERAL
         	    {
-        	        DECIMAL_LITERAL17 = (pANTLR3_COMMON_TOKEN) MATCHT(DECIMAL_LITERAL, &FOLLOW_DECIMAL_LITERAL_in_simpleTerm7753);
+        	        DECIMAL_LITERAL17 = (pANTLR3_COMMON_TOKEN) MATCHT(DECIMAL_LITERAL, &FOLLOW_DECIMAL_LITERAL_in_simpleTerm7805);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -25994,9 +22752,9 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 13:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2127:5: INTEGER_LITERAL
+        	    // ../../../../src/parser/cvc/Cvc.g:2138:5: INTEGER_LITERAL
         	    {
-        	        INTEGER_LITERAL18 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_simpleTerm7761);
+        	        INTEGER_LITERAL18 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_simpleTerm7813);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -26016,9 +22774,9 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 14:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2129:5: HEX_LITERAL
+        	    // ../../../../src/parser/cvc/Cvc.g:2140:5: HEX_LITERAL
         	    {
-        	        HEX_LITERAL19 = (pANTLR3_COMMON_TOKEN) MATCHT(HEX_LITERAL, &FOLLOW_HEX_LITERAL_in_simpleTerm7775);
+        	        HEX_LITERAL19 = (pANTLR3_COMMON_TOKEN) MATCHT(HEX_LITERAL, &FOLLOW_HEX_LITERAL_in_simpleTerm7827);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -26040,9 +22798,9 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 15:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2133:5: BINARY_LITERAL
+        	    // ../../../../src/parser/cvc/Cvc.g:2144:5: BINARY_LITERAL
         	    {
-        	        BINARY_LITERAL20 = (pANTLR3_COMMON_TOKEN) MATCHT(BINARY_LITERAL, &FOLLOW_BINARY_LITERAL_in_simpleTerm7787);
+        	        BINARY_LITERAL20 = (pANTLR3_COMMON_TOKEN) MATCHT(BINARY_LITERAL, &FOLLOW_BINARY_LITERAL_in_simpleTerm7839);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -26064,9 +22822,9 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 16:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2138:5: PARENHASH recordEntry[name,e] ( COMMA recordEntry[name,e] )* HASHPAREN
+        	    // ../../../../src/parser/cvc/Cvc.g:2149:5: PARENHASH recordEntry[name,e] ( COMMA recordEntry[name,e] )* HASHPAREN
         	    {
-        	         MATCHT(PARENHASH, &FOLLOW_PARENHASH_in_simpleTerm7805);
+        	         MATCHT(PARENHASH, &FOLLOW_PARENHASH_in_simpleTerm7857);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -26077,7 +22835,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_recordEntry_in_simpleTerm7807);
+        	        FOLLOWPUSH(FOLLOW_recordEntry_in_simpleTerm7859);
         	        recordEntry(ctx, name, e);
 
         	        FOLLOWPOP();
@@ -26097,27 +22855,27 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        // ../../../../../../src/parser/cvc/Cvc.g:2139:5: ( COMMA recordEntry[name,e] )*
+        	        // ../../../../src/parser/cvc/Cvc.g:2150:5: ( COMMA recordEntry[name,e] )*
 
         	        for (;;)
         	        {
-        	            int alt103=2;
+        	            int alt104=2;
         	            switch ( LA(1) )
         	            {
         	            case COMMA:
         	            	{
-        	            		alt103=1;
+        	            		alt104=1;
         	            	}
         	                break;
 
         	            }
 
-        	            switch (alt103)
+        	            switch (alt104)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/cvc/Cvc.g:2139:7: COMMA recordEntry[name,e]
+        	        	    // ../../../../src/parser/cvc/Cvc.g:2150:7: COMMA recordEntry[name,e]
         	        	    {
-        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_simpleTerm7818);
+        	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_simpleTerm7870);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulesimpleTermEx;
@@ -26128,7 +22886,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        	        }
 
 
-        	        	        FOLLOWPUSH(FOLLOW_recordEntry_in_simpleTerm7820);
+        	        	        FOLLOWPUSH(FOLLOW_recordEntry_in_simpleTerm7872);
         	        	        recordEntry(ctx, name, e);
 
         	        	        FOLLOWPOP();
@@ -26152,14 +22910,14 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	        	    break;
 
         	        	default:
-        	        	    goto loop103;	/* break out of the loop */
+        	        	    goto loop104;	/* break out of the loop */
         	        	    break;
         	            }
         	        }
-        	        loop103: ; /* Jump out to here if this rule does not match */
+        	        loop104: ; /* Jump out to here if this rule does not match */
 
 
-        	         MATCHT(HASHPAREN, &FOLLOW_HASHPAREN_in_simpleTerm7828);
+        	         MATCHT(HASHPAREN, &FOLLOW_HASHPAREN_in_simpleTerm7880);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleTermEx;
@@ -26188,9 +22946,9 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 17:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2152:5: identifier[name,CHECK_DECLARED,SYM_VARIABLE]
+        	    // ../../../../src/parser/cvc/Cvc.g:2163:5: identifier[name,CHECK_DECLARED,SYM_VARIABLE]
         	    {
-        	        FOLLOWPUSH(FOLLOW_identifier_in_simpleTerm7847);
+        	        FOLLOWPUSH(FOLLOW_identifier_in_simpleTerm7899);
         	        identifier(ctx, name, CHECK_DECLARED, SYM_VARIABLE);
 
         	        FOLLOWPOP();
@@ -26245,7 +23003,7 @@ simpleTerm(pCvcParser ctx, CVC4::Expr& f)
 
 /**
  * $ANTLR start typeAscription
- * ../../../../../../src/parser/cvc/Cvc.g:2168:1: typeAscription[const CVC4::Expr& f, CVC4::Type& t] : COLON COLON type[t,CHECK_DECLARED] ;
+ * ../../../../src/parser/cvc/Cvc.g:2179:1: typeAscription[const CVC4::Expr& f, CVC4::Type& t] : COLON COLON type[t,CHECK_DECLARED] ;
  */
 static void
 typeAscription(pCvcParser ctx, const CVC4::Expr& f, CVC4::Type& t)
@@ -26256,10 +23014,10 @@ typeAscription(pCvcParser ctx, const CVC4::Expr& f, CVC4::Type& t)
 
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:2171:3: ( COLON COLON type[t,CHECK_DECLARED] )
-        // ../../../../../../src/parser/cvc/Cvc.g:2171:5: COLON COLON type[t,CHECK_DECLARED]
+        // ../../../../src/parser/cvc/Cvc.g:2182:3: ( COLON COLON type[t,CHECK_DECLARED] )
+        // ../../../../src/parser/cvc/Cvc.g:2182:5: COLON COLON type[t,CHECK_DECLARED]
         {
-             MATCHT(COLON, &FOLLOW_COLON_in_typeAscription7887);
+             MATCHT(COLON, &FOLLOW_COLON_in_typeAscription7939);
             if  (HASEXCEPTION())
             {
                 goto ruletypeAscriptionEx;
@@ -26270,7 +23028,7 @@ typeAscription(pCvcParser ctx, const CVC4::Expr& f, CVC4::Type& t)
             }
 
 
-             MATCHT(COLON, &FOLLOW_COLON_in_typeAscription7889);
+             MATCHT(COLON, &FOLLOW_COLON_in_typeAscription7941);
             if  (HASEXCEPTION())
             {
                 goto ruletypeAscriptionEx;
@@ -26281,7 +23039,7 @@ typeAscription(pCvcParser ctx, const CVC4::Expr& f, CVC4::Type& t)
             }
 
 
-            FOLLOWPUSH(FOLLOW_type_in_typeAscription7891);
+            FOLLOWPUSH(FOLLOW_type_in_typeAscription7943);
             type(ctx, t, CHECK_DECLARED);
 
             FOLLOWPOP();
@@ -26315,7 +23073,7 @@ typeAscription(pCvcParser ctx, const CVC4::Expr& f, CVC4::Type& t)
 
 /**
  * $ANTLR start recordEntry
- * ../../../../../../src/parser/cvc/Cvc.g:2177:1: recordEntry[std::string& name, CVC4::Expr& ex] : identifier[name,CHECK_NONE,SYM_VARIABLE] ASSIGN_TOK formula[ex] ;
+ * ../../../../src/parser/cvc/Cvc.g:2188:1: recordEntry[std::string& name, CVC4::Expr& ex] : identifier[name,CHECK_NONE,SYM_VARIABLE] ASSIGN_TOK formula[ex] ;
  */
 static void
 recordEntry(pCvcParser ctx, std::string& name, CVC4::Expr& ex)
@@ -26324,10 +23082,10 @@ recordEntry(pCvcParser ctx, std::string& name, CVC4::Expr& ex)
      */
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:2178:3: ( identifier[name,CHECK_NONE,SYM_VARIABLE] ASSIGN_TOK formula[ex] )
-        // ../../../../../../src/parser/cvc/Cvc.g:2178:5: identifier[name,CHECK_NONE,SYM_VARIABLE] ASSIGN_TOK formula[ex]
+        // ../../../../src/parser/cvc/Cvc.g:2189:3: ( identifier[name,CHECK_NONE,SYM_VARIABLE] ASSIGN_TOK formula[ex] )
+        // ../../../../src/parser/cvc/Cvc.g:2189:5: identifier[name,CHECK_NONE,SYM_VARIABLE] ASSIGN_TOK formula[ex]
         {
-            FOLLOWPUSH(FOLLOW_identifier_in_recordEntry7908);
+            FOLLOWPUSH(FOLLOW_identifier_in_recordEntry7960);
             identifier(ctx, name, CHECK_NONE, SYM_VARIABLE);
 
             FOLLOWPOP();
@@ -26341,7 +23099,7 @@ recordEntry(pCvcParser ctx, std::string& name, CVC4::Expr& ex)
             }
 
 
-             MATCHT(ASSIGN_TOK, &FOLLOW_ASSIGN_TOK_in_recordEntry7911);
+             MATCHT(ASSIGN_TOK, &FOLLOW_ASSIGN_TOK_in_recordEntry7963);
             if  (HASEXCEPTION())
             {
                 goto rulerecordEntryEx;
@@ -26352,7 +23110,7 @@ recordEntry(pCvcParser ctx, std::string& name, CVC4::Expr& ex)
             }
 
 
-            FOLLOWPUSH(FOLLOW_formula_in_recordEntry7913);
+            FOLLOWPUSH(FOLLOW_formula_in_recordEntry7965);
             formula(ctx, ex);
 
             FOLLOWPOP();
@@ -26386,7 +23144,7 @@ recordEntry(pCvcParser ctx, std::string& name, CVC4::Expr& ex)
 
 /**
  * $ANTLR start iteTerm
- * ../../../../../../src/parser/cvc/Cvc.g:2184:1: iteTerm[CVC4::Expr& f] : IF_TOK formula[f] THEN_TOK formula[f] iteElseTerm[f] ENDIF_TOK ;
+ * ../../../../src/parser/cvc/Cvc.g:2195:1: iteTerm[CVC4::Expr& f] : IF_TOK formula[f] THEN_TOK formula[f] iteElseTerm[f] ENDIF_TOK ;
  */
 static void
 iteTerm(pCvcParser ctx, CVC4::Expr& f)
@@ -26399,10 +23157,10 @@ iteTerm(pCvcParser ctx, CVC4::Expr& f)
       Debug("parser-extra") << "ite: " << AntlrInput::tokenText(LT(1)) << std::endl;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:2189:3: ( IF_TOK formula[f] THEN_TOK formula[f] iteElseTerm[f] ENDIF_TOK )
-        // ../../../../../../src/parser/cvc/Cvc.g:2189:5: IF_TOK formula[f] THEN_TOK formula[f] iteElseTerm[f] ENDIF_TOK
+        // ../../../../src/parser/cvc/Cvc.g:2200:3: ( IF_TOK formula[f] THEN_TOK formula[f] iteElseTerm[f] ENDIF_TOK )
+        // ../../../../src/parser/cvc/Cvc.g:2200:5: IF_TOK formula[f] THEN_TOK formula[f] iteElseTerm[f] ENDIF_TOK
         {
-             MATCHT(IF_TOK, &FOLLOW_IF_TOK_in_iteTerm7935);
+             MATCHT(IF_TOK, &FOLLOW_IF_TOK_in_iteTerm7987);
             if  (HASEXCEPTION())
             {
                 goto ruleiteTermEx;
@@ -26413,7 +23171,7 @@ iteTerm(pCvcParser ctx, CVC4::Expr& f)
             }
 
 
-            FOLLOWPUSH(FOLLOW_formula_in_iteTerm7937);
+            FOLLOWPUSH(FOLLOW_formula_in_iteTerm7989);
             formula(ctx, f);
 
             FOLLOWPOP();
@@ -26433,7 +23191,7 @@ iteTerm(pCvcParser ctx, CVC4::Expr& f)
             }
 
 
-             MATCHT(THEN_TOK, &FOLLOW_THEN_TOK_in_iteTerm7946);
+             MATCHT(THEN_TOK, &FOLLOW_THEN_TOK_in_iteTerm7998);
             if  (HASEXCEPTION())
             {
                 goto ruleiteTermEx;
@@ -26444,7 +23202,7 @@ iteTerm(pCvcParser ctx, CVC4::Expr& f)
             }
 
 
-            FOLLOWPUSH(FOLLOW_formula_in_iteTerm7948);
+            FOLLOWPUSH(FOLLOW_formula_in_iteTerm8000);
             formula(ctx, f);
 
             FOLLOWPOP();
@@ -26464,7 +23222,7 @@ iteTerm(pCvcParser ctx, CVC4::Expr& f)
             }
 
 
-            FOLLOWPUSH(FOLLOW_iteElseTerm_in_iteTerm7957);
+            FOLLOWPUSH(FOLLOW_iteElseTerm_in_iteTerm8009);
             iteElseTerm(ctx, f);
 
             FOLLOWPOP();
@@ -26484,7 +23242,7 @@ iteTerm(pCvcParser ctx, CVC4::Expr& f)
             }
 
 
-             MATCHT(ENDIF_TOK, &FOLLOW_ENDIF_TOK_in_iteTerm7966);
+             MATCHT(ENDIF_TOK, &FOLLOW_ENDIF_TOK_in_iteTerm8018);
             if  (HASEXCEPTION())
             {
                 goto ruleiteTermEx;
@@ -26521,7 +23279,7 @@ iteTerm(pCvcParser ctx, CVC4::Expr& f)
 
 /**
  * $ANTLR start iteElseTerm
- * ../../../../../../src/parser/cvc/Cvc.g:2199:1: iteElseTerm[CVC4::Expr& f] : ( ELSE_TOK formula[f] | ELSEIF_TOK iteCondition= formula[f] THEN_TOK iteThen= formula[f] iteElse= iteElseTerm[f] );
+ * ../../../../src/parser/cvc/Cvc.g:2210:1: iteElseTerm[CVC4::Expr& f] : ( ELSE_TOK formula[f] | ELSEIF_TOK iteCondition= formula[f] THEN_TOK iteThen= formula[f] iteElse= iteElseTerm[f] );
  */
 static void
 iteElseTerm(pCvcParser ctx, CVC4::Expr& f)
@@ -26535,22 +23293,22 @@ iteElseTerm(pCvcParser ctx, CVC4::Expr& f)
 
     {
         {
-            //  ../../../../../../src/parser/cvc/Cvc.g:2204:3: ( ELSE_TOK formula[f] | ELSEIF_TOK iteCondition= formula[f] THEN_TOK iteThen= formula[f] iteElse= iteElseTerm[f] )
+            //  ../../../../src/parser/cvc/Cvc.g:2215:3: ( ELSE_TOK formula[f] | ELSEIF_TOK iteCondition= formula[f] THEN_TOK iteThen= formula[f] iteElse= iteElseTerm[f] )
 
-            ANTLR3_UINT32 alt105;
+            ANTLR3_UINT32 alt106;
 
-            alt105=2;
+            alt106=2;
 
             switch ( LA(1) )
             {
             case ELSE_TOK:
             	{
-            		alt105=1;
+            		alt106=1;
             	}
                 break;
             case ELSEIF_TOK:
             	{
-            		alt105=2;
+            		alt106=2;
             	}
                 break;
 
@@ -26564,7 +23322,7 @@ iteElseTerm(pCvcParser ctx, CVC4::Expr& f)
                 CONSTRUCTEX();
                 EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
                 EXCEPTION->message      = (void *)"";
-                EXCEPTION->decisionNum  = 105;
+                EXCEPTION->decisionNum  = 106;
                 EXCEPTION->state        = 0;
 
 
@@ -26572,12 +23330,12 @@ iteElseTerm(pCvcParser ctx, CVC4::Expr& f)
 
             }
 
-            switch (alt105)
+            switch (alt106)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2204:5: ELSE_TOK formula[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:2215:5: ELSE_TOK formula[f]
         	    {
-        	         MATCHT(ELSE_TOK, &FOLLOW_ELSE_TOK_in_iteElseTerm7993);
+        	         MATCHT(ELSE_TOK, &FOLLOW_ELSE_TOK_in_iteElseTerm8045);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleiteElseTermEx;
@@ -26588,7 +23346,7 @@ iteElseTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_iteElseTerm7995);
+        	        FOLLOWPUSH(FOLLOW_formula_in_iteElseTerm8047);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -26605,9 +23363,9 @@ iteElseTerm(pCvcParser ctx, CVC4::Expr& f)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2205:5: ELSEIF_TOK iteCondition= formula[f] THEN_TOK iteThen= formula[f] iteElse= iteElseTerm[f]
+        	    // ../../../../src/parser/cvc/Cvc.g:2216:5: ELSEIF_TOK iteCondition= formula[f] THEN_TOK iteThen= formula[f] iteElse= iteElseTerm[f]
         	    {
-        	         MATCHT(ELSEIF_TOK, &FOLLOW_ELSEIF_TOK_in_iteElseTerm8002);
+        	         MATCHT(ELSEIF_TOK, &FOLLOW_ELSEIF_TOK_in_iteElseTerm8054);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleiteElseTermEx;
@@ -26618,7 +23376,7 @@ iteElseTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_iteElseTerm8008);
+        	        FOLLOWPUSH(FOLLOW_formula_in_iteElseTerm8060);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -26638,7 +23396,7 @@ iteElseTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	         MATCHT(THEN_TOK, &FOLLOW_THEN_TOK_in_iteElseTerm8017);
+        	         MATCHT(THEN_TOK, &FOLLOW_THEN_TOK_in_iteElseTerm8069);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleiteElseTermEx;
@@ -26649,7 +23407,7 @@ iteElseTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_formula_in_iteElseTerm8023);
+        	        FOLLOWPUSH(FOLLOW_formula_in_iteElseTerm8075);
         	        formula(ctx, f);
 
         	        FOLLOWPOP();
@@ -26669,7 +23427,7 @@ iteElseTerm(pCvcParser ctx, CVC4::Expr& f)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_iteElseTerm_in_iteElseTerm8036);
+        	        FOLLOWPUSH(FOLLOW_iteElseTerm_in_iteElseTerm8088);
         	        iteElseTerm(ctx, f);
 
         	        FOLLOWPOP();
@@ -26718,7 +23476,7 @@ iteElseTerm(pCvcParser ctx, CVC4::Expr& f)
 
 /**
  * $ANTLR start datatypeDef
- * ../../../../../../src/parser/cvc/Cvc.g:2214:1: datatypeDef[std::vector<CVC4::Datatype>& datatypes] : identifier[id,CHECK_NONE,SYM_SORT] ( LBRACKET identifier[id2,CHECK_UNDECLARED,SYM_SORT] ( COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT] )* RBRACKET )? EQUAL_TOK constructorDef[datatypes.back()] ( BAR constructorDef[datatypes.back()] )* ;
+ * ../../../../src/parser/cvc/Cvc.g:2225:1: datatypeDef[std::vector<CVC4::Datatype>& datatypes] : identifier[id,CHECK_NONE,SYM_SORT] ( LBRACKET identifier[id2,CHECK_UNDECLARED,SYM_SORT] ( COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT] )* RBRACKET )? EQUAL_TOK constructorDef[datatypes.back()] ( BAR constructorDef[datatypes.back()] )* ;
  */
 static void
 datatypeDef(pCvcParser ctx, std::vector<CVC4::Datatype>& datatypes)
@@ -26732,10 +23490,10 @@ datatypeDef(pCvcParser ctx, std::vector<CVC4::Datatype>& datatypes)
       std::vector< Type > params;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:2224:3: ( identifier[id,CHECK_NONE,SYM_SORT] ( LBRACKET identifier[id2,CHECK_UNDECLARED,SYM_SORT] ( COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT] )* RBRACKET )? EQUAL_TOK constructorDef[datatypes.back()] ( BAR constructorDef[datatypes.back()] )* )
-        // ../../../../../../src/parser/cvc/Cvc.g:2224:5: identifier[id,CHECK_NONE,SYM_SORT] ( LBRACKET identifier[id2,CHECK_UNDECLARED,SYM_SORT] ( COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT] )* RBRACKET )? EQUAL_TOK constructorDef[datatypes.back()] ( BAR constructorDef[datatypes.back()] )*
+        // ../../../../src/parser/cvc/Cvc.g:2235:3: ( identifier[id,CHECK_NONE,SYM_SORT] ( LBRACKET identifier[id2,CHECK_UNDECLARED,SYM_SORT] ( COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT] )* RBRACKET )? EQUAL_TOK constructorDef[datatypes.back()] ( BAR constructorDef[datatypes.back()] )* )
+        // ../../../../src/parser/cvc/Cvc.g:2235:5: identifier[id,CHECK_NONE,SYM_SORT] ( LBRACKET identifier[id2,CHECK_UNDECLARED,SYM_SORT] ( COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT] )* RBRACKET )? EQUAL_TOK constructorDef[datatypes.back()] ( BAR constructorDef[datatypes.back()] )*
         {
-            FOLLOWPUSH(FOLLOW_identifier_in_datatypeDef8072);
+            FOLLOWPUSH(FOLLOW_identifier_in_datatypeDef8124);
             identifier(ctx, id, CHECK_NONE, SYM_SORT);
 
             FOLLOWPOP();
@@ -26755,24 +23513,24 @@ datatypeDef(pCvcParser ctx, std::vector<CVC4::Datatype>& datatypes)
             }
 
 
-            // ../../../../../../src/parser/cvc/Cvc.g:2225:5: ( LBRACKET identifier[id2,CHECK_UNDECLARED,SYM_SORT] ( COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT] )* RBRACKET )?
+            // ../../../../src/parser/cvc/Cvc.g:2236:5: ( LBRACKET identifier[id2,CHECK_UNDECLARED,SYM_SORT] ( COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT] )* RBRACKET )?
             {
-                int alt107=2;
+                int alt108=2;
                 switch ( LA(1) )
                 {
                     case LBRACKET:
                     	{
-                    		alt107=1;
+                    		alt108=1;
                     	}
                         break;
                 }
 
-                switch (alt107)
+                switch (alt108)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:2225:7: LBRACKET identifier[id2,CHECK_UNDECLARED,SYM_SORT] ( COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT] )* RBRACKET
+            	    // ../../../../src/parser/cvc/Cvc.g:2236:7: LBRACKET identifier[id2,CHECK_UNDECLARED,SYM_SORT] ( COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT] )* RBRACKET
             	    {
-            	         MATCHT(LBRACKET, &FOLLOW_LBRACKET_in_datatypeDef8083);
+            	         MATCHT(LBRACKET, &FOLLOW_LBRACKET_in_datatypeDef8135);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruledatatypeDefEx;
@@ -26783,7 +23541,7 @@ datatypeDef(pCvcParser ctx, std::vector<CVC4::Datatype>& datatypes)
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_identifier_in_datatypeDef8085);
+            	        FOLLOWPUSH(FOLLOW_identifier_in_datatypeDef8137);
             	        identifier(ctx, id2, CHECK_UNDECLARED, SYM_SORT);
 
             	        FOLLOWPOP();
@@ -26806,27 +23564,27 @@ datatypeDef(pCvcParser ctx, std::vector<CVC4::Datatype>& datatypes)
             	        }
 
 
-            	        // ../../../../../../src/parser/cvc/Cvc.g:2229:7: ( COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT] )*
+            	        // ../../../../src/parser/cvc/Cvc.g:2240:7: ( COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT] )*
 
             	        for (;;)
             	        {
-            	            int alt106=2;
+            	            int alt107=2;
             	            switch ( LA(1) )
             	            {
             	            case COMMA:
             	            	{
-            	            		alt106=1;
+            	            		alt107=1;
             	            	}
             	                break;
 
             	            }
 
-            	            switch (alt106)
+            	            switch (alt107)
             	            {
             	        	case 1:
-            	        	    // ../../../../../../src/parser/cvc/Cvc.g:2229:9: COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT]
+            	        	    // ../../../../src/parser/cvc/Cvc.g:2240:9: COMMA identifier[id2,CHECK_UNDECLARED,SYM_SORT]
             	        	    {
-            	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_datatypeDef8098);
+            	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_datatypeDef8150);
             	        	        if  (HASEXCEPTION())
             	        	        {
             	        	            goto ruledatatypeDefEx;
@@ -26837,7 +23595,7 @@ datatypeDef(pCvcParser ctx, std::vector<CVC4::Datatype>& datatypes)
             	        	        }
 
 
-            	        	        FOLLOWPUSH(FOLLOW_identifier_in_datatypeDef8100);
+            	        	        FOLLOWPUSH(FOLLOW_identifier_in_datatypeDef8152);
             	        	        identifier(ctx, id2, CHECK_UNDECLARED, SYM_SORT);
 
             	        	        FOLLOWPOP();
@@ -26863,14 +23621,14 @@ datatypeDef(pCvcParser ctx, std::vector<CVC4::Datatype>& datatypes)
             	        	    break;
 
             	        	default:
-            	        	    goto loop106;	/* break out of the loop */
+            	        	    goto loop107;	/* break out of the loop */
             	        	    break;
             	            }
             	        }
-            	        loop106: ; /* Jump out to here if this rule does not match */
+            	        loop107: ; /* Jump out to here if this rule does not match */
 
 
-            	         MATCHT(RBRACKET, &FOLLOW_RBRACKET_in_datatypeDef8114);
+            	         MATCHT(RBRACKET, &FOLLOW_RBRACKET_in_datatypeDef8166);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruledatatypeDefEx;
@@ -26898,7 +23656,7 @@ datatypeDef(pCvcParser ctx, std::vector<CVC4::Datatype>& datatypes)
             }
 
 
-             MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_datatypeDef8133);
+             MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_datatypeDef8185);
             if  (HASEXCEPTION())
             {
                 goto ruledatatypeDefEx;
@@ -26909,7 +23667,7 @@ datatypeDef(pCvcParser ctx, std::vector<CVC4::Datatype>& datatypes)
             }
 
 
-            FOLLOWPUSH(FOLLOW_constructorDef_in_datatypeDef8135);
+            FOLLOWPUSH(FOLLOW_constructorDef_in_datatypeDef8187);
             constructorDef(ctx, datatypes.back());
 
             FOLLOWPOP();
@@ -26923,27 +23681,27 @@ datatypeDef(pCvcParser ctx, std::vector<CVC4::Datatype>& datatypes)
             }
 
 
-            // ../../../../../../src/parser/cvc/Cvc.g:2241:5: ( BAR constructorDef[datatypes.back()] )*
+            // ../../../../src/parser/cvc/Cvc.g:2252:5: ( BAR constructorDef[datatypes.back()] )*
 
             for (;;)
             {
-                int alt108=2;
+                int alt109=2;
                 switch ( LA(1) )
                 {
                 case BAR:
                 	{
-                		alt108=1;
+                		alt109=1;
                 	}
                     break;
 
                 }
 
-                switch (alt108)
+                switch (alt109)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:2241:7: BAR constructorDef[datatypes.back()]
+            	    // ../../../../src/parser/cvc/Cvc.g:2252:7: BAR constructorDef[datatypes.back()]
             	    {
-            	         MATCHT(BAR, &FOLLOW_BAR_in_datatypeDef8144);
+            	         MATCHT(BAR, &FOLLOW_BAR_in_datatypeDef8196);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruledatatypeDefEx;
@@ -26954,7 +23712,7 @@ datatypeDef(pCvcParser ctx, std::vector<CVC4::Datatype>& datatypes)
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_constructorDef_in_datatypeDef8146);
+            	        FOLLOWPUSH(FOLLOW_constructorDef_in_datatypeDef8198);
             	        constructorDef(ctx, datatypes.back());
 
             	        FOLLOWPOP();
@@ -26972,11 +23730,11 @@ datatypeDef(pCvcParser ctx, std::vector<CVC4::Datatype>& datatypes)
             	    break;
 
             	default:
-            	    goto loop108;	/* break out of the loop */
+            	    goto loop109;	/* break out of the loop */
             	    break;
                 }
             }
-            loop108: ; /* Jump out to here if this rule does not match */
+            loop109: ; /* Jump out to here if this rule does not match */
 
 
             if ( BACKTRACKING==0 )
@@ -27005,7 +23763,7 @@ datatypeDef(pCvcParser ctx, std::vector<CVC4::Datatype>& datatypes)
 
 /**
  * $ANTLR start constructorDef
- * ../../../../../../src/parser/cvc/Cvc.g:2248:1: constructorDef[CVC4::Datatype& type] : identifier[id,CHECK_UNDECLARED,SYM_SORT] ( LPAREN selector[&ctor] ( COMMA selector[&ctor] )* RPAREN )? ;
+ * ../../../../src/parser/cvc/Cvc.g:2259:1: constructorDef[CVC4::Datatype& type] : identifier[id,CHECK_UNDECLARED,SYM_SORT] ( LPAREN selector[&ctor] ( COMMA selector[&ctor] )* RPAREN )? ;
  */
 static void
 constructorDef(pCvcParser ctx, CVC4::Datatype& type)
@@ -27018,10 +23776,10 @@ constructorDef(pCvcParser ctx, CVC4::Datatype& type)
       CVC4::PtrCloser<CVC4::DatatypeConstructor> ctor;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:2253:3: ( identifier[id,CHECK_UNDECLARED,SYM_SORT] ( LPAREN selector[&ctor] ( COMMA selector[&ctor] )* RPAREN )? )
-        // ../../../../../../src/parser/cvc/Cvc.g:2253:5: identifier[id,CHECK_UNDECLARED,SYM_SORT] ( LPAREN selector[&ctor] ( COMMA selector[&ctor] )* RPAREN )?
+        // ../../../../src/parser/cvc/Cvc.g:2264:3: ( identifier[id,CHECK_UNDECLARED,SYM_SORT] ( LPAREN selector[&ctor] ( COMMA selector[&ctor] )* RPAREN )? )
+        // ../../../../src/parser/cvc/Cvc.g:2264:5: identifier[id,CHECK_UNDECLARED,SYM_SORT] ( LPAREN selector[&ctor] ( COMMA selector[&ctor] )* RPAREN )?
         {
-            FOLLOWPUSH(FOLLOW_identifier_in_constructorDef8177);
+            FOLLOWPUSH(FOLLOW_identifier_in_constructorDef8229);
             identifier(ctx, id, CHECK_UNDECLARED, SYM_SORT);
 
             FOLLOWPOP();
@@ -27046,24 +23804,24 @@ constructorDef(pCvcParser ctx, CVC4::Datatype& type)
             }
 
 
-            // ../../../../../../src/parser/cvc/Cvc.g:2260:5: ( LPAREN selector[&ctor] ( COMMA selector[&ctor] )* RPAREN )?
+            // ../../../../src/parser/cvc/Cvc.g:2271:5: ( LPAREN selector[&ctor] ( COMMA selector[&ctor] )* RPAREN )?
             {
-                int alt110=2;
+                int alt111=2;
                 switch ( LA(1) )
                 {
                     case LPAREN:
                     	{
-                    		alt110=1;
+                    		alt111=1;
                     	}
                         break;
                 }
 
-                switch (alt110)
+                switch (alt111)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/cvc/Cvc.g:2260:7: LPAREN selector[&ctor] ( COMMA selector[&ctor] )* RPAREN
+            	    // ../../../../src/parser/cvc/Cvc.g:2271:7: LPAREN selector[&ctor] ( COMMA selector[&ctor] )* RPAREN
             	    {
-            	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_constructorDef8192);
+            	         MATCHT(LPAREN, &FOLLOW_LPAREN_in_constructorDef8244);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleconstructorDefEx;
@@ -27074,7 +23832,7 @@ constructorDef(pCvcParser ctx, CVC4::Datatype& type)
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_selector_in_constructorDef8200);
+            	        FOLLOWPUSH(FOLLOW_selector_in_constructorDef8252);
             	        selector(ctx, &ctor);
 
             	        FOLLOWPOP();
@@ -27088,27 +23846,27 @@ constructorDef(pCvcParser ctx, CVC4::Datatype& type)
             	        }
 
 
-            	        // ../../../../../../src/parser/cvc/Cvc.g:2262:7: ( COMMA selector[&ctor] )*
+            	        // ../../../../src/parser/cvc/Cvc.g:2273:7: ( COMMA selector[&ctor] )*
 
             	        for (;;)
             	        {
-            	            int alt109=2;
+            	            int alt110=2;
             	            switch ( LA(1) )
             	            {
             	            case COMMA:
             	            	{
-            	            		alt109=1;
+            	            		alt110=1;
             	            	}
             	                break;
 
             	            }
 
-            	            switch (alt109)
+            	            switch (alt110)
             	            {
             	        	case 1:
-            	        	    // ../../../../../../src/parser/cvc/Cvc.g:2262:9: COMMA selector[&ctor]
+            	        	    // ../../../../src/parser/cvc/Cvc.g:2273:9: COMMA selector[&ctor]
             	        	    {
-            	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_constructorDef8211);
+            	        	         MATCHT(COMMA, &FOLLOW_COMMA_in_constructorDef8263);
             	        	        if  (HASEXCEPTION())
             	        	        {
             	        	            goto ruleconstructorDefEx;
@@ -27119,7 +23877,7 @@ constructorDef(pCvcParser ctx, CVC4::Datatype& type)
             	        	        }
 
 
-            	        	        FOLLOWPUSH(FOLLOW_selector_in_constructorDef8213);
+            	        	        FOLLOWPUSH(FOLLOW_selector_in_constructorDef8265);
             	        	        selector(ctx, &ctor);
 
             	        	        FOLLOWPOP();
@@ -27137,14 +23895,14 @@ constructorDef(pCvcParser ctx, CVC4::Datatype& type)
             	        	    break;
 
             	        	default:
-            	        	    goto loop109;	/* break out of the loop */
+            	        	    goto loop110;	/* break out of the loop */
             	        	    break;
             	            }
             	        }
-            	        loop109: ; /* Jump out to here if this rule does not match */
+            	        loop110: ; /* Jump out to here if this rule does not match */
 
 
-            	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_constructorDef8225);
+            	         MATCHT(RPAREN, &FOLLOW_RPAREN_in_constructorDef8277);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleconstructorDefEx;
@@ -27190,7 +23948,7 @@ constructorDef(pCvcParser ctx, CVC4::Datatype& type)
 
 /**
  * $ANTLR start selector
- * ../../../../../../src/parser/cvc/Cvc.g:2271:1: selector[CVC4::PtrCloser<CVC4::DatatypeConstructor>* ctor] : identifier[id,CHECK_UNDECLARED,SYM_SORT] COLON type[t,CHECK_NONE] ;
+ * ../../../../src/parser/cvc/Cvc.g:2282:1: selector[CVC4::PtrCloser<CVC4::DatatypeConstructor>* ctor] : identifier[id,CHECK_UNDECLARED,SYM_SORT] COLON type[t,CHECK_NONE] ;
  */
 static void
 selector(pCvcParser ctx, CVC4::PtrCloser<CVC4::DatatypeConstructor>* ctor)
@@ -27203,10 +23961,10 @@ selector(pCvcParser ctx, CVC4::PtrCloser<CVC4::DatatypeConstructor>* ctor)
       Type t, t2;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:2276:3: ( identifier[id,CHECK_UNDECLARED,SYM_SORT] COLON type[t,CHECK_NONE] )
-        // ../../../../../../src/parser/cvc/Cvc.g:2276:5: identifier[id,CHECK_UNDECLARED,SYM_SORT] COLON type[t,CHECK_NONE]
+        // ../../../../src/parser/cvc/Cvc.g:2287:3: ( identifier[id,CHECK_UNDECLARED,SYM_SORT] COLON type[t,CHECK_NONE] )
+        // ../../../../src/parser/cvc/Cvc.g:2287:5: identifier[id,CHECK_UNDECLARED,SYM_SORT] COLON type[t,CHECK_NONE]
         {
-            FOLLOWPUSH(FOLLOW_identifier_in_selector8257);
+            FOLLOWPUSH(FOLLOW_identifier_in_selector8309);
             identifier(ctx, id, CHECK_UNDECLARED, SYM_SORT);
 
             FOLLOWPOP();
@@ -27220,7 +23978,7 @@ selector(pCvcParser ctx, CVC4::PtrCloser<CVC4::DatatypeConstructor>* ctor)
             }
 
 
-             MATCHT(COLON, &FOLLOW_COLON_in_selector8260);
+             MATCHT(COLON, &FOLLOW_COLON_in_selector8312);
             if  (HASEXCEPTION())
             {
                 goto ruleselectorEx;
@@ -27231,7 +23989,7 @@ selector(pCvcParser ctx, CVC4::PtrCloser<CVC4::DatatypeConstructor>* ctor)
             }
 
 
-            FOLLOWPUSH(FOLLOW_type_in_selector8262);
+            FOLLOWPUSH(FOLLOW_type_in_selector8314);
             type(ctx, t, CHECK_NONE);
 
             FOLLOWPOP();
@@ -27273,7 +24031,7 @@ selector(pCvcParser ctx, CVC4::PtrCloser<CVC4::DatatypeConstructor>* ctor)
 
 /**
  * $ANTLR start numeral
- * ../../../../../../src/parser/cvc/Cvc.g:2294:1: numeral returns [unsigned k = 0] : INTEGER_LITERAL ;
+ * ../../../../src/parser/cvc/Cvc.g:2305:1: numeral returns [unsigned k = 0] : INTEGER_LITERAL ;
  */
 static unsigned
 numeral(pCvcParser ctx)
@@ -27291,10 +24049,10 @@ numeral(pCvcParser ctx)
     INTEGER_LITERAL21       = NULL;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:2295:3: ( INTEGER_LITERAL )
-        // ../../../../../../src/parser/cvc/Cvc.g:2295:5: INTEGER_LITERAL
+        // ../../../../src/parser/cvc/Cvc.g:2306:3: ( INTEGER_LITERAL )
+        // ../../../../src/parser/cvc/Cvc.g:2306:5: INTEGER_LITERAL
         {
-            INTEGER_LITERAL21 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_numeral8337);
+            INTEGER_LITERAL21 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_numeral8389);
             if  (HASEXCEPTION())
             {
                 goto rulenumeralEx;
@@ -27332,7 +24090,7 @@ numeral(pCvcParser ctx)
 
 /**
  * $ANTLR start integer
- * ../../../../../../src/parser/cvc/Cvc.g:2302:1: integer returns [CVC4::Rational k = 0] : ( INTEGER_LITERAL | MINUS_TOK INTEGER_LITERAL );
+ * ../../../../src/parser/cvc/Cvc.g:2313:1: integer returns [CVC4::Rational k = 0] : ( INTEGER_LITERAL | MINUS_TOK INTEGER_LITERAL );
  */
 static CVC4::Rational
 integer(pCvcParser ctx)
@@ -27353,22 +24111,22 @@ integer(pCvcParser ctx)
 
     {
         {
-            //  ../../../../../../src/parser/cvc/Cvc.g:2303:3: ( INTEGER_LITERAL | MINUS_TOK INTEGER_LITERAL )
+            //  ../../../../src/parser/cvc/Cvc.g:2314:3: ( INTEGER_LITERAL | MINUS_TOK INTEGER_LITERAL )
 
-            ANTLR3_UINT32 alt111;
+            ANTLR3_UINT32 alt112;
 
-            alt111=2;
+            alt112=2;
 
             switch ( LA(1) )
             {
             case INTEGER_LITERAL:
             	{
-            		alt111=1;
+            		alt112=1;
             	}
                 break;
             case MINUS_TOK:
             	{
-            		alt111=2;
+            		alt112=2;
             	}
                 break;
 
@@ -27382,7 +24140,7 @@ integer(pCvcParser ctx)
                 CONSTRUCTEX();
                 EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
                 EXCEPTION->message      = (void *)"";
-                EXCEPTION->decisionNum  = 111;
+                EXCEPTION->decisionNum  = 112;
                 EXCEPTION->state        = 0;
 
 
@@ -27390,12 +24148,12 @@ integer(pCvcParser ctx)
 
             }
 
-            switch (alt111)
+            switch (alt112)
             {
         	case 1:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2303:5: INTEGER_LITERAL
+        	    // ../../../../src/parser/cvc/Cvc.g:2314:5: INTEGER_LITERAL
         	    {
-        	        INTEGER_LITERAL22 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_integer8362);
+        	        INTEGER_LITERAL22 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_integer8414);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleintegerEx;
@@ -27416,9 +24174,9 @@ integer(pCvcParser ctx)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/cvc/Cvc.g:2305:5: MINUS_TOK INTEGER_LITERAL
+        	    // ../../../../src/parser/cvc/Cvc.g:2316:5: MINUS_TOK INTEGER_LITERAL
         	    {
-        	         MATCHT(MINUS_TOK, &FOLLOW_MINUS_TOK_in_integer8374);
+        	         MATCHT(MINUS_TOK, &FOLLOW_MINUS_TOK_in_integer8426);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleintegerEx;
@@ -27429,7 +24187,7 @@ integer(pCvcParser ctx)
         	        }
 
 
-        	        INTEGER_LITERAL23 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_integer8376);
+        	        INTEGER_LITERAL23 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_integer8428);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleintegerEx;
@@ -27470,7 +24228,7 @@ integer(pCvcParser ctx)
 
 /**
  * $ANTLR start str
- * ../../../../../../src/parser/cvc/Cvc.g:2312:1: str[std::string& s] : STRING_LITERAL ;
+ * ../../../../src/parser/cvc/Cvc.g:2323:1: str[std::string& s] : STRING_LITERAL ;
  */
 static void
 str(pCvcParser ctx, std::string& s)
@@ -27483,10 +24241,10 @@ str(pCvcParser ctx, std::string& s)
     STRING_LITERAL24       = NULL;
 
     {
-        // ../../../../../../src/parser/cvc/Cvc.g:2313:3: ( STRING_LITERAL )
-        // ../../../../../../src/parser/cvc/Cvc.g:2313:5: STRING_LITERAL
+        // ../../../../src/parser/cvc/Cvc.g:2324:3: ( STRING_LITERAL )
+        // ../../../../src/parser/cvc/Cvc.g:2324:5: STRING_LITERAL
         {
-            STRING_LITERAL24 = (pANTLR3_COMMON_TOKEN) MATCHT(STRING_LITERAL, &FOLLOW_STRING_LITERAL_in_str8398);
+            STRING_LITERAL24 = (pANTLR3_COMMON_TOKEN) MATCHT(STRING_LITERAL, &FOLLOW_STRING_LITERAL_in_str8450);
             if  (HASEXCEPTION())
             {
                 goto rulestrEx;
@@ -27527,10 +24285,10 @@ str(pCvcParser ctx, std::string& s)
 // $ANTLR start synpred1_Cvc
 static void synpred1_Cvc_fragment(pCvcParser ctx )
 {
-    // ../../../../../../src/parser/cvc/Cvc.g:711:5: ( letDecl )
-    // ../../../../../../src/parser/cvc/Cvc.g:711:5: letDecl
+    // ../../../../src/parser/cvc/Cvc.g:716:5: ( letDecl )
+    // ../../../../src/parser/cvc/Cvc.g:716:5: letDecl
     {
-        FOLLOWPUSH(FOLLOW_letDecl_in_synpred1_Cvc1998);
+        FOLLOWPUSH(FOLLOW_letDecl_in_synpred1_Cvc2018);
         letDecl(ctx);
 
         FOLLOWPOP();
diff --git a/src/parser/cvc/CvcParser.h b/src/parser/cvc/CvcParser.h
index 5e0793a..d604c30 100644
--- a/src/parser/cvc/CvcParser.h
+++ b/src/parser/cvc/CvcParser.h
@@ -1,8 +1,8 @@
 /** \file
  *  This C header file was generated by $ANTLR version 3.4
  *
- *     -  From the grammar source file : ../../../../../../src/parser/cvc/Cvc.g
- *     -                            On : 2017-03-16 01:03:03
+ *     -  From the grammar source file : ../../../../src/parser/cvc/Cvc.g
+ *     -                            On : 2017-07-10 10:01:30
  *     -                for the parser : CvcParserParser
  *
  * Editing it, at least manually, is not wise.
@@ -150,6 +150,9 @@ has the callable functions (rules) shown below,
       pCvcParser->bvNegTerm(pCvcParser)
  *  - 
  void
+      pCvcParser->relationTerm(pCvcParser)
+ *  - 
+ void
       pCvcParser->postfixTerm(pCvcParser)
  *  - 
  void
@@ -314,10 +317,11 @@ typedef struct CvcParser_Ctx_struct CvcParser, * pCvcParser;
 
 
 /**
- ** This file is part of CVC4.
- ** Copyright (c) 2009-2014  New York University and The University of Iowa
- ** See the file COPYING in the top-level source directory for licensing
- ** information.
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.
  **/
 
 
@@ -480,6 +484,9 @@ struct CvcParser_Ctx_struct
      (*bvNegTerm)	(struct CvcParser_Ctx_struct * ctx, CVC4::Expr& f);
 
      void
+     (*relationTerm)	(struct CvcParser_Ctx_struct * ctx, CVC4::Expr& f);
+
+     void
      (*postfixTerm)	(struct CvcParser_Ctx_struct * ctx, CVC4::Expr& f);
 
      void
@@ -662,92 +669,94 @@ parser
 #define HEX_DIGIT      103
 #define HEX_LITERAL      104
 #define IDENTIFIER      105
-#define IFF_TOK      106
-#define IF_TOK      107
-#define IMPLIES_TOK      108
-#define INCLUDE_TOK      109
-#define INTDIV_TOK      110
-#define INTEGER_LITERAL      111
-#define INT_TOK      112
-#define IN_TOK      113
-#define IS_INTEGER_TOK      114
-#define JOIN_TOK      115
-#define LAMBDA      116
-#define LBRACE      117
-#define LBRACKET      118
-#define LEFTSHIFT_TOK      119
-#define LEQ_TOK      120
-#define LET_TOK      121
-#define LPAREN      122
-#define LT_TOK      123
-#define MEMBER_TOK      124
-#define MINUS_TOK      125
-#define MOD_TOK      126
-#define NOT_TOK      127
-#define NUMBER_OR_RANGEOP      128
-#define OF_TOK      129
-#define OPTION_TOK      130
-#define OR_TOK      131
-#define PARENHASH      132
-#define PATTERN_TOK      133
-#define PLUS_TOK      134
-#define POPTO_SCOPE_TOK      135
-#define POPTO_TOK      136
-#define POP_SCOPE_TOK      137
-#define POP_TOK      138
-#define PRINT_TOK      139
-#define PRINT_TYPE_TOK      140
-#define PRODUCT_TOK      141
-#define PUSH_SCOPE_TOK      142
-#define PUSH_TOK      143
-#define QUERY_TOK      144
-#define RBRACE      145
-#define RBRACKET      146
-#define REAL_TOK      147
-#define RESET_TOK      148
-#define RESTART_TOK      149
-#define RIGHTSHIFT_TOK      150
-#define RPAREN      151
-#define SEMICOLON      152
-#define SETS_CARD_TOK      153
-#define SET_TOK      154
-#define SQHASH      155
-#define STAR_TOK      156
-#define STRING_CHARAT_TOK      157
-#define STRING_CONCAT_TOK      158
-#define STRING_CONTAINS_TOK      159
-#define STRING_INDEXOF_TOK      160
-#define STRING_ITOS_TOK      161
-#define STRING_LENGTH_TOK      162
-#define STRING_LITERAL      163
-#define STRING_PREFIXOF_TOK      164
-#define STRING_REPLACE_TOK      165
-#define STRING_STOI_TOK      166
-#define STRING_STOU16_TOK      167
-#define STRING_STOU32_TOK      168
-#define STRING_SUBSTR_TOK      169
-#define STRING_SUFFIXOF_TOK      170
-#define STRING_TOK      171
-#define STRING_U16TOS_TOK      172
-#define STRING_U32TOS_TOK      173
-#define SUBSTITUTE_TOK      174
-#define SUBTYPE_TOK      175
-#define SX_TOK      176
-#define THEN_TOK      177
-#define TRACE_TOK      178
-#define TRANSCLOSURE_TOK      179
-#define TRANSFORM_TOK      180
-#define TRANSPOSE_TOK      181
-#define TRUE_TOK      182
-#define TUPLE_TOK      183
-#define TYPE_TOK      184
-#define UNDERSCORE      185
-#define UNIVSET_TOK      186
-#define UNTRACE_TOK      187
-#define WHERE_TOK      188
-#define WHITESPACE      189
-#define WITH_TOK      190
-#define XOR_TOK      191
+#define IDEN_TOK      106
+#define IFF_TOK      107
+#define IF_TOK      108
+#define IMPLIES_TOK      109
+#define INCLUDE_TOK      110
+#define INTDIV_TOK      111
+#define INTEGER_LITERAL      112
+#define INT_TOK      113
+#define IN_TOK      114
+#define IS_INTEGER_TOK      115
+#define JOIN_IMAGE_TOK      116
+#define JOIN_TOK      117
+#define LAMBDA      118
+#define LBRACE      119
+#define LBRACKET      120
+#define LEFTSHIFT_TOK      121
+#define LEQ_TOK      122
+#define LET_TOK      123
+#define LPAREN      124
+#define LT_TOK      125
+#define MEMBER_TOK      126
+#define MINUS_TOK      127
+#define MOD_TOK      128
+#define NOT_TOK      129
+#define NUMBER_OR_RANGEOP      130
+#define OF_TOK      131
+#define OPTION_TOK      132
+#define OR_TOK      133
+#define PARENHASH      134
+#define PATTERN_TOK      135
+#define PLUS_TOK      136
+#define POPTO_SCOPE_TOK      137
+#define POPTO_TOK      138
+#define POP_SCOPE_TOK      139
+#define POP_TOK      140
+#define PRINT_TOK      141
+#define PRINT_TYPE_TOK      142
+#define PRODUCT_TOK      143
+#define PUSH_SCOPE_TOK      144
+#define PUSH_TOK      145
+#define QUERY_TOK      146
+#define RBRACE      147
+#define RBRACKET      148
+#define REAL_TOK      149
+#define RESET_TOK      150
+#define RESTART_TOK      151
+#define RIGHTSHIFT_TOK      152
+#define RPAREN      153
+#define SEMICOLON      154
+#define SETS_CARD_TOK      155
+#define SET_TOK      156
+#define SQHASH      157
+#define STAR_TOK      158
+#define STRING_CHARAT_TOK      159
+#define STRING_CONCAT_TOK      160
+#define STRING_CONTAINS_TOK      161
+#define STRING_INDEXOF_TOK      162
+#define STRING_ITOS_TOK      163
+#define STRING_LENGTH_TOK      164
+#define STRING_LITERAL      165
+#define STRING_PREFIXOF_TOK      166
+#define STRING_REPLACE_TOK      167
+#define STRING_STOI_TOK      168
+#define STRING_STOU16_TOK      169
+#define STRING_STOU32_TOK      170
+#define STRING_SUBSTR_TOK      171
+#define STRING_SUFFIXOF_TOK      172
+#define STRING_TOK      173
+#define STRING_U16TOS_TOK      174
+#define STRING_U32TOS_TOK      175
+#define SUBSTITUTE_TOK      176
+#define SUBTYPE_TOK      177
+#define SX_TOK      178
+#define THEN_TOK      179
+#define TRACE_TOK      180
+#define TRANSCLOSURE_TOK      181
+#define TRANSFORM_TOK      182
+#define TRANSPOSE_TOK      183
+#define TRUE_TOK      184
+#define TUPLE_TOK      185
+#define TYPE_TOK      186
+#define UNDERSCORE      187
+#define UNIVSET_TOK      188
+#define UNTRACE_TOK      189
+#define WHERE_TOK      190
+#define WHITESPACE      191
+#define WITH_TOK      192
+#define XOR_TOK      193
 #ifdef	EOF
 #undef	EOF
 #define	EOF	ANTLR3_TOKEN_EOF
diff --git a/src/parser/cvc/Makefile.in b/src/parser/cvc/Makefile.in
index 649ff6d..08c2ee5 100644
--- a/src/parser/cvc/Makefile.in
+++ b/src/parser/cvc/Makefile.in
@@ -245,6 +245,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/src/parser/cvc/cvc_input.cpp b/src/parser/cvc/cvc_input.cpp
index 9e00567..f280939 100644
--- a/src/parser/cvc/cvc_input.cpp
+++ b/src/parser/cvc/cvc_input.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Christopher L. Conway, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/cvc/cvc_input.h b/src/parser/cvc/cvc_input.h
index aff3698..bc16d64 100644
--- a/src/parser/cvc/cvc_input.h
+++ b/src/parser/cvc/cvc_input.h
@@ -2,9 +2,9 @@
 /*! \file cvc_input.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Christopher L. Conway, Morgan Deters, Tim King
+ **   Christopher L. Conway, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/input.cpp b/src/parser/input.cpp
index 5fadbcc..c8c3c5e 100644
--- a/src/parser/input.cpp
+++ b/src/parser/input.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Christopher L. Conway, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/input.h b/src/parser/input.h
index 7dce369..b41d8a8 100644
--- a/src/parser/input.h
+++ b/src/parser/input.h
@@ -2,9 +2,9 @@
 /*! \file input.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Christopher L. Conway, Morgan Deters, Tim King
+ **   Christopher L. Conway, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -140,9 +140,6 @@ public:
   /** Destructor. Frees the input stream and closes the input. */
   virtual ~Input();
 
-  /** Retrieve the remaining text in this input. */
-  virtual std::string getUnparsedText() = 0;
-
   /** Get the language that this Input is reading. */
   virtual InputLanguage getLanguage() const throw() = 0;
 
diff --git a/src/parser/line_buffer.cpp b/src/parser/line_buffer.cpp
new file mode 100644
index 0000000..399b4d2
--- /dev/null
+++ b/src/parser/line_buffer.cpp
@@ -0,0 +1,88 @@
+/*********************                                                        */
+/*! \file line_buffer.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andres Noetzli
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The LineBuffer class stores lines from an input stream
+ **
+ ** For each line, the class allocates a separate buffer.
+ **/
+
+#include "parser/line_buffer.h"
+
+#include <cassert>
+#include <cstring>
+#include <iostream>
+#include <string>
+
+namespace CVC4 {
+namespace parser {
+
+LineBuffer::LineBuffer(std::istream* stream) : d_stream(stream) {}
+
+LineBuffer::~LineBuffer() {
+  for (size_t i = 0; i < d_lines.size(); i++) {
+    delete[] d_lines[i];
+  }
+}
+
+uint8_t* LineBuffer::getPtr(size_t line, size_t pos_in_line) {
+  if (!readToLine(line)) {
+    return NULL;
+  }
+  assert(pos_in_line < d_sizes[line]);
+  return d_lines[line] + pos_in_line;
+}
+
+uint8_t* LineBuffer::getPtrWithOffset(size_t line, size_t pos_in_line,
+                                   size_t offset) {
+  if (!readToLine(line)) {
+    return NULL;
+  }
+  if (pos_in_line + offset >= d_sizes[line]) {
+    return getPtrWithOffset(line + 1, 0,
+                            offset - (d_sizes[line] - pos_in_line - 1));
+  }
+  assert(pos_in_line + offset < d_sizes[line]);
+  return d_lines[line] + pos_in_line + offset;
+}
+
+bool LineBuffer::isPtrBefore(uint8_t* ptr, size_t line, size_t pos_in_line) {
+  for (ssize_t i = line; i >= 0; i--) {
+    // NOTE: std::less is guaranteed to give consistent results when comparing
+    // pointers of different arrays (in contrast to built-in comparison
+    // operators).
+    uint8_t* end = d_lines[i] + ((i == line) ? pos_in_line : d_sizes[i]);
+    if (std::less<uint8_t*>()(d_lines[i] - 1, ptr) &&
+        std::less<uint8_t*>()(ptr, end)) {
+      return true;
+    }
+  }
+  return false;
+}
+
+bool LineBuffer::readToLine(size_t line) {
+  while (line >= d_lines.size()) {
+    if (!(*d_stream)) {
+      return false;
+    }
+
+    std::string line;
+    std::getline(*d_stream, line);
+    uint8_t* segment = new uint8_t[line.size() + 1];
+    std::memcpy(segment, line.c_str(), line.size());
+    segment[line.size()] = LineBuffer::NewLineChar;
+    d_lines.push_back(segment);
+    d_sizes.push_back(line.size() + 1);
+  }
+  return true;
+}
+
+}  // namespace parser
+}  // namespace CVC4
diff --git a/src/parser/line_buffer.h b/src/parser/line_buffer.h
new file mode 100644
index 0000000..f65e27f
--- /dev/null
+++ b/src/parser/line_buffer.h
@@ -0,0 +1,76 @@
+/*********************                                                        */
+/*! \file line_buffer.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andres Noetzli
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The LineBuffer class stores lines from an input stream
+ **
+ ** Each line is guaranteed to be consecutive in memory. The content in
+ ** the line buffer can be addressed using line number and the position
+ ** within the line.
+ **/
+
+#include "cvc4parser_private.h"
+
+#ifndef __CVC4__PARSER__LINE_BUFFER_H
+#define __CVC4__PARSER__LINE_BUFFER_H
+
+#include <cstdlib>
+#include <istream>
+#include <vector>
+
+namespace CVC4 {
+namespace parser {
+
+class LineBuffer {
+ public:
+  static const uint8_t NewLineChar = '\n';
+
+  LineBuffer(std::istream* stream);
+  ~LineBuffer();
+
+  /**
+    * Gets a pointer to a char at a specific line and position within that
+    * line.
+    */
+  uint8_t* getPtr(size_t line, size_t pos_in_line);
+
+  /**
+    * Gets a pointer to a char at an offset relative to a  specific line and
+    * position within that line.
+    */
+  uint8_t* getPtrWithOffset(size_t line, size_t pos_in_line, size_t offset);
+
+  /**
+    * Tests whether a given pointer points to a location before a given
+    * line and position within that line.
+    */
+  bool isPtrBefore(uint8_t* ptr, size_t line, size_t pos_in_line);
+
+ private:
+  /**
+    * Reads lines up to a line number from the input if needed (it does
+    * nothing for the lines that were already read). Returns false if the end
+    * of the input stream has been reached and not all lines could be read.
+    */
+  bool readToLine(size_t line);
+
+  std::istream* d_stream;
+  // Each element in this vector corresponds to a line from the input stream.
+  // WARNING: not null-terminated.
+  std::vector<uint8_t*> d_lines;
+  // Each element in this vector corresponds to the length of a line from the
+  // input stream.
+  std::vector<size_t> d_sizes;
+};
+
+}  // namespace parser
+}  // namespace CVC4
+
+#endif /* __CVC4__PARSER__LINE_BUFFER_H */
diff --git a/src/parser/memory_mapped_input_buffer.cpp b/src/parser/memory_mapped_input_buffer.cpp
index 1554428..87142e0 100644
--- a/src/parser/memory_mapped_input_buffer.cpp
+++ b/src/parser/memory_mapped_input_buffer.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Christopher L. Conway, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/memory_mapped_input_buffer.h b/src/parser/memory_mapped_input_buffer.h
index 2a34d11..9373c0a 100644
--- a/src/parser/memory_mapped_input_buffer.h
+++ b/src/parser/memory_mapped_input_buffer.h
@@ -2,9 +2,9 @@
 /*! \file memory_mapped_input_buffer.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Christopher L. Conway, Morgan Deters, Tim King
+ **   Christopher L. Conway, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/parser.cpp b/src/parser/parser.cpp
index 2377b8a..63492ca 100644
--- a/src/parser/parser.cpp
+++ b/src/parser/parser.cpp
@@ -2,9 +2,9 @@
 /*! \file parser.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Christopher L. Conway, Tim King
+ **   Morgan Deters, Tim King, Christopher L. Conway
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/parser.h b/src/parser/parser.h
index b310456..5e867af 100644
--- a/src/parser/parser.h
+++ b/src/parser/parser.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Christopher L. Conway, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/parser_builder.cpp b/src/parser/parser_builder.cpp
index 8580d56..ec8d494 100644
--- a/src/parser/parser_builder.cpp
+++ b/src/parser/parser_builder.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Christopher L. Conway, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -93,6 +93,7 @@ Parser* ParserBuilder::build()
     break;
   case language::input::LANG_SMTLIB_V2_0:
   case language::input::LANG_SMTLIB_V2_5:
+  case language::input::LANG_SMTLIB_V2_6:
     parser = new Smt2(d_exprManager, input, d_strictMode, d_parseOnly);
     break;
   case language::input::LANG_SYGUS:
diff --git a/src/parser/parser_builder.h b/src/parser/parser_builder.h
index 68dd684..4b4eb4e 100644
--- a/src/parser/parser_builder.h
+++ b/src/parser/parser_builder.h
@@ -2,9 +2,9 @@
 /*! \file parser_builder.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Christopher L. Conway, Morgan Deters, Tim King
+ **   Christopher L. Conway, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/parser_exception.h b/src/parser/parser_exception.h
index d83aab2..48eb43e 100644
--- a/src/parser/parser_exception.h
+++ b/src/parser/parser_exception.h
@@ -2,9 +2,9 @@
 /*! \file parser_exception.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Christopher L. Conway, Tim King
+ **   Morgan Deters, Christopher L. Conway, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/smt1/Makefile.in b/src/parser/smt1/Makefile.in
index 5fa65f6..ef657be 100644
--- a/src/parser/smt1/Makefile.in
+++ b/src/parser/smt1/Makefile.in
@@ -242,6 +242,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/src/parser/smt1/Smt1.g b/src/parser/smt1/Smt1.g
index 28c54fc..315ded4 100644
--- a/src/parser/smt1/Smt1.g
+++ b/src/parser/smt1/Smt1.g
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Christopher L. Conway, Morgan Deters, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -31,10 +31,11 @@ options {
 
 @header {
 /**
- ** This file is part of CVC4.
- ** Copyright (c) 2009-2014  New York University and The University of Iowa
- ** See the file COPYING in the top-level source directory for licensing
- ** information.
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.
  **/
 }/* @header */
 
diff --git a/src/parser/smt1/Smt1Lexer.c b/src/parser/smt1/Smt1Lexer.c
index b8a806c..95635b2 100644
--- a/src/parser/smt1/Smt1Lexer.c
+++ b/src/parser/smt1/Smt1Lexer.c
@@ -1,8 +1,8 @@
 /** \file
  *  This C source file was generated by $ANTLR version 3.4
  *
- *     -  From the grammar source file : ../../../../../../src/parser/smt1/Smt1.g
- *     -                            On : 2017-03-16 01:03:01
+ *     -  From the grammar source file : ../../../../src/parser/smt1/Smt1.g
+ *     -                            On : 2017-07-10 10:01:28
  *     -                 for the lexer : Smt1LexerLexer
  *
  * Editing it, at least manually, is not wise.
@@ -652,7 +652,7 @@ Smt1LexerReset (pSmt1Lexer ctx)
 
 /** \brief Name of the grammar file that generated this code
  */
-static const char fileName[] = "../../../../../../src/parser/smt1/Smt1.g";
+static const char fileName[] = "../../../../src/parser/smt1/Smt1.g";
 
 /** \brief Return the name of the grammar file that generated this code.
  */
@@ -2331,8 +2331,8 @@ void mT__100(pSmt1Lexer ctx)
     _type	    = T__100;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:33:8: ( ':' )
-    // ../../../../../../src/parser/smt1/Smt1.g:33:10: ':'
+    // ../../../../src/parser/smt1/Smt1.g:33:8: ( ':' )
+    // ../../../../src/parser/smt1/Smt1.g:33:10: ':'
     {
         MATCHC(':');
         if  (HASEXCEPTION())
@@ -2372,8 +2372,8 @@ void mT__101(pSmt1Lexer ctx)
     _type	    = T__101;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:34:8: ( ':pat' )
-    // ../../../../../../src/parser/smt1/Smt1.g:34:10: ':pat'
+    // ../../../../src/parser/smt1/Smt1.g:34:8: ( ':pat' )
+    // ../../../../src/parser/smt1/Smt1.g:34:10: ':pat'
     {
         MATCHS(lit_1);
         if  (HASEXCEPTION())
@@ -2415,8 +2415,8 @@ void mT__102(pSmt1Lexer ctx)
     _type	    = T__102;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:35:8: ( 'Array[' )
-    // ../../../../../../src/parser/smt1/Smt1.g:35:10: 'Array['
+    // ../../../../src/parser/smt1/Smt1.g:35:8: ( 'Array[' )
+    // ../../../../src/parser/smt1/Smt1.g:35:10: 'Array['
     {
         MATCHS(lit_2);
         if  (HASEXCEPTION())
@@ -2458,8 +2458,8 @@ void mT__103(pSmt1Lexer ctx)
     _type	    = T__103;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:36:8: ( '[' )
-    // ../../../../../../src/parser/smt1/Smt1.g:36:10: '['
+    // ../../../../src/parser/smt1/Smt1.g:36:8: ( '[' )
+    // ../../../../src/parser/smt1/Smt1.g:36:10: '['
     {
         MATCHC('[');
         if  (HASEXCEPTION())
@@ -2499,8 +2499,8 @@ void mT__104(pSmt1Lexer ctx)
     _type	    = T__104;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:37:8: ( ']' )
-    // ../../../../../../src/parser/smt1/Smt1.g:37:10: ']'
+    // ../../../../src/parser/smt1/Smt1.g:37:8: ( ']' )
+    // ../../../../src/parser/smt1/Smt1.g:37:10: ']'
     {
         MATCHC(']');
         if  (HASEXCEPTION())
@@ -2540,8 +2540,8 @@ void mT__105(pSmt1Lexer ctx)
     _type	    = T__105;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:38:8: ( '}' )
-    // ../../../../../../src/parser/smt1/Smt1.g:38:10: '}'
+    // ../../../../src/parser/smt1/Smt1.g:38:8: ( '}' )
+    // ../../../../src/parser/smt1/Smt1.g:38:10: '}'
     {
         MATCHC('}');
         if  (HASEXCEPTION())
@@ -2561,7 +2561,7 @@ void mT__105(pSmt1Lexer ctx)
 }
 // $ANTLR end T__105
 
-//   Comes from: 689:17: ( ':assumption' )
+//   Comes from: 690:17: ( ':assumption' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start ASSUMPTION_TOK
@@ -2581,8 +2581,8 @@ void mASSUMPTION_TOK(pSmt1Lexer ctx)
     _type	    = ASSUMPTION_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:689:17: ( ':assumption' )
-    // ../../../../../../src/parser/smt1/Smt1.g:689:19: ':assumption'
+    // ../../../../src/parser/smt1/Smt1.g:690:17: ( ':assumption' )
+    // ../../../../src/parser/smt1/Smt1.g:690:19: ':assumption'
     {
         MATCHS(lit_3);
         if  (HASEXCEPTION())
@@ -2604,7 +2604,7 @@ void mASSUMPTION_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end ASSUMPTION_TOK
 
-//   Comes from: 690:17: ( 'benchmark' )
+//   Comes from: 691:17: ( 'benchmark' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BENCHMARK_TOK
@@ -2624,8 +2624,8 @@ void mBENCHMARK_TOK(pSmt1Lexer ctx)
     _type	    = BENCHMARK_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:690:17: ( 'benchmark' )
-    // ../../../../../../src/parser/smt1/Smt1.g:690:19: 'benchmark'
+    // ../../../../src/parser/smt1/Smt1.g:691:17: ( 'benchmark' )
+    // ../../../../src/parser/smt1/Smt1.g:691:19: 'benchmark'
     {
         MATCHS(lit_4);
         if  (HASEXCEPTION())
@@ -2647,7 +2647,7 @@ void mBENCHMARK_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BENCHMARK_TOK
 
-//   Comes from: 691:17: ( ':extrafuns' )
+//   Comes from: 692:17: ( ':extrafuns' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start EXTRAFUNS_TOK
@@ -2667,8 +2667,8 @@ void mEXTRAFUNS_TOK(pSmt1Lexer ctx)
     _type	    = EXTRAFUNS_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:691:17: ( ':extrafuns' )
-    // ../../../../../../src/parser/smt1/Smt1.g:691:19: ':extrafuns'
+    // ../../../../src/parser/smt1/Smt1.g:692:17: ( ':extrafuns' )
+    // ../../../../src/parser/smt1/Smt1.g:692:19: ':extrafuns'
     {
         MATCHS(lit_5);
         if  (HASEXCEPTION())
@@ -2690,7 +2690,7 @@ void mEXTRAFUNS_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end EXTRAFUNS_TOK
 
-//   Comes from: 692:17: ( ':extrapreds' )
+//   Comes from: 693:17: ( ':extrapreds' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start EXTRAPREDS_TOK
@@ -2710,8 +2710,8 @@ void mEXTRAPREDS_TOK(pSmt1Lexer ctx)
     _type	    = EXTRAPREDS_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:692:17: ( ':extrapreds' )
-    // ../../../../../../src/parser/smt1/Smt1.g:692:19: ':extrapreds'
+    // ../../../../src/parser/smt1/Smt1.g:693:17: ( ':extrapreds' )
+    // ../../../../src/parser/smt1/Smt1.g:693:19: ':extrapreds'
     {
         MATCHS(lit_6);
         if  (HASEXCEPTION())
@@ -2733,7 +2733,7 @@ void mEXTRAPREDS_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end EXTRAPREDS_TOK
 
-//   Comes from: 693:17: ( ':extrasorts' )
+//   Comes from: 694:17: ( ':extrasorts' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start EXTRASORTS_TOK
@@ -2753,8 +2753,8 @@ void mEXTRASORTS_TOK(pSmt1Lexer ctx)
     _type	    = EXTRASORTS_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:693:17: ( ':extrasorts' )
-    // ../../../../../../src/parser/smt1/Smt1.g:693:19: ':extrasorts'
+    // ../../../../src/parser/smt1/Smt1.g:694:17: ( ':extrasorts' )
+    // ../../../../src/parser/smt1/Smt1.g:694:19: ':extrasorts'
     {
         MATCHS(lit_7);
         if  (HASEXCEPTION())
@@ -2776,7 +2776,7 @@ void mEXTRASORTS_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end EXTRASORTS_TOK
 
-//   Comes from: 694:17: ( 'false' )
+//   Comes from: 695:17: ( 'false' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FALSE_TOK
@@ -2796,8 +2796,8 @@ void mFALSE_TOK(pSmt1Lexer ctx)
     _type	    = FALSE_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:694:17: ( 'false' )
-    // ../../../../../../src/parser/smt1/Smt1.g:694:19: 'false'
+    // ../../../../src/parser/smt1/Smt1.g:695:17: ( 'false' )
+    // ../../../../src/parser/smt1/Smt1.g:695:19: 'false'
     {
         MATCHS(lit_8);
         if  (HASEXCEPTION())
@@ -2819,7 +2819,7 @@ void mFALSE_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end FALSE_TOK
 
-//   Comes from: 695:17: ( 'flet' )
+//   Comes from: 696:17: ( 'flet' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FLET_TOK
@@ -2839,8 +2839,8 @@ void mFLET_TOK(pSmt1Lexer ctx)
     _type	    = FLET_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:695:17: ( 'flet' )
-    // ../../../../../../src/parser/smt1/Smt1.g:695:19: 'flet'
+    // ../../../../src/parser/smt1/Smt1.g:696:17: ( 'flet' )
+    // ../../../../src/parser/smt1/Smt1.g:696:19: 'flet'
     {
         MATCHS(lit_9);
         if  (HASEXCEPTION())
@@ -2862,7 +2862,7 @@ void mFLET_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end FLET_TOK
 
-//   Comes from: 696:17: ( ':formula' )
+//   Comes from: 697:17: ( ':formula' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FORMULA_TOK
@@ -2882,8 +2882,8 @@ void mFORMULA_TOK(pSmt1Lexer ctx)
     _type	    = FORMULA_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:696:17: ( ':formula' )
-    // ../../../../../../src/parser/smt1/Smt1.g:696:19: ':formula'
+    // ../../../../src/parser/smt1/Smt1.g:697:17: ( ':formula' )
+    // ../../../../src/parser/smt1/Smt1.g:697:19: ':formula'
     {
         MATCHS(lit_10);
         if  (HASEXCEPTION())
@@ -2905,7 +2905,7 @@ void mFORMULA_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end FORMULA_TOK
 
-//   Comes from: 697:17: ( 'ite' | 'if_then_else' )
+//   Comes from: 698:17: ( 'ite' | 'if_then_else' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start ITE_TOK
@@ -2926,7 +2926,7 @@ void mITE_TOK(pSmt1Lexer ctx)
 
 
     {
-        //  ../../../../../../src/parser/smt1/Smt1.g:697:17: ( 'ite' | 'if_then_else' )
+        //  ../../../../src/parser/smt1/Smt1.g:698:17: ( 'ite' | 'if_then_else' )
 
         ANTLR3_UINT32 alt1;
 
@@ -2979,7 +2979,7 @@ void mITE_TOK(pSmt1Lexer ctx)
         switch (alt1)
         {
     	case 1:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:697:19: 'ite'
+    	    // ../../../../src/parser/smt1/Smt1.g:698:19: 'ite'
     	    {
     	        MATCHS(lit_11);
     	        if  (HASEXCEPTION())
@@ -2993,7 +2993,7 @@ void mITE_TOK(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 2:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:697:27: 'if_then_else'
+    	    // ../../../../src/parser/smt1/Smt1.g:698:27: 'if_then_else'
     	    {
     	        MATCHS(lit_12);
     	        if  (HASEXCEPTION())
@@ -3018,7 +3018,7 @@ void mITE_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end ITE_TOK
 
-//   Comes from: 698:17: ( 'let' )
+//   Comes from: 699:17: ( 'let' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start LET_TOK
@@ -3038,8 +3038,8 @@ void mLET_TOK(pSmt1Lexer ctx)
     _type	    = LET_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:698:17: ( 'let' )
-    // ../../../../../../src/parser/smt1/Smt1.g:698:19: 'let'
+    // ../../../../src/parser/smt1/Smt1.g:699:17: ( 'let' )
+    // ../../../../src/parser/smt1/Smt1.g:699:19: 'let'
     {
         MATCHS(lit_13);
         if  (HASEXCEPTION())
@@ -3061,7 +3061,7 @@ void mLET_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end LET_TOK
 
-//   Comes from: 699:17: ( ':logic' )
+//   Comes from: 700:17: ( ':logic' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start LOGIC_TOK
@@ -3081,8 +3081,8 @@ void mLOGIC_TOK(pSmt1Lexer ctx)
     _type	    = LOGIC_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:699:17: ( ':logic' )
-    // ../../../../../../src/parser/smt1/Smt1.g:699:19: ':logic'
+    // ../../../../src/parser/smt1/Smt1.g:700:17: ( ':logic' )
+    // ../../../../src/parser/smt1/Smt1.g:700:19: ':logic'
     {
         MATCHS(lit_14);
         if  (HASEXCEPTION())
@@ -3104,7 +3104,7 @@ void mLOGIC_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end LOGIC_TOK
 
-//   Comes from: 700:17: ( '(' )
+//   Comes from: 701:17: ( '(' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start LPAREN_TOK
@@ -3124,8 +3124,8 @@ void mLPAREN_TOK(pSmt1Lexer ctx)
     _type	    = LPAREN_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:700:17: ( '(' )
-    // ../../../../../../src/parser/smt1/Smt1.g:700:19: '('
+    // ../../../../src/parser/smt1/Smt1.g:701:17: ( '(' )
+    // ../../../../src/parser/smt1/Smt1.g:701:19: '('
     {
         MATCHC('(');
         if  (HASEXCEPTION())
@@ -3145,7 +3145,7 @@ void mLPAREN_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end LPAREN_TOK
 
-//   Comes from: 701:17: ( ':notes' )
+//   Comes from: 702:17: ( ':notes' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start NOTES_TOK
@@ -3165,8 +3165,8 @@ void mNOTES_TOK(pSmt1Lexer ctx)
     _type	    = NOTES_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:701:17: ( ':notes' )
-    // ../../../../../../src/parser/smt1/Smt1.g:701:19: ':notes'
+    // ../../../../src/parser/smt1/Smt1.g:702:17: ( ':notes' )
+    // ../../../../src/parser/smt1/Smt1.g:702:19: ':notes'
     {
         MATCHS(lit_15);
         if  (HASEXCEPTION())
@@ -3188,7 +3188,7 @@ void mNOTES_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end NOTES_TOK
 
-//   Comes from: 702:17: ( ')' )
+//   Comes from: 703:17: ( ')' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start RPAREN_TOK
@@ -3208,8 +3208,8 @@ void mRPAREN_TOK(pSmt1Lexer ctx)
     _type	    = RPAREN_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:702:17: ( ')' )
-    // ../../../../../../src/parser/smt1/Smt1.g:702:19: ')'
+    // ../../../../src/parser/smt1/Smt1.g:703:17: ( ')' )
+    // ../../../../src/parser/smt1/Smt1.g:703:19: ')'
     {
         MATCHC(')');
         if  (HASEXCEPTION())
@@ -3229,7 +3229,7 @@ void mRPAREN_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end RPAREN_TOK
 
-//   Comes from: 703:17: ( 'sat' )
+//   Comes from: 704:17: ( 'sat' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SAT_TOK
@@ -3249,8 +3249,8 @@ void mSAT_TOK(pSmt1Lexer ctx)
     _type	    = SAT_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:703:17: ( 'sat' )
-    // ../../../../../../src/parser/smt1/Smt1.g:703:19: 'sat'
+    // ../../../../src/parser/smt1/Smt1.g:704:17: ( 'sat' )
+    // ../../../../src/parser/smt1/Smt1.g:704:19: 'sat'
     {
         MATCHS(lit_16);
         if  (HASEXCEPTION())
@@ -3272,7 +3272,7 @@ void mSAT_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end SAT_TOK
 
-//   Comes from: 704:17: ( ':status' )
+//   Comes from: 705:17: ( ':status' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STATUS_TOK
@@ -3292,8 +3292,8 @@ void mSTATUS_TOK(pSmt1Lexer ctx)
     _type	    = STATUS_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:704:17: ( ':status' )
-    // ../../../../../../src/parser/smt1/Smt1.g:704:19: ':status'
+    // ../../../../src/parser/smt1/Smt1.g:705:17: ( ':status' )
+    // ../../../../src/parser/smt1/Smt1.g:705:19: ':status'
     {
         MATCHS(lit_17);
         if  (HASEXCEPTION())
@@ -3315,7 +3315,7 @@ void mSTATUS_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end STATUS_TOK
 
-//   Comes from: 705:17: ( 'theory' )
+//   Comes from: 706:17: ( 'theory' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start THEORY_TOK
@@ -3335,8 +3335,8 @@ void mTHEORY_TOK(pSmt1Lexer ctx)
     _type	    = THEORY_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:705:17: ( 'theory' )
-    // ../../../../../../src/parser/smt1/Smt1.g:705:19: 'theory'
+    // ../../../../src/parser/smt1/Smt1.g:706:17: ( 'theory' )
+    // ../../../../src/parser/smt1/Smt1.g:706:19: 'theory'
     {
         MATCHS(lit_18);
         if  (HASEXCEPTION())
@@ -3358,7 +3358,7 @@ void mTHEORY_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end THEORY_TOK
 
-//   Comes from: 706:17: ( 'true' )
+//   Comes from: 707:17: ( 'true' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start TRUE_TOK
@@ -3378,8 +3378,8 @@ void mTRUE_TOK(pSmt1Lexer ctx)
     _type	    = TRUE_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:706:17: ( 'true' )
-    // ../../../../../../src/parser/smt1/Smt1.g:706:19: 'true'
+    // ../../../../src/parser/smt1/Smt1.g:707:17: ( 'true' )
+    // ../../../../src/parser/smt1/Smt1.g:707:19: 'true'
     {
         MATCHS(lit_19);
         if  (HASEXCEPTION())
@@ -3401,7 +3401,7 @@ void mTRUE_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end TRUE_TOK
 
-//   Comes from: 707:17: ( 'unknown' )
+//   Comes from: 708:17: ( 'unknown' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start UNKNOWN_TOK
@@ -3421,8 +3421,8 @@ void mUNKNOWN_TOK(pSmt1Lexer ctx)
     _type	    = UNKNOWN_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:707:17: ( 'unknown' )
-    // ../../../../../../src/parser/smt1/Smt1.g:707:19: 'unknown'
+    // ../../../../src/parser/smt1/Smt1.g:708:17: ( 'unknown' )
+    // ../../../../src/parser/smt1/Smt1.g:708:19: 'unknown'
     {
         MATCHS(lit_20);
         if  (HASEXCEPTION())
@@ -3444,7 +3444,7 @@ void mUNKNOWN_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end UNKNOWN_TOK
 
-//   Comes from: 708:17: ( 'unsat' )
+//   Comes from: 709:17: ( 'unsat' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start UNSAT_TOK
@@ -3464,8 +3464,8 @@ void mUNSAT_TOK(pSmt1Lexer ctx)
     _type	    = UNSAT_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:708:17: ( 'unsat' )
-    // ../../../../../../src/parser/smt1/Smt1.g:708:19: 'unsat'
+    // ../../../../src/parser/smt1/Smt1.g:709:17: ( 'unsat' )
+    // ../../../../src/parser/smt1/Smt1.g:709:19: 'unsat'
     {
         MATCHS(lit_21);
         if  (HASEXCEPTION())
@@ -3487,7 +3487,7 @@ void mUNSAT_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end UNSAT_TOK
 
-//   Comes from: 711:19: ( '&' )
+//   Comes from: 712:19: ( '&' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start AMPERSAND_TOK
@@ -3507,8 +3507,8 @@ void mAMPERSAND_TOK(pSmt1Lexer ctx)
     _type	    = AMPERSAND_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:711:19: ( '&' )
-    // ../../../../../../src/parser/smt1/Smt1.g:711:21: '&'
+    // ../../../../src/parser/smt1/Smt1.g:712:19: ( '&' )
+    // ../../../../src/parser/smt1/Smt1.g:712:21: '&'
     {
         MATCHC('&');
         if  (HASEXCEPTION())
@@ -3528,7 +3528,7 @@ void mAMPERSAND_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end AMPERSAND_TOK
 
-//   Comes from: 712:19: ( 'and' )
+//   Comes from: 713:19: ( 'and' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start AND_TOK
@@ -3548,8 +3548,8 @@ void mAND_TOK(pSmt1Lexer ctx)
     _type	    = AND_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:712:19: ( 'and' )
-    // ../../../../../../src/parser/smt1/Smt1.g:712:21: 'and'
+    // ../../../../src/parser/smt1/Smt1.g:713:19: ( 'and' )
+    // ../../../../src/parser/smt1/Smt1.g:713:21: 'and'
     {
         MATCHS(lit_22);
         if  (HASEXCEPTION())
@@ -3571,7 +3571,7 @@ void mAND_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end AND_TOK
 
-//   Comes from: 713:19: ( '@' )
+//   Comes from: 714:19: ( '@' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start AT_TOK
@@ -3591,8 +3591,8 @@ void mAT_TOK(pSmt1Lexer ctx)
     _type	    = AT_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:713:19: ( '@' )
-    // ../../../../../../src/parser/smt1/Smt1.g:713:21: '@'
+    // ../../../../src/parser/smt1/Smt1.g:714:19: ( '@' )
+    // ../../../../src/parser/smt1/Smt1.g:714:21: '@'
     {
         MATCHC('@');
         if  (HASEXCEPTION())
@@ -3612,7 +3612,7 @@ void mAT_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end AT_TOK
 
-//   Comes from: 714:19: ( 'distinct' )
+//   Comes from: 715:19: ( 'distinct' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DISTINCT_TOK
@@ -3632,8 +3632,8 @@ void mDISTINCT_TOK(pSmt1Lexer ctx)
     _type	    = DISTINCT_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:714:19: ( 'distinct' )
-    // ../../../../../../src/parser/smt1/Smt1.g:714:21: 'distinct'
+    // ../../../../src/parser/smt1/Smt1.g:715:19: ( 'distinct' )
+    // ../../../../src/parser/smt1/Smt1.g:715:21: 'distinct'
     {
         MATCHS(lit_23);
         if  (HASEXCEPTION())
@@ -3655,7 +3655,7 @@ void mDISTINCT_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end DISTINCT_TOK
 
-//   Comes from: 715:19: ( '/' )
+//   Comes from: 716:19: ( '/' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DIV_TOK
@@ -3675,8 +3675,8 @@ void mDIV_TOK(pSmt1Lexer ctx)
     _type	    = DIV_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:715:19: ( '/' )
-    // ../../../../../../src/parser/smt1/Smt1.g:715:21: '/'
+    // ../../../../src/parser/smt1/Smt1.g:716:19: ( '/' )
+    // ../../../../src/parser/smt1/Smt1.g:716:21: '/'
     {
         MATCHC('/');
         if  (HASEXCEPTION())
@@ -3696,7 +3696,7 @@ void mDIV_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end DIV_TOK
 
-//   Comes from: 716:19: ( '=' )
+//   Comes from: 717:19: ( '=' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start EQUAL_TOK
@@ -3716,8 +3716,8 @@ void mEQUAL_TOK(pSmt1Lexer ctx)
     _type	    = EQUAL_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:716:19: ( '=' )
-    // ../../../../../../src/parser/smt1/Smt1.g:716:21: '='
+    // ../../../../src/parser/smt1/Smt1.g:717:19: ( '=' )
+    // ../../../../src/parser/smt1/Smt1.g:717:21: '='
     {
         MATCHC('=');
         if  (HASEXCEPTION())
@@ -3737,7 +3737,7 @@ void mEQUAL_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end EQUAL_TOK
 
-//   Comes from: 717:19: ( 'exists' )
+//   Comes from: 718:19: ( 'exists' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start EXISTS_TOK
@@ -3757,8 +3757,8 @@ void mEXISTS_TOK(pSmt1Lexer ctx)
     _type	    = EXISTS_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:717:19: ( 'exists' )
-    // ../../../../../../src/parser/smt1/Smt1.g:717:21: 'exists'
+    // ../../../../src/parser/smt1/Smt1.g:718:19: ( 'exists' )
+    // ../../../../src/parser/smt1/Smt1.g:718:21: 'exists'
     {
         MATCHS(lit_24);
         if  (HASEXCEPTION())
@@ -3780,7 +3780,7 @@ void mEXISTS_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end EXISTS_TOK
 
-//   Comes from: 718:19: ( 'forall' )
+//   Comes from: 719:19: ( 'forall' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FORALL_TOK
@@ -3800,8 +3800,8 @@ void mFORALL_TOK(pSmt1Lexer ctx)
     _type	    = FORALL_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:718:19: ( 'forall' )
-    // ../../../../../../src/parser/smt1/Smt1.g:718:21: 'forall'
+    // ../../../../src/parser/smt1/Smt1.g:719:19: ( 'forall' )
+    // ../../../../src/parser/smt1/Smt1.g:719:21: 'forall'
     {
         MATCHS(lit_25);
         if  (HASEXCEPTION())
@@ -3823,7 +3823,7 @@ void mFORALL_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end FORALL_TOK
 
-//   Comes from: 719:19: ( '>' )
+//   Comes from: 720:19: ( '>' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start GREATER_THAN_TOK
@@ -3843,8 +3843,8 @@ void mGREATER_THAN_TOK(pSmt1Lexer ctx)
     _type	    = GREATER_THAN_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:719:19: ( '>' )
-    // ../../../../../../src/parser/smt1/Smt1.g:719:21: '>'
+    // ../../../../src/parser/smt1/Smt1.g:720:19: ( '>' )
+    // ../../../../src/parser/smt1/Smt1.g:720:21: '>'
     {
         MATCHC('>');
         if  (HASEXCEPTION())
@@ -3864,7 +3864,7 @@ void mGREATER_THAN_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end GREATER_THAN_TOK
 
-//   Comes from: 720:19: ( 'iff' )
+//   Comes from: 721:19: ( 'iff' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start IFF_TOK
@@ -3884,8 +3884,8 @@ void mIFF_TOK(pSmt1Lexer ctx)
     _type	    = IFF_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:720:19: ( 'iff' )
-    // ../../../../../../src/parser/smt1/Smt1.g:720:21: 'iff'
+    // ../../../../src/parser/smt1/Smt1.g:721:19: ( 'iff' )
+    // ../../../../src/parser/smt1/Smt1.g:721:21: 'iff'
     {
         MATCHS(lit_26);
         if  (HASEXCEPTION())
@@ -3907,7 +3907,7 @@ void mIFF_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end IFF_TOK
 
-//   Comes from: 721:19: ( 'implies' )
+//   Comes from: 722:19: ( 'implies' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start IMPLIES_TOK
@@ -3927,8 +3927,8 @@ void mIMPLIES_TOK(pSmt1Lexer ctx)
     _type	    = IMPLIES_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:721:19: ( 'implies' )
-    // ../../../../../../src/parser/smt1/Smt1.g:721:21: 'implies'
+    // ../../../../src/parser/smt1/Smt1.g:722:19: ( 'implies' )
+    // ../../../../src/parser/smt1/Smt1.g:722:21: 'implies'
     {
         MATCHS(lit_27);
         if  (HASEXCEPTION())
@@ -3950,7 +3950,7 @@ void mIMPLIES_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end IMPLIES_TOK
 
-//   Comes from: 722:19: ( '<' )
+//   Comes from: 723:19: ( '<' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start LESS_THAN_TOK
@@ -3970,8 +3970,8 @@ void mLESS_THAN_TOK(pSmt1Lexer ctx)
     _type	    = LESS_THAN_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:722:19: ( '<' )
-    // ../../../../../../src/parser/smt1/Smt1.g:722:21: '<'
+    // ../../../../src/parser/smt1/Smt1.g:723:19: ( '<' )
+    // ../../../../src/parser/smt1/Smt1.g:723:21: '<'
     {
         MATCHC('<');
         if  (HASEXCEPTION())
@@ -3991,7 +3991,7 @@ void mLESS_THAN_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end LESS_THAN_TOK
 
-//   Comes from: 723:19: ( '-' )
+//   Comes from: 724:19: ( '-' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start MINUS_TOK
@@ -4011,8 +4011,8 @@ void mMINUS_TOK(pSmt1Lexer ctx)
     _type	    = MINUS_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:723:19: ( '-' )
-    // ../../../../../../src/parser/smt1/Smt1.g:723:21: '-'
+    // ../../../../src/parser/smt1/Smt1.g:724:19: ( '-' )
+    // ../../../../src/parser/smt1/Smt1.g:724:21: '-'
     {
         MATCHC('-');
         if  (HASEXCEPTION())
@@ -4032,7 +4032,7 @@ void mMINUS_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end MINUS_TOK
 
-//   Comes from: 724:19: ( 'not' )
+//   Comes from: 725:19: ( 'not' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start NOT_TOK
@@ -4052,8 +4052,8 @@ void mNOT_TOK(pSmt1Lexer ctx)
     _type	    = NOT_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:724:19: ( 'not' )
-    // ../../../../../../src/parser/smt1/Smt1.g:724:21: 'not'
+    // ../../../../src/parser/smt1/Smt1.g:725:19: ( 'not' )
+    // ../../../../src/parser/smt1/Smt1.g:725:21: 'not'
     {
         MATCHS(lit_28);
         if  (HASEXCEPTION())
@@ -4075,7 +4075,7 @@ void mNOT_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end NOT_TOK
 
-//   Comes from: 725:19: ( 'or' )
+//   Comes from: 726:19: ( 'or' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start OR_TOK
@@ -4095,8 +4095,8 @@ void mOR_TOK(pSmt1Lexer ctx)
     _type	    = OR_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:725:19: ( 'or' )
-    // ../../../../../../src/parser/smt1/Smt1.g:725:21: 'or'
+    // ../../../../src/parser/smt1/Smt1.g:726:19: ( 'or' )
+    // ../../../../src/parser/smt1/Smt1.g:726:21: 'or'
     {
         MATCHS(lit_29);
         if  (HASEXCEPTION())
@@ -4118,7 +4118,7 @@ void mOR_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end OR_TOK
 
-//   Comes from: 726:19: ( '%' )
+//   Comes from: 727:19: ( '%' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start PERCENT_TOK
@@ -4138,8 +4138,8 @@ void mPERCENT_TOK(pSmt1Lexer ctx)
     _type	    = PERCENT_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:726:19: ( '%' )
-    // ../../../../../../src/parser/smt1/Smt1.g:726:21: '%'
+    // ../../../../src/parser/smt1/Smt1.g:727:19: ( '%' )
+    // ../../../../src/parser/smt1/Smt1.g:727:21: '%'
     {
         MATCHC('%');
         if  (HASEXCEPTION())
@@ -4159,7 +4159,7 @@ void mPERCENT_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end PERCENT_TOK
 
-//   Comes from: 727:19: ( '|' )
+//   Comes from: 728:19: ( '|' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start PIPE_TOK
@@ -4179,8 +4179,8 @@ void mPIPE_TOK(pSmt1Lexer ctx)
     _type	    = PIPE_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:727:19: ( '|' )
-    // ../../../../../../src/parser/smt1/Smt1.g:727:21: '|'
+    // ../../../../src/parser/smt1/Smt1.g:728:19: ( '|' )
+    // ../../../../src/parser/smt1/Smt1.g:728:21: '|'
     {
         MATCHC('|');
         if  (HASEXCEPTION())
@@ -4200,7 +4200,7 @@ void mPIPE_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end PIPE_TOK
 
-//   Comes from: 728:19: ( '+' )
+//   Comes from: 729:19: ( '+' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start PLUS_TOK
@@ -4220,8 +4220,8 @@ void mPLUS_TOK(pSmt1Lexer ctx)
     _type	    = PLUS_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:728:19: ( '+' )
-    // ../../../../../../src/parser/smt1/Smt1.g:728:21: '+'
+    // ../../../../src/parser/smt1/Smt1.g:729:19: ( '+' )
+    // ../../../../src/parser/smt1/Smt1.g:729:21: '+'
     {
         MATCHC('+');
         if  (HASEXCEPTION())
@@ -4241,7 +4241,7 @@ void mPLUS_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end PLUS_TOK
 
-//   Comes from: 729:19: ( '#' )
+//   Comes from: 730:19: ( '#' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start POUND_TOK
@@ -4261,8 +4261,8 @@ void mPOUND_TOK(pSmt1Lexer ctx)
     _type	    = POUND_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:729:19: ( '#' )
-    // ../../../../../../src/parser/smt1/Smt1.g:729:21: '#'
+    // ../../../../src/parser/smt1/Smt1.g:730:19: ( '#' )
+    // ../../../../src/parser/smt1/Smt1.g:730:21: '#'
     {
         MATCHC('#');
         if  (HASEXCEPTION())
@@ -4282,7 +4282,7 @@ void mPOUND_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end POUND_TOK
 
-//   Comes from: 730:19: ( 'select' )
+//   Comes from: 731:19: ( 'select' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SELECT_TOK
@@ -4302,8 +4302,8 @@ void mSELECT_TOK(pSmt1Lexer ctx)
     _type	    = SELECT_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:730:19: ( 'select' )
-    // ../../../../../../src/parser/smt1/Smt1.g:730:21: 'select'
+    // ../../../../src/parser/smt1/Smt1.g:731:19: ( 'select' )
+    // ../../../../src/parser/smt1/Smt1.g:731:21: 'select'
     {
         MATCHS(lit_30);
         if  (HASEXCEPTION())
@@ -4325,7 +4325,7 @@ void mSELECT_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end SELECT_TOK
 
-//   Comes from: 731:19: ( '*' )
+//   Comes from: 732:19: ( '*' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STAR_TOK
@@ -4345,8 +4345,8 @@ void mSTAR_TOK(pSmt1Lexer ctx)
     _type	    = STAR_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:731:19: ( '*' )
-    // ../../../../../../src/parser/smt1/Smt1.g:731:21: '*'
+    // ../../../../src/parser/smt1/Smt1.g:732:19: ( '*' )
+    // ../../../../src/parser/smt1/Smt1.g:732:21: '*'
     {
         MATCHC('*');
         if  (HASEXCEPTION())
@@ -4366,7 +4366,7 @@ void mSTAR_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end STAR_TOK
 
-//   Comes from: 732:19: ( 'store' )
+//   Comes from: 733:19: ( 'store' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STORE_TOK
@@ -4386,8 +4386,8 @@ void mSTORE_TOK(pSmt1Lexer ctx)
     _type	    = STORE_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:732:19: ( 'store' )
-    // ../../../../../../src/parser/smt1/Smt1.g:732:21: 'store'
+    // ../../../../src/parser/smt1/Smt1.g:733:19: ( 'store' )
+    // ../../../../src/parser/smt1/Smt1.g:733:21: 'store'
     {
         MATCHS(lit_31);
         if  (HASEXCEPTION())
@@ -4409,7 +4409,7 @@ void mSTORE_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end STORE_TOK
 
-//   Comes from: 733:19: ( '~' )
+//   Comes from: 734:19: ( '~' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start TILDE_TOK
@@ -4429,8 +4429,8 @@ void mTILDE_TOK(pSmt1Lexer ctx)
     _type	    = TILDE_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:733:19: ( '~' )
-    // ../../../../../../src/parser/smt1/Smt1.g:733:21: '~'
+    // ../../../../src/parser/smt1/Smt1.g:734:19: ( '~' )
+    // ../../../../src/parser/smt1/Smt1.g:734:21: '~'
     {
         MATCHC('~');
         if  (HASEXCEPTION())
@@ -4450,7 +4450,7 @@ void mTILDE_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end TILDE_TOK
 
-//   Comes from: 734:19: ( 'xor' )
+//   Comes from: 735:19: ( 'xor' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start XOR_TOK
@@ -4470,8 +4470,8 @@ void mXOR_TOK(pSmt1Lexer ctx)
     _type	    = XOR_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:734:19: ( 'xor' )
-    // ../../../../../../src/parser/smt1/Smt1.g:734:21: 'xor'
+    // ../../../../src/parser/smt1/Smt1.g:735:19: ( 'xor' )
+    // ../../../../src/parser/smt1/Smt1.g:735:21: 'xor'
     {
         MATCHS(lit_32);
         if  (HASEXCEPTION())
@@ -4493,7 +4493,7 @@ void mXOR_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end XOR_TOK
 
-//   Comes from: 737:19: ( 'BitVec' )
+//   Comes from: 738:19: ( 'BitVec' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BITVECTOR_TOK
@@ -4513,8 +4513,8 @@ void mBITVECTOR_TOK(pSmt1Lexer ctx)
     _type	    = BITVECTOR_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:737:19: ( 'BitVec' )
-    // ../../../../../../src/parser/smt1/Smt1.g:737:21: 'BitVec'
+    // ../../../../src/parser/smt1/Smt1.g:738:19: ( 'BitVec' )
+    // ../../../../src/parser/smt1/Smt1.g:738:21: 'BitVec'
     {
         MATCHS(lit_33);
         if  (HASEXCEPTION())
@@ -4536,7 +4536,7 @@ void mBITVECTOR_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BITVECTOR_TOK
 
-//   Comes from: 738:19: ( 'concat' )
+//   Comes from: 739:19: ( 'concat' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start CONCAT_TOK
@@ -4556,8 +4556,8 @@ void mCONCAT_TOK(pSmt1Lexer ctx)
     _type	    = CONCAT_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:738:19: ( 'concat' )
-    // ../../../../../../src/parser/smt1/Smt1.g:738:21: 'concat'
+    // ../../../../src/parser/smt1/Smt1.g:739:19: ( 'concat' )
+    // ../../../../src/parser/smt1/Smt1.g:739:21: 'concat'
     {
         MATCHS(lit_34);
         if  (HASEXCEPTION())
@@ -4579,7 +4579,7 @@ void mCONCAT_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end CONCAT_TOK
 
-//   Comes from: 739:19: ( 'extract' )
+//   Comes from: 740:19: ( 'extract' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start EXTRACT_TOK
@@ -4599,8 +4599,8 @@ void mEXTRACT_TOK(pSmt1Lexer ctx)
     _type	    = EXTRACT_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:739:19: ( 'extract' )
-    // ../../../../../../src/parser/smt1/Smt1.g:739:21: 'extract'
+    // ../../../../src/parser/smt1/Smt1.g:740:19: ( 'extract' )
+    // ../../../../src/parser/smt1/Smt1.g:740:21: 'extract'
     {
         MATCHS(lit_35);
         if  (HASEXCEPTION())
@@ -4622,7 +4622,7 @@ void mEXTRACT_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end EXTRACT_TOK
 
-//   Comes from: 740:19: ( 'bvand' )
+//   Comes from: 741:19: ( 'bvand' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVAND_TOK
@@ -4642,8 +4642,8 @@ void mBVAND_TOK(pSmt1Lexer ctx)
     _type	    = BVAND_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:740:19: ( 'bvand' )
-    // ../../../../../../src/parser/smt1/Smt1.g:740:21: 'bvand'
+    // ../../../../src/parser/smt1/Smt1.g:741:19: ( 'bvand' )
+    // ../../../../src/parser/smt1/Smt1.g:741:21: 'bvand'
     {
         MATCHS(lit_36);
         if  (HASEXCEPTION())
@@ -4665,7 +4665,7 @@ void mBVAND_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVAND_TOK
 
-//   Comes from: 741:19: ( 'bvor' )
+//   Comes from: 742:19: ( 'bvor' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVOR_TOK
@@ -4685,8 +4685,8 @@ void mBVOR_TOK(pSmt1Lexer ctx)
     _type	    = BVOR_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:741:19: ( 'bvor' )
-    // ../../../../../../src/parser/smt1/Smt1.g:741:21: 'bvor'
+    // ../../../../src/parser/smt1/Smt1.g:742:19: ( 'bvor' )
+    // ../../../../src/parser/smt1/Smt1.g:742:21: 'bvor'
     {
         MATCHS(lit_37);
         if  (HASEXCEPTION())
@@ -4708,7 +4708,7 @@ void mBVOR_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVOR_TOK
 
-//   Comes from: 742:19: ( 'bvxor' )
+//   Comes from: 743:19: ( 'bvxor' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVXOR_TOK
@@ -4728,8 +4728,8 @@ void mBVXOR_TOK(pSmt1Lexer ctx)
     _type	    = BVXOR_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:742:19: ( 'bvxor' )
-    // ../../../../../../src/parser/smt1/Smt1.g:742:21: 'bvxor'
+    // ../../../../src/parser/smt1/Smt1.g:743:19: ( 'bvxor' )
+    // ../../../../src/parser/smt1/Smt1.g:743:21: 'bvxor'
     {
         MATCHS(lit_38);
         if  (HASEXCEPTION())
@@ -4751,7 +4751,7 @@ void mBVXOR_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVXOR_TOK
 
-//   Comes from: 743:19: ( 'bvnot' )
+//   Comes from: 744:19: ( 'bvnot' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVNOT_TOK
@@ -4771,8 +4771,8 @@ void mBVNOT_TOK(pSmt1Lexer ctx)
     _type	    = BVNOT_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:743:19: ( 'bvnot' )
-    // ../../../../../../src/parser/smt1/Smt1.g:743:21: 'bvnot'
+    // ../../../../src/parser/smt1/Smt1.g:744:19: ( 'bvnot' )
+    // ../../../../src/parser/smt1/Smt1.g:744:21: 'bvnot'
     {
         MATCHS(lit_39);
         if  (HASEXCEPTION())
@@ -4794,7 +4794,7 @@ void mBVNOT_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVNOT_TOK
 
-//   Comes from: 744:19: ( 'bvnand' )
+//   Comes from: 745:19: ( 'bvnand' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVNAND_TOK
@@ -4814,8 +4814,8 @@ void mBVNAND_TOK(pSmt1Lexer ctx)
     _type	    = BVNAND_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:744:19: ( 'bvnand' )
-    // ../../../../../../src/parser/smt1/Smt1.g:744:21: 'bvnand'
+    // ../../../../src/parser/smt1/Smt1.g:745:19: ( 'bvnand' )
+    // ../../../../src/parser/smt1/Smt1.g:745:21: 'bvnand'
     {
         MATCHS(lit_40);
         if  (HASEXCEPTION())
@@ -4837,7 +4837,7 @@ void mBVNAND_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVNAND_TOK
 
-//   Comes from: 745:19: ( 'bvnor' )
+//   Comes from: 746:19: ( 'bvnor' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVNOR_TOK
@@ -4857,8 +4857,8 @@ void mBVNOR_TOK(pSmt1Lexer ctx)
     _type	    = BVNOR_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:745:19: ( 'bvnor' )
-    // ../../../../../../src/parser/smt1/Smt1.g:745:21: 'bvnor'
+    // ../../../../src/parser/smt1/Smt1.g:746:19: ( 'bvnor' )
+    // ../../../../src/parser/smt1/Smt1.g:746:21: 'bvnor'
     {
         MATCHS(lit_41);
         if  (HASEXCEPTION())
@@ -4880,7 +4880,7 @@ void mBVNOR_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVNOR_TOK
 
-//   Comes from: 746:19: ( 'bvxnor' )
+//   Comes from: 747:19: ( 'bvxnor' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVXNOR_TOK
@@ -4900,8 +4900,8 @@ void mBVXNOR_TOK(pSmt1Lexer ctx)
     _type	    = BVXNOR_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:746:19: ( 'bvxnor' )
-    // ../../../../../../src/parser/smt1/Smt1.g:746:21: 'bvxnor'
+    // ../../../../src/parser/smt1/Smt1.g:747:19: ( 'bvxnor' )
+    // ../../../../src/parser/smt1/Smt1.g:747:21: 'bvxnor'
     {
         MATCHS(lit_42);
         if  (HASEXCEPTION())
@@ -4923,7 +4923,7 @@ void mBVXNOR_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVXNOR_TOK
 
-//   Comes from: 747:19: ( 'bvcomp' )
+//   Comes from: 748:19: ( 'bvcomp' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVCOMP_TOK
@@ -4943,8 +4943,8 @@ void mBVCOMP_TOK(pSmt1Lexer ctx)
     _type	    = BVCOMP_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:747:19: ( 'bvcomp' )
-    // ../../../../../../src/parser/smt1/Smt1.g:747:21: 'bvcomp'
+    // ../../../../src/parser/smt1/Smt1.g:748:19: ( 'bvcomp' )
+    // ../../../../src/parser/smt1/Smt1.g:748:21: 'bvcomp'
     {
         MATCHS(lit_43);
         if  (HASEXCEPTION())
@@ -4966,7 +4966,7 @@ void mBVCOMP_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVCOMP_TOK
 
-//   Comes from: 748:19: ( 'bvmul' )
+//   Comes from: 749:19: ( 'bvmul' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVMUL_TOK
@@ -4986,8 +4986,8 @@ void mBVMUL_TOK(pSmt1Lexer ctx)
     _type	    = BVMUL_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:748:19: ( 'bvmul' )
-    // ../../../../../../src/parser/smt1/Smt1.g:748:21: 'bvmul'
+    // ../../../../src/parser/smt1/Smt1.g:749:19: ( 'bvmul' )
+    // ../../../../src/parser/smt1/Smt1.g:749:21: 'bvmul'
     {
         MATCHS(lit_44);
         if  (HASEXCEPTION())
@@ -5009,7 +5009,7 @@ void mBVMUL_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVMUL_TOK
 
-//   Comes from: 749:19: ( 'bvadd' )
+//   Comes from: 750:19: ( 'bvadd' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVADD_TOK
@@ -5029,8 +5029,8 @@ void mBVADD_TOK(pSmt1Lexer ctx)
     _type	    = BVADD_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:749:19: ( 'bvadd' )
-    // ../../../../../../src/parser/smt1/Smt1.g:749:21: 'bvadd'
+    // ../../../../src/parser/smt1/Smt1.g:750:19: ( 'bvadd' )
+    // ../../../../src/parser/smt1/Smt1.g:750:21: 'bvadd'
     {
         MATCHS(lit_45);
         if  (HASEXCEPTION())
@@ -5052,7 +5052,7 @@ void mBVADD_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVADD_TOK
 
-//   Comes from: 750:19: ( 'bvsub' )
+//   Comes from: 751:19: ( 'bvsub' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVSUB_TOK
@@ -5072,8 +5072,8 @@ void mBVSUB_TOK(pSmt1Lexer ctx)
     _type	    = BVSUB_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:750:19: ( 'bvsub' )
-    // ../../../../../../src/parser/smt1/Smt1.g:750:21: 'bvsub'
+    // ../../../../src/parser/smt1/Smt1.g:751:19: ( 'bvsub' )
+    // ../../../../src/parser/smt1/Smt1.g:751:21: 'bvsub'
     {
         MATCHS(lit_46);
         if  (HASEXCEPTION())
@@ -5095,7 +5095,7 @@ void mBVSUB_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVSUB_TOK
 
-//   Comes from: 751:19: ( 'bvneg' )
+//   Comes from: 752:19: ( 'bvneg' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVNEG_TOK
@@ -5115,8 +5115,8 @@ void mBVNEG_TOK(pSmt1Lexer ctx)
     _type	    = BVNEG_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:751:19: ( 'bvneg' )
-    // ../../../../../../src/parser/smt1/Smt1.g:751:21: 'bvneg'
+    // ../../../../src/parser/smt1/Smt1.g:752:19: ( 'bvneg' )
+    // ../../../../src/parser/smt1/Smt1.g:752:21: 'bvneg'
     {
         MATCHS(lit_47);
         if  (HASEXCEPTION())
@@ -5138,7 +5138,7 @@ void mBVNEG_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVNEG_TOK
 
-//   Comes from: 752:19: ( 'bvudiv' )
+//   Comes from: 753:19: ( 'bvudiv' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVUDIV_TOK
@@ -5158,8 +5158,8 @@ void mBVUDIV_TOK(pSmt1Lexer ctx)
     _type	    = BVUDIV_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:752:19: ( 'bvudiv' )
-    // ../../../../../../src/parser/smt1/Smt1.g:752:21: 'bvudiv'
+    // ../../../../src/parser/smt1/Smt1.g:753:19: ( 'bvudiv' )
+    // ../../../../src/parser/smt1/Smt1.g:753:21: 'bvudiv'
     {
         MATCHS(lit_48);
         if  (HASEXCEPTION())
@@ -5181,7 +5181,7 @@ void mBVUDIV_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVUDIV_TOK
 
-//   Comes from: 753:19: ( 'bvurem' )
+//   Comes from: 754:19: ( 'bvurem' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVUREM_TOK
@@ -5201,8 +5201,8 @@ void mBVUREM_TOK(pSmt1Lexer ctx)
     _type	    = BVUREM_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:753:19: ( 'bvurem' )
-    // ../../../../../../src/parser/smt1/Smt1.g:753:21: 'bvurem'
+    // ../../../../src/parser/smt1/Smt1.g:754:19: ( 'bvurem' )
+    // ../../../../src/parser/smt1/Smt1.g:754:21: 'bvurem'
     {
         MATCHS(lit_49);
         if  (HASEXCEPTION())
@@ -5224,7 +5224,7 @@ void mBVUREM_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVUREM_TOK
 
-//   Comes from: 754:19: ( 'bvsdiv' )
+//   Comes from: 755:19: ( 'bvsdiv' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVSDIV_TOK
@@ -5244,8 +5244,8 @@ void mBVSDIV_TOK(pSmt1Lexer ctx)
     _type	    = BVSDIV_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:754:19: ( 'bvsdiv' )
-    // ../../../../../../src/parser/smt1/Smt1.g:754:21: 'bvsdiv'
+    // ../../../../src/parser/smt1/Smt1.g:755:19: ( 'bvsdiv' )
+    // ../../../../src/parser/smt1/Smt1.g:755:21: 'bvsdiv'
     {
         MATCHS(lit_50);
         if  (HASEXCEPTION())
@@ -5267,7 +5267,7 @@ void mBVSDIV_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVSDIV_TOK
 
-//   Comes from: 755:19: ( 'bvsrem' )
+//   Comes from: 756:19: ( 'bvsrem' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVSREM_TOK
@@ -5287,8 +5287,8 @@ void mBVSREM_TOK(pSmt1Lexer ctx)
     _type	    = BVSREM_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:755:19: ( 'bvsrem' )
-    // ../../../../../../src/parser/smt1/Smt1.g:755:21: 'bvsrem'
+    // ../../../../src/parser/smt1/Smt1.g:756:19: ( 'bvsrem' )
+    // ../../../../src/parser/smt1/Smt1.g:756:21: 'bvsrem'
     {
         MATCHS(lit_51);
         if  (HASEXCEPTION())
@@ -5310,7 +5310,7 @@ void mBVSREM_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVSREM_TOK
 
-//   Comes from: 756:19: ( 'bvsmod' )
+//   Comes from: 757:19: ( 'bvsmod' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVSMOD_TOK
@@ -5330,8 +5330,8 @@ void mBVSMOD_TOK(pSmt1Lexer ctx)
     _type	    = BVSMOD_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:756:19: ( 'bvsmod' )
-    // ../../../../../../src/parser/smt1/Smt1.g:756:21: 'bvsmod'
+    // ../../../../src/parser/smt1/Smt1.g:757:19: ( 'bvsmod' )
+    // ../../../../src/parser/smt1/Smt1.g:757:21: 'bvsmod'
     {
         MATCHS(lit_52);
         if  (HASEXCEPTION())
@@ -5353,7 +5353,7 @@ void mBVSMOD_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVSMOD_TOK
 
-//   Comes from: 757:19: ( 'bvshl' )
+//   Comes from: 758:19: ( 'bvshl' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVSHL_TOK
@@ -5373,8 +5373,8 @@ void mBVSHL_TOK(pSmt1Lexer ctx)
     _type	    = BVSHL_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:757:19: ( 'bvshl' )
-    // ../../../../../../src/parser/smt1/Smt1.g:757:21: 'bvshl'
+    // ../../../../src/parser/smt1/Smt1.g:758:19: ( 'bvshl' )
+    // ../../../../src/parser/smt1/Smt1.g:758:21: 'bvshl'
     {
         MATCHS(lit_53);
         if  (HASEXCEPTION())
@@ -5396,7 +5396,7 @@ void mBVSHL_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVSHL_TOK
 
-//   Comes from: 758:19: ( 'bvlshr' )
+//   Comes from: 759:19: ( 'bvlshr' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVLSHR_TOK
@@ -5416,8 +5416,8 @@ void mBVLSHR_TOK(pSmt1Lexer ctx)
     _type	    = BVLSHR_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:758:19: ( 'bvlshr' )
-    // ../../../../../../src/parser/smt1/Smt1.g:758:21: 'bvlshr'
+    // ../../../../src/parser/smt1/Smt1.g:759:19: ( 'bvlshr' )
+    // ../../../../src/parser/smt1/Smt1.g:759:21: 'bvlshr'
     {
         MATCHS(lit_54);
         if  (HASEXCEPTION())
@@ -5439,7 +5439,7 @@ void mBVLSHR_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVLSHR_TOK
 
-//   Comes from: 759:19: ( 'bvashr' )
+//   Comes from: 760:19: ( 'bvashr' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVASHR_TOK
@@ -5459,8 +5459,8 @@ void mBVASHR_TOK(pSmt1Lexer ctx)
     _type	    = BVASHR_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:759:19: ( 'bvashr' )
-    // ../../../../../../src/parser/smt1/Smt1.g:759:21: 'bvashr'
+    // ../../../../src/parser/smt1/Smt1.g:760:19: ( 'bvashr' )
+    // ../../../../src/parser/smt1/Smt1.g:760:21: 'bvashr'
     {
         MATCHS(lit_55);
         if  (HASEXCEPTION())
@@ -5482,7 +5482,7 @@ void mBVASHR_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVASHR_TOK
 
-//   Comes from: 760:19: ( 'bvult' )
+//   Comes from: 761:19: ( 'bvult' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVULT_TOK
@@ -5502,8 +5502,8 @@ void mBVULT_TOK(pSmt1Lexer ctx)
     _type	    = BVULT_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:760:19: ( 'bvult' )
-    // ../../../../../../src/parser/smt1/Smt1.g:760:21: 'bvult'
+    // ../../../../src/parser/smt1/Smt1.g:761:19: ( 'bvult' )
+    // ../../../../src/parser/smt1/Smt1.g:761:21: 'bvult'
     {
         MATCHS(lit_56);
         if  (HASEXCEPTION())
@@ -5525,7 +5525,7 @@ void mBVULT_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVULT_TOK
 
-//   Comes from: 761:19: ( 'bvule' )
+//   Comes from: 762:19: ( 'bvule' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVULE_TOK
@@ -5545,8 +5545,8 @@ void mBVULE_TOK(pSmt1Lexer ctx)
     _type	    = BVULE_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:761:19: ( 'bvule' )
-    // ../../../../../../src/parser/smt1/Smt1.g:761:21: 'bvule'
+    // ../../../../src/parser/smt1/Smt1.g:762:19: ( 'bvule' )
+    // ../../../../src/parser/smt1/Smt1.g:762:21: 'bvule'
     {
         MATCHS(lit_57);
         if  (HASEXCEPTION())
@@ -5568,7 +5568,7 @@ void mBVULE_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVULE_TOK
 
-//   Comes from: 762:19: ( 'bvugt' )
+//   Comes from: 763:19: ( 'bvugt' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVUGT_TOK
@@ -5588,8 +5588,8 @@ void mBVUGT_TOK(pSmt1Lexer ctx)
     _type	    = BVUGT_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:762:19: ( 'bvugt' )
-    // ../../../../../../src/parser/smt1/Smt1.g:762:21: 'bvugt'
+    // ../../../../src/parser/smt1/Smt1.g:763:19: ( 'bvugt' )
+    // ../../../../src/parser/smt1/Smt1.g:763:21: 'bvugt'
     {
         MATCHS(lit_58);
         if  (HASEXCEPTION())
@@ -5611,7 +5611,7 @@ void mBVUGT_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVUGT_TOK
 
-//   Comes from: 763:19: ( 'bvuge' )
+//   Comes from: 764:19: ( 'bvuge' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVUGE_TOK
@@ -5631,8 +5631,8 @@ void mBVUGE_TOK(pSmt1Lexer ctx)
     _type	    = BVUGE_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:763:19: ( 'bvuge' )
-    // ../../../../../../src/parser/smt1/Smt1.g:763:21: 'bvuge'
+    // ../../../../src/parser/smt1/Smt1.g:764:19: ( 'bvuge' )
+    // ../../../../src/parser/smt1/Smt1.g:764:21: 'bvuge'
     {
         MATCHS(lit_59);
         if  (HASEXCEPTION())
@@ -5654,7 +5654,7 @@ void mBVUGE_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVUGE_TOK
 
-//   Comes from: 764:19: ( 'bvslt' )
+//   Comes from: 765:19: ( 'bvslt' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVSLT_TOK
@@ -5674,8 +5674,8 @@ void mBVSLT_TOK(pSmt1Lexer ctx)
     _type	    = BVSLT_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:764:19: ( 'bvslt' )
-    // ../../../../../../src/parser/smt1/Smt1.g:764:21: 'bvslt'
+    // ../../../../src/parser/smt1/Smt1.g:765:19: ( 'bvslt' )
+    // ../../../../src/parser/smt1/Smt1.g:765:21: 'bvslt'
     {
         MATCHS(lit_60);
         if  (HASEXCEPTION())
@@ -5697,7 +5697,7 @@ void mBVSLT_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVSLT_TOK
 
-//   Comes from: 765:19: ( 'bvsle' )
+//   Comes from: 766:19: ( 'bvsle' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVSLE_TOK
@@ -5717,8 +5717,8 @@ void mBVSLE_TOK(pSmt1Lexer ctx)
     _type	    = BVSLE_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:765:19: ( 'bvsle' )
-    // ../../../../../../src/parser/smt1/Smt1.g:765:21: 'bvsle'
+    // ../../../../src/parser/smt1/Smt1.g:766:19: ( 'bvsle' )
+    // ../../../../src/parser/smt1/Smt1.g:766:21: 'bvsle'
     {
         MATCHS(lit_61);
         if  (HASEXCEPTION())
@@ -5740,7 +5740,7 @@ void mBVSLE_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVSLE_TOK
 
-//   Comes from: 766:19: ( 'bvsgt' )
+//   Comes from: 767:19: ( 'bvsgt' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVSGT_TOK
@@ -5760,8 +5760,8 @@ void mBVSGT_TOK(pSmt1Lexer ctx)
     _type	    = BVSGT_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:766:19: ( 'bvsgt' )
-    // ../../../../../../src/parser/smt1/Smt1.g:766:21: 'bvsgt'
+    // ../../../../src/parser/smt1/Smt1.g:767:19: ( 'bvsgt' )
+    // ../../../../src/parser/smt1/Smt1.g:767:21: 'bvsgt'
     {
         MATCHS(lit_62);
         if  (HASEXCEPTION())
@@ -5783,7 +5783,7 @@ void mBVSGT_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVSGT_TOK
 
-//   Comes from: 767:19: ( 'bvsge' )
+//   Comes from: 768:19: ( 'bvsge' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BVSGE_TOK
@@ -5803,8 +5803,8 @@ void mBVSGE_TOK(pSmt1Lexer ctx)
     _type	    = BVSGE_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:767:19: ( 'bvsge' )
-    // ../../../../../../src/parser/smt1/Smt1.g:767:21: 'bvsge'
+    // ../../../../src/parser/smt1/Smt1.g:768:19: ( 'bvsge' )
+    // ../../../../src/parser/smt1/Smt1.g:768:21: 'bvsge'
     {
         MATCHS(lit_63);
         if  (HASEXCEPTION())
@@ -5826,7 +5826,7 @@ void mBVSGE_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end BVSGE_TOK
 
-//   Comes from: 768:19: ( 'repeat' )
+//   Comes from: 769:19: ( 'repeat' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start REPEAT_TOK
@@ -5846,8 +5846,8 @@ void mREPEAT_TOK(pSmt1Lexer ctx)
     _type	    = REPEAT_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:768:19: ( 'repeat' )
-    // ../../../../../../src/parser/smt1/Smt1.g:768:21: 'repeat'
+    // ../../../../src/parser/smt1/Smt1.g:769:19: ( 'repeat' )
+    // ../../../../src/parser/smt1/Smt1.g:769:21: 'repeat'
     {
         MATCHS(lit_64);
         if  (HASEXCEPTION())
@@ -5869,7 +5869,7 @@ void mREPEAT_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end REPEAT_TOK
 
-//   Comes from: 769:19: ( 'zero_extend' )
+//   Comes from: 770:19: ( 'zero_extend' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start ZERO_EXTEND_TOK
@@ -5889,8 +5889,8 @@ void mZERO_EXTEND_TOK(pSmt1Lexer ctx)
     _type	    = ZERO_EXTEND_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:769:19: ( 'zero_extend' )
-    // ../../../../../../src/parser/smt1/Smt1.g:769:21: 'zero_extend'
+    // ../../../../src/parser/smt1/Smt1.g:770:19: ( 'zero_extend' )
+    // ../../../../src/parser/smt1/Smt1.g:770:21: 'zero_extend'
     {
         MATCHS(lit_65);
         if  (HASEXCEPTION())
@@ -5912,7 +5912,7 @@ void mZERO_EXTEND_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end ZERO_EXTEND_TOK
 
-//   Comes from: 770:19: ( 'sign_extend' )
+//   Comes from: 771:19: ( 'sign_extend' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SIGN_EXTEND_TOK
@@ -5932,8 +5932,8 @@ void mSIGN_EXTEND_TOK(pSmt1Lexer ctx)
     _type	    = SIGN_EXTEND_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:770:19: ( 'sign_extend' )
-    // ../../../../../../src/parser/smt1/Smt1.g:770:21: 'sign_extend'
+    // ../../../../src/parser/smt1/Smt1.g:771:19: ( 'sign_extend' )
+    // ../../../../src/parser/smt1/Smt1.g:771:21: 'sign_extend'
     {
         MATCHS(lit_66);
         if  (HASEXCEPTION())
@@ -5955,7 +5955,7 @@ void mSIGN_EXTEND_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end SIGN_EXTEND_TOK
 
-//   Comes from: 771:19: ( 'rotate_left' )
+//   Comes from: 772:19: ( 'rotate_left' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start ROTATE_LEFT_TOK
@@ -5975,8 +5975,8 @@ void mROTATE_LEFT_TOK(pSmt1Lexer ctx)
     _type	    = ROTATE_LEFT_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:771:19: ( 'rotate_left' )
-    // ../../../../../../src/parser/smt1/Smt1.g:771:21: 'rotate_left'
+    // ../../../../src/parser/smt1/Smt1.g:772:19: ( 'rotate_left' )
+    // ../../../../src/parser/smt1/Smt1.g:772:21: 'rotate_left'
     {
         MATCHS(lit_67);
         if  (HASEXCEPTION())
@@ -5998,7 +5998,7 @@ void mROTATE_LEFT_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end ROTATE_LEFT_TOK
 
-//   Comes from: 772:19: ( 'rotate_right' )
+//   Comes from: 773:19: ( 'rotate_right' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start ROTATE_RIGHT_TOK
@@ -6018,8 +6018,8 @@ void mROTATE_RIGHT_TOK(pSmt1Lexer ctx)
     _type	    = ROTATE_RIGHT_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:772:19: ( 'rotate_right' )
-    // ../../../../../../src/parser/smt1/Smt1.g:772:21: 'rotate_right'
+    // ../../../../src/parser/smt1/Smt1.g:773:19: ( 'rotate_right' )
+    // ../../../../src/parser/smt1/Smt1.g:773:21: 'rotate_right'
     {
         MATCHS(lit_68);
         if  (HASEXCEPTION())
@@ -6041,7 +6041,7 @@ void mROTATE_RIGHT_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end ROTATE_RIGHT_TOK
 
-//   Comes from: 781:3: ( 'bv' ( DIGIT )+ )
+//   Comes from: 782:3: ( 'bv' ( DIGIT )+ )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BITVECTOR_BV_CONST
@@ -6061,8 +6061,8 @@ void mBITVECTOR_BV_CONST(pSmt1Lexer ctx)
     _type	    = BITVECTOR_BV_CONST;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:781:3: ( 'bv' ( DIGIT )+ )
-    // ../../../../../../src/parser/smt1/Smt1.g:781:5: 'bv' ( DIGIT )+
+    // ../../../../src/parser/smt1/Smt1.g:782:3: ( 'bv' ( DIGIT )+ )
+    // ../../../../src/parser/smt1/Smt1.g:782:5: 'bv' ( DIGIT )+
     {
         MATCHS(lit_69);
         if  (HASEXCEPTION())
@@ -6073,7 +6073,7 @@ void mBITVECTOR_BV_CONST(pSmt1Lexer ctx)
 
 
 
-        // ../../../../../../src/parser/smt1/Smt1.g:781:10: ( DIGIT )+
+        // ../../../../src/parser/smt1/Smt1.g:782:10: ( DIGIT )+
         {
             int cnt2=0;
 
@@ -6102,7 +6102,7 @@ void mBITVECTOR_BV_CONST(pSmt1Lexer ctx)
         	switch (alt2)
         	{
         	    case 1:
-        	        // ../../../../../../src/parser/smt1/Smt1.g:
+        	        // ../../../../src/parser/smt1/Smt1.g:
         	        {
         	            if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
         	            {
@@ -6153,7 +6153,7 @@ void mBITVECTOR_BV_CONST(pSmt1Lexer ctx)
 }
 // $ANTLR end BITVECTOR_BV_CONST
 
-//   Comes from: 788:3: ( 'bit0' | 'bit1' )
+//   Comes from: 789:3: ( 'bit0' | 'bit1' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BITVECTOR1_BV_CONST
@@ -6174,7 +6174,7 @@ void mBITVECTOR1_BV_CONST(pSmt1Lexer ctx)
 
 
     {
-        //  ../../../../../../src/parser/smt1/Smt1.g:788:3: ( 'bit0' | 'bit1' )
+        //  ../../../../src/parser/smt1/Smt1.g:789:3: ( 'bit0' | 'bit1' )
 
         ANTLR3_UINT32 alt3;
 
@@ -6265,7 +6265,7 @@ void mBITVECTOR1_BV_CONST(pSmt1Lexer ctx)
         switch (alt3)
         {
     	case 1:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:788:5: 'bit0'
+    	    // ../../../../src/parser/smt1/Smt1.g:789:5: 'bit0'
     	    {
     	        MATCHS(lit_70);
     	        if  (HASEXCEPTION())
@@ -6279,7 +6279,7 @@ void mBITVECTOR1_BV_CONST(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 2:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:788:14: 'bit1'
+    	    // ../../../../src/parser/smt1/Smt1.g:789:14: 'bit1'
     	    {
     	        MATCHS(lit_71);
     	        if  (HASEXCEPTION())
@@ -6304,7 +6304,7 @@ void mBITVECTOR1_BV_CONST(pSmt1Lexer ctx)
 }
 // $ANTLR end BITVECTOR1_BV_CONST
 
-//   Comes from: 798:3: ( ALPHA ( ALPHA | DIGIT | '_' | '\\'' | '.' )* )
+//   Comes from: 799:3: ( ALPHA ( ALPHA | DIGIT | '_' | '\\'' | '.' )* )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start IDENTIFIER
@@ -6324,10 +6324,10 @@ void mIDENTIFIER(pSmt1Lexer ctx)
     _type	    = IDENTIFIER;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:798:3: ( ALPHA ( ALPHA | DIGIT | '_' | '\\'' | '.' )* )
-    // ../../../../../../src/parser/smt1/Smt1.g:798:6: ALPHA ( ALPHA | DIGIT | '_' | '\\'' | '.' )*
+    // ../../../../src/parser/smt1/Smt1.g:799:3: ( ALPHA ( ALPHA | DIGIT | '_' | '\\'' | '.' )* )
+    // ../../../../src/parser/smt1/Smt1.g:799:6: ALPHA ( ALPHA | DIGIT | '_' | '\\'' | '.' )*
     {
-        /* 798:6: ALPHA ( ALPHA | DIGIT | '_' | '\\'' | '.' )* */
+        /* 799:6: ALPHA ( ALPHA | DIGIT | '_' | '\\'' | '.' )* */
         mALPHA(ctx );
         if  (HASEXCEPTION())
         {
@@ -6336,7 +6336,7 @@ void mIDENTIFIER(pSmt1Lexer ctx)
 
 
 
-        // ../../../../../../src/parser/smt1/Smt1.g:798:12: ( ALPHA | DIGIT | '_' | '\\'' | '.' )*
+        // ../../../../src/parser/smt1/Smt1.g:799:12: ( ALPHA | DIGIT | '_' | '\\'' | '.' )*
 
         for (;;)
         {
@@ -6418,7 +6418,7 @@ void mIDENTIFIER(pSmt1Lexer ctx)
             switch (alt4)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:
+        	    // ../../../../src/parser/smt1/Smt1.g:
         	    {
         	        if ( LA(1) == '\'' || LA(1) == '.' || ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'A') && (LA(1) <= 'Z')) || LA(1) == '_' || ((LA(1) >= 'a') && (LA(1) <= 'z')) )
         	        {
@@ -6457,7 +6457,7 @@ void mIDENTIFIER(pSmt1Lexer ctx)
 }
 // $ANTLR end IDENTIFIER
 
-//   Comes from: 804:3: ( ':' IDENTIFIER )
+//   Comes from: 805:3: ( ':' IDENTIFIER )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start ATTR_IDENTIFIER
@@ -6477,8 +6477,8 @@ void mATTR_IDENTIFIER(pSmt1Lexer ctx)
     _type	    = ATTR_IDENTIFIER;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:804:3: ( ':' IDENTIFIER )
-    // ../../../../../../src/parser/smt1/Smt1.g:804:6: ':' IDENTIFIER
+    // ../../../../src/parser/smt1/Smt1.g:805:3: ( ':' IDENTIFIER )
+    // ../../../../src/parser/smt1/Smt1.g:805:6: ':' IDENTIFIER
     {
         MATCHC(':');
         if  (HASEXCEPTION())
@@ -6487,7 +6487,7 @@ void mATTR_IDENTIFIER(pSmt1Lexer ctx)
         }
 
 
-        /* 804:6: ':' IDENTIFIER */
+        /* 805:6: ':' IDENTIFIER */
         mIDENTIFIER(ctx );
         if  (HASEXCEPTION())
         {
@@ -6507,7 +6507,7 @@ void mATTR_IDENTIFIER(pSmt1Lexer ctx)
 }
 // $ANTLR end ATTR_IDENTIFIER
 
-//   Comes from: 811:3: ( '?' IDENTIFIER )
+//   Comes from: 812:3: ( '?' IDENTIFIER )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start LET_IDENTIFIER
@@ -6527,8 +6527,8 @@ void mLET_IDENTIFIER(pSmt1Lexer ctx)
     _type	    = LET_IDENTIFIER;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:811:3: ( '?' IDENTIFIER )
-    // ../../../../../../src/parser/smt1/Smt1.g:811:5: '?' IDENTIFIER
+    // ../../../../src/parser/smt1/Smt1.g:812:3: ( '?' IDENTIFIER )
+    // ../../../../src/parser/smt1/Smt1.g:812:5: '?' IDENTIFIER
     {
         MATCHC('?');
         if  (HASEXCEPTION())
@@ -6537,7 +6537,7 @@ void mLET_IDENTIFIER(pSmt1Lexer ctx)
         }
 
 
-        /* 811:5: '?' IDENTIFIER */
+        /* 812:5: '?' IDENTIFIER */
         mIDENTIFIER(ctx );
         if  (HASEXCEPTION())
         {
@@ -6557,7 +6557,7 @@ void mLET_IDENTIFIER(pSmt1Lexer ctx)
 }
 // $ANTLR end LET_IDENTIFIER
 
-//   Comes from: 818:3: ( '$' IDENTIFIER )
+//   Comes from: 819:3: ( '$' IDENTIFIER )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FLET_IDENTIFIER
@@ -6577,8 +6577,8 @@ void mFLET_IDENTIFIER(pSmt1Lexer ctx)
     _type	    = FLET_IDENTIFIER;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:818:3: ( '$' IDENTIFIER )
-    // ../../../../../../src/parser/smt1/Smt1.g:818:5: '$' IDENTIFIER
+    // ../../../../src/parser/smt1/Smt1.g:819:3: ( '$' IDENTIFIER )
+    // ../../../../src/parser/smt1/Smt1.g:819:5: '$' IDENTIFIER
     {
         MATCHC('$');
         if  (HASEXCEPTION())
@@ -6587,7 +6587,7 @@ void mFLET_IDENTIFIER(pSmt1Lexer ctx)
         }
 
 
-        /* 818:5: '$' IDENTIFIER */
+        /* 819:5: '$' IDENTIFIER */
         mIDENTIFIER(ctx );
         if  (HASEXCEPTION())
         {
@@ -6607,7 +6607,7 @@ void mFLET_IDENTIFIER(pSmt1Lexer ctx)
 }
 // $ANTLR end FLET_IDENTIFIER
 
-//   Comes from: 837:3: ( ':pat' ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )* '{' )
+//   Comes from: 838:3: ( ':pat' ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )* '{' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start PATTERN_ANNOTATION_BEGIN
@@ -6627,8 +6627,8 @@ void mPATTERN_ANNOTATION_BEGIN(pSmt1Lexer ctx)
     _type	    = PATTERN_ANNOTATION_BEGIN;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:837:3: ( ':pat' ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )* '{' )
-    // ../../../../../../src/parser/smt1/Smt1.g:837:5: ':pat' ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )* '{'
+    // ../../../../src/parser/smt1/Smt1.g:838:3: ( ':pat' ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )* '{' )
+    // ../../../../src/parser/smt1/Smt1.g:838:5: ':pat' ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )* '{'
     {
         MATCHS(lit_1);
         if  (HASEXCEPTION())
@@ -6639,7 +6639,7 @@ void mPATTERN_ANNOTATION_BEGIN(pSmt1Lexer ctx)
 
 
 
-        // ../../../../../../src/parser/smt1/Smt1.g:837:12: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )*
+        // ../../../../src/parser/smt1/Smt1.g:838:12: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )*
 
         for (;;)
         {
@@ -6661,7 +6661,7 @@ void mPATTERN_ANNOTATION_BEGIN(pSmt1Lexer ctx)
             switch (alt5)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:
+        	    // ../../../../src/parser/smt1/Smt1.g:
         	    {
         	        if ( ((LA(1) >= '\t') && (LA(1) <= '\n')) || ((LA(1) >= '\f') && (LA(1) <= '\r')) || LA(1) == ' ' )
         	        {
@@ -6707,7 +6707,7 @@ void mPATTERN_ANNOTATION_BEGIN(pSmt1Lexer ctx)
 }
 // $ANTLR end PATTERN_ANNOTATION_BEGIN
 
-//   Comes from: 841:3: ( '{' ( '\\\\{' | '\\\\}' |~ ( '{' | '}' ) )* '}' )
+//   Comes from: 842:3: ( '{' ( '\\\\{' | '\\\\}' |~ ( '{' | '}' ) )* '}' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start USER_VALUE
@@ -6727,8 +6727,8 @@ void mUSER_VALUE(pSmt1Lexer ctx)
     _type	    = USER_VALUE;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:841:3: ( '{' ( '\\\\{' | '\\\\}' |~ ( '{' | '}' ) )* '}' )
-    // ../../../../../../src/parser/smt1/Smt1.g:841:5: '{' ( '\\\\{' | '\\\\}' |~ ( '{' | '}' ) )* '}'
+    // ../../../../src/parser/smt1/Smt1.g:842:3: ( '{' ( '\\\\{' | '\\\\}' |~ ( '{' | '}' ) )* '}' )
+    // ../../../../src/parser/smt1/Smt1.g:842:5: '{' ( '\\\\{' | '\\\\}' |~ ( '{' | '}' ) )* '}'
     {
         MATCHC('{');
         if  (HASEXCEPTION())
@@ -6737,7 +6737,7 @@ void mUSER_VALUE(pSmt1Lexer ctx)
         }
 
 
-        // ../../../../../../src/parser/smt1/Smt1.g:841:9: ( '\\\\{' | '\\\\}' |~ ( '{' | '}' ) )*
+        // ../../../../src/parser/smt1/Smt1.g:842:9: ( '\\\\{' | '\\\\}' |~ ( '{' | '}' ) )*
 
         for (;;)
         {
@@ -6790,7 +6790,7 @@ void mUSER_VALUE(pSmt1Lexer ctx)
             switch (alt6)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:841:10: '\\\\{'
+        	    // ../../../../src/parser/smt1/Smt1.g:842:10: '\\\\{'
         	    {
         	        MATCHS(lit_72);
         	        if  (HASEXCEPTION())
@@ -6804,7 +6804,7 @@ void mUSER_VALUE(pSmt1Lexer ctx)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:841:18: '\\\\}'
+        	    // ../../../../src/parser/smt1/Smt1.g:842:18: '\\\\}'
         	    {
         	        MATCHS(lit_73);
         	        if  (HASEXCEPTION())
@@ -6818,7 +6818,7 @@ void mUSER_VALUE(pSmt1Lexer ctx)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:841:26: ~ ( '{' | '}' )
+        	    // ../../../../src/parser/smt1/Smt1.g:842:26: ~ ( '{' | '}' )
         	    {
         	        if ( ((LA(1) >= 0x0000) && (LA(1) <= 'z')) || LA(1) == '|' || ((LA(1) >= '~') && (LA(1) <= 0xFFFF)) )
         	        {
@@ -6864,7 +6864,7 @@ void mUSER_VALUE(pSmt1Lexer ctx)
 }
 // $ANTLR end USER_VALUE
 
-//   Comes from: 851:3: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
+//   Comes from: 852:3: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start WHITESPACE
@@ -6884,10 +6884,10 @@ void mWHITESPACE(pSmt1Lexer ctx)
     _type	    = WHITESPACE;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:851:3: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
-    // ../../../../../../src/parser/smt1/Smt1.g:851:5: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
+    // ../../../../src/parser/smt1/Smt1.g:852:3: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
+    // ../../../../src/parser/smt1/Smt1.g:852:5: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
     {
-        // ../../../../../../src/parser/smt1/Smt1.g:851:5: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
+        // ../../../../src/parser/smt1/Smt1.g:852:5: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
         {
             int cnt7=0;
 
@@ -6911,7 +6911,7 @@ void mWHITESPACE(pSmt1Lexer ctx)
         	switch (alt7)
         	{
         	    case 1:
-        	        // ../../../../../../src/parser/smt1/Smt1.g:
+        	        // ../../../../src/parser/smt1/Smt1.g:
         	        {
         	            if ( ((LA(1) >= '\t') && (LA(1) <= '\n')) || ((LA(1) >= '\f') && (LA(1) <= '\r')) || LA(1) == ' ' )
         	            {
@@ -6967,7 +6967,7 @@ void mWHITESPACE(pSmt1Lexer ctx)
 }
 // $ANTLR end WHITESPACE
 
-//   Comes from: 859:3: ( ( DIGIT )+ )
+//   Comes from: 860:3: ( ( DIGIT )+ )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start NUMERAL_TOK
@@ -6987,10 +6987,10 @@ void mNUMERAL_TOK(pSmt1Lexer ctx)
     _type	    = NUMERAL_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:859:3: ( ( DIGIT )+ )
-    // ../../../../../../src/parser/smt1/Smt1.g:859:5: ( DIGIT )+
+    // ../../../../src/parser/smt1/Smt1.g:860:3: ( ( DIGIT )+ )
+    // ../../../../src/parser/smt1/Smt1.g:860:5: ( DIGIT )+
     {
-        // ../../../../../../src/parser/smt1/Smt1.g:859:5: ( DIGIT )+
+        // ../../../../src/parser/smt1/Smt1.g:860:5: ( DIGIT )+
         {
             int cnt8=0;
 
@@ -7019,7 +7019,7 @@ void mNUMERAL_TOK(pSmt1Lexer ctx)
         	switch (alt8)
         	{
         	    case 1:
-        	        // ../../../../../../src/parser/smt1/Smt1.g:
+        	        // ../../../../src/parser/smt1/Smt1.g:
         	        {
         	            if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
         	            {
@@ -7070,7 +7070,7 @@ void mNUMERAL_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end NUMERAL_TOK
 
-//   Comes from: 860:3: ( ( DIGIT )+ '.' ( DIGIT )+ )
+//   Comes from: 861:3: ( ( DIGIT )+ '.' ( DIGIT )+ )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start RATIONAL_TOK
@@ -7090,10 +7090,10 @@ void mRATIONAL_TOK(pSmt1Lexer ctx)
     _type	    = RATIONAL_TOK;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:860:3: ( ( DIGIT )+ '.' ( DIGIT )+ )
-    // ../../../../../../src/parser/smt1/Smt1.g:860:5: ( DIGIT )+ '.' ( DIGIT )+
+    // ../../../../src/parser/smt1/Smt1.g:861:3: ( ( DIGIT )+ '.' ( DIGIT )+ )
+    // ../../../../src/parser/smt1/Smt1.g:861:5: ( DIGIT )+ '.' ( DIGIT )+
     {
-        // ../../../../../../src/parser/smt1/Smt1.g:860:5: ( DIGIT )+
+        // ../../../../src/parser/smt1/Smt1.g:861:5: ( DIGIT )+
         {
             int cnt9=0;
 
@@ -7122,7 +7122,7 @@ void mRATIONAL_TOK(pSmt1Lexer ctx)
         	switch (alt9)
         	{
         	    case 1:
-        	        // ../../../../../../src/parser/smt1/Smt1.g:
+        	        // ../../../../src/parser/smt1/Smt1.g:
         	        {
         	            if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
         	            {
@@ -7169,7 +7169,7 @@ void mRATIONAL_TOK(pSmt1Lexer ctx)
         }
 
 
-        // ../../../../../../src/parser/smt1/Smt1.g:860:16: ( DIGIT )+
+        // ../../../../src/parser/smt1/Smt1.g:861:16: ( DIGIT )+
         {
             int cnt10=0;
 
@@ -7198,7 +7198,7 @@ void mRATIONAL_TOK(pSmt1Lexer ctx)
         	switch (alt10)
         	{
         	    case 1:
-        	        // ../../../../../../src/parser/smt1/Smt1.g:
+        	        // ../../../../src/parser/smt1/Smt1.g:
         	        {
         	            if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
         	            {
@@ -7249,7 +7249,7 @@ void mRATIONAL_TOK(pSmt1Lexer ctx)
 }
 // $ANTLR end RATIONAL_TOK
 
-//   Comes from: 872:3: ( '\"' ( ESCAPE |~ ( '\"' | '\\\\' ) )* '\"' )
+//   Comes from: 873:3: ( '\"' ( ESCAPE |~ ( '\"' | '\\\\' ) )* '\"' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STRING_LITERAL
@@ -7269,8 +7269,8 @@ void mSTRING_LITERAL(pSmt1Lexer ctx)
     _type	    = STRING_LITERAL;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:872:3: ( '\"' ( ESCAPE |~ ( '\"' | '\\\\' ) )* '\"' )
-    // ../../../../../../src/parser/smt1/Smt1.g:872:6: '\"' ( ESCAPE |~ ( '\"' | '\\\\' ) )* '\"'
+    // ../../../../src/parser/smt1/Smt1.g:873:3: ( '\"' ( ESCAPE |~ ( '\"' | '\\\\' ) )* '\"' )
+    // ../../../../src/parser/smt1/Smt1.g:873:6: '\"' ( ESCAPE |~ ( '\"' | '\\\\' ) )* '\"'
     {
         MATCHC('"');
         if  (HASEXCEPTION())
@@ -7279,7 +7279,7 @@ void mSTRING_LITERAL(pSmt1Lexer ctx)
         }
 
 
-        // ../../../../../../src/parser/smt1/Smt1.g:872:10: ( ESCAPE |~ ( '\"' | '\\\\' ) )*
+        // ../../../../src/parser/smt1/Smt1.g:873:10: ( ESCAPE |~ ( '\"' | '\\\\' ) )*
 
         for (;;)
         {
@@ -7301,9 +7301,9 @@ void mSTRING_LITERAL(pSmt1Lexer ctx)
             switch (alt11)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:872:11: ESCAPE
+        	    // ../../../../src/parser/smt1/Smt1.g:873:11: ESCAPE
         	    {
-        	        /* 872:11: ESCAPE */
+        	        /* 873:11: ESCAPE */
         	        mESCAPE(ctx );
         	        if  (HASEXCEPTION())
         	        {
@@ -7315,7 +7315,7 @@ void mSTRING_LITERAL(pSmt1Lexer ctx)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:872:20: ~ ( '\"' | '\\\\' )
+        	    // ../../../../src/parser/smt1/Smt1.g:873:20: ~ ( '\"' | '\\\\' )
         	    {
         	        if ( ((LA(1) >= 0x0000) && (LA(1) <= '!')) || ((LA(1) >= '#') && (LA(1) <= '[')) || ((LA(1) >= ']') && (LA(1) <= 0xFFFF)) )
         	        {
@@ -7361,7 +7361,7 @@ void mSTRING_LITERAL(pSmt1Lexer ctx)
 }
 // $ANTLR end STRING_LITERAL
 
-//   Comes from: 878:3: ( ';' (~ ( '\\n' | '\\r' ) )* )
+//   Comes from: 879:3: ( ';' (~ ( '\\n' | '\\r' ) )* )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start COMMENT
@@ -7381,8 +7381,8 @@ void mCOMMENT(pSmt1Lexer ctx)
     _type	    = COMMENT;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:878:3: ( ';' (~ ( '\\n' | '\\r' ) )* )
-    // ../../../../../../src/parser/smt1/Smt1.g:878:5: ';' (~ ( '\\n' | '\\r' ) )*
+    // ../../../../src/parser/smt1/Smt1.g:879:3: ( ';' (~ ( '\\n' | '\\r' ) )* )
+    // ../../../../src/parser/smt1/Smt1.g:879:5: ';' (~ ( '\\n' | '\\r' ) )*
     {
         MATCHC(';');
         if  (HASEXCEPTION())
@@ -7391,7 +7391,7 @@ void mCOMMENT(pSmt1Lexer ctx)
         }
 
 
-        // ../../../../../../src/parser/smt1/Smt1.g:878:9: (~ ( '\\n' | '\\r' ) )*
+        // ../../../../src/parser/smt1/Smt1.g:879:9: (~ ( '\\n' | '\\r' ) )*
 
         for (;;)
         {
@@ -7409,7 +7409,7 @@ void mCOMMENT(pSmt1Lexer ctx)
             switch (alt12)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:
+        	    // ../../../../src/parser/smt1/Smt1.g:
         	    {
         	        if ( ((LA(1) >= 0x0000) && (LA(1) <= '\t')) || ((LA(1) >= 0x000B) && (LA(1) <= '\f')) || ((LA(1) >= 0x000E) && (LA(1) <= 0xFFFF)) )
         	        {
@@ -7453,7 +7453,7 @@ void mCOMMENT(pSmt1Lexer ctx)
 }
 // $ANTLR end COMMENT
 
-//   Comes from: 889:3: ( 'a' .. 'z' | 'A' .. 'Z' )
+//   Comes from: 890:3: ( 'a' .. 'z' | 'A' .. 'Z' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start ALPHA
@@ -7471,8 +7471,8 @@ void mALPHA(pSmt1Lexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:889:3: ( 'a' .. 'z' | 'A' .. 'Z' )
-    // ../../../../../../src/parser/smt1/Smt1.g:
+    // ../../../../src/parser/smt1/Smt1.g:890:3: ( 'a' .. 'z' | 'A' .. 'Z' )
+    // ../../../../src/parser/smt1/Smt1.g:
     {
         if ( ((LA(1) >= 'A') && (LA(1) <= 'Z')) || ((LA(1) >= 'a') && (LA(1) <= 'z')) )
         {
@@ -7500,7 +7500,7 @@ void mALPHA(pSmt1Lexer ctx)
 }
 // $ANTLR end ALPHA
 
-//   Comes from: 895:16: ( '0' .. '9' )
+//   Comes from: 896:16: ( '0' .. '9' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DIGIT
@@ -7518,8 +7518,8 @@ void mDIGIT(pSmt1Lexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:895:16: ( '0' .. '9' )
-    // ../../../../../../src/parser/smt1/Smt1.g:
+    // ../../../../src/parser/smt1/Smt1.g:896:16: ( '0' .. '9' )
+    // ../../../../src/parser/smt1/Smt1.g:
     {
         if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
         {
@@ -7547,7 +7547,7 @@ void mDIGIT(pSmt1Lexer ctx)
 }
 // $ANTLR end DIGIT
 
-//   Comes from: 902:17: ( '\\\\' ( '\"' | '\\\\' | 'n' | 't' | 'r' ) )
+//   Comes from: 903:17: ( '\\\\' ( '\"' | '\\\\' | 'n' | 't' | 'r' ) )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start ESCAPE
@@ -7565,8 +7565,8 @@ void mESCAPE(pSmt1Lexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/smt1/Smt1.g:902:17: ( '\\\\' ( '\"' | '\\\\' | 'n' | 't' | 'r' ) )
-    // ../../../../../../src/parser/smt1/Smt1.g:902:19: '\\\\' ( '\"' | '\\\\' | 'n' | 't' | 'r' )
+    // ../../../../src/parser/smt1/Smt1.g:903:17: ( '\\\\' ( '\"' | '\\\\' | 'n' | 't' | 'r' ) )
+    // ../../../../src/parser/smt1/Smt1.g:903:19: '\\\\' ( '\"' | '\\\\' | 'n' | 't' | 'r' )
     {
         MATCHC('\\');
         if  (HASEXCEPTION())
@@ -7608,7 +7608,7 @@ static void
 mTokens(pSmt1Lexer ctx)
 {
     {
-        //  ../../../../../../src/parser/smt1/Smt1.g:1:8: ( T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | ASSUMPTION_TOK | BENCHMARK_TOK | EXTRAFUNS_TOK | EXTRAPREDS_TOK | EXTRASORTS_TOK | FALSE_TOK | FLET_TOK | FORMULA_TOK | ITE_TOK | LET_TOK | LOGIC_TOK | LPAREN_TOK | NOTES_TOK | RPAREN_TOK | SAT_TOK | STATUS_TOK | THEORY_TOK | TRUE_TOK | UNKNOWN_TOK | UNSAT_TOK | AMPERSAND_TOK | AND_TOK | AT_TOK | DISTINCT_TOK | DIV_TOK | EQUAL_TOK | EXISTS_TOK | FORALL_TOK | GREATER_THAN_TOK  [...]
+        //  ../../../../src/parser/smt1/Smt1.g:1:8: ( T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | ASSUMPTION_TOK | BENCHMARK_TOK | EXTRAFUNS_TOK | EXTRAPREDS_TOK | EXTRASORTS_TOK | FALSE_TOK | FLET_TOK | FORMULA_TOK | ITE_TOK | LET_TOK | LOGIC_TOK | LPAREN_TOK | NOTES_TOK | RPAREN_TOK | SAT_TOK | STATUS_TOK | THEORY_TOK | TRUE_TOK | UNKNOWN_TOK | UNSAT_TOK | AMPERSAND_TOK | AND_TOK | AT_TOK | DISTINCT_TOK | DIV_TOK | EQUAL_TOK | EXISTS_TOK | FORALL_TOK | GREATER_THAN_TOK | IFF_ [...]
 
         ANTLR3_UINT32 alt13;
 
@@ -7623,7 +7623,7 @@ mTokens(pSmt1Lexer ctx)
         switch (alt13)
         {
     	case 1:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:10: T__100
+    	    // ../../../../src/parser/smt1/Smt1.g:1:10: T__100
     	    {
     	        /* 1:10: T__100 */
     	        mT__100(ctx );
@@ -7637,7 +7637,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 2:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:17: T__101
+    	    // ../../../../src/parser/smt1/Smt1.g:1:17: T__101
     	    {
     	        /* 1:17: T__101 */
     	        mT__101(ctx );
@@ -7651,7 +7651,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 3:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:24: T__102
+    	    // ../../../../src/parser/smt1/Smt1.g:1:24: T__102
     	    {
     	        /* 1:24: T__102 */
     	        mT__102(ctx );
@@ -7665,7 +7665,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 4:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:31: T__103
+    	    // ../../../../src/parser/smt1/Smt1.g:1:31: T__103
     	    {
     	        /* 1:31: T__103 */
     	        mT__103(ctx );
@@ -7679,7 +7679,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 5:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:38: T__104
+    	    // ../../../../src/parser/smt1/Smt1.g:1:38: T__104
     	    {
     	        /* 1:38: T__104 */
     	        mT__104(ctx );
@@ -7693,7 +7693,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 6:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:45: T__105
+    	    // ../../../../src/parser/smt1/Smt1.g:1:45: T__105
     	    {
     	        /* 1:45: T__105 */
     	        mT__105(ctx );
@@ -7707,7 +7707,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 7:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:52: ASSUMPTION_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:52: ASSUMPTION_TOK
     	    {
     	        /* 1:52: ASSUMPTION_TOK */
     	        mASSUMPTION_TOK(ctx );
@@ -7721,7 +7721,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 8:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:67: BENCHMARK_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:67: BENCHMARK_TOK
     	    {
     	        /* 1:67: BENCHMARK_TOK */
     	        mBENCHMARK_TOK(ctx );
@@ -7735,7 +7735,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 9:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:81: EXTRAFUNS_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:81: EXTRAFUNS_TOK
     	    {
     	        /* 1:81: EXTRAFUNS_TOK */
     	        mEXTRAFUNS_TOK(ctx );
@@ -7749,7 +7749,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 10:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:95: EXTRAPREDS_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:95: EXTRAPREDS_TOK
     	    {
     	        /* 1:95: EXTRAPREDS_TOK */
     	        mEXTRAPREDS_TOK(ctx );
@@ -7763,7 +7763,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 11:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:110: EXTRASORTS_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:110: EXTRASORTS_TOK
     	    {
     	        /* 1:110: EXTRASORTS_TOK */
     	        mEXTRASORTS_TOK(ctx );
@@ -7777,7 +7777,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 12:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:125: FALSE_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:125: FALSE_TOK
     	    {
     	        /* 1:125: FALSE_TOK */
     	        mFALSE_TOK(ctx );
@@ -7791,7 +7791,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 13:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:135: FLET_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:135: FLET_TOK
     	    {
     	        /* 1:135: FLET_TOK */
     	        mFLET_TOK(ctx );
@@ -7805,7 +7805,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 14:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:144: FORMULA_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:144: FORMULA_TOK
     	    {
     	        /* 1:144: FORMULA_TOK */
     	        mFORMULA_TOK(ctx );
@@ -7819,7 +7819,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 15:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:156: ITE_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:156: ITE_TOK
     	    {
     	        /* 1:156: ITE_TOK */
     	        mITE_TOK(ctx );
@@ -7833,7 +7833,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 16:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:164: LET_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:164: LET_TOK
     	    {
     	        /* 1:164: LET_TOK */
     	        mLET_TOK(ctx );
@@ -7847,7 +7847,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 17:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:172: LOGIC_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:172: LOGIC_TOK
     	    {
     	        /* 1:172: LOGIC_TOK */
     	        mLOGIC_TOK(ctx );
@@ -7861,7 +7861,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 18:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:182: LPAREN_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:182: LPAREN_TOK
     	    {
     	        /* 1:182: LPAREN_TOK */
     	        mLPAREN_TOK(ctx );
@@ -7875,7 +7875,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 19:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:193: NOTES_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:193: NOTES_TOK
     	    {
     	        /* 1:193: NOTES_TOK */
     	        mNOTES_TOK(ctx );
@@ -7889,7 +7889,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 20:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:203: RPAREN_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:203: RPAREN_TOK
     	    {
     	        /* 1:203: RPAREN_TOK */
     	        mRPAREN_TOK(ctx );
@@ -7903,7 +7903,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 21:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:214: SAT_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:214: SAT_TOK
     	    {
     	        /* 1:214: SAT_TOK */
     	        mSAT_TOK(ctx );
@@ -7917,7 +7917,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 22:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:222: STATUS_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:222: STATUS_TOK
     	    {
     	        /* 1:222: STATUS_TOK */
     	        mSTATUS_TOK(ctx );
@@ -7931,7 +7931,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 23:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:233: THEORY_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:233: THEORY_TOK
     	    {
     	        /* 1:233: THEORY_TOK */
     	        mTHEORY_TOK(ctx );
@@ -7945,7 +7945,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 24:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:244: TRUE_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:244: TRUE_TOK
     	    {
     	        /* 1:244: TRUE_TOK */
     	        mTRUE_TOK(ctx );
@@ -7959,7 +7959,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 25:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:253: UNKNOWN_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:253: UNKNOWN_TOK
     	    {
     	        /* 1:253: UNKNOWN_TOK */
     	        mUNKNOWN_TOK(ctx );
@@ -7973,7 +7973,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 26:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:265: UNSAT_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:265: UNSAT_TOK
     	    {
     	        /* 1:265: UNSAT_TOK */
     	        mUNSAT_TOK(ctx );
@@ -7987,7 +7987,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 27:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:275: AMPERSAND_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:275: AMPERSAND_TOK
     	    {
     	        /* 1:275: AMPERSAND_TOK */
     	        mAMPERSAND_TOK(ctx );
@@ -8001,7 +8001,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 28:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:289: AND_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:289: AND_TOK
     	    {
     	        /* 1:289: AND_TOK */
     	        mAND_TOK(ctx );
@@ -8015,7 +8015,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 29:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:297: AT_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:297: AT_TOK
     	    {
     	        /* 1:297: AT_TOK */
     	        mAT_TOK(ctx );
@@ -8029,7 +8029,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 30:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:304: DISTINCT_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:304: DISTINCT_TOK
     	    {
     	        /* 1:304: DISTINCT_TOK */
     	        mDISTINCT_TOK(ctx );
@@ -8043,7 +8043,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 31:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:317: DIV_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:317: DIV_TOK
     	    {
     	        /* 1:317: DIV_TOK */
     	        mDIV_TOK(ctx );
@@ -8057,7 +8057,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 32:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:325: EQUAL_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:325: EQUAL_TOK
     	    {
     	        /* 1:325: EQUAL_TOK */
     	        mEQUAL_TOK(ctx );
@@ -8071,7 +8071,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 33:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:335: EXISTS_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:335: EXISTS_TOK
     	    {
     	        /* 1:335: EXISTS_TOK */
     	        mEXISTS_TOK(ctx );
@@ -8085,7 +8085,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 34:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:346: FORALL_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:346: FORALL_TOK
     	    {
     	        /* 1:346: FORALL_TOK */
     	        mFORALL_TOK(ctx );
@@ -8099,7 +8099,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 35:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:357: GREATER_THAN_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:357: GREATER_THAN_TOK
     	    {
     	        /* 1:357: GREATER_THAN_TOK */
     	        mGREATER_THAN_TOK(ctx );
@@ -8113,7 +8113,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 36:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:374: IFF_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:374: IFF_TOK
     	    {
     	        /* 1:374: IFF_TOK */
     	        mIFF_TOK(ctx );
@@ -8127,7 +8127,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 37:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:382: IMPLIES_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:382: IMPLIES_TOK
     	    {
     	        /* 1:382: IMPLIES_TOK */
     	        mIMPLIES_TOK(ctx );
@@ -8141,7 +8141,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 38:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:394: LESS_THAN_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:394: LESS_THAN_TOK
     	    {
     	        /* 1:394: LESS_THAN_TOK */
     	        mLESS_THAN_TOK(ctx );
@@ -8155,7 +8155,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 39:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:408: MINUS_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:408: MINUS_TOK
     	    {
     	        /* 1:408: MINUS_TOK */
     	        mMINUS_TOK(ctx );
@@ -8169,7 +8169,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 40:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:418: NOT_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:418: NOT_TOK
     	    {
     	        /* 1:418: NOT_TOK */
     	        mNOT_TOK(ctx );
@@ -8183,7 +8183,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 41:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:426: OR_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:426: OR_TOK
     	    {
     	        /* 1:426: OR_TOK */
     	        mOR_TOK(ctx );
@@ -8197,7 +8197,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 42:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:433: PERCENT_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:433: PERCENT_TOK
     	    {
     	        /* 1:433: PERCENT_TOK */
     	        mPERCENT_TOK(ctx );
@@ -8211,7 +8211,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 43:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:445: PIPE_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:445: PIPE_TOK
     	    {
     	        /* 1:445: PIPE_TOK */
     	        mPIPE_TOK(ctx );
@@ -8225,7 +8225,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 44:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:454: PLUS_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:454: PLUS_TOK
     	    {
     	        /* 1:454: PLUS_TOK */
     	        mPLUS_TOK(ctx );
@@ -8239,7 +8239,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 45:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:463: POUND_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:463: POUND_TOK
     	    {
     	        /* 1:463: POUND_TOK */
     	        mPOUND_TOK(ctx );
@@ -8253,7 +8253,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 46:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:473: SELECT_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:473: SELECT_TOK
     	    {
     	        /* 1:473: SELECT_TOK */
     	        mSELECT_TOK(ctx );
@@ -8267,7 +8267,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 47:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:484: STAR_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:484: STAR_TOK
     	    {
     	        /* 1:484: STAR_TOK */
     	        mSTAR_TOK(ctx );
@@ -8281,7 +8281,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 48:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:493: STORE_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:493: STORE_TOK
     	    {
     	        /* 1:493: STORE_TOK */
     	        mSTORE_TOK(ctx );
@@ -8295,7 +8295,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 49:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:503: TILDE_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:503: TILDE_TOK
     	    {
     	        /* 1:503: TILDE_TOK */
     	        mTILDE_TOK(ctx );
@@ -8309,7 +8309,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 50:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:513: XOR_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:513: XOR_TOK
     	    {
     	        /* 1:513: XOR_TOK */
     	        mXOR_TOK(ctx );
@@ -8323,7 +8323,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 51:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:521: BITVECTOR_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:521: BITVECTOR_TOK
     	    {
     	        /* 1:521: BITVECTOR_TOK */
     	        mBITVECTOR_TOK(ctx );
@@ -8337,7 +8337,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 52:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:535: CONCAT_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:535: CONCAT_TOK
     	    {
     	        /* 1:535: CONCAT_TOK */
     	        mCONCAT_TOK(ctx );
@@ -8351,7 +8351,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 53:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:546: EXTRACT_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:546: EXTRACT_TOK
     	    {
     	        /* 1:546: EXTRACT_TOK */
     	        mEXTRACT_TOK(ctx );
@@ -8365,7 +8365,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 54:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:558: BVAND_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:558: BVAND_TOK
     	    {
     	        /* 1:558: BVAND_TOK */
     	        mBVAND_TOK(ctx );
@@ -8379,7 +8379,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 55:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:568: BVOR_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:568: BVOR_TOK
     	    {
     	        /* 1:568: BVOR_TOK */
     	        mBVOR_TOK(ctx );
@@ -8393,7 +8393,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 56:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:577: BVXOR_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:577: BVXOR_TOK
     	    {
     	        /* 1:577: BVXOR_TOK */
     	        mBVXOR_TOK(ctx );
@@ -8407,7 +8407,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 57:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:587: BVNOT_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:587: BVNOT_TOK
     	    {
     	        /* 1:587: BVNOT_TOK */
     	        mBVNOT_TOK(ctx );
@@ -8421,7 +8421,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 58:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:597: BVNAND_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:597: BVNAND_TOK
     	    {
     	        /* 1:597: BVNAND_TOK */
     	        mBVNAND_TOK(ctx );
@@ -8435,7 +8435,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 59:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:608: BVNOR_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:608: BVNOR_TOK
     	    {
     	        /* 1:608: BVNOR_TOK */
     	        mBVNOR_TOK(ctx );
@@ -8449,7 +8449,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 60:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:618: BVXNOR_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:618: BVXNOR_TOK
     	    {
     	        /* 1:618: BVXNOR_TOK */
     	        mBVXNOR_TOK(ctx );
@@ -8463,7 +8463,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 61:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:629: BVCOMP_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:629: BVCOMP_TOK
     	    {
     	        /* 1:629: BVCOMP_TOK */
     	        mBVCOMP_TOK(ctx );
@@ -8477,7 +8477,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 62:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:640: BVMUL_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:640: BVMUL_TOK
     	    {
     	        /* 1:640: BVMUL_TOK */
     	        mBVMUL_TOK(ctx );
@@ -8491,7 +8491,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 63:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:650: BVADD_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:650: BVADD_TOK
     	    {
     	        /* 1:650: BVADD_TOK */
     	        mBVADD_TOK(ctx );
@@ -8505,7 +8505,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 64:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:660: BVSUB_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:660: BVSUB_TOK
     	    {
     	        /* 1:660: BVSUB_TOK */
     	        mBVSUB_TOK(ctx );
@@ -8519,7 +8519,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 65:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:670: BVNEG_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:670: BVNEG_TOK
     	    {
     	        /* 1:670: BVNEG_TOK */
     	        mBVNEG_TOK(ctx );
@@ -8533,7 +8533,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 66:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:680: BVUDIV_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:680: BVUDIV_TOK
     	    {
     	        /* 1:680: BVUDIV_TOK */
     	        mBVUDIV_TOK(ctx );
@@ -8547,7 +8547,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 67:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:691: BVUREM_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:691: BVUREM_TOK
     	    {
     	        /* 1:691: BVUREM_TOK */
     	        mBVUREM_TOK(ctx );
@@ -8561,7 +8561,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 68:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:702: BVSDIV_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:702: BVSDIV_TOK
     	    {
     	        /* 1:702: BVSDIV_TOK */
     	        mBVSDIV_TOK(ctx );
@@ -8575,7 +8575,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 69:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:713: BVSREM_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:713: BVSREM_TOK
     	    {
     	        /* 1:713: BVSREM_TOK */
     	        mBVSREM_TOK(ctx );
@@ -8589,7 +8589,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 70:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:724: BVSMOD_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:724: BVSMOD_TOK
     	    {
     	        /* 1:724: BVSMOD_TOK */
     	        mBVSMOD_TOK(ctx );
@@ -8603,7 +8603,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 71:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:735: BVSHL_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:735: BVSHL_TOK
     	    {
     	        /* 1:735: BVSHL_TOK */
     	        mBVSHL_TOK(ctx );
@@ -8617,7 +8617,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 72:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:745: BVLSHR_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:745: BVLSHR_TOK
     	    {
     	        /* 1:745: BVLSHR_TOK */
     	        mBVLSHR_TOK(ctx );
@@ -8631,7 +8631,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 73:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:756: BVASHR_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:756: BVASHR_TOK
     	    {
     	        /* 1:756: BVASHR_TOK */
     	        mBVASHR_TOK(ctx );
@@ -8645,7 +8645,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 74:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:767: BVULT_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:767: BVULT_TOK
     	    {
     	        /* 1:767: BVULT_TOK */
     	        mBVULT_TOK(ctx );
@@ -8659,7 +8659,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 75:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:777: BVULE_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:777: BVULE_TOK
     	    {
     	        /* 1:777: BVULE_TOK */
     	        mBVULE_TOK(ctx );
@@ -8673,7 +8673,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 76:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:787: BVUGT_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:787: BVUGT_TOK
     	    {
     	        /* 1:787: BVUGT_TOK */
     	        mBVUGT_TOK(ctx );
@@ -8687,7 +8687,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 77:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:797: BVUGE_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:797: BVUGE_TOK
     	    {
     	        /* 1:797: BVUGE_TOK */
     	        mBVUGE_TOK(ctx );
@@ -8701,7 +8701,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 78:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:807: BVSLT_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:807: BVSLT_TOK
     	    {
     	        /* 1:807: BVSLT_TOK */
     	        mBVSLT_TOK(ctx );
@@ -8715,7 +8715,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 79:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:817: BVSLE_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:817: BVSLE_TOK
     	    {
     	        /* 1:817: BVSLE_TOK */
     	        mBVSLE_TOK(ctx );
@@ -8729,7 +8729,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 80:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:827: BVSGT_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:827: BVSGT_TOK
     	    {
     	        /* 1:827: BVSGT_TOK */
     	        mBVSGT_TOK(ctx );
@@ -8743,7 +8743,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 81:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:837: BVSGE_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:837: BVSGE_TOK
     	    {
     	        /* 1:837: BVSGE_TOK */
     	        mBVSGE_TOK(ctx );
@@ -8757,7 +8757,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 82:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:847: REPEAT_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:847: REPEAT_TOK
     	    {
     	        /* 1:847: REPEAT_TOK */
     	        mREPEAT_TOK(ctx );
@@ -8771,7 +8771,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 83:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:858: ZERO_EXTEND_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:858: ZERO_EXTEND_TOK
     	    {
     	        /* 1:858: ZERO_EXTEND_TOK */
     	        mZERO_EXTEND_TOK(ctx );
@@ -8785,7 +8785,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 84:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:874: SIGN_EXTEND_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:874: SIGN_EXTEND_TOK
     	    {
     	        /* 1:874: SIGN_EXTEND_TOK */
     	        mSIGN_EXTEND_TOK(ctx );
@@ -8799,7 +8799,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 85:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:890: ROTATE_LEFT_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:890: ROTATE_LEFT_TOK
     	    {
     	        /* 1:890: ROTATE_LEFT_TOK */
     	        mROTATE_LEFT_TOK(ctx );
@@ -8813,7 +8813,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 86:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:906: ROTATE_RIGHT_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:906: ROTATE_RIGHT_TOK
     	    {
     	        /* 1:906: ROTATE_RIGHT_TOK */
     	        mROTATE_RIGHT_TOK(ctx );
@@ -8827,7 +8827,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 87:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:923: BITVECTOR_BV_CONST
+    	    // ../../../../src/parser/smt1/Smt1.g:1:923: BITVECTOR_BV_CONST
     	    {
     	        /* 1:923: BITVECTOR_BV_CONST */
     	        mBITVECTOR_BV_CONST(ctx );
@@ -8841,7 +8841,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 88:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:942: BITVECTOR1_BV_CONST
+    	    // ../../../../src/parser/smt1/Smt1.g:1:942: BITVECTOR1_BV_CONST
     	    {
     	        /* 1:942: BITVECTOR1_BV_CONST */
     	        mBITVECTOR1_BV_CONST(ctx );
@@ -8855,7 +8855,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 89:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:962: IDENTIFIER
+    	    // ../../../../src/parser/smt1/Smt1.g:1:962: IDENTIFIER
     	    {
     	        /* 1:962: IDENTIFIER */
     	        mIDENTIFIER(ctx );
@@ -8869,7 +8869,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 90:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:973: ATTR_IDENTIFIER
+    	    // ../../../../src/parser/smt1/Smt1.g:1:973: ATTR_IDENTIFIER
     	    {
     	        /* 1:973: ATTR_IDENTIFIER */
     	        mATTR_IDENTIFIER(ctx );
@@ -8883,7 +8883,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 91:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:989: LET_IDENTIFIER
+    	    // ../../../../src/parser/smt1/Smt1.g:1:989: LET_IDENTIFIER
     	    {
     	        /* 1:989: LET_IDENTIFIER */
     	        mLET_IDENTIFIER(ctx );
@@ -8897,7 +8897,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 92:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:1004: FLET_IDENTIFIER
+    	    // ../../../../src/parser/smt1/Smt1.g:1:1004: FLET_IDENTIFIER
     	    {
     	        /* 1:1004: FLET_IDENTIFIER */
     	        mFLET_IDENTIFIER(ctx );
@@ -8911,7 +8911,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 93:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:1020: PATTERN_ANNOTATION_BEGIN
+    	    // ../../../../src/parser/smt1/Smt1.g:1:1020: PATTERN_ANNOTATION_BEGIN
     	    {
     	        /* 1:1020: PATTERN_ANNOTATION_BEGIN */
     	        mPATTERN_ANNOTATION_BEGIN(ctx );
@@ -8925,7 +8925,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 94:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:1045: USER_VALUE
+    	    // ../../../../src/parser/smt1/Smt1.g:1:1045: USER_VALUE
     	    {
     	        /* 1:1045: USER_VALUE */
     	        mUSER_VALUE(ctx );
@@ -8939,7 +8939,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 95:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:1056: WHITESPACE
+    	    // ../../../../src/parser/smt1/Smt1.g:1:1056: WHITESPACE
     	    {
     	        /* 1:1056: WHITESPACE */
     	        mWHITESPACE(ctx );
@@ -8953,7 +8953,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 96:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:1067: NUMERAL_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:1067: NUMERAL_TOK
     	    {
     	        /* 1:1067: NUMERAL_TOK */
     	        mNUMERAL_TOK(ctx );
@@ -8967,7 +8967,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 97:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:1079: RATIONAL_TOK
+    	    // ../../../../src/parser/smt1/Smt1.g:1:1079: RATIONAL_TOK
     	    {
     	        /* 1:1079: RATIONAL_TOK */
     	        mRATIONAL_TOK(ctx );
@@ -8981,7 +8981,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 98:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:1092: STRING_LITERAL
+    	    // ../../../../src/parser/smt1/Smt1.g:1:1092: STRING_LITERAL
     	    {
     	        /* 1:1092: STRING_LITERAL */
     	        mSTRING_LITERAL(ctx );
@@ -8995,7 +8995,7 @@ mTokens(pSmt1Lexer ctx)
     	    }
     	    break;
     	case 99:
-    	    // ../../../../../../src/parser/smt1/Smt1.g:1:1107: COMMENT
+    	    // ../../../../src/parser/smt1/Smt1.g:1:1107: COMMENT
     	    {
     	        /* 1:1107: COMMENT */
     	        mCOMMENT(ctx );
diff --git a/src/parser/smt1/Smt1Lexer.h b/src/parser/smt1/Smt1Lexer.h
index ecbcdcc..47ce11d 100644
--- a/src/parser/smt1/Smt1Lexer.h
+++ b/src/parser/smt1/Smt1Lexer.h
@@ -1,8 +1,8 @@
 /** \file
  *  This C header file was generated by $ANTLR version 3.4
  *
- *     -  From the grammar source file : ../../../../../../src/parser/smt1/Smt1.g
- *     -                            On : 2017-03-16 01:03:01
+ *     -  From the grammar source file : ../../../../src/parser/smt1/Smt1.g
+ *     -                            On : 2017-07-10 10:01:28
  *     -                 for the lexer : Smt1LexerLexer
  *
  * Editing it, at least manually, is not wise.
diff --git a/src/parser/smt1/Smt1Parser.c b/src/parser/smt1/Smt1Parser.c
index cf43810..84243b3 100644
--- a/src/parser/smt1/Smt1Parser.c
+++ b/src/parser/smt1/Smt1Parser.c
@@ -1,8 +1,8 @@
 /** \file
  *  This C source file was generated by $ANTLR version 3.4
  *
- *     -  From the grammar source file : ../../../../../../src/parser/smt1/Smt1.g
- *     -                            On : 2017-03-16 01:03:01
+ *     -  From the grammar source file : ../../../../src/parser/smt1/Smt1.g
+ *     -                            On : 2017-07-10 10:01:28
  *     -                for the parser : Smt1ParserParser
  *
  * Editing it, at least manually, is not wise.
@@ -46,10 +46,11 @@
  */
 
 /**
- ** This file is part of CVC4.
- ** Copyright (c) 2009-2014  New York University and The University of Iowa
- ** See the file COPYING in the top-level source directory for licensing
- ** information.
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.
  **/
 
 /* End of Header action.
@@ -440,7 +441,7 @@ static	void ANTLR3_CDECL freeScope(void * scope)
 
 /** \brief Name of the grammar file that generated this code
  */
-static const char fileName[] = "../../../../../../src/parser/smt1/Smt1.g";
+static const char fileName[] = "../../../../src/parser/smt1/Smt1.g";
 
 /** \brief Return the name of the grammar file that generated this code.
  */
@@ -1219,7 +1220,7 @@ static  ANTLR3_BITSET_LIST FOLLOW_USER_VALUE_in_userValue3616	= { FOLLOW_USER_VA
  */
 /**
  * $ANTLR start parseExpr
- * ../../../../../../src/parser/smt1/Smt1.g:148:1: parseExpr returns [CVC4::parser::smt1::myExpr expr] : ( annotatedFormula[expr] | EOF );
+ * ../../../../src/parser/smt1/Smt1.g:149:1: parseExpr returns [CVC4::parser::smt1::myExpr expr] : ( annotatedFormula[expr] | EOF );
  */
 static CVC4::parser::smt1::myExpr
 parseExpr(pSmt1Parser ctx)
@@ -1232,7 +1233,7 @@ parseExpr(pSmt1Parser ctx)
 
     {
         {
-            //  ../../../../../../src/parser/smt1/Smt1.g:149:3: ( annotatedFormula[expr] | EOF )
+            //  ../../../../src/parser/smt1/Smt1.g:150:3: ( annotatedFormula[expr] | EOF )
 
             ANTLR3_UINT32 alt1;
 
@@ -1275,7 +1276,7 @@ parseExpr(pSmt1Parser ctx)
             switch (alt1)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:149:5: annotatedFormula[expr]
+        	    // ../../../../src/parser/smt1/Smt1.g:150:5: annotatedFormula[expr]
         	    {
         	        FOLLOWPUSH(FOLLOW_annotatedFormula_in_parseExpr105);
         	        annotatedFormula(ctx, expr);
@@ -1290,7 +1291,7 @@ parseExpr(pSmt1Parser ctx)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:150:5: EOF
+        	    // ../../../../src/parser/smt1/Smt1.g:151:5: EOF
         	    {
         	         MATCHT(EOF, &FOLLOW_EOF_in_parseExpr112);
         	        if  (HASEXCEPTION())
@@ -1322,7 +1323,7 @@ parseExpr(pSmt1Parser ctx)
 
 /**
  * $ANTLR start parseCommand
- * ../../../../../../src/parser/smt1/Smt1.g:157:1: parseCommand returns [CVC4::Command* cmd_return = NULL] : (b= benchmark[&cmd] | LPAREN_TOK c= IDENTIFIER );
+ * ../../../../src/parser/smt1/Smt1.g:158:1: parseCommand returns [CVC4::Command* cmd_return = NULL] : (b= benchmark[&cmd] | LPAREN_TOK c= IDENTIFIER );
  */
 static CVC4::Command*
 parseCommand(pSmt1Parser ctx)
@@ -1344,7 +1345,7 @@ parseCommand(pSmt1Parser ctx)
 
     {
         {
-            //  ../../../../../../src/parser/smt1/Smt1.g:164:3: (b= benchmark[&cmd] | LPAREN_TOK c= IDENTIFIER )
+            //  ../../../../src/parser/smt1/Smt1.g:165:3: (b= benchmark[&cmd] | LPAREN_TOK c= IDENTIFIER )
 
             ANTLR3_UINT32 alt2;
 
@@ -1402,7 +1403,7 @@ parseCommand(pSmt1Parser ctx)
             switch (alt2)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:164:5: b= benchmark[&cmd]
+        	    // ../../../../src/parser/smt1/Smt1.g:165:5: b= benchmark[&cmd]
         	    {
         	        FOLLOWPUSH(FOLLOW_benchmark_in_parseCommand145);
         	        benchmark(ctx, &cmd);
@@ -1417,7 +1418,7 @@ parseCommand(pSmt1Parser ctx)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:165:5: LPAREN_TOK c= IDENTIFIER
+        	    // ../../../../src/parser/smt1/Smt1.g:166:5: LPAREN_TOK c= IDENTIFIER
         	    {
         	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_parseCommand152);
         	        if  (HASEXCEPTION())
@@ -1477,7 +1478,7 @@ parseCommand(pSmt1Parser ctx)
 
 /**
  * $ANTLR start benchmark
- * ../../../../../../src/parser/smt1/Smt1.g:179:1: benchmark[CVC4::PtrCloser<CVC4::Command>* cmd] : ( LPAREN_TOK BENCHMARK_TOK IDENTIFIER benchAttributes[cmd] RPAREN_TOK | EOF );
+ * ../../../../src/parser/smt1/Smt1.g:180:1: benchmark[CVC4::PtrCloser<CVC4::Command>* cmd] : ( LPAREN_TOK BENCHMARK_TOK IDENTIFIER benchAttributes[cmd] RPAREN_TOK | EOF );
  */
 static void
 benchmark(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
@@ -1487,7 +1488,7 @@ benchmark(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
     {
         {
-            //  ../../../../../../src/parser/smt1/Smt1.g:180:3: ( LPAREN_TOK BENCHMARK_TOK IDENTIFIER benchAttributes[cmd] RPAREN_TOK | EOF )
+            //  ../../../../src/parser/smt1/Smt1.g:181:3: ( LPAREN_TOK BENCHMARK_TOK IDENTIFIER benchAttributes[cmd] RPAREN_TOK | EOF )
 
             ANTLR3_UINT32 alt3;
 
@@ -1521,7 +1522,7 @@ benchmark(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
             switch (alt3)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:180:5: LPAREN_TOK BENCHMARK_TOK IDENTIFIER benchAttributes[cmd] RPAREN_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:181:5: LPAREN_TOK BENCHMARK_TOK IDENTIFIER benchAttributes[cmd] RPAREN_TOK
         	    {
         	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_benchmark179);
         	        if  (HASEXCEPTION())
@@ -1564,7 +1565,7 @@ benchmark(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:181:5: EOF
+        	    // ../../../../src/parser/smt1/Smt1.g:182:5: EOF
         	    {
         	         MATCHT(EOF, &FOLLOW_EOF_in_benchmark194);
         	        if  (HASEXCEPTION())
@@ -1596,7 +1597,7 @@ benchmark(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
 /**
  * $ANTLR start benchAttributes
- * ../../../../../../src/parser/smt1/Smt1.g:189:1: benchAttributes[CVC4::PtrCloser<CVC4::Command>* cmd] : ( benchAttribute[&attribute] )+ ;
+ * ../../../../src/parser/smt1/Smt1.g:190:1: benchAttributes[CVC4::PtrCloser<CVC4::Command>* cmd] : ( benchAttribute[&attribute] )+ ;
  */
 static void
 benchAttributes(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
@@ -1609,10 +1610,10 @@ benchAttributes(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
       CVC4::PtrCloser<CVC4::Command> attribute;
 
     {
-        // ../../../../../../src/parser/smt1/Smt1.g:197:3: ( ( benchAttribute[&attribute] )+ )
-        // ../../../../../../src/parser/smt1/Smt1.g:197:5: ( benchAttribute[&attribute] )+
+        // ../../../../src/parser/smt1/Smt1.g:198:3: ( ( benchAttribute[&attribute] )+ )
+        // ../../../../src/parser/smt1/Smt1.g:198:5: ( benchAttribute[&attribute] )+
         {
-            // ../../../../../../src/parser/smt1/Smt1.g:197:5: ( benchAttribute[&attribute] )+
+            // ../../../../src/parser/smt1/Smt1.g:198:5: ( benchAttribute[&attribute] )+
             {
                 int cnt4=0;
 
@@ -1641,7 +1642,7 @@ benchAttributes(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
             	switch (alt4)
             	{
             	    case 1:
-            	        // ../../../../../../src/parser/smt1/Smt1.g:197:6: benchAttribute[&attribute]
+            	        // ../../../../src/parser/smt1/Smt1.g:198:6: benchAttribute[&attribute]
             	        {
             	            FOLLOWPUSH(FOLLOW_benchAttribute_in_benchAttributes222);
             	            benchAttribute(ctx, &attribute);
@@ -1711,7 +1712,7 @@ benchAttributes(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
 /**
  * $ANTLR start benchAttribute
- * ../../../../../../src/parser/smt1/Smt1.g:207:1: benchAttribute[CVC4::PtrCloser<CVC4::Command>* smt_command] : ( LOGIC_TOK identifier[name,CHECK_NONE,SYM_VARIABLE] | ASSUMPTION_TOK annotatedFormula[expr] | FORMULA_TOK annotatedFormula[expr] | STATUS_TOK status[b_status] | EXTRAFUNS_TOK LPAREN_TOK ( functionDeclaration[&declaration_command] )+ RPAREN_TOK | EXTRAPREDS_TOK LPAREN_TOK ( predicateDeclaration[&declaration_command] )+ RPAREN_TOK | EXTRASORTS_TOK LPAREN_TOK ( sortDeclaration[& [...]
+ * ../../../../src/parser/smt1/Smt1.g:208:1: benchAttribute[CVC4::PtrCloser<CVC4::Command>* smt_command] : ( LOGIC_TOK identifier[name,CHECK_NONE,SYM_VARIABLE] | ASSUMPTION_TOK annotatedFormula[expr] | FORMULA_TOK annotatedFormula[expr] | STATUS_TOK status[b_status] | EXTRAFUNS_TOK LPAREN_TOK ( functionDeclaration[&declaration_command] )+ RPAREN_TOK | EXTRAPREDS_TOK LPAREN_TOK ( predicateDeclaration[&declaration_command] )+ RPAREN_TOK | EXTRASORTS_TOK LPAREN_TOK ( sortDeclaration[&declar [...]
  */
 static void
 benchAttribute(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
@@ -1732,7 +1733,7 @@ benchAttribute(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
 
     {
         {
-            //  ../../../../../../src/parser/smt1/Smt1.g:215:3: ( LOGIC_TOK identifier[name,CHECK_NONE,SYM_VARIABLE] | ASSUMPTION_TOK annotatedFormula[expr] | FORMULA_TOK annotatedFormula[expr] | STATUS_TOK status[b_status] | EXTRAFUNS_TOK LPAREN_TOK ( functionDeclaration[&declaration_command] )+ RPAREN_TOK | EXTRAPREDS_TOK LPAREN_TOK ( predicateDeclaration[&declaration_command] )+ RPAREN_TOK | EXTRASORTS_TOK LPAREN_TOK ( sortDeclaration[&declaration_command] )+ RPAREN_TOK | NOTES_TOK ST [...]
+            //  ../../../../src/parser/smt1/Smt1.g:216:3: ( LOGIC_TOK identifier[name,CHECK_NONE,SYM_VARIABLE] | ASSUMPTION_TOK annotatedFormula[expr] | FORMULA_TOK annotatedFormula[expr] | STATUS_TOK status[b_status] | EXTRAFUNS_TOK LPAREN_TOK ( functionDeclaration[&declaration_command] )+ RPAREN_TOK | EXTRAPREDS_TOK LPAREN_TOK ( predicateDeclaration[&declaration_command] )+ RPAREN_TOK | EXTRASORTS_TOK LPAREN_TOK ( sortDeclaration[&declaration_command] )+ RPAREN_TOK | NOTES_TOK STRING_L [...]
 
             ANTLR3_UINT32 alt8;
 
@@ -1802,7 +1803,7 @@ benchAttribute(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
             switch (alt8)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:215:5: LOGIC_TOK identifier[name,CHECK_NONE,SYM_VARIABLE]
+        	    // ../../../../src/parser/smt1/Smt1.g:216:5: LOGIC_TOK identifier[name,CHECK_NONE,SYM_VARIABLE]
         	    {
         	         MATCHT(LOGIC_TOK, &FOLLOW_LOGIC_TOK_in_benchAttribute259);
         	        if  (HASEXCEPTION())
@@ -1832,7 +1833,7 @@ benchAttribute(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:220:5: ASSUMPTION_TOK annotatedFormula[expr]
+        	    // ../../../../src/parser/smt1/Smt1.g:221:5: ASSUMPTION_TOK annotatedFormula[expr]
         	    {
         	         MATCHT(ASSUMPTION_TOK, &FOLLOW_ASSUMPTION_TOK_in_benchAttribute274);
         	        if  (HASEXCEPTION())
@@ -1859,7 +1860,7 @@ benchAttribute(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:222:5: FORMULA_TOK annotatedFormula[expr]
+        	    // ../../../../src/parser/smt1/Smt1.g:223:5: FORMULA_TOK annotatedFormula[expr]
         	    {
         	         MATCHT(FORMULA_TOK, &FOLLOW_FORMULA_TOK_in_benchAttribute289);
         	        if  (HASEXCEPTION())
@@ -1886,7 +1887,7 @@ benchAttribute(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:224:5: STATUS_TOK status[b_status]
+        	    // ../../../../src/parser/smt1/Smt1.g:225:5: STATUS_TOK status[b_status]
         	    {
         	         MATCHT(STATUS_TOK, &FOLLOW_STATUS_TOK_in_benchAttribute304);
         	        if  (HASEXCEPTION())
@@ -1913,7 +1914,7 @@ benchAttribute(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:226:5: EXTRAFUNS_TOK LPAREN_TOK ( functionDeclaration[&declaration_command] )+ RPAREN_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:227:5: EXTRAFUNS_TOK LPAREN_TOK ( functionDeclaration[&declaration_command] )+ RPAREN_TOK
         	    {
         	         MATCHT(EXTRAFUNS_TOK, &FOLLOW_EXTRAFUNS_TOK_in_benchAttribute319);
         	        if  (HASEXCEPTION())
@@ -1934,7 +1935,7 @@ benchAttribute(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt1/Smt1.g:228:5: ( functionDeclaration[&declaration_command] )+
+        	        // ../../../../src/parser/smt1/Smt1.g:229:5: ( functionDeclaration[&declaration_command] )+
         	        {
         	            int cnt5=0;
 
@@ -1954,7 +1955,7 @@ benchAttribute(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
         	        	switch (alt5)
         	        	{
         	        	    case 1:
-        	        	        // ../../../../../../src/parser/smt1/Smt1.g:228:7: functionDeclaration[&declaration_command]
+        	        	        // ../../../../src/parser/smt1/Smt1.g:229:7: functionDeclaration[&declaration_command]
         	        	        {
         	        	            FOLLOWPUSH(FOLLOW_functionDeclaration_in_benchAttribute335);
         	        	            functionDeclaration(ctx, &declaration_command);
@@ -2009,7 +2010,7 @@ benchAttribute(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:232:5: EXTRAPREDS_TOK LPAREN_TOK ( predicateDeclaration[&declaration_command] )+ RPAREN_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:233:5: EXTRAPREDS_TOK LPAREN_TOK ( predicateDeclaration[&declaration_command] )+ RPAREN_TOK
         	    {
         	         MATCHT(EXTRAPREDS_TOK, &FOLLOW_EXTRAPREDS_TOK_in_benchAttribute367);
         	        if  (HASEXCEPTION())
@@ -2030,7 +2031,7 @@ benchAttribute(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt1/Smt1.g:234:5: ( predicateDeclaration[&declaration_command] )+
+        	        // ../../../../src/parser/smt1/Smt1.g:235:5: ( predicateDeclaration[&declaration_command] )+
         	        {
         	            int cnt6=0;
 
@@ -2050,7 +2051,7 @@ benchAttribute(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
         	        	switch (alt6)
         	        	{
         	        	    case 1:
-        	        	        // ../../../../../../src/parser/smt1/Smt1.g:234:7: predicateDeclaration[&declaration_command]
+        	        	        // ../../../../src/parser/smt1/Smt1.g:235:7: predicateDeclaration[&declaration_command]
         	        	        {
         	        	            FOLLOWPUSH(FOLLOW_predicateDeclaration_in_benchAttribute383);
         	        	            predicateDeclaration(ctx, &declaration_command);
@@ -2105,7 +2106,7 @@ benchAttribute(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
         	    }
         	    break;
         	case 7:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:238:5: EXTRASORTS_TOK LPAREN_TOK ( sortDeclaration[&declaration_command] )+ RPAREN_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:239:5: EXTRASORTS_TOK LPAREN_TOK ( sortDeclaration[&declaration_command] )+ RPAREN_TOK
         	    {
         	         MATCHT(EXTRASORTS_TOK, &FOLLOW_EXTRASORTS_TOK_in_benchAttribute415);
         	        if  (HASEXCEPTION())
@@ -2126,7 +2127,7 @@ benchAttribute(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt1/Smt1.g:240:5: ( sortDeclaration[&declaration_command] )+
+        	        // ../../../../src/parser/smt1/Smt1.g:241:5: ( sortDeclaration[&declaration_command] )+
         	        {
         	            int cnt7=0;
 
@@ -2146,7 +2147,7 @@ benchAttribute(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
         	        	switch (alt7)
         	        	{
         	        	    case 1:
-        	        	        // ../../../../../../src/parser/smt1/Smt1.g:240:7: sortDeclaration[&declaration_command]
+        	        	        // ../../../../src/parser/smt1/Smt1.g:241:7: sortDeclaration[&declaration_command]
         	        	        {
         	        	            FOLLOWPUSH(FOLLOW_sortDeclaration_in_benchAttribute433);
         	        	            sortDeclaration(ctx, &declaration_command);
@@ -2201,7 +2202,7 @@ benchAttribute(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
         	    }
         	    break;
         	case 8:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:244:5: NOTES_TOK STRING_LITERAL
+        	    // ../../../../src/parser/smt1/Smt1.g:245:5: NOTES_TOK STRING_LITERAL
         	    {
         	         MATCHT(NOTES_TOK, &FOLLOW_NOTES_TOK_in_benchAttribute465);
         	        if  (HASEXCEPTION())
@@ -2226,7 +2227,7 @@ benchAttribute(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
         	    }
         	    break;
         	case 9:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:247:5: annotation[smt_command]
+        	    // ../../../../src/parser/smt1/Smt1.g:248:5: annotation[smt_command]
         	    {
         	        FOLLOWPUSH(FOLLOW_annotation_in_benchAttribute479);
         	        annotation(ctx, smt_command);
@@ -2261,7 +2262,7 @@ benchAttribute(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
 
 /**
  * $ANTLR start annotatedFormula
- * ../../../../../../src/parser/smt1/Smt1.g:254:1: annotatedFormula[CVC4::Expr& expr] : ( LPAREN_TOK builtinOp[kind] annotatedFormulas[args,expr] ( termAnnotation[expr] )* RPAREN_TOK | LPAREN_TOK ( FORALL_TOK | EXISTS_TOK ) ( LPAREN_TOK let_identifier[name,CHECK_NONE] t= sortSymbol RPAREN_TOK )+ annotatedFormula[expr] ( termAnnotation[expr] )* RPAREN_TOK | LPAREN_TOK parameterizedOperator[op] annotatedFormulas[args,expr] ( termAnnotation[expr] )* RPAREN_TOK | LPAREN_TOK ITE_TOK annotated [...]
+ * ../../../../src/parser/smt1/Smt1.g:255:1: annotatedFormula[CVC4::Expr& expr] : ( LPAREN_TOK builtinOp[kind] annotatedFormulas[args,expr] ( termAnnotation[expr] )* RPAREN_TOK | LPAREN_TOK ( FORALL_TOK | EXISTS_TOK ) ( LPAREN_TOK let_identifier[name,CHECK_NONE] t= sortSymbol RPAREN_TOK )+ annotatedFormula[expr] ( termAnnotation[expr] )* RPAREN_TOK | LPAREN_TOK parameterizedOperator[op] annotatedFormulas[args,expr] ( termAnnotation[expr] )* RPAREN_TOK | LPAREN_TOK ITE_TOK annotatedFormul [...]
  */
 static void
 annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
@@ -2292,7 +2293,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
 
     {
         {
-            //  ../../../../../../src/parser/smt1/Smt1.g:263:3: ( LPAREN_TOK builtinOp[kind] annotatedFormulas[args,expr] ( termAnnotation[expr] )* RPAREN_TOK | LPAREN_TOK ( FORALL_TOK | EXISTS_TOK ) ( LPAREN_TOK let_identifier[name,CHECK_NONE] t= sortSymbol RPAREN_TOK )+ annotatedFormula[expr] ( termAnnotation[expr] )* RPAREN_TOK | LPAREN_TOK parameterizedOperator[op] annotatedFormulas[args,expr] ( termAnnotation[expr] )* RPAREN_TOK | LPAREN_TOK ITE_TOK annotatedFormula[expr] annotatedF [...]
+            //  ../../../../src/parser/smt1/Smt1.g:264:3: ( LPAREN_TOK builtinOp[kind] annotatedFormulas[args,expr] ( termAnnotation[expr] )* RPAREN_TOK | LPAREN_TOK ( FORALL_TOK | EXISTS_TOK ) ( LPAREN_TOK let_identifier[name,CHECK_NONE] t= sortSymbol RPAREN_TOK )+ annotatedFormula[expr] ( termAnnotation[expr] )* RPAREN_TOK | LPAREN_TOK parameterizedOperator[op] annotatedFormulas[args,expr] ( termAnnotation[expr] )* RPAREN_TOK | LPAREN_TOK ITE_TOK annotatedFormula[expr] annotatedFormula [...]
 
             ANTLR3_UINT32 alt18;
 
@@ -2450,7 +2451,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
             switch (alt18)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:264:5: LPAREN_TOK builtinOp[kind] annotatedFormulas[args,expr] ( termAnnotation[expr] )* RPAREN_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:265:5: LPAREN_TOK builtinOp[kind] annotatedFormulas[args,expr] ( termAnnotation[expr] )* RPAREN_TOK
         	    {
         	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_annotatedFormula507);
         	        if  (HASEXCEPTION())
@@ -2500,7 +2501,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt1/Smt1.g:282:5: ( termAnnotation[expr] )*
+        	        // ../../../../src/parser/smt1/Smt1.g:283:5: ( termAnnotation[expr] )*
 
         	        for (;;)
         	        {
@@ -2520,7 +2521,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	            switch (alt9)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt1/Smt1.g:282:5: termAnnotation[expr]
+        	        	    // ../../../../src/parser/smt1/Smt1.g:283:5: termAnnotation[expr]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_termAnnotation_in_annotatedFormula525);
         	        	        termAnnotation(ctx, expr);
@@ -2553,7 +2554,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:285:5: LPAREN_TOK ( FORALL_TOK | EXISTS_TOK ) ( LPAREN_TOK let_identifier[name,CHECK_NONE] t= sortSymbol RPAREN_TOK )+ annotatedFormula[expr] ( termAnnotation[expr] )* RPAREN_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:286:5: LPAREN_TOK ( FORALL_TOK | EXISTS_TOK ) ( LPAREN_TOK let_identifier[name,CHECK_NONE] t= sortSymbol RPAREN_TOK )+ annotatedFormula[expr] ( termAnnotation[expr] )* RPAREN_TOK
         	    {
         	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_annotatedFormula542);
         	        if  (HASEXCEPTION())
@@ -2562,7 +2563,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt1/Smt1.g:286:5: ( FORALL_TOK | EXISTS_TOK )
+        	        // ../../../../src/parser/smt1/Smt1.g:287:5: ( FORALL_TOK | EXISTS_TOK )
         	        {
         	            int alt10=2;
         	            switch ( LA(1) )
@@ -2593,7 +2594,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	            switch (alt10)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt1/Smt1.g:286:7: FORALL_TOK
+        	        	    // ../../../../src/parser/smt1/Smt1.g:287:7: FORALL_TOK
         	        	    {
         	        	         MATCHT(FORALL_TOK, &FOLLOW_FORALL_TOK_in_annotatedFormula550);
         	        	        if  (HASEXCEPTION())
@@ -2610,7 +2611,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/smt1/Smt1.g:286:45: EXISTS_TOK
+        	        	    // ../../../../src/parser/smt1/Smt1.g:287:45: EXISTS_TOK
         	        	    {
         	        	         MATCHT(EXISTS_TOK, &FOLLOW_EXISTS_TOK_in_annotatedFormula556);
         	        	        if  (HASEXCEPTION())
@@ -2635,7 +2636,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt1/Smt1.g:288:5: ( LPAREN_TOK let_identifier[name,CHECK_NONE] t= sortSymbol RPAREN_TOK )+
+        	        // ../../../../src/parser/smt1/Smt1.g:289:5: ( LPAREN_TOK let_identifier[name,CHECK_NONE] t= sortSymbol RPAREN_TOK )+
         	        {
         	            int cnt11=0;
 
@@ -2664,7 +2665,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	        	switch (alt11)
         	        	{
         	        	    case 1:
-        	        	        // ../../../../../../src/parser/smt1/Smt1.g:288:7: LPAREN_TOK let_identifier[name,CHECK_NONE] t= sortSymbol RPAREN_TOK
+        	        	        // ../../../../src/parser/smt1/Smt1.g:289:7: LPAREN_TOK let_identifier[name,CHECK_NONE] t= sortSymbol RPAREN_TOK
         	        	        {
         	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_annotatedFormula574);
         	        	            if  (HASEXCEPTION())
@@ -2746,7 +2747,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt1/Smt1.g:296:5: ( termAnnotation[expr] )*
+        	        // ../../../../src/parser/smt1/Smt1.g:297:5: ( termAnnotation[expr] )*
 
         	        for (;;)
         	        {
@@ -2766,7 +2767,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	            switch (alt12)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt1/Smt1.g:296:5: termAnnotation[expr]
+        	        	    // ../../../../src/parser/smt1/Smt1.g:297:5: termAnnotation[expr]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_termAnnotation_in_annotatedFormula617);
         	        	        termAnnotation(ctx, expr);
@@ -2804,7 +2805,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:304:5: LPAREN_TOK parameterizedOperator[op] annotatedFormulas[args,expr] ( termAnnotation[expr] )* RPAREN_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:305:5: LPAREN_TOK parameterizedOperator[op] annotatedFormulas[args,expr] ( termAnnotation[expr] )* RPAREN_TOK
         	    {
         	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_annotatedFormula656);
         	        if  (HASEXCEPTION())
@@ -2838,7 +2839,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt1/Smt1.g:309:5: ( termAnnotation[expr] )*
+        	        // ../../../../src/parser/smt1/Smt1.g:310:5: ( termAnnotation[expr] )*
 
         	        for (;;)
         	        {
@@ -2858,7 +2859,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	            switch (alt13)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt1/Smt1.g:309:5: termAnnotation[expr]
+        	        	    // ../../../../src/parser/smt1/Smt1.g:310:5: termAnnotation[expr]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_termAnnotation_in_annotatedFormula687);
         	        	        termAnnotation(ctx, expr);
@@ -2891,7 +2892,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:312:5: LPAREN_TOK ITE_TOK annotatedFormula[expr] annotatedFormula[expr] annotatedFormula[expr] ( termAnnotation[expr] )* RPAREN_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:313:5: LPAREN_TOK ITE_TOK annotatedFormula[expr] annotatedFormula[expr] annotatedFormula[expr] ( termAnnotation[expr] )* RPAREN_TOK
         	    {
         	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_annotatedFormula704);
         	        if  (HASEXCEPTION())
@@ -2953,7 +2954,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt1/Smt1.g:320:5: ( termAnnotation[expr] )*
+        	        // ../../../../src/parser/smt1/Smt1.g:321:5: ( termAnnotation[expr] )*
 
         	        for (;;)
         	        {
@@ -2973,7 +2974,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	            switch (alt14)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt1/Smt1.g:320:5: termAnnotation[expr]
+        	        	    // ../../../../src/parser/smt1/Smt1.g:321:5: termAnnotation[expr]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_termAnnotation_in_annotatedFormula751);
         	        	        termAnnotation(ctx, expr);
@@ -3006,7 +3007,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:323:5: LPAREN_TOK ( LET_TOK LPAREN_TOK let_identifier[name,CHECK_UNDECLARED] | FLET_TOK LPAREN_TOK flet_identifier[name,CHECK_UNDECLARED] ) annotatedFormula[expr] RPAREN_TOK annotatedFormula[expr] ( termAnnotation[expr] )* RPAREN_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:324:5: LPAREN_TOK ( LET_TOK LPAREN_TOK let_identifier[name,CHECK_UNDECLARED] | FLET_TOK LPAREN_TOK flet_identifier[name,CHECK_UNDECLARED] ) annotatedFormula[expr] RPAREN_TOK annotatedFormula[expr] ( termAnnotation[expr] )* RPAREN_TOK
         	    {
         	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_annotatedFormula768);
         	        if  (HASEXCEPTION())
@@ -3015,7 +3016,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt1/Smt1.g:324:5: ( LET_TOK LPAREN_TOK let_identifier[name,CHECK_UNDECLARED] | FLET_TOK LPAREN_TOK flet_identifier[name,CHECK_UNDECLARED] )
+        	        // ../../../../src/parser/smt1/Smt1.g:325:5: ( LET_TOK LPAREN_TOK let_identifier[name,CHECK_UNDECLARED] | FLET_TOK LPAREN_TOK flet_identifier[name,CHECK_UNDECLARED] )
         	        {
         	            int alt15=2;
         	            switch ( LA(1) )
@@ -3046,7 +3047,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	            switch (alt15)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt1/Smt1.g:324:7: LET_TOK LPAREN_TOK let_identifier[name,CHECK_UNDECLARED]
+        	        	    // ../../../../src/parser/smt1/Smt1.g:325:7: LET_TOK LPAREN_TOK let_identifier[name,CHECK_UNDECLARED]
         	        	    {
         	        	         MATCHT(LET_TOK, &FOLLOW_LET_TOK_in_annotatedFormula776);
         	        	        if  (HASEXCEPTION())
@@ -3075,7 +3076,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/smt1/Smt1.g:325:9: FLET_TOK LPAREN_TOK flet_identifier[name,CHECK_UNDECLARED]
+        	        	    // ../../../../src/parser/smt1/Smt1.g:326:9: FLET_TOK LPAREN_TOK flet_identifier[name,CHECK_UNDECLARED]
         	        	    {
         	        	         MATCHT(FLET_TOK, &FOLLOW_FLET_TOK_in_annotatedFormula791);
         	        	        if  (HASEXCEPTION())
@@ -3140,7 +3141,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt1/Smt1.g:330:5: ( termAnnotation[expr] )*
+        	        // ../../../../src/parser/smt1/Smt1.g:331:5: ( termAnnotation[expr] )*
 
         	        for (;;)
         	        {
@@ -3160,7 +3161,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	            switch (alt16)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt1/Smt1.g:330:5: termAnnotation[expr]
+        	        	    // ../../../../src/parser/smt1/Smt1.g:331:5: termAnnotation[expr]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_termAnnotation_in_annotatedFormula826);
         	        	        termAnnotation(ctx, expr);
@@ -3198,7 +3199,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:334:5: TRUE_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:335:5: TRUE_TOK
         	    {
         	         MATCHT(TRUE_TOK, &FOLLOW_TRUE_TOK_in_annotatedFormula849);
         	        if  (HASEXCEPTION())
@@ -3215,7 +3216,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 7:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:335:5: FALSE_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:336:5: FALSE_TOK
         	    {
         	         MATCHT(FALSE_TOK, &FOLLOW_FALSE_TOK_in_annotatedFormula866);
         	        if  (HASEXCEPTION())
@@ -3232,7 +3233,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 8:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:336:5: NUMERAL_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:337:5: NUMERAL_TOK
         	    {
         	        NUMERAL_TOK2 = (pANTLR3_COMMON_TOKEN) MATCHT(NUMERAL_TOK, &FOLLOW_NUMERAL_TOK_in_annotatedFormula882);
         	        if  (HASEXCEPTION())
@@ -3249,7 +3250,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 9:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:338:5: RATIONAL_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:339:5: RATIONAL_TOK
         	    {
         	        RATIONAL_TOK3 = (pANTLR3_COMMON_TOKEN) MATCHT(RATIONAL_TOK, &FOLLOW_RATIONAL_TOK_in_annotatedFormula894);
         	        if  (HASEXCEPTION())
@@ -3268,7 +3269,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 10:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:342:5: n= BITVECTOR_BV_CONST '[' size= NUMERAL_TOK ']'
+        	    // ../../../../src/parser/smt1/Smt1.g:343:5: n= BITVECTOR_BV_CONST '[' size= NUMERAL_TOK ']'
         	    {
         	        n = (pANTLR3_COMMON_TOKEN) MATCHT(BITVECTOR_BV_CONST, &FOLLOW_BITVECTOR_BV_CONST_in_annotatedFormula910);
         	        if  (HASEXCEPTION())
@@ -3306,7 +3307,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 11:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:344:5: n= BITVECTOR1_BV_CONST
+        	    // ../../../../src/parser/smt1/Smt1.g:345:5: n= BITVECTOR1_BV_CONST
         	    {
         	        n = (pANTLR3_COMMON_TOKEN) MATCHT(BITVECTOR1_BV_CONST, &FOLLOW_BITVECTOR1_BV_CONST_in_annotatedFormula936);
         	        if  (HASEXCEPTION())
@@ -3325,9 +3326,9 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 12:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:352:5: ( identifier[name,CHECK_DECLARED,SYM_VARIABLE] | let_identifier[name,CHECK_DECLARED] | flet_identifier[name,CHECK_DECLARED] )
+        	    // ../../../../src/parser/smt1/Smt1.g:353:5: ( identifier[name,CHECK_DECLARED,SYM_VARIABLE] | let_identifier[name,CHECK_DECLARED] | flet_identifier[name,CHECK_DECLARED] )
         	    {
-        	        // ../../../../../../src/parser/smt1/Smt1.g:352:5: ( identifier[name,CHECK_DECLARED,SYM_VARIABLE] | let_identifier[name,CHECK_DECLARED] | flet_identifier[name,CHECK_DECLARED] )
+        	        // ../../../../src/parser/smt1/Smt1.g:353:5: ( identifier[name,CHECK_DECLARED,SYM_VARIABLE] | let_identifier[name,CHECK_DECLARED] | flet_identifier[name,CHECK_DECLARED] )
         	        {
         	            int alt17=3;
         	            switch ( LA(1) )
@@ -3363,7 +3364,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	            switch (alt17)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt1/Smt1.g:352:7: identifier[name,CHECK_DECLARED,SYM_VARIABLE]
+        	        	    // ../../../../src/parser/smt1/Smt1.g:353:7: identifier[name,CHECK_DECLARED,SYM_VARIABLE]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_identifier_in_annotatedFormula968);
         	        	        identifier(ctx, name, CHECK_DECLARED, SYM_VARIABLE);
@@ -3378,7 +3379,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/smt1/Smt1.g:353:9: let_identifier[name,CHECK_DECLARED]
+        	        	    // ../../../../src/parser/smt1/Smt1.g:354:9: let_identifier[name,CHECK_DECLARED]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_let_identifier_in_annotatedFormula979);
         	        	        let_identifier(ctx, name, CHECK_DECLARED);
@@ -3393,7 +3394,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
         	        	    }
         	        	    break;
         	        	case 3:
-        	        	    // ../../../../../../src/parser/smt1/Smt1.g:354:9: flet_identifier[name,CHECK_DECLARED]
+        	        	    // ../../../../src/parser/smt1/Smt1.g:355:9: flet_identifier[name,CHECK_DECLARED]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_flet_identifier_in_annotatedFormula990);
         	        	        flet_identifier(ctx, name, CHECK_DECLARED);
@@ -3439,7 +3440,7 @@ annotatedFormula(pSmt1Parser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start annotatedFormulas
- * ../../../../../../src/parser/smt1/Smt1.g:366:1: annotatedFormulas[std::vector<CVC4::Expr>& formulas, CVC4::Expr& expr] : ( annotatedFormula[expr] )+ ;
+ * ../../../../src/parser/smt1/Smt1.g:367:1: annotatedFormulas[std::vector<CVC4::Expr>& formulas, CVC4::Expr& expr] : ( annotatedFormula[expr] )+ ;
  */
 static void
 annotatedFormulas(pSmt1Parser ctx, std::vector<CVC4::Expr>& formulas, CVC4::Expr& expr)
@@ -3448,10 +3449,10 @@ annotatedFormulas(pSmt1Parser ctx, std::vector<CVC4::Expr>& formulas, CVC4::Expr
      */
 
     {
-        // ../../../../../../src/parser/smt1/Smt1.g:367:3: ( ( annotatedFormula[expr] )+ )
-        // ../../../../../../src/parser/smt1/Smt1.g:367:5: ( annotatedFormula[expr] )+
+        // ../../../../src/parser/smt1/Smt1.g:368:3: ( ( annotatedFormula[expr] )+ )
+        // ../../../../src/parser/smt1/Smt1.g:368:5: ( annotatedFormula[expr] )+
         {
-            // ../../../../../../src/parser/smt1/Smt1.g:367:5: ( annotatedFormula[expr] )+
+            // ../../../../src/parser/smt1/Smt1.g:368:5: ( annotatedFormula[expr] )+
             {
                 int cnt19=0;
 
@@ -3480,7 +3481,7 @@ annotatedFormulas(pSmt1Parser ctx, std::vector<CVC4::Expr>& formulas, CVC4::Expr
             	switch (alt19)
             	{
             	    case 1:
-            	        // ../../../../../../src/parser/smt1/Smt1.g:367:7: annotatedFormula[expr]
+            	        // ../../../../src/parser/smt1/Smt1.g:368:7: annotatedFormula[expr]
             	        {
             	            FOLLOWPUSH(FOLLOW_annotatedFormula_in_annotatedFormulas1019);
             	            annotatedFormula(ctx, expr);
@@ -3540,7 +3541,7 @@ annotatedFormulas(pSmt1Parser ctx, std::vector<CVC4::Expr>& formulas, CVC4::Expr
 
 /**
  * $ANTLR start builtinOp
- * ../../../../../../src/parser/smt1/Smt1.g:373:1: builtinOp[CVC4::Kind& kind] : ( NOT_TOK | IMPLIES_TOK | AND_TOK | OR_TOK | XOR_TOK | IFF_TOK | EQUAL_TOK | DISTINCT_TOK | GREATER_THAN_TOK | GREATER_THAN_TOK EQUAL_TOK | LESS_THAN_TOK EQUAL_TOK | LESS_THAN_TOK | PLUS_TOK | STAR_TOK | TILDE_TOK | MINUS_TOK | DIV_TOK | CONCAT_TOK | BVAND_TOK | BVOR_TOK | BVXOR_TOK | BVNOT_TOK | BVNAND_TOK | BVNOR_TOK | BVXNOR_TOK | BVCOMP_TOK | BVMUL_TOK | BVADD_TOK | BVSUB_TOK | BVNEG_TOK | BVUDIV_TOK | B [...]
+ * ../../../../src/parser/smt1/Smt1.g:374:1: builtinOp[CVC4::Kind& kind] : ( NOT_TOK | IMPLIES_TOK | AND_TOK | OR_TOK | XOR_TOK | IFF_TOK | EQUAL_TOK | DISTINCT_TOK | GREATER_THAN_TOK | GREATER_THAN_TOK EQUAL_TOK | LESS_THAN_TOK EQUAL_TOK | LESS_THAN_TOK | PLUS_TOK | STAR_TOK | TILDE_TOK | MINUS_TOK | DIV_TOK | CONCAT_TOK | BVAND_TOK | BVOR_TOK | BVXOR_TOK | BVNOT_TOK | BVNAND_TOK | BVNOR_TOK | BVXNOR_TOK | BVCOMP_TOK | BVMUL_TOK | BVADD_TOK | BVSUB_TOK | BVNEG_TOK | BVUDIV_TOK | BVUREM_ [...]
  */
 static void
 builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
@@ -3553,7 +3554,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
 
     {
         {
-            //  ../../../../../../src/parser/smt1/Smt1.g:377:3: ( NOT_TOK | IMPLIES_TOK | AND_TOK | OR_TOK | XOR_TOK | IFF_TOK | EQUAL_TOK | DISTINCT_TOK | GREATER_THAN_TOK | GREATER_THAN_TOK EQUAL_TOK | LESS_THAN_TOK EQUAL_TOK | LESS_THAN_TOK | PLUS_TOK | STAR_TOK | TILDE_TOK | MINUS_TOK | DIV_TOK | CONCAT_TOK | BVAND_TOK | BVOR_TOK | BVXOR_TOK | BVNOT_TOK | BVNAND_TOK | BVNOR_TOK | BVXNOR_TOK | BVCOMP_TOK | BVMUL_TOK | BVADD_TOK | BVSUB_TOK | BVNEG_TOK | BVUDIV_TOK | BVUREM_TOK | BVSDI [...]
+            //  ../../../../src/parser/smt1/Smt1.g:378:3: ( NOT_TOK | IMPLIES_TOK | AND_TOK | OR_TOK | XOR_TOK | IFF_TOK | EQUAL_TOK | DISTINCT_TOK | GREATER_THAN_TOK | GREATER_THAN_TOK EQUAL_TOK | LESS_THAN_TOK EQUAL_TOK | LESS_THAN_TOK | PLUS_TOK | STAR_TOK | TILDE_TOK | MINUS_TOK | DIV_TOK | CONCAT_TOK | BVAND_TOK | BVOR_TOK | BVXOR_TOK | BVNOT_TOK | BVNAND_TOK | BVNOR_TOK | BVXNOR_TOK | BVCOMP_TOK | BVMUL_TOK | BVADD_TOK | BVSUB_TOK | BVNEG_TOK | BVUDIV_TOK | BVUREM_TOK | BVSDIV_TOK  [...]
 
             ANTLR3_UINT32 alt20;
 
@@ -3873,7 +3874,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
             switch (alt20)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:377:5: NOT_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:378:5: NOT_TOK
         	    {
         	         MATCHT(NOT_TOK, &FOLLOW_NOT_TOK_in_builtinOp1046);
         	        if  (HASEXCEPTION())
@@ -3890,7 +3891,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:378:5: IMPLIES_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:379:5: IMPLIES_TOK
         	    {
         	         MATCHT(IMPLIES_TOK, &FOLLOW_IMPLIES_TOK_in_builtinOp1059);
         	        if  (HASEXCEPTION())
@@ -3907,7 +3908,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:379:5: AND_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:380:5: AND_TOK
         	    {
         	         MATCHT(AND_TOK, &FOLLOW_AND_TOK_in_builtinOp1068);
         	        if  (HASEXCEPTION())
@@ -3924,7 +3925,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:380:5: OR_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:381:5: OR_TOK
         	    {
         	         MATCHT(OR_TOK, &FOLLOW_OR_TOK_in_builtinOp1081);
         	        if  (HASEXCEPTION())
@@ -3941,7 +3942,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:381:5: XOR_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:382:5: XOR_TOK
         	    {
         	         MATCHT(XOR_TOK, &FOLLOW_XOR_TOK_in_builtinOp1095);
         	        if  (HASEXCEPTION())
@@ -3958,7 +3959,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:382:5: IFF_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:383:5: IFF_TOK
         	    {
         	         MATCHT(IFF_TOK, &FOLLOW_IFF_TOK_in_builtinOp1108);
         	        if  (HASEXCEPTION())
@@ -3975,7 +3976,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 7:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:383:5: EQUAL_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:384:5: EQUAL_TOK
         	    {
         	         MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_builtinOp1121);
         	        if  (HASEXCEPTION())
@@ -3992,7 +3993,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 8:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:384:5: DISTINCT_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:385:5: DISTINCT_TOK
         	    {
         	         MATCHT(DISTINCT_TOK, &FOLLOW_DISTINCT_TOK_in_builtinOp1132);
         	        if  (HASEXCEPTION())
@@ -4009,7 +4010,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 9:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:386:5: GREATER_THAN_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:387:5: GREATER_THAN_TOK
         	    {
         	         MATCHT(GREATER_THAN_TOK, &FOLLOW_GREATER_THAN_TOK_in_builtinOp1143);
         	        if  (HASEXCEPTION())
@@ -4026,7 +4027,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 10:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:388:5: GREATER_THAN_TOK EQUAL_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:389:5: GREATER_THAN_TOK EQUAL_TOK
         	    {
         	         MATCHT(GREATER_THAN_TOK, &FOLLOW_GREATER_THAN_TOK_in_builtinOp1168);
         	        if  (HASEXCEPTION())
@@ -4050,7 +4051,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 11:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:390:5: LESS_THAN_TOK EQUAL_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:391:5: LESS_THAN_TOK EQUAL_TOK
         	    {
         	         MATCHT(LESS_THAN_TOK, &FOLLOW_LESS_THAN_TOK_in_builtinOp1195);
         	        if  (HASEXCEPTION())
@@ -4074,7 +4075,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 12:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:392:5: LESS_THAN_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:393:5: LESS_THAN_TOK
         	    {
         	         MATCHT(LESS_THAN_TOK, &FOLLOW_LESS_THAN_TOK_in_builtinOp1222);
         	        if  (HASEXCEPTION())
@@ -4091,7 +4092,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 13:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:394:5: PLUS_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:395:5: PLUS_TOK
         	    {
         	         MATCHT(PLUS_TOK, &FOLLOW_PLUS_TOK_in_builtinOp1247);
         	        if  (HASEXCEPTION())
@@ -4108,7 +4109,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 14:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:395:5: STAR_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:396:5: STAR_TOK
         	    {
         	         MATCHT(STAR_TOK, &FOLLOW_STAR_TOK_in_builtinOp1259);
         	        if  (HASEXCEPTION())
@@ -4125,7 +4126,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 15:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:396:5: TILDE_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:397:5: TILDE_TOK
         	    {
         	         MATCHT(TILDE_TOK, &FOLLOW_TILDE_TOK_in_builtinOp1271);
         	        if  (HASEXCEPTION())
@@ -4142,7 +4143,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 16:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:397:5: MINUS_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:398:5: MINUS_TOK
         	    {
         	         MATCHT(MINUS_TOK, &FOLLOW_MINUS_TOK_in_builtinOp1282);
         	        if  (HASEXCEPTION())
@@ -4159,7 +4160,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 17:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:398:5: DIV_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:399:5: DIV_TOK
         	    {
         	         MATCHT(DIV_TOK, &FOLLOW_DIV_TOK_in_builtinOp1293);
         	        if  (HASEXCEPTION())
@@ -4176,7 +4177,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 18:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:400:5: CONCAT_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:401:5: CONCAT_TOK
         	    {
         	         MATCHT(CONCAT_TOK, &FOLLOW_CONCAT_TOK_in_builtinOp1309);
         	        if  (HASEXCEPTION())
@@ -4193,7 +4194,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 19:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:401:5: BVAND_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:402:5: BVAND_TOK
         	    {
         	         MATCHT(BVAND_TOK, &FOLLOW_BVAND_TOK_in_builtinOp1319);
         	        if  (HASEXCEPTION())
@@ -4210,7 +4211,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 20:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:402:5: BVOR_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:403:5: BVOR_TOK
         	    {
         	         MATCHT(BVOR_TOK, &FOLLOW_BVOR_TOK_in_builtinOp1330);
         	        if  (HASEXCEPTION())
@@ -4227,7 +4228,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 21:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:403:5: BVXOR_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:404:5: BVXOR_TOK
         	    {
         	         MATCHT(BVXOR_TOK, &FOLLOW_BVXOR_TOK_in_builtinOp1342);
         	        if  (HASEXCEPTION())
@@ -4244,7 +4245,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 22:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:404:5: BVNOT_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:405:5: BVNOT_TOK
         	    {
         	         MATCHT(BVNOT_TOK, &FOLLOW_BVNOT_TOK_in_builtinOp1353);
         	        if  (HASEXCEPTION())
@@ -4261,7 +4262,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 23:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:405:5: BVNAND_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:406:5: BVNAND_TOK
         	    {
         	         MATCHT(BVNAND_TOK, &FOLLOW_BVNAND_TOK_in_builtinOp1364);
         	        if  (HASEXCEPTION())
@@ -4278,7 +4279,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 24:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:406:5: BVNOR_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:407:5: BVNOR_TOK
         	    {
         	         MATCHT(BVNOR_TOK, &FOLLOW_BVNOR_TOK_in_builtinOp1374);
         	        if  (HASEXCEPTION())
@@ -4295,7 +4296,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 25:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:407:5: BVXNOR_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:408:5: BVXNOR_TOK
         	    {
         	         MATCHT(BVXNOR_TOK, &FOLLOW_BVXNOR_TOK_in_builtinOp1385);
         	        if  (HASEXCEPTION())
@@ -4312,7 +4313,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 26:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:408:5: BVCOMP_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:409:5: BVCOMP_TOK
         	    {
         	         MATCHT(BVCOMP_TOK, &FOLLOW_BVCOMP_TOK_in_builtinOp1395);
         	        if  (HASEXCEPTION())
@@ -4329,7 +4330,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 27:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:409:5: BVMUL_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:410:5: BVMUL_TOK
         	    {
         	         MATCHT(BVMUL_TOK, &FOLLOW_BVMUL_TOK_in_builtinOp1405);
         	        if  (HASEXCEPTION())
@@ -4346,7 +4347,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 28:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:410:5: BVADD_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:411:5: BVADD_TOK
         	    {
         	         MATCHT(BVADD_TOK, &FOLLOW_BVADD_TOK_in_builtinOp1416);
         	        if  (HASEXCEPTION())
@@ -4363,7 +4364,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 29:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:411:5: BVSUB_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:412:5: BVSUB_TOK
         	    {
         	         MATCHT(BVSUB_TOK, &FOLLOW_BVSUB_TOK_in_builtinOp1427);
         	        if  (HASEXCEPTION())
@@ -4380,7 +4381,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 30:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:412:5: BVNEG_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:413:5: BVNEG_TOK
         	    {
         	         MATCHT(BVNEG_TOK, &FOLLOW_BVNEG_TOK_in_builtinOp1438);
         	        if  (HASEXCEPTION())
@@ -4397,7 +4398,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 31:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:413:5: BVUDIV_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:414:5: BVUDIV_TOK
         	    {
         	         MATCHT(BVUDIV_TOK, &FOLLOW_BVUDIV_TOK_in_builtinOp1449);
         	        if  (HASEXCEPTION())
@@ -4414,7 +4415,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 32:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:414:5: BVUREM_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:415:5: BVUREM_TOK
         	    {
         	         MATCHT(BVUREM_TOK, &FOLLOW_BVUREM_TOK_in_builtinOp1459);
         	        if  (HASEXCEPTION())
@@ -4431,7 +4432,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 33:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:415:5: BVSDIV_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:416:5: BVSDIV_TOK
         	    {
         	         MATCHT(BVSDIV_TOK, &FOLLOW_BVSDIV_TOK_in_builtinOp1469);
         	        if  (HASEXCEPTION())
@@ -4448,7 +4449,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 34:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:416:5: BVSREM_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:417:5: BVSREM_TOK
         	    {
         	         MATCHT(BVSREM_TOK, &FOLLOW_BVSREM_TOK_in_builtinOp1479);
         	        if  (HASEXCEPTION())
@@ -4465,7 +4466,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 35:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:417:5: BVSMOD_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:418:5: BVSMOD_TOK
         	    {
         	         MATCHT(BVSMOD_TOK, &FOLLOW_BVSMOD_TOK_in_builtinOp1489);
         	        if  (HASEXCEPTION())
@@ -4482,7 +4483,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 36:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:418:5: BVSHL_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:419:5: BVSHL_TOK
         	    {
         	         MATCHT(BVSHL_TOK, &FOLLOW_BVSHL_TOK_in_builtinOp1499);
         	        if  (HASEXCEPTION())
@@ -4499,7 +4500,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 37:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:419:5: BVLSHR_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:420:5: BVLSHR_TOK
         	    {
         	         MATCHT(BVLSHR_TOK, &FOLLOW_BVLSHR_TOK_in_builtinOp1510);
         	        if  (HASEXCEPTION())
@@ -4516,7 +4517,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 38:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:420:5: BVASHR_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:421:5: BVASHR_TOK
         	    {
         	         MATCHT(BVASHR_TOK, &FOLLOW_BVASHR_TOK_in_builtinOp1520);
         	        if  (HASEXCEPTION())
@@ -4533,7 +4534,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 39:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:421:5: BVULT_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:422:5: BVULT_TOK
         	    {
         	         MATCHT(BVULT_TOK, &FOLLOW_BVULT_TOK_in_builtinOp1530);
         	        if  (HASEXCEPTION())
@@ -4550,7 +4551,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 40:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:422:5: BVULE_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:423:5: BVULE_TOK
         	    {
         	         MATCHT(BVULE_TOK, &FOLLOW_BVULE_TOK_in_builtinOp1541);
         	        if  (HASEXCEPTION())
@@ -4567,7 +4568,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 41:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:423:5: BVUGT_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:424:5: BVUGT_TOK
         	    {
         	         MATCHT(BVUGT_TOK, &FOLLOW_BVUGT_TOK_in_builtinOp1552);
         	        if  (HASEXCEPTION())
@@ -4584,7 +4585,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 42:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:424:5: BVUGE_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:425:5: BVUGE_TOK
         	    {
         	         MATCHT(BVUGE_TOK, &FOLLOW_BVUGE_TOK_in_builtinOp1563);
         	        if  (HASEXCEPTION())
@@ -4601,7 +4602,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 43:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:425:5: BVSLT_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:426:5: BVSLT_TOK
         	    {
         	         MATCHT(BVSLT_TOK, &FOLLOW_BVSLT_TOK_in_builtinOp1574);
         	        if  (HASEXCEPTION())
@@ -4618,7 +4619,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 44:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:426:5: BVSLE_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:427:5: BVSLE_TOK
         	    {
         	         MATCHT(BVSLE_TOK, &FOLLOW_BVSLE_TOK_in_builtinOp1585);
         	        if  (HASEXCEPTION())
@@ -4635,7 +4636,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 45:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:427:5: BVSGT_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:428:5: BVSGT_TOK
         	    {
         	         MATCHT(BVSGT_TOK, &FOLLOW_BVSGT_TOK_in_builtinOp1596);
         	        if  (HASEXCEPTION())
@@ -4652,7 +4653,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 46:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:428:5: BVSGE_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:429:5: BVSGE_TOK
         	    {
         	         MATCHT(BVSGE_TOK, &FOLLOW_BVSGE_TOK_in_builtinOp1607);
         	        if  (HASEXCEPTION())
@@ -4669,7 +4670,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 47:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:430:5: SELECT_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:431:5: SELECT_TOK
         	    {
         	         MATCHT(SELECT_TOK, &FOLLOW_SELECT_TOK_in_builtinOp1621);
         	        if  (HASEXCEPTION())
@@ -4686,7 +4687,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 48:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:431:5: STORE_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:432:5: STORE_TOK
         	    {
         	         MATCHT(STORE_TOK, &FOLLOW_STORE_TOK_in_builtinOp1631);
         	        if  (HASEXCEPTION())
@@ -4723,7 +4724,7 @@ builtinOp(pSmt1Parser ctx, CVC4::Kind& kind)
 
 /**
  * $ANTLR start parameterizedOperator
- * ../../../../../../src/parser/smt1/Smt1.g:438:1: parameterizedOperator[CVC4::Expr& op] : ( functionSymbol[op] | bitVectorOperator[op] );
+ * ../../../../src/parser/smt1/Smt1.g:439:1: parameterizedOperator[CVC4::Expr& op] : ( functionSymbol[op] | bitVectorOperator[op] );
  */
 static void
 parameterizedOperator(pSmt1Parser ctx, CVC4::Expr& op)
@@ -4733,7 +4734,7 @@ parameterizedOperator(pSmt1Parser ctx, CVC4::Expr& op)
 
     {
         {
-            //  ../../../../../../src/parser/smt1/Smt1.g:439:3: ( functionSymbol[op] | bitVectorOperator[op] )
+            //  ../../../../src/parser/smt1/Smt1.g:440:3: ( functionSymbol[op] | bitVectorOperator[op] )
 
             ANTLR3_UINT32 alt21;
 
@@ -4772,7 +4773,7 @@ parameterizedOperator(pSmt1Parser ctx, CVC4::Expr& op)
             switch (alt21)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:439:5: functionSymbol[op]
+        	    // ../../../../src/parser/smt1/Smt1.g:440:5: functionSymbol[op]
         	    {
         	        FOLLOWPUSH(FOLLOW_functionSymbol_in_parameterizedOperator1655);
         	        functionSymbol(ctx, op);
@@ -4787,7 +4788,7 @@ parameterizedOperator(pSmt1Parser ctx, CVC4::Expr& op)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:440:5: bitVectorOperator[op]
+        	    // ../../../../src/parser/smt1/Smt1.g:441:5: bitVectorOperator[op]
         	    {
         	        FOLLOWPUSH(FOLLOW_bitVectorOperator_in_parameterizedOperator1662);
         	        bitVectorOperator(ctx, op);
@@ -4822,7 +4823,7 @@ parameterizedOperator(pSmt1Parser ctx, CVC4::Expr& op)
 
 /**
  * $ANTLR start bitVectorOperator
- * ../../../../../../src/parser/smt1/Smt1.g:446:1: bitVectorOperator[CVC4::Expr& op] : ( EXTRACT_TOK '[' n1= NUMERAL_TOK ':' n2= NUMERAL_TOK ']' | REPEAT_TOK '[' n= NUMERAL_TOK ']' | ZERO_EXTEND_TOK '[' n= NUMERAL_TOK ']' | SIGN_EXTEND_TOK '[' n= NUMERAL_TOK ']' | ROTATE_LEFT_TOK '[' n= NUMERAL_TOK ']' | ROTATE_RIGHT_TOK '[' n= NUMERAL_TOK ']' );
+ * ../../../../src/parser/smt1/Smt1.g:447:1: bitVectorOperator[CVC4::Expr& op] : ( EXTRACT_TOK '[' n1= NUMERAL_TOK ':' n2= NUMERAL_TOK ']' | REPEAT_TOK '[' n= NUMERAL_TOK ']' | ZERO_EXTEND_TOK '[' n= NUMERAL_TOK ']' | SIGN_EXTEND_TOK '[' n= NUMERAL_TOK ']' | ROTATE_LEFT_TOK '[' n= NUMERAL_TOK ']' | ROTATE_RIGHT_TOK '[' n= NUMERAL_TOK ']' );
  */
 static void
 bitVectorOperator(pSmt1Parser ctx, CVC4::Expr& op)
@@ -4840,7 +4841,7 @@ bitVectorOperator(pSmt1Parser ctx, CVC4::Expr& op)
 
     {
         {
-            //  ../../../../../../src/parser/smt1/Smt1.g:447:3: ( EXTRACT_TOK '[' n1= NUMERAL_TOK ':' n2= NUMERAL_TOK ']' | REPEAT_TOK '[' n= NUMERAL_TOK ']' | ZERO_EXTEND_TOK '[' n= NUMERAL_TOK ']' | SIGN_EXTEND_TOK '[' n= NUMERAL_TOK ']' | ROTATE_LEFT_TOK '[' n= NUMERAL_TOK ']' | ROTATE_RIGHT_TOK '[' n= NUMERAL_TOK ']' )
+            //  ../../../../src/parser/smt1/Smt1.g:448:3: ( EXTRACT_TOK '[' n1= NUMERAL_TOK ':' n2= NUMERAL_TOK ']' | REPEAT_TOK '[' n= NUMERAL_TOK ']' | ZERO_EXTEND_TOK '[' n= NUMERAL_TOK ']' | SIGN_EXTEND_TOK '[' n= NUMERAL_TOK ']' | ROTATE_LEFT_TOK '[' n= NUMERAL_TOK ']' | ROTATE_RIGHT_TOK '[' n= NUMERAL_TOK ']' )
 
             ANTLR3_UINT32 alt22;
 
@@ -4894,7 +4895,7 @@ bitVectorOperator(pSmt1Parser ctx, CVC4::Expr& op)
             switch (alt22)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:447:5: EXTRACT_TOK '[' n1= NUMERAL_TOK ':' n2= NUMERAL_TOK ']'
+        	    // ../../../../src/parser/smt1/Smt1.g:448:5: EXTRACT_TOK '[' n1= NUMERAL_TOK ':' n2= NUMERAL_TOK ']'
         	    {
         	         MATCHT(EXTRACT_TOK, &FOLLOW_EXTRACT_TOK_in_bitVectorOperator1679);
         	        if  (HASEXCEPTION())
@@ -4946,7 +4947,7 @@ bitVectorOperator(pSmt1Parser ctx, CVC4::Expr& op)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:449:5: REPEAT_TOK '[' n= NUMERAL_TOK ']'
+        	    // ../../../../src/parser/smt1/Smt1.g:450:5: REPEAT_TOK '[' n= NUMERAL_TOK ']'
         	    {
         	         MATCHT(REPEAT_TOK, &FOLLOW_REPEAT_TOK_in_bitVectorOperator1709);
         	        if  (HASEXCEPTION())
@@ -4984,7 +4985,7 @@ bitVectorOperator(pSmt1Parser ctx, CVC4::Expr& op)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:451:5: ZERO_EXTEND_TOK '[' n= NUMERAL_TOK ']'
+        	    // ../../../../src/parser/smt1/Smt1.g:452:5: ZERO_EXTEND_TOK '[' n= NUMERAL_TOK ']'
         	    {
         	         MATCHT(ZERO_EXTEND_TOK, &FOLLOW_ZERO_EXTEND_TOK_in_bitVectorOperator1731);
         	        if  (HASEXCEPTION())
@@ -5022,7 +5023,7 @@ bitVectorOperator(pSmt1Parser ctx, CVC4::Expr& op)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:453:5: SIGN_EXTEND_TOK '[' n= NUMERAL_TOK ']'
+        	    // ../../../../src/parser/smt1/Smt1.g:454:5: SIGN_EXTEND_TOK '[' n= NUMERAL_TOK ']'
         	    {
         	         MATCHT(SIGN_EXTEND_TOK, &FOLLOW_SIGN_EXTEND_TOK_in_bitVectorOperator1753);
         	        if  (HASEXCEPTION())
@@ -5060,7 +5061,7 @@ bitVectorOperator(pSmt1Parser ctx, CVC4::Expr& op)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:455:5: ROTATE_LEFT_TOK '[' n= NUMERAL_TOK ']'
+        	    // ../../../../src/parser/smt1/Smt1.g:456:5: ROTATE_LEFT_TOK '[' n= NUMERAL_TOK ']'
         	    {
         	         MATCHT(ROTATE_LEFT_TOK, &FOLLOW_ROTATE_LEFT_TOK_in_bitVectorOperator1775);
         	        if  (HASEXCEPTION())
@@ -5098,7 +5099,7 @@ bitVectorOperator(pSmt1Parser ctx, CVC4::Expr& op)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:457:5: ROTATE_RIGHT_TOK '[' n= NUMERAL_TOK ']'
+        	    // ../../../../src/parser/smt1/Smt1.g:458:5: ROTATE_RIGHT_TOK '[' n= NUMERAL_TOK ']'
         	    {
         	         MATCHT(ROTATE_RIGHT_TOK, &FOLLOW_ROTATE_RIGHT_TOK_in_bitVectorOperator1797);
         	        if  (HASEXCEPTION())
@@ -5156,7 +5157,7 @@ bitVectorOperator(pSmt1Parser ctx, CVC4::Expr& op)
 
 /**
  * $ANTLR start predicateName
- * ../../../../../../src/parser/smt1/Smt1.g:465:1: predicateName[std::string& name, CVC4::parser::DeclarationCheck check] : functionName[name,check] ;
+ * ../../../../src/parser/smt1/Smt1.g:466:1: predicateName[std::string& name, CVC4::parser::DeclarationCheck check] : functionName[name,check] ;
  */
 static void
 predicateName(pSmt1Parser ctx, std::string& name, CVC4::parser::DeclarationCheck check)
@@ -5165,8 +5166,8 @@ predicateName(pSmt1Parser ctx, std::string& name, CVC4::parser::DeclarationCheck
      */
 
     {
-        // ../../../../../../src/parser/smt1/Smt1.g:466:3: ( functionName[name,check] )
-        // ../../../../../../src/parser/smt1/Smt1.g:466:6: functionName[name,check]
+        // ../../../../src/parser/smt1/Smt1.g:467:3: ( functionName[name,check] )
+        // ../../../../src/parser/smt1/Smt1.g:467:6: functionName[name,check]
         {
             FOLLOWPUSH(FOLLOW_functionName_in_predicateName1830);
             functionName(ctx, name, check);
@@ -5198,7 +5199,7 @@ predicateName(pSmt1Parser ctx, std::string& name, CVC4::parser::DeclarationCheck
 
 /**
  * $ANTLR start functionName
- * ../../../../../../src/parser/smt1/Smt1.g:473:1: functionName[std::string& name, CVC4::parser::DeclarationCheck check] : identifier[name,check,SYM_VARIABLE] ;
+ * ../../../../src/parser/smt1/Smt1.g:474:1: functionName[std::string& name, CVC4::parser::DeclarationCheck check] : identifier[name,check,SYM_VARIABLE] ;
  */
 static void
 functionName(pSmt1Parser ctx, std::string& name, CVC4::parser::DeclarationCheck check)
@@ -5207,8 +5208,8 @@ functionName(pSmt1Parser ctx, std::string& name, CVC4::parser::DeclarationCheck
      */
 
     {
-        // ../../../../../../src/parser/smt1/Smt1.g:474:3: ( identifier[name,check,SYM_VARIABLE] )
-        // ../../../../../../src/parser/smt1/Smt1.g:474:6: identifier[name,check,SYM_VARIABLE]
+        // ../../../../src/parser/smt1/Smt1.g:475:3: ( identifier[name,check,SYM_VARIABLE] )
+        // ../../../../src/parser/smt1/Smt1.g:475:6: identifier[name,check,SYM_VARIABLE]
         {
             FOLLOWPUSH(FOLLOW_identifier_in_functionName1848);
             identifier(ctx, name, check, SYM_VARIABLE);
@@ -5240,7 +5241,7 @@ functionName(pSmt1Parser ctx, std::string& name, CVC4::parser::DeclarationCheck
 
 /**
  * $ANTLR start functionSymbol
- * ../../../../../../src/parser/smt1/Smt1.g:480:1: functionSymbol[CVC4::Expr& fun] : functionName[name,CHECK_DECLARED] ;
+ * ../../../../src/parser/smt1/Smt1.g:481:1: functionSymbol[CVC4::Expr& fun] : functionName[name,CHECK_DECLARED] ;
  */
 static void
 functionSymbol(pSmt1Parser ctx, CVC4::Expr& fun)
@@ -5252,8 +5253,8 @@ functionSymbol(pSmt1Parser ctx, CVC4::Expr& fun)
      */
 
     {
-        // ../../../../../../src/parser/smt1/Smt1.g:484:3: ( functionName[name,CHECK_DECLARED] )
-        // ../../../../../../src/parser/smt1/Smt1.g:484:5: functionName[name,CHECK_DECLARED]
+        // ../../../../src/parser/smt1/Smt1.g:485:3: ( functionName[name,CHECK_DECLARED] )
+        // ../../../../src/parser/smt1/Smt1.g:485:5: functionName[name,CHECK_DECLARED]
         {
             FOLLOWPUSH(FOLLOW_functionName_in_functionSymbol1870);
             functionName(ctx, name, CHECK_DECLARED);
@@ -5291,7 +5292,7 @@ functionSymbol(pSmt1Parser ctx, CVC4::Expr& fun)
 
 /**
  * $ANTLR start attribute
- * ../../../../../../src/parser/smt1/Smt1.g:492:1: attribute[std::string& s] : ATTR_IDENTIFIER ;
+ * ../../../../src/parser/smt1/Smt1.g:493:1: attribute[std::string& s] : ATTR_IDENTIFIER ;
  */
 static void
 attribute(pSmt1Parser ctx, std::string& s)
@@ -5304,8 +5305,8 @@ attribute(pSmt1Parser ctx, std::string& s)
     ATTR_IDENTIFIER4       = NULL;
 
     {
-        // ../../../../../../src/parser/smt1/Smt1.g:493:3: ( ATTR_IDENTIFIER )
-        // ../../../../../../src/parser/smt1/Smt1.g:493:5: ATTR_IDENTIFIER
+        // ../../../../src/parser/smt1/Smt1.g:494:3: ( ATTR_IDENTIFIER )
+        // ../../../../src/parser/smt1/Smt1.g:494:5: ATTR_IDENTIFIER
         {
             ATTR_IDENTIFIER4 = (pANTLR3_COMMON_TOKEN) MATCHT(ATTR_IDENTIFIER, &FOLLOW_ATTR_IDENTIFIER_in_attribute1893);
             if  (HASEXCEPTION())
@@ -5339,7 +5340,7 @@ attribute(pSmt1Parser ctx, std::string& s)
 
 /**
  * $ANTLR start functionDeclaration
- * ../../../../../../src/parser/smt1/Smt1.g:497:1: functionDeclaration[CVC4::PtrCloser<CVC4::Command>* smt_command] : LPAREN_TOK functionName[name,CHECK_UNDECLARED] t= sortSymbol sortList[sorts] RPAREN_TOK ;
+ * ../../../../src/parser/smt1/Smt1.g:498:1: functionDeclaration[CVC4::PtrCloser<CVC4::Command>* smt_command] : LPAREN_TOK functionName[name,CHECK_UNDECLARED] t= sortSymbol sortList[sorts] RPAREN_TOK ;
  */
 static void
 functionDeclaration(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
@@ -5356,8 +5357,8 @@ functionDeclaration(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command
      */
 
     {
-        // ../../../../../../src/parser/smt1/Smt1.g:502:3: ( LPAREN_TOK functionName[name,CHECK_UNDECLARED] t= sortSymbol sortList[sorts] RPAREN_TOK )
-        // ../../../../../../src/parser/smt1/Smt1.g:502:5: LPAREN_TOK functionName[name,CHECK_UNDECLARED] t= sortSymbol sortList[sorts] RPAREN_TOK
+        // ../../../../src/parser/smt1/Smt1.g:503:3: ( LPAREN_TOK functionName[name,CHECK_UNDECLARED] t= sortSymbol sortList[sorts] RPAREN_TOK )
+        // ../../../../src/parser/smt1/Smt1.g:503:5: LPAREN_TOK functionName[name,CHECK_UNDECLARED] t= sortSymbol sortList[sorts] RPAREN_TOK
         {
              MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_functionDeclaration1918);
             if  (HASEXCEPTION())
@@ -5440,7 +5441,7 @@ functionDeclaration(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command
 
 /**
  * $ANTLR start predicateDeclaration
- * ../../../../../../src/parser/smt1/Smt1.g:519:1: predicateDeclaration[CVC4::PtrCloser<CVC4::Command>* smt_command] : LPAREN_TOK predicateName[name,CHECK_UNDECLARED] sortList[p_sorts] RPAREN_TOK ;
+ * ../../../../src/parser/smt1/Smt1.g:520:1: predicateDeclaration[CVC4::PtrCloser<CVC4::Command>* smt_command] : LPAREN_TOK predicateName[name,CHECK_UNDECLARED] sortList[p_sorts] RPAREN_TOK ;
  */
 static void
 predicateDeclaration(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
@@ -5453,8 +5454,8 @@ predicateDeclaration(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_comman
      */
 
     {
-        // ../../../../../../src/parser/smt1/Smt1.g:524:3: ( LPAREN_TOK predicateName[name,CHECK_UNDECLARED] sortList[p_sorts] RPAREN_TOK )
-        // ../../../../../../src/parser/smt1/Smt1.g:524:5: LPAREN_TOK predicateName[name,CHECK_UNDECLARED] sortList[p_sorts] RPAREN_TOK
+        // ../../../../src/parser/smt1/Smt1.g:525:3: ( LPAREN_TOK predicateName[name,CHECK_UNDECLARED] sortList[p_sorts] RPAREN_TOK )
+        // ../../../../src/parser/smt1/Smt1.g:525:5: LPAREN_TOK predicateName[name,CHECK_UNDECLARED] sortList[p_sorts] RPAREN_TOK
         {
              MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_predicateDeclaration1978);
             if  (HASEXCEPTION())
@@ -5523,7 +5524,7 @@ predicateDeclaration(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_comman
 
 /**
  * $ANTLR start sortDeclaration
- * ../../../../../../src/parser/smt1/Smt1.g:536:1: sortDeclaration[CVC4::PtrCloser<CVC4::Command>* smt_command] : sortName[name,CHECK_UNDECLARED] ;
+ * ../../../../src/parser/smt1/Smt1.g:537:1: sortDeclaration[CVC4::PtrCloser<CVC4::Command>* smt_command] : sortName[name,CHECK_UNDECLARED] ;
  */
 static void
 sortDeclaration(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
@@ -5535,8 +5536,8 @@ sortDeclaration(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
      */
 
     {
-        // ../../../../../../src/parser/smt1/Smt1.g:540:3: ( sortName[name,CHECK_UNDECLARED] )
-        // ../../../../../../src/parser/smt1/Smt1.g:540:5: sortName[name,CHECK_UNDECLARED]
+        // ../../../../src/parser/smt1/Smt1.g:541:3: ( sortName[name,CHECK_UNDECLARED] )
+        // ../../../../src/parser/smt1/Smt1.g:541:5: sortName[name,CHECK_UNDECLARED]
         {
             FOLLOWPUSH(FOLLOW_sortName_in_sortDeclaration2011);
             sortName(ctx, name, CHECK_UNDECLARED);
@@ -5576,7 +5577,7 @@ sortDeclaration(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
 
 /**
  * $ANTLR start sortList
- * ../../../../../../src/parser/smt1/Smt1.g:550:1: sortList[std::vector<CVC4::Type>& sorts] : (t= sortSymbol )* ;
+ * ../../../../src/parser/smt1/Smt1.g:551:1: sortList[std::vector<CVC4::Type>& sorts] : (t= sortSymbol )* ;
  */
 static void
 sortList(pSmt1Parser ctx, std::vector<CVC4::Type>& sorts)
@@ -5589,10 +5590,10 @@ sortList(pSmt1Parser ctx, std::vector<CVC4::Type>& sorts)
      */
 
     {
-        // ../../../../../../src/parser/smt1/Smt1.g:551:3: ( (t= sortSymbol )* )
-        // ../../../../../../src/parser/smt1/Smt1.g:551:5: (t= sortSymbol )*
+        // ../../../../src/parser/smt1/Smt1.g:552:3: ( (t= sortSymbol )* )
+        // ../../../../src/parser/smt1/Smt1.g:552:5: (t= sortSymbol )*
         {
-            // ../../../../../../src/parser/smt1/Smt1.g:551:5: (t= sortSymbol )*
+            // ../../../../src/parser/smt1/Smt1.g:552:5: (t= sortSymbol )*
 
             for (;;)
             {
@@ -5612,7 +5613,7 @@ sortList(pSmt1Parser ctx, std::vector<CVC4::Type>& sorts)
                 switch (alt23)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/smt1/Smt1.g:551:7: t= sortSymbol
+            	    // ../../../../src/parser/smt1/Smt1.g:552:7: t= sortSymbol
             	    {
             	        FOLLOWPUSH(FOLLOW_sortSymbol_in_sortList2040);
             	        t=sortSymbol(ctx);
@@ -5660,7 +5661,7 @@ sortList(pSmt1Parser ctx, std::vector<CVC4::Type>& sorts)
 
 /**
  * $ANTLR start sortName
- * ../../../../../../src/parser/smt1/Smt1.g:558:1: sortName[std::string& name, CVC4::parser::DeclarationCheck check] : identifier[name,check,SYM_SORT] ;
+ * ../../../../src/parser/smt1/Smt1.g:559:1: sortName[std::string& name, CVC4::parser::DeclarationCheck check] : identifier[name,check,SYM_SORT] ;
  */
 static void
 sortName(pSmt1Parser ctx, std::string& name, CVC4::parser::DeclarationCheck check)
@@ -5669,8 +5670,8 @@ sortName(pSmt1Parser ctx, std::string& name, CVC4::parser::DeclarationCheck chec
      */
 
     {
-        // ../../../../../../src/parser/smt1/Smt1.g:559:3: ( identifier[name,check,SYM_SORT] )
-        // ../../../../../../src/parser/smt1/Smt1.g:559:5: identifier[name,check,SYM_SORT]
+        // ../../../../src/parser/smt1/Smt1.g:560:3: ( identifier[name,check,SYM_SORT] )
+        // ../../../../src/parser/smt1/Smt1.g:560:5: identifier[name,check,SYM_SORT]
         {
             FOLLOWPUSH(FOLLOW_identifier_in_sortName2060);
             identifier(ctx, name, check, SYM_SORT);
@@ -5702,7 +5703,7 @@ sortName(pSmt1Parser ctx, std::string& name, CVC4::parser::DeclarationCheck chec
 
 /**
  * $ANTLR start sortSymbol
- * ../../../../../../src/parser/smt1/Smt1.g:562:1: sortSymbol returns [CVC4::parser::smt1::myType t] : ( sortName[name,CHECK_NONE] | BITVECTOR_TOK '[' NUMERAL_TOK ']' | 'Array[' n1= NUMERAL_TOK ':' n2= NUMERAL_TOK ']' );
+ * ../../../../src/parser/smt1/Smt1.g:563:1: sortSymbol returns [CVC4::parser::smt1::myType t] : ( sortName[name,CHECK_NONE] | BITVECTOR_TOK '[' NUMERAL_TOK ']' | 'Array[' n1= NUMERAL_TOK ':' n2= NUMERAL_TOK ']' );
  */
 static CVC4::parser::smt1::myType
 sortSymbol(pSmt1Parser ctx)
@@ -5726,7 +5727,7 @@ sortSymbol(pSmt1Parser ctx)
 
     {
         {
-            //  ../../../../../../src/parser/smt1/Smt1.g:566:3: ( sortName[name,CHECK_NONE] | BITVECTOR_TOK '[' NUMERAL_TOK ']' | 'Array[' n1= NUMERAL_TOK ':' n2= NUMERAL_TOK ']' )
+            //  ../../../../src/parser/smt1/Smt1.g:567:3: ( sortName[name,CHECK_NONE] | BITVECTOR_TOK '[' NUMERAL_TOK ']' | 'Array[' n1= NUMERAL_TOK ':' n2= NUMERAL_TOK ']' )
 
             ANTLR3_UINT32 alt24;
 
@@ -5765,7 +5766,7 @@ sortSymbol(pSmt1Parser ctx)
             switch (alt24)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:566:5: sortName[name,CHECK_NONE]
+        	    // ../../../../src/parser/smt1/Smt1.g:567:5: sortName[name,CHECK_NONE]
         	    {
         	        FOLLOWPUSH(FOLLOW_sortName_in_sortSymbol2083);
         	        sortName(ctx, name, CHECK_NONE);
@@ -5786,7 +5787,7 @@ sortSymbol(pSmt1Parser ctx)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:568:5: BITVECTOR_TOK '[' NUMERAL_TOK ']'
+        	    // ../../../../src/parser/smt1/Smt1.g:569:5: BITVECTOR_TOK '[' NUMERAL_TOK ']'
         	    {
         	         MATCHT(BITVECTOR_TOK, &FOLLOW_BITVECTOR_TOK_in_sortSymbol2095);
         	        if  (HASEXCEPTION())
@@ -5827,7 +5828,7 @@ sortSymbol(pSmt1Parser ctx)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:573:5: 'Array[' n1= NUMERAL_TOK ':' n2= NUMERAL_TOK ']'
+        	    // ../../../../src/parser/smt1/Smt1.g:574:5: 'Array[' n1= NUMERAL_TOK ':' n2= NUMERAL_TOK ']'
         	    {
         	         MATCHT(102, &FOLLOW_102_in_sortSymbol2113);
         	        if  (HASEXCEPTION())
@@ -5896,7 +5897,7 @@ sortSymbol(pSmt1Parser ctx)
 
 /**
  * $ANTLR start status
- * ../../../../../../src/parser/smt1/Smt1.g:582:1: status[ CVC4::BenchmarkStatus& status ] : ( SAT_TOK | UNSAT_TOK | UNKNOWN_TOK );
+ * ../../../../src/parser/smt1/Smt1.g:583:1: status[ CVC4::BenchmarkStatus& status ] : ( SAT_TOK | UNSAT_TOK | UNKNOWN_TOK );
  */
 static void
 status(pSmt1Parser ctx, CVC4::BenchmarkStatus& status)
@@ -5906,7 +5907,7 @@ status(pSmt1Parser ctx, CVC4::BenchmarkStatus& status)
 
     {
         {
-            //  ../../../../../../src/parser/smt1/Smt1.g:583:3: ( SAT_TOK | UNSAT_TOK | UNKNOWN_TOK )
+            //  ../../../../src/parser/smt1/Smt1.g:584:3: ( SAT_TOK | UNSAT_TOK | UNKNOWN_TOK )
 
             ANTLR3_UINT32 alt25;
 
@@ -5945,7 +5946,7 @@ status(pSmt1Parser ctx, CVC4::BenchmarkStatus& status)
             switch (alt25)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:583:5: SAT_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:584:5: SAT_TOK
         	    {
         	         MATCHT(SAT_TOK, &FOLLOW_SAT_TOK_in_status2143);
         	        if  (HASEXCEPTION())
@@ -5962,7 +5963,7 @@ status(pSmt1Parser ctx, CVC4::BenchmarkStatus& status)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:584:5: UNSAT_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:585:5: UNSAT_TOK
         	    {
         	         MATCHT(UNSAT_TOK, &FOLLOW_UNSAT_TOK_in_status2157);
         	        if  (HASEXCEPTION())
@@ -5979,7 +5980,7 @@ status(pSmt1Parser ctx, CVC4::BenchmarkStatus& status)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:585:5: UNKNOWN_TOK
+        	    // ../../../../src/parser/smt1/Smt1.g:586:5: UNKNOWN_TOK
         	    {
         	         MATCHT(UNKNOWN_TOK, &FOLLOW_UNKNOWN_TOK_in_status2169);
         	        if  (HASEXCEPTION())
@@ -6016,7 +6017,7 @@ status(pSmt1Parser ctx, CVC4::BenchmarkStatus& status)
 
 /**
  * $ANTLR start annotation
- * ../../../../../../src/parser/smt1/Smt1.g:592:1: annotation[CVC4::PtrCloser<CVC4::Command>* smt_command] : ( PATTERN_ANNOTATION_BEGIN annotatedFormulas[pats,pat] '}' | attribute[key] ( userValue[value] |) );
+ * ../../../../src/parser/smt1/Smt1.g:593:1: annotation[CVC4::PtrCloser<CVC4::Command>* smt_command] : ( PATTERN_ANNOTATION_BEGIN annotatedFormulas[pats,pat] '}' | attribute[key] ( userValue[value] |) );
  */
 static void
 annotation(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
@@ -6031,7 +6032,7 @@ annotation(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
 
     {
         {
-            //  ../../../../../../src/parser/smt1/Smt1.g:598:3: ( PATTERN_ANNOTATION_BEGIN annotatedFormulas[pats,pat] '}' | attribute[key] ( userValue[value] |) )
+            //  ../../../../src/parser/smt1/Smt1.g:599:3: ( PATTERN_ANNOTATION_BEGIN annotatedFormulas[pats,pat] '}' | attribute[key] ( userValue[value] |) )
 
             ANTLR3_UINT32 alt27;
 
@@ -6065,7 +6066,7 @@ annotation(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
             switch (alt27)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:598:5: PATTERN_ANNOTATION_BEGIN annotatedFormulas[pats,pat] '}'
+        	    // ../../../../src/parser/smt1/Smt1.g:599:5: PATTERN_ANNOTATION_BEGIN annotatedFormulas[pats,pat] '}'
         	    {
         	         MATCHT(PATTERN_ANNOTATION_BEGIN, &FOLLOW_PATTERN_ANNOTATION_BEGIN_in_annotation2194);
         	        if  (HASEXCEPTION())
@@ -6099,7 +6100,7 @@ annotation(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:601:5: attribute[key] ( userValue[value] |)
+        	    // ../../../../src/parser/smt1/Smt1.g:602:5: attribute[key] ( userValue[value] |)
         	    {
         	        FOLLOWPUSH(FOLLOW_attribute_in_annotation2215);
         	        attribute(ctx, key);
@@ -6111,7 +6112,7 @@ annotation(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt1/Smt1.g:602:5: ( userValue[value] |)
+        	        // ../../../../src/parser/smt1/Smt1.g:603:5: ( userValue[value] |)
         	        {
         	            int alt26=2;
         	            switch ( LA(1) )
@@ -6152,7 +6153,7 @@ annotation(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
         	            switch (alt26)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt1/Smt1.g:602:7: userValue[value]
+        	        	    // ../../../../src/parser/smt1/Smt1.g:603:7: userValue[value]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_userValue_in_annotation2224);
         	        	        userValue(ctx, value);
@@ -6173,7 +6174,7 @@ annotation(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/smt1/Smt1.g:605:7: 
+        	        	    // ../../../../src/parser/smt1/Smt1.g:606:7: 
         	        	    {
         	        	        {
         	        	             smt_command->reset(
@@ -6210,7 +6211,7 @@ annotation(pSmt1Parser ctx, CVC4::PtrCloser<CVC4::Command>* smt_command)
 
 /**
  * $ANTLR start termAnnotation
- * ../../../../../../src/parser/smt1/Smt1.g:614:1: termAnnotation[CVC4::Expr& expr] : ( PATTERN_ANNOTATION_BEGIN annotatedFormulas[pats,pat] '}' | ':pat' | attribute[key] ( userValue[value] )? );
+ * ../../../../src/parser/smt1/Smt1.g:615:1: termAnnotation[CVC4::Expr& expr] : ( PATTERN_ANNOTATION_BEGIN annotatedFormulas[pats,pat] '}' | ':pat' | attribute[key] ( userValue[value] )? );
  */
 static void
 termAnnotation(pSmt1Parser ctx, CVC4::Expr& expr)
@@ -6225,7 +6226,7 @@ termAnnotation(pSmt1Parser ctx, CVC4::Expr& expr)
 
     {
         {
-            //  ../../../../../../src/parser/smt1/Smt1.g:620:3: ( PATTERN_ANNOTATION_BEGIN annotatedFormulas[pats,pat] '}' | ':pat' | attribute[key] ( userValue[value] )? )
+            //  ../../../../src/parser/smt1/Smt1.g:621:3: ( PATTERN_ANNOTATION_BEGIN annotatedFormulas[pats,pat] '}' | ':pat' | attribute[key] ( userValue[value] )? )
 
             ANTLR3_UINT32 alt29;
 
@@ -6264,7 +6265,7 @@ termAnnotation(pSmt1Parser ctx, CVC4::Expr& expr)
             switch (alt29)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:620:5: PATTERN_ANNOTATION_BEGIN annotatedFormulas[pats,pat] '}'
+        	    // ../../../../src/parser/smt1/Smt1.g:621:5: PATTERN_ANNOTATION_BEGIN annotatedFormulas[pats,pat] '}'
         	    {
         	         MATCHT(PATTERN_ANNOTATION_BEGIN, &FOLLOW_PATTERN_ANNOTATION_BEGIN_in_termAnnotation2268);
         	        if  (HASEXCEPTION())
@@ -6313,7 +6314,7 @@ termAnnotation(pSmt1Parser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:637:5: ':pat'
+        	    // ../../../../src/parser/smt1/Smt1.g:638:5: ':pat'
         	    {
         	         MATCHT(101, &FOLLOW_101_in_termAnnotation2285);
         	        if  (HASEXCEPTION())
@@ -6330,7 +6331,7 @@ termAnnotation(pSmt1Parser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/smt1/Smt1.g:639:5: attribute[key] ( userValue[value] )?
+        	    // ../../../../src/parser/smt1/Smt1.g:640:5: attribute[key] ( userValue[value] )?
         	    {
         	        FOLLOWPUSH(FOLLOW_attribute_in_termAnnotation2297);
         	        attribute(ctx, key);
@@ -6342,7 +6343,7 @@ termAnnotation(pSmt1Parser ctx, CVC4::Expr& expr)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt1/Smt1.g:639:20: ( userValue[value] )?
+        	        // ../../../../src/parser/smt1/Smt1.g:640:20: ( userValue[value] )?
         	        {
         	            int alt28=2;
         	            switch ( LA(1) )
@@ -6357,7 +6358,7 @@ termAnnotation(pSmt1Parser ctx, CVC4::Expr& expr)
         	            switch (alt28)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt1/Smt1.g:639:20: userValue[value]
+        	        	    // ../../../../src/parser/smt1/Smt1.g:640:20: userValue[value]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_userValue_in_termAnnotation2300);
         	        	        userValue(ctx, value);
@@ -6403,7 +6404,7 @@ termAnnotation(pSmt1Parser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start identifier
- * ../../../../../../src/parser/smt1/Smt1.g:649:1: identifier[std::string& id,\n\t\t CVC4::parser::DeclarationCheck check,\n CVC4::parser::SymbolType type] : IDENTIFIER ;
+ * ../../../../src/parser/smt1/Smt1.g:650:1: identifier[std::string& id,\n\t\t CVC4::parser::DeclarationCheck check,\n CVC4::parser::SymbolType type] : IDENTIFIER ;
  */
 static void
 identifier(pSmt1Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, CVC4::parser::SymbolType type)
@@ -6416,8 +6417,8 @@ identifier(pSmt1Parser ctx, std::string& id, CVC4::parser::DeclarationCheck chec
     IDENTIFIER6       = NULL;
 
     {
-        // ../../../../../../src/parser/smt1/Smt1.g:652:3: ( IDENTIFIER )
-        // ../../../../../../src/parser/smt1/Smt1.g:652:5: IDENTIFIER
+        // ../../../../src/parser/smt1/Smt1.g:653:3: ( IDENTIFIER )
+        // ../../../../src/parser/smt1/Smt1.g:653:5: IDENTIFIER
         {
             IDENTIFIER6 = (pANTLR3_COMMON_TOKEN) MATCHT(IDENTIFIER, &FOLLOW_IDENTIFIER_in_identifier2324);
             if  (HASEXCEPTION())
@@ -6455,7 +6456,7 @@ identifier(pSmt1Parser ctx, std::string& id, CVC4::parser::DeclarationCheck chec
 
 /**
  * $ANTLR start let_identifier
- * ../../../../../../src/parser/smt1/Smt1.g:665:1: let_identifier[std::string& id,\n \t\t CVC4::parser::DeclarationCheck check] : LET_IDENTIFIER ;
+ * ../../../../src/parser/smt1/Smt1.g:666:1: let_identifier[std::string& id,\n \t\t CVC4::parser::DeclarationCheck check] : LET_IDENTIFIER ;
  */
 static void
 let_identifier(pSmt1Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check)
@@ -6468,8 +6469,8 @@ let_identifier(pSmt1Parser ctx, std::string& id, CVC4::parser::DeclarationCheck
     LET_IDENTIFIER7       = NULL;
 
     {
-        // ../../../../../../src/parser/smt1/Smt1.g:667:3: ( LET_IDENTIFIER )
-        // ../../../../../../src/parser/smt1/Smt1.g:667:5: LET_IDENTIFIER
+        // ../../../../src/parser/smt1/Smt1.g:668:3: ( LET_IDENTIFIER )
+        // ../../../../src/parser/smt1/Smt1.g:668:5: LET_IDENTIFIER
         {
             LET_IDENTIFIER7 = (pANTLR3_COMMON_TOKEN) MATCHT(LET_IDENTIFIER, &FOLLOW_LET_IDENTIFIER_in_let_identifier2346);
             if  (HASEXCEPTION())
@@ -6506,7 +6507,7 @@ let_identifier(pSmt1Parser ctx, std::string& id, CVC4::parser::DeclarationCheck
 
 /**
  * $ANTLR start flet_identifier
- * ../../../../../../src/parser/smt1/Smt1.g:679:1: flet_identifier[std::string& id,\n \t\t CVC4::parser::DeclarationCheck check] : FLET_IDENTIFIER ;
+ * ../../../../src/parser/smt1/Smt1.g:680:1: flet_identifier[std::string& id,\n \t\t CVC4::parser::DeclarationCheck check] : FLET_IDENTIFIER ;
  */
 static void
 flet_identifier(pSmt1Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check)
@@ -6519,8 +6520,8 @@ flet_identifier(pSmt1Parser ctx, std::string& id, CVC4::parser::DeclarationCheck
     FLET_IDENTIFIER8       = NULL;
 
     {
-        // ../../../../../../src/parser/smt1/Smt1.g:681:3: ( FLET_IDENTIFIER )
-        // ../../../../../../src/parser/smt1/Smt1.g:681:5: FLET_IDENTIFIER
+        // ../../../../src/parser/smt1/Smt1.g:682:3: ( FLET_IDENTIFIER )
+        // ../../../../src/parser/smt1/Smt1.g:682:5: FLET_IDENTIFIER
         {
             FLET_IDENTIFIER8 = (pANTLR3_COMMON_TOKEN) MATCHT(FLET_IDENTIFIER, &FOLLOW_FLET_IDENTIFIER_in_flet_identifier2368);
             if  (HASEXCEPTION())
@@ -6557,7 +6558,7 @@ flet_identifier(pSmt1Parser ctx, std::string& id, CVC4::parser::DeclarationCheck
 
 /**
  * $ANTLR start userValue
- * ../../../../../../src/parser/smt1/Smt1.g:823:1: userValue[std::string& s] : USER_VALUE ;
+ * ../../../../src/parser/smt1/Smt1.g:824:1: userValue[std::string& s] : USER_VALUE ;
  */
 static void
 userValue(pSmt1Parser ctx, std::string& s)
@@ -6570,8 +6571,8 @@ userValue(pSmt1Parser ctx, std::string& s)
     USER_VALUE9       = NULL;
 
     {
-        // ../../../../../../src/parser/smt1/Smt1.g:824:3: ( USER_VALUE )
-        // ../../../../../../src/parser/smt1/Smt1.g:824:5: USER_VALUE
+        // ../../../../src/parser/smt1/Smt1.g:825:3: ( USER_VALUE )
+        // ../../../../src/parser/smt1/Smt1.g:825:5: USER_VALUE
         {
             USER_VALUE9 = (pANTLR3_COMMON_TOKEN) MATCHT(USER_VALUE, &FOLLOW_USER_VALUE_in_userValue3616);
             if  (HASEXCEPTION())
diff --git a/src/parser/smt1/Smt1Parser.h b/src/parser/smt1/Smt1Parser.h
index d266e93..08c97f0 100644
--- a/src/parser/smt1/Smt1Parser.h
+++ b/src/parser/smt1/Smt1Parser.h
@@ -1,8 +1,8 @@
 /** \file
  *  This C header file was generated by $ANTLR version 3.4
  *
- *     -  From the grammar source file : ../../../../../../src/parser/smt1/Smt1.g
- *     -                            On : 2017-03-16 01:03:01
+ *     -  From the grammar source file : ../../../../src/parser/smt1/Smt1.g
+ *     -                            On : 2017-07-10 10:01:28
  *     -                for the parser : Smt1ParserParser
  *
  * Editing it, at least manually, is not wise.
@@ -211,10 +211,11 @@ typedef struct Smt1Parser_Ctx_struct Smt1Parser, * pSmt1Parser;
 
 
 /**
- ** This file is part of CVC4.
- ** Copyright (c) 2009-2014  New York University and The University of Iowa
- ** See the file COPYING in the top-level source directory for licensing
- ** information.
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.
  **/
 
 
diff --git a/src/parser/smt1/smt1.cpp b/src/parser/smt1/smt1.cpp
index c8d1b77..02f0566 100644
--- a/src/parser/smt1/smt1.cpp
+++ b/src/parser/smt1/smt1.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Christopher L. Conway, Clark Barrett
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/smt1/smt1.h b/src/parser/smt1/smt1.h
index 45de222..7036aad 100644
--- a/src/parser/smt1/smt1.h
+++ b/src/parser/smt1/smt1.h
@@ -2,9 +2,9 @@
 /*! \file smt1.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Christopher L. Conway, Morgan Deters, Tim King
+ **   Christopher L. Conway, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/smt1/smt1_input.cpp b/src/parser/smt1/smt1_input.cpp
index 69801e8..d7cc368 100644
--- a/src/parser/smt1/smt1_input.cpp
+++ b/src/parser/smt1/smt1_input.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Christopher L. Conway, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/smt1/smt1_input.h b/src/parser/smt1/smt1_input.h
index 0e719f5..c5a3d31 100644
--- a/src/parser/smt1/smt1_input.h
+++ b/src/parser/smt1/smt1_input.h
@@ -2,9 +2,9 @@
 /*! \file smt1_input.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Christopher L. Conway, Morgan Deters, Tim King
+ **   Christopher L. Conway, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/smt2/Makefile.in b/src/parser/smt2/Makefile.in
index edaaf27..281f5e6 100644
--- a/src/parser/smt2/Makefile.in
+++ b/src/parser/smt2/Makefile.in
@@ -243,6 +243,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/src/parser/smt2/Smt2.g b/src/parser/smt2/Smt2.g
index 07ace29..8194e19 100644
--- a/src/parser/smt2/Smt2.g
+++ b/src/parser/smt2/Smt2.g
@@ -2,9 +2,9 @@
 /*! \file Smt2.g
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Andrew Reynolds, Christopher L. Conway
+ **   Morgan Deters, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -31,10 +31,11 @@ options {
 
 @header {
 /**
- ** This file is part of CVC4.
- ** Copyright (c) 2009-2014  New York University and The University of Iowa
- ** See the file COPYING in the top-level source directory for licensing
- ** information.
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.
  **/
 }/* @header */
 
@@ -272,7 +273,7 @@ command [CVC4::PtrCloser<CVC4::Command>* cmd]
       }
       PARSER_STATE->setLogic(name);
       if( PARSER_STATE->sygus() ){
-        cmd->reset(new SetBenchmarkLogicCommand("ALL"));
+        cmd->reset(new SetBenchmarkLogicCommand(PARSER_STATE->getLogic().getLogicString()));
       }else{
         cmd->reset(new SetBenchmarkLogicCommand(name));
       }
@@ -730,19 +731,7 @@ sygusCommand [CVC4::PtrCloser<CVC4::Command>* cmd]
       for(size_t i = 0; i < datatypeTypes.size(); ++i) {
         DatatypeType dtt = datatypeTypes[i];
         const Datatype& dt = dtt.getDatatype();
-        name = "eval_" + dt.getName();
-        PARSER_STATE->checkDeclaration(name, CHECK_UNDECLARED, SYM_VARIABLE);
-        std::vector<Type> evalType;
-        evalType.push_back(dtt);
-        if( !terms[0].isNull() ){
-          for(size_t j = 0; j < terms[0].getNumChildren(); ++j) {
-            evalType.push_back(terms[0][j].getType());
-          }
-        }
-        evalType.push_back(sorts[i]);
-        const FunctionType eval_func_type =
-            EXPR_MANAGER->mkFunctionType(evalType);
-        Expr eval = PARSER_STATE->mkVar(name, eval_func_type);
+        Expr eval = dt.getSygusEvaluationFunc();
         Debug("parser-sygus") << "Make eval " << eval << " for " << dt.getName()
                               << std::endl;
         evals.insert(std::make_pair(dtt, eval));
@@ -1107,6 +1096,10 @@ metaInfoInternal[CVC4::PtrCloser<CVC4::Command>* cmd]
                     sexpr.getRationalValue() == Rational(5, 2)) ||
                   sexpr.getValue() == "2.5" ) {
           PARSER_STATE->setLanguage(language::input::LANG_SMTLIB_V2_5);
+        } else if( (sexpr.isRational() &&
+                    sexpr.getRationalValue() == Rational(13, 5)) ||
+                  sexpr.getValue() == "2.6" ) {
+          PARSER_STATE->setLanguage(language::input::LANG_SMTLIB_V2_6);
         }
       }
       PARSER_STATE->setInfo(name.c_str() + 1, sexpr);
@@ -1353,7 +1346,11 @@ extendedCommand[CVC4::PtrCloser<CVC4::Command>* cmd]
 }
     /* Extended SMT-LIB set of commands syntax, not permitted in
      * --smtlib2 compliance mode. */
-  : DECLARE_DATATYPES_TOK datatypesDefCommand[false, cmd]
+  : DECLARE_DATATYPES_2_5_TOK datatypes_2_5_DefCommand[false, cmd]
+  | DECLARE_CODATATYPES_2_5_TOK datatypes_2_5_DefCommand[true, cmd]
+  | DECLARE_DATATYPE_TOK datatypeDefCommand[false, cmd]
+  | DECLARE_CODATATYPE_TOK datatypeDefCommand[true, cmd]
+  | DECLARE_DATATYPES_TOK datatypesDefCommand[false, cmd]
   | DECLARE_CODATATYPES_TOK datatypesDefCommand[true, cmd]
   | rewriterulesCommand[cmd]
 
@@ -1500,7 +1497,7 @@ extendedCommand[CVC4::PtrCloser<CVC4::Command>* cmd]
   ;
 
 
-datatypesDefCommand[bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd]
+datatypes_2_5_DefCommand[bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd]
 @declarations {
   std::vector<CVC4::Datatype> dts;
   std::string name;
@@ -1516,8 +1513,85 @@ datatypesDefCommand[bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd]
   RPAREN_TOK
   LPAREN_TOK ( LPAREN_TOK datatypeDef[isCo, dts, sorts] RPAREN_TOK )+ RPAREN_TOK
   { PARSER_STATE->popScope();
-    cmd->reset(new DatatypeDeclarationCommand(
-        PARSER_STATE->mkMutualDatatypeTypes(dts)));
+    cmd->reset(new DatatypeDeclarationCommand(PARSER_STATE->mkMutualDatatypeTypes(dts)));
+  }
+  ;
+  
+datatypeDefCommand[bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd]  
+ at declarations {
+  std::vector<CVC4::Datatype> dts;
+  std::string name;
+}
+ : { PARSER_STATE->checkThatLogicIsSet(); }
+ symbol[name,CHECK_UNDECLARED,SYM_SORT] LPAREN_TOK
+ { std::vector<Type> params;
+   dts.push_back(Datatype(name,params,isCo));
+ }
+ ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+
+ RPAREN_TOK
+ { cmd->reset(new DatatypeDeclarationCommand(PARSER_STATE->mkMutualDatatypeTypes(dts))); }
+ ;
+  
+datatypesDefCommand[bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd]
+ at declarations {
+  std::vector<CVC4::Datatype> dts;
+  std::string name;
+  std::vector<std::string> dnames;
+  std::vector<unsigned> arities;
+  std::vector<Type> params;
+}
+  : { PARSER_STATE->checkThatLogicIsSet(); PARSER_STATE->pushScope(true); }
+  LPAREN_TOK /* sorts */
+  ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n=INTEGER_LITERAL RPAREN_TOK
+    { unsigned arity = AntlrInput::tokenToUnsigned(n);
+      //Type type;
+      //if(arity == 0) {
+      //  type = PARSER_STATE->mkSort(name);
+      //} else {
+      //  type = PARSER_STATE->mkSortConstructor(name, arity);
+      //}
+      //types.push_back(type);
+      Debug("parser-dt") << "Datatype : " << name << ", arity = " << arity << std::endl;
+      dnames.push_back(name);
+      arities.push_back( arity );
+    }
+  )*
+  RPAREN_TOK 
+  LPAREN_TOK 
+  ( LPAREN_TOK { 
+      params.clear(); 
+      Debug("parser-dt") << "Processing datatype #" << dts.size() << std::endl;
+      if( dts.size()>=dnames.size() ){
+        PARSER_STATE->parseError("Too many datatypes defined in this block.");
+      }
+    }
+    ( PAR_TOK { PARSER_STATE->pushScope(true); } LPAREN_TOK
+      ( symbol[name,CHECK_UNDECLARED,SYM_SORT]
+        { params.push_back( PARSER_STATE->mkSort(name) ); }
+      )*
+      RPAREN_TOK {
+        if( params.size()!=arities[dts.size()] ){
+          PARSER_STATE->parseError("Wrong number of parameters for datatype.");
+        }
+        Debug("parser-dt") << params.size() << " parameters for " << dnames[dts.size()] << std::endl;
+        dts.push_back(Datatype(dnames[dts.size()],params,isCo));
+      }
+      LPAREN_TOK
+      ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+
+      RPAREN_TOK { PARSER_STATE->popScope(); } 
+    | { if( 0!=arities[dts.size()] ){
+          PARSER_STATE->parseError("No parameters given for datatype.");
+        }
+        Debug("parser-dt") << params.size() << " parameters for " << dnames[dts.size()] << std::endl;
+        dts.push_back(Datatype(dnames[dts.size()],params,isCo));
+      }
+      ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+
+    )
+    RPAREN_TOK
+    )+
+  RPAREN_TOK
+  { PARSER_STATE->popScope();
+    cmd->reset(new DatatypeDeclarationCommand(PARSER_STATE->mkMutualDatatypeTypes(dts))); 
   }
   ;
 
@@ -1724,12 +1798,15 @@ term[CVC4::Expr& expr, CVC4::Expr& expr2]
   std::string attr;
   Expr attexpr;
   std::vector<Expr> patexprs;
+  std::vector<Expr> patconds;
   std::hash_set<std::string, StringHashFunction> names;
   std::vector< std::pair<std::string, Expr> > binders;
   Type type;
   std::string s;
   bool isBuiltinOperator = false;
   bool readLetSort = false;
+  int match_vindex = -1;
+  std::vector<Type> match_ptypes;
 }
   : /* a built-in operator application */
     LPAREN_TOK builtinOp[kind] termList[args,expr] RPAREN_TOK
@@ -1792,12 +1869,12 @@ term[CVC4::Expr& expr, CVC4::Expr& expr2]
                           << f2 << " " << type <<  std::endl;
         expr = MK_CONST( ::CVC4::EmptySet(type) );
       } else if(f.getKind() == CVC4::kind::UNIVERSE_SET) {
-        expr = EXPR_MANAGER->mkUniqueVar(type, kind::UNIVERSE_SET);
+        expr = EXPR_MANAGER->mkNullaryOperator(type, kind::UNIVERSE_SET);
       } else if(f.getKind() == CVC4::kind::SEP_NIL) {
         //We don't want the nil reference to be a constant: for instance, it
         //could be of type Int but is not a const rational. However, the
         //expression has 0 children. So we convert to a SEP_NIL variable.
-        expr = EXPR_MANAGER->mkUniqueVar(type, kind::SEP_NIL);
+        expr = EXPR_MANAGER->mkNullaryOperator(type, kind::SEP_NIL);
       } else {
         if(f.getType() != type) {
           PARSER_STATE->parseError("Type ascription not satisfied.");
@@ -1890,8 +1967,13 @@ term[CVC4::Expr& expr, CVC4::Expr& expr2]
 
   | LPAREN_TOK
     ( /* An indexed function application */
-      indexedFunctionName[op] termList[args,expr] RPAREN_TOK
-      { expr = MK_EXPR(op, args);
+      indexedFunctionName[op, kind] termList[args,expr] RPAREN_TOK
+      { 
+        if( kind!=kind::NULL_EXPR ){
+          expr = MK_EXPR( kind, op, args );
+        }else{
+          expr = MK_EXPR(op, args);
+        }
         PARSER_STATE->checkOperator(expr.getKind(), args.size());
       }
     | /* Array constant (in Z3 syntax) */
@@ -1955,6 +2037,114 @@ term[CVC4::Expr& expr, CVC4::Expr& expr2]
     term[expr, f2]
     RPAREN_TOK
     { PARSER_STATE->popScope(); }
+  | /* match expression */
+    LPAREN_TOK MATCH_TOK term[expr, f2] {
+      if( !expr.getType().isDatatype() ){
+        PARSER_STATE->parseError("Cannot match on non-datatype term.");
+      }
+    }
+    LPAREN_TOK
+    ( 
+      /* match cases */
+       LPAREN_TOK INDEX_TOK term[f, f2] { 
+          if( match_vindex==-1 ){
+            match_vindex = (int)patexprs.size(); 
+          }
+          patexprs.push_back( f ); 
+          patconds.push_back(MK_CONST(bool(true)));
+        }
+        RPAREN_TOK
+      | LPAREN_TOK LPAREN_TOK term[f, f2] { 
+           args.clear(); 
+           PARSER_STATE->pushScope(true); 
+           //f should be a constructor
+           type = f.getType();
+           Debug("parser-dt") << "Pattern head : " << f << " " << f.getType() << std::endl;
+           if( !type.isConstructor() ){
+             PARSER_STATE->parseError("Pattern must be application of a constructor or a variable.");
+           }
+           if( Datatype::datatypeOf(f).isParametric() ){
+             type = Datatype::datatypeOf(f)[Datatype::indexOf(f)].getSpecializedConstructorType(expr.getType());
+           }
+           match_ptypes = ((ConstructorType)type).getArgTypes();
+         }
+         //arguments
+         ( symbol[name,CHECK_NONE,SYM_VARIABLE] {
+             if( args.size()>=match_ptypes.size() ){
+               PARSER_STATE->parseError("Too many arguments for pattern.");
+             }
+             //make of proper type
+             Expr arg = PARSER_STATE->mkBoundVar(name, match_ptypes[args.size()]);
+             args.push_back( arg );
+           }
+         )*
+         RPAREN_TOK
+         term[f3, f2] { 
+           const DatatypeConstructor& dtc = Datatype::datatypeOf(f)[Datatype::indexOf(f)];
+           if( args.size()!=dtc.getNumArgs() ){
+             PARSER_STATE->parseError("Bad number of arguments for application of constructor in pattern.");
+           }
+           // build a lambda
+           std::vector<Expr> largs;
+           largs.push_back( MK_EXPR( CVC4::kind::BOUND_VAR_LIST, args ) );
+           largs.push_back( f3 );
+           std::vector< Expr > aargs;
+           aargs.push_back( MK_EXPR( CVC4::kind::LAMBDA, largs ) );
+           for( unsigned i=0; i<dtc.getNumArgs(); i++ ){
+             //can apply total version since we will be guarded by ITE condition
+             aargs.push_back( MK_EXPR( CVC4::kind::APPLY_SELECTOR_TOTAL, dtc[i].getSelector(), expr ) );
+           }
+           patexprs.push_back( MK_EXPR( CVC4::kind::APPLY, aargs ) );
+           patconds.push_back( MK_EXPR( CVC4::kind::APPLY_TESTER, dtc.getTester(), expr ) );
+         }
+         RPAREN_TOK 
+         { PARSER_STATE->popScope(); }
+       | LPAREN_TOK symbol[name,CHECK_DECLARED,SYM_VARIABLE] {
+           f = PARSER_STATE->getVariable(name);
+           type = f.getType();
+           if( !type.isConstructor() || !((ConstructorType)type).getArgTypes().empty() ){
+             PARSER_STATE->parseError("Must apply constructors of arity greater than 0 to arguments in pattern.");
+           }
+         }
+         term[f3, f2] {
+           const DatatypeConstructor& dtc = Datatype::datatypeOf(f)[Datatype::indexOf(f)];
+           patexprs.push_back( f3 );
+           patconds.push_back( MK_EXPR( CVC4::kind::APPLY_TESTER, dtc.getTester(), expr ) );
+         }
+         RPAREN_TOK
+    )+
+    RPAREN_TOK RPAREN_TOK  { 
+      if( match_vindex==-1 ){
+        const Datatype& dt = ((DatatypeType)expr.getType()).getDatatype();
+        std::map< unsigned, bool > processed;
+        unsigned count = 0;
+        //ensure that all datatype constructors are matched (to ensure exhaustiveness)
+        for( unsigned i=0; i<patconds.size(); i++ ){
+          unsigned curr_index = Datatype::indexOf(patconds[i].getOperator());
+          if( curr_index<0 && curr_index>=dt.getNumConstructors() ){
+            PARSER_STATE->parseError("Pattern is not legal for the head of a match.");
+          }
+          if( processed.find( curr_index )==processed.end() ){
+            processed[curr_index] = true;
+            count++;
+          }
+        }
+        if( count!=dt.getNumConstructors() ){
+          PARSER_STATE->parseError("Patterns are not exhaustive in a match construct.");
+        }
+      }
+      //now, make the ITE
+      int end_index = match_vindex==-1 ? patexprs.size()-1 : match_vindex;
+      bool first_time = true;
+      for( int index = end_index; index>=0; index-- ){
+        if( first_time ){
+          expr = patexprs[index];
+          first_time = false;
+        }else{
+          expr = MK_EXPR( CVC4::kind::ITE, patconds[index], patexprs[index], expr );
+        }
+      }
+    }
   | symbol[name,CHECK_NONE,SYM_VARIABLE] SYGUS_ENUM_CONS_TOK
     symbol[name2,CHECK_NONE,SYM_VARIABLE]
     { std::string cname = name + "__Enum__" + name2;
@@ -2115,11 +2305,11 @@ term[CVC4::Expr& expr, CVC4::Expr& expr2]
 
   | UNIVSET_TOK
     { //booleanType is placeholder here since we don't have type info without type annotation
-      expr = EXPR_MANAGER->mkUniqueVar(EXPR_MANAGER->booleanType(), kind::UNIVERSE_SET); }
+      expr = EXPR_MANAGER->mkNullaryOperator(EXPR_MANAGER->booleanType(), kind::UNIVERSE_SET); }
 
   | NILREF_TOK
     { //booleanType is placeholder here since we don't have type info without type annotation
-      expr = EXPR_MANAGER->mkUniqueVar(EXPR_MANAGER->booleanType(), kind::SEP_NIL); }
+      expr = EXPR_MANAGER->mkNullaryOperator(EXPR_MANAGER->booleanType(), kind::SEP_NIL); }
     // NOTE: Theory constants go here
   ;
 
@@ -2267,7 +2457,11 @@ attribute[CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& attr]
 /**
  * Matches a bit-vector operator (the ones parametrized by numbers)
  */
-indexedFunctionName[CVC4::Expr& op]
+indexedFunctionName[CVC4::Expr& op, CVC4::Kind& kind]
+ at init {
+  Expr expr;
+  Expr expr2;
+}
   : LPAREN_TOK INDEX_TOK
     ( 'extract' n1=INTEGER_LITERAL n2=INTEGER_LITERAL
       { op = MK_CONST(BitVectorExtract(AntlrInput::tokenToUnsigned($n1),
@@ -2344,6 +2538,17 @@ indexedFunctionName[CVC4::Expr& op]
       { op = MK_CONST(FloatingPointToUBV(AntlrInput::tokenToUnsigned($m))); }
     | FP_TO_SBV_TOK m=INTEGER_LITERAL
       { op = MK_CONST(FloatingPointToSBV(AntlrInput::tokenToUnsigned($m))); }
+    | TESTER_TOK term[expr, expr2] { 
+        if( expr.getKind()==kind::APPLY_CONSTRUCTOR && expr.getNumChildren()==0 ){
+          //for nullary constructors, must get the operator
+          expr = expr.getOperator();
+        }
+        if( !expr.getType().isConstructor() ){
+          PARSER_STATE->parseError("Bad syntax for test (_ is X), X must be a constructor.");
+        }
+        op = Datatype::datatypeOf(expr)[Datatype::indexOf(expr)].getTester();
+        kind = CVC4::kind::APPLY_TESTER;
+      }
     | badIndexedFunctionName
     )
     RPAREN_TOK
@@ -2795,7 +3000,7 @@ GET_ASSERTIONS_TOK : 'get-assertions';
 GET_PROOF_TOK : 'get-proof';
 GET_UNSAT_CORE_TOK : 'get-unsat-core';
 EXIT_TOK : 'exit';
-RESET_TOK : { PARSER_STATE->v2_5() }? 'reset';
+RESET_TOK : { PARSER_STATE->v2_5(false) }? 'reset';
 RESET_ASSERTIONS_TOK : 'reset-assertions';
 ITE_TOK : 'ite';
 LET_TOK : 'let';
@@ -2815,8 +3020,15 @@ AS_TOK : 'as';
 CONST_TOK : 'const';
 
 // extended commands
-DECLARE_DATATYPES_TOK : 'declare-datatypes';
-DECLARE_CODATATYPES_TOK : 'declare-codatatypes';
+DECLARE_CODATATYPE_TOK : { PARSER_STATE->v2_6() }? 'declare-codatatype';
+DECLARE_DATATYPE_TOK : { PARSER_STATE->v2_6() }? 'declare-datatype';
+DECLARE_DATATYPES_2_5_TOK : { !PARSER_STATE->v2_6() }?'declare-datatypes';
+DECLARE_DATATYPES_TOK : { PARSER_STATE->v2_6() }?'declare-datatypes';
+DECLARE_CODATATYPES_2_5_TOK : { !PARSER_STATE->v2_6() }?'declare-codatatypes';
+DECLARE_CODATATYPES_TOK : { PARSER_STATE->v2_6() }?'declare-codatatypes';
+PAR_TOK : { PARSER_STATE->v2_6() }?'par';
+TESTER_TOK : { PARSER_STATE->v2_6() && PARSER_STATE->isTheoryEnabled(Smt2::THEORY_DATATYPES) }?'is';
+MATCH_TOK : { PARSER_STATE->v2_6() && PARSER_STATE->isTheoryEnabled(Smt2::THEORY_DATATYPES) }?'match';
 GET_MODEL_TOK : 'get-model';
 ECHO_TOK : 'echo';
 REWRITE_RULE_TOK : 'assert-rewrite';
@@ -2907,26 +3119,26 @@ FP_PINF_TOK : '+oo';
 FP_NINF_TOK : '-oo';
 FP_PZERO_TOK : '+zero';
 FP_NZERO_TOK : '-zero';
-FP_NAN_TOK : 'NaN';
-
-FP_TO_FP_TOK : 'to_fp';
-FP_TO_FPBV_TOK : 'to_fp_bv';
-FP_TO_FPFP_TOK : 'to_fp_fp';
-FP_TO_FPR_TOK : 'to_fp_real';
-FP_TO_FPS_TOK : 'to_fp_signed';
-FP_TO_FPU_TOK : 'to_fp_unsigned';
-FP_TO_UBV_TOK : 'fp.to_ubv';
-FP_TO_SBV_TOK : 'fp.to_sbv';
-FP_RNE_TOK : 'RNE';
-FP_RNA_TOK : 'RNA';
-FP_RTP_TOK : 'RTP';
-FP_RTN_TOK : 'RTN';
-FP_RTZ_TOK : 'RTZ';
-FP_RNE_FULL_TOK : 'roundNearestTiesToEven';
-FP_RNA_FULL_TOK : 'roundNearestTiesToAway';
-FP_RTP_FULL_TOK : 'roundTowardPositive';
-FP_RTN_FULL_TOK : 'roundTowardNegative';
-FP_RTZ_FULL_TOK : 'roundTowardZero';
+FP_NAN_TOK : { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) }? 'NaN';
+
+FP_TO_FP_TOK : { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) }? 'to_fp';
+FP_TO_FPBV_TOK : { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) }? 'to_fp_bv';
+FP_TO_FPFP_TOK : { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) }? 'to_fp_fp';
+FP_TO_FPR_TOK : { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) }? 'to_fp_real';
+FP_TO_FPS_TOK : { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) }? 'to_fp_signed';
+FP_TO_FPU_TOK : { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) }? 'to_fp_unsigned';
+FP_TO_UBV_TOK : { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) }? 'fp.to_ubv';
+FP_TO_SBV_TOK : { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) }? 'fp.to_sbv';
+FP_RNE_TOK : { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) }? 'RNE';
+FP_RNA_TOK : { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) }? 'RNA';
+FP_RTP_TOK : { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) }? 'RTP';
+FP_RTN_TOK : { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) }? 'RTN';
+FP_RTZ_TOK : { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) }? 'RTZ';
+FP_RNE_FULL_TOK : { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) }? 'roundNearestTiesToEven';
+FP_RNA_FULL_TOK : { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) }? 'roundNearestTiesToAway';
+FP_RTP_FULL_TOK : { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) }? 'roundTowardPositive';
+FP_RTN_FULL_TOK : { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) }? 'roundTowardNegative';
+FP_RTZ_FULL_TOK : { PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) }? 'roundTowardZero';
 
 /**
  * A sequence of printable ASCII characters (except backslash) that starts
@@ -3039,7 +3251,7 @@ STRING_LITERAL_2_0
  * will be part of the token text.  Use the str[] parser rule instead.
  */
 STRING_LITERAL_2_5
-  : { PARSER_STATE->v2_5() || PARSER_STATE->sygus() }?=>
+  : { PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() }?=>
     '"' (~('"') | '""')* '"'
   ;
 
diff --git a/src/parser/smt2/Smt2.tokens b/src/parser/smt2/Smt2.tokens
index 3f7903e..fcdaa90 100644
--- a/src/parser/smt2/Smt2.tokens
+++ b/src/parser/smt2/Smt2.tokens
@@ -1,10 +1,10 @@
-T__145=145
-T__146=146
-T__147=147
-T__148=148
-T__149=149
-T__150=150
-T__151=151
+T__152=152
+T__153=153
+T__154=154
+T__155=155
+T__156=156
+T__157=157
+T__158=158
 ALPHA=4
 AMPERSAND_TOK=5
 AND_TOK=6
@@ -25,131 +25,138 @@ COMMENT=20
 CONSTRAINT_TOK=21
 CONST_TOK=22
 DECIMAL_LITERAL=23
-DECLARE_CODATATYPES_TOK=24
-DECLARE_CONST_TOK=25
-DECLARE_DATATYPES_TOK=26
-DECLARE_FUNS_TOK=27
-DECLARE_FUN_TOK=28
-DECLARE_PREDS_TOK=29
-DECLARE_PRIMED_VAR_TOK=30
-DECLARE_SORTS_TOK=31
-DECLARE_SORT_TOK=32
-DECLARE_VAR_TOK=33
-DEFINE_CONST_TOK=34
-DEFINE_FUNS_REC_TOK=35
-DEFINE_FUN_REC_TOK=36
-DEFINE_FUN_TOK=37
-DEFINE_SORT_TOK=38
-DEFINE_TOK=39
-DIGIT=40
-DISTINCT_TOK=41
-DIVISIBLE_TOK=42
-DIV_TOK=43
-DTSIZE_TOK=44
-ECHO_TOK=45
-EMPTYSET_TOK=46
-EQUAL_TOK=47
-EXISTS_TOK=48
-EXIT_TOK=49
-FMFCARDVAL_TOK=50
-FMFCARD_TOK=51
-FORALL_TOK=52
-FP_NAN_TOK=53
-FP_NINF_TOK=54
-FP_NZERO_TOK=55
-FP_PINF_TOK=56
-FP_PZERO_TOK=57
-FP_RNA_FULL_TOK=58
-FP_RNA_TOK=59
-FP_RNE_FULL_TOK=60
-FP_RNE_TOK=61
-FP_RTN_FULL_TOK=62
-FP_RTN_TOK=63
-FP_RTP_FULL_TOK=64
-FP_RTP_TOK=65
-FP_RTZ_FULL_TOK=66
-FP_RTZ_TOK=67
-FP_TO_FPBV_TOK=68
-FP_TO_FPFP_TOK=69
-FP_TO_FPR_TOK=70
-FP_TO_FPS_TOK=71
-FP_TO_FPU_TOK=72
-FP_TO_FP_TOK=73
-FP_TO_SBV_TOK=74
-FP_TO_UBV_TOK=75
-GET_ASSERTIONS_TOK=76
-GET_ASSIGNMENT_TOK=77
-GET_INFO_TOK=78
-GET_MODEL_TOK=79
-GET_OPTION_TOK=80
-GET_PROOF_TOK=81
-GET_QE_DISJUNCT_TOK=82
-GET_QE_TOK=83
-GET_UNSAT_CORE_TOK=84
-GET_VALUE_TOK=85
-GREATER_THAN_EQUAL_TOK=86
-GREATER_THAN_TOK=87
-HEX_DIGIT=88
-HEX_LITERAL=89
-IMPLIES_TOK=90
-INCLUDE_TOK=91
-INDEX_TOK=92
-INST_CLOSURE_TOK=93
-INT2BV_TOK=94
-INTEGER_LITERAL=95
-INV_CONSTRAINT_TOK=96
-ITE_TOK=97
-KEYWORD=98
-LESS_THAN_EQUAL_TOK=99
-LESS_THAN_TOK=100
-LET_TOK=101
-LPAREN_TOK=102
-META_INFO_TOK=103
-MINUS_TOK=104
-NILREF_TOK=105
-NOT_TOK=106
-NUMERAL=107
-OR_TOK=108
-PLUS_TOK=109
-POP_TOK=110
-PROPAGATION_RULE_TOK=111
-PUSH_TOK=112
-QUOTED_SYMBOL=113
-REALLCHAR_TOK=114
-REDUCTION_RULE_TOK=115
-RENOSTR_TOK=116
-RESET_ASSERTIONS_TOK=117
-RESET_TOK=118
-REWRITE_RULE_TOK=119
-RPAREN_TOK=120
-SET_INFO_TOK=121
-SET_LOGIC_TOK=122
-SET_OPTIONS_TOK=123
-SET_OPTION_TOK=124
-SIMPLE_SYMBOL=125
-SIMPLIFY_TOK=126
-STAR_TOK=127
-STRING_LITERAL_2_0=128
-STRING_LITERAL_2_5=129
-SYGUS_CONSTANT_TOK=130
-SYGUS_ENUM_CONS_TOK=131
-SYGUS_ENUM_TOK=132
-SYGUS_INPUT_VARIABLE_TOK=133
-SYGUS_LOCAL_VARIABLE_TOK=134
-SYGUS_QUOTED_LITERAL=135
-SYGUS_VARIABLE_TOK=136
-SYMBOL_CHAR=137
-SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE=138
-SYNTH_FUN_TOK=139
-SYNTH_INV_TOK=140
-UNIVSET_TOK=141
-UNTERMINATED_QUOTED_SYMBOL=142
-WHITESPACE=143
-XOR_TOK=144
-'\\'=145
-'extract'=146
-'repeat'=147
-'rotate_left'=148
-'rotate_right'=149
-'sign_extend'=150
-'zero_extend'=151
+DECLARE_CODATATYPES_2_5_TOK=24
+DECLARE_CODATATYPES_TOK=25
+DECLARE_CODATATYPE_TOK=26
+DECLARE_CONST_TOK=27
+DECLARE_DATATYPES_2_5_TOK=28
+DECLARE_DATATYPES_TOK=29
+DECLARE_DATATYPE_TOK=30
+DECLARE_FUNS_TOK=31
+DECLARE_FUN_TOK=32
+DECLARE_PREDS_TOK=33
+DECLARE_PRIMED_VAR_TOK=34
+DECLARE_SORTS_TOK=35
+DECLARE_SORT_TOK=36
+DECLARE_VAR_TOK=37
+DEFINE_CONST_TOK=38
+DEFINE_FUNS_REC_TOK=39
+DEFINE_FUN_REC_TOK=40
+DEFINE_FUN_TOK=41
+DEFINE_SORT_TOK=42
+DEFINE_TOK=43
+DIGIT=44
+DISTINCT_TOK=45
+DIVISIBLE_TOK=46
+DIV_TOK=47
+DTSIZE_TOK=48
+ECHO_TOK=49
+EMPTYSET_TOK=50
+EQUAL_TOK=51
+EXISTS_TOK=52
+EXIT_TOK=53
+FMFCARDVAL_TOK=54
+FMFCARD_TOK=55
+FORALL_TOK=56
+FP_NAN_TOK=57
+FP_NINF_TOK=58
+FP_NZERO_TOK=59
+FP_PINF_TOK=60
+FP_PZERO_TOK=61
+FP_RNA_FULL_TOK=62
+FP_RNA_TOK=63
+FP_RNE_FULL_TOK=64
+FP_RNE_TOK=65
+FP_RTN_FULL_TOK=66
+FP_RTN_TOK=67
+FP_RTP_FULL_TOK=68
+FP_RTP_TOK=69
+FP_RTZ_FULL_TOK=70
+FP_RTZ_TOK=71
+FP_TO_FPBV_TOK=72
+FP_TO_FPFP_TOK=73
+FP_TO_FPR_TOK=74
+FP_TO_FPS_TOK=75
+FP_TO_FPU_TOK=76
+FP_TO_FP_TOK=77
+FP_TO_SBV_TOK=78
+FP_TO_UBV_TOK=79
+GET_ASSERTIONS_TOK=80
+GET_ASSIGNMENT_TOK=81
+GET_INFO_TOK=82
+GET_MODEL_TOK=83
+GET_OPTION_TOK=84
+GET_PROOF_TOK=85
+GET_QE_DISJUNCT_TOK=86
+GET_QE_TOK=87
+GET_UNSAT_CORE_TOK=88
+GET_VALUE_TOK=89
+GREATER_THAN_EQUAL_TOK=90
+GREATER_THAN_TOK=91
+HEX_DIGIT=92
+HEX_LITERAL=93
+IMPLIES_TOK=94
+INCLUDE_TOK=95
+INDEX_TOK=96
+INST_CLOSURE_TOK=97
+INT2BV_TOK=98
+INTEGER_LITERAL=99
+INV_CONSTRAINT_TOK=100
+ITE_TOK=101
+KEYWORD=102
+LESS_THAN_EQUAL_TOK=103
+LESS_THAN_TOK=104
+LET_TOK=105
+LPAREN_TOK=106
+MATCH_TOK=107
+META_INFO_TOK=108
+MINUS_TOK=109
+NILREF_TOK=110
+NOT_TOK=111
+NUMERAL=112
+OR_TOK=113
+PAR_TOK=114
+PLUS_TOK=115
+POP_TOK=116
+PROPAGATION_RULE_TOK=117
+PUSH_TOK=118
+QUOTED_SYMBOL=119
+REALLCHAR_TOK=120
+REDUCTION_RULE_TOK=121
+RENOSTR_TOK=122
+RESET_ASSERTIONS_TOK=123
+RESET_TOK=124
+REWRITE_RULE_TOK=125
+RPAREN_TOK=126
+SET_INFO_TOK=127
+SET_LOGIC_TOK=128
+SET_OPTIONS_TOK=129
+SET_OPTION_TOK=130
+SIMPLE_SYMBOL=131
+SIMPLIFY_TOK=132
+STAR_TOK=133
+STRING_LITERAL_2_0=134
+STRING_LITERAL_2_5=135
+SYGUS_CONSTANT_TOK=136
+SYGUS_ENUM_CONS_TOK=137
+SYGUS_ENUM_TOK=138
+SYGUS_INPUT_VARIABLE_TOK=139
+SYGUS_LOCAL_VARIABLE_TOK=140
+SYGUS_QUOTED_LITERAL=141
+SYGUS_VARIABLE_TOK=142
+SYMBOL_CHAR=143
+SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE=144
+SYNTH_FUN_TOK=145
+SYNTH_INV_TOK=146
+TESTER_TOK=147
+UNIVSET_TOK=148
+UNTERMINATED_QUOTED_SYMBOL=149
+WHITESPACE=150
+XOR_TOK=151
+'\\'=152
+'extract'=153
+'repeat'=154
+'rotate_left'=155
+'rotate_right'=156
+'sign_extend'=157
+'zero_extend'=158
diff --git a/src/parser/smt2/Smt2Lexer.c b/src/parser/smt2/Smt2Lexer.c
index 0e0ee9d..86f5287 100644
--- a/src/parser/smt2/Smt2Lexer.c
+++ b/src/parser/smt2/Smt2Lexer.c
@@ -1,8 +1,8 @@
 /** \file
  *  This C source file was generated by $ANTLR version 3.4
  *
- *     -  From the grammar source file : ../../../../../../src/parser/smt2/Smt2.g
- *     -                            On : 2017-03-16 01:03:02
+ *     -  From the grammar source file : ../../../../src/parser/smt2/Smt2.g
+ *     -                            On : 2017-07-10 10:01:29
  *     -                 for the lexer : Smt2LexerLexer
  *
  * Editing it, at least manually, is not wise.
@@ -99,90 +99,95 @@ static ANTLR3_UCHAR	lit_31[]  = { 0x70, 0x75, 0x73, 0x68,  ANTLR3_STRING_TERMINA
 static ANTLR3_UCHAR	lit_32[]  = { 0x70, 0x6F, 0x70,  ANTLR3_STRING_TERMINATOR};
 static ANTLR3_UCHAR	lit_33[]  = { 0x61, 0x73,  ANTLR3_STRING_TERMINATOR};
 static ANTLR3_UCHAR	lit_34[]  = { 0x63, 0x6F, 0x6E, 0x73, 0x74,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_35[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x73,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_36[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x63, 0x6F, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x73,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_37[]  = { 0x67, 0x65, 0x74, 0x2D, 0x6D, 0x6F, 0x64, 0x65, 0x6C,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_38[]  = { 0x65, 0x63, 0x68, 0x6F,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_39[]  = { 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x2D, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_40[]  = { 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x2D, 0x72, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_41[]  = { 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x2D, 0x70, 0x72, 0x6F, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6F, 0x6E,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_42[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x73, 0x6F, 0x72, 0x74, 0x73,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_43[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x66, 0x75, 0x6E, 0x73,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_44[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x70, 0x72, 0x65, 0x64, 0x73,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_45[]  = { 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_46[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x63, 0x6F, 0x6E, 0x73, 0x74,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_47[]  = { 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x2D, 0x63, 0x6F, 0x6E, 0x73, 0x74,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_48[]  = { 0x73, 0x69, 0x6D, 0x70, 0x6C, 0x69, 0x66, 0x79,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_49[]  = { 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x64, 0x65,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_50[]  = { 0x67, 0x65, 0x74, 0x2D, 0x71, 0x65,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_51[]  = { 0x67, 0x65, 0x74, 0x2D, 0x71, 0x65, 0x2D, 0x64, 0x69, 0x73, 0x6A, 0x75, 0x6E, 0x63, 0x74,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_52[]  = { 0x73, 0x79, 0x6E, 0x74, 0x68, 0x2D, 0x66, 0x75, 0x6E,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_53[]  = { 0x73, 0x79, 0x6E, 0x74, 0x68, 0x2D, 0x69, 0x6E, 0x76,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_54[]  = { 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x73, 0x79, 0x6E, 0x74, 0x68,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_55[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x76, 0x61, 0x72,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_56[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x70, 0x72, 0x69, 0x6D, 0x65, 0x64, 0x2D, 0x76, 0x61, 0x72,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_57[]  = { 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6E, 0x74,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_58[]  = { 0x69, 0x6E, 0x76, 0x2D, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6E, 0x74,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_59[]  = { 0x73, 0x65, 0x74, 0x2D, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x73,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_60[]  = { 0x45, 0x6E, 0x75, 0x6D,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_61[]  = { 0x3A, 0x3A,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_62[]  = { 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_63[]  = { 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_64[]  = { 0x49, 0x6E, 0x70, 0x75, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_65[]  = { 0x4C, 0x6F, 0x63, 0x61, 0x6C, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_66[]  = { 0x3A, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_67[]  = { 0x3A, 0x6E, 0x6F, 0x2D, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_68[]  = { 0x3A, 0x6E, 0x61, 0x6D, 0x65, 0x64,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_69[]  = { 0x3A, 0x71, 0x75, 0x61, 0x6E, 0x74, 0x2D, 0x69, 0x6E, 0x73, 0x74, 0x2D, 0x6D, 0x61, 0x78, 0x2D, 0x6C, 0x65, 0x76, 0x65, 0x6C,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_70[]  = { 0x3A, 0x72, 0x72, 0x2D, 0x70, 0x72, 0x69, 0x6F, 0x72, 0x69, 0x74, 0x79,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_71[]  = { 0x61, 0x6E, 0x64,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_72[]  = { 0x64, 0x69, 0x73, 0x74, 0x69, 0x6E, 0x63, 0x74,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_73[]  = { 0x65, 0x78, 0x69, 0x73, 0x74, 0x73,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_74[]  = { 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_75[]  = { 0x3E, 0x3D,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_76[]  = { 0x3D, 0x3E,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_77[]  = { 0x3C, 0x3D,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_78[]  = { 0x6E, 0x6F, 0x74,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_79[]  = { 0x6F, 0x72,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_80[]  = { 0x78, 0x6F, 0x72,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_81[]  = { 0x64, 0x69, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6C, 0x65,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_82[]  = { 0x62, 0x76, 0x32, 0x6E, 0x61, 0x74,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_83[]  = { 0x69, 0x6E, 0x74, 0x32, 0x62, 0x76,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_84[]  = { 0x72, 0x65, 0x2E, 0x6E, 0x6F, 0x73, 0x74, 0x72,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_85[]  = { 0x72, 0x65, 0x2E, 0x61, 0x6C, 0x6C, 0x63, 0x68, 0x61, 0x72,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_86[]  = { 0x64, 0x74, 0x2E, 0x73, 0x69, 0x7A, 0x65,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_87[]  = { 0x66, 0x6D, 0x66, 0x2E, 0x63, 0x61, 0x72, 0x64,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_88[]  = { 0x66, 0x6D, 0x66, 0x2E, 0x63, 0x61, 0x72, 0x64, 0x2E, 0x76, 0x61, 0x6C,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_89[]  = { 0x69, 0x6E, 0x73, 0x74, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x75, 0x72, 0x65,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_90[]  = { 0x65, 0x6D, 0x70, 0x74, 0x79, 0x73, 0x65, 0x74,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_91[]  = { 0x75, 0x6E, 0x69, 0x76, 0x73, 0x65, 0x74,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_92[]  = { 0x73, 0x65, 0x70, 0x2E, 0x6E, 0x69, 0x6C,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_93[]  = { 0x2B, 0x6F, 0x6F,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_94[]  = { 0x2D, 0x6F, 0x6F,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_95[]  = { 0x2B, 0x7A, 0x65, 0x72, 0x6F,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_96[]  = { 0x2D, 0x7A, 0x65, 0x72, 0x6F,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_97[]  = { 0x4E, 0x61, 0x4E,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_98[]  = { 0x74, 0x6F, 0x5F, 0x66, 0x70,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_99[]  = { 0x74, 0x6F, 0x5F, 0x66, 0x70, 0x5F, 0x62, 0x76,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_100[]  = { 0x74, 0x6F, 0x5F, 0x66, 0x70, 0x5F, 0x66, 0x70,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_101[]  = { 0x74, 0x6F, 0x5F, 0x66, 0x70, 0x5F, 0x72, 0x65, 0x61, 0x6C,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_102[]  = { 0x74, 0x6F, 0x5F, 0x66, 0x70, 0x5F, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_103[]  = { 0x74, 0x6F, 0x5F, 0x66, 0x70, 0x5F, 0x75, 0x6E, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_104[]  = { 0x66, 0x70, 0x2E, 0x74, 0x6F, 0x5F, 0x75, 0x62, 0x76,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_105[]  = { 0x66, 0x70, 0x2E, 0x74, 0x6F, 0x5F, 0x73, 0x62, 0x76,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_106[]  = { 0x52, 0x4E, 0x45,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_107[]  = { 0x52, 0x4E, 0x41,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_108[]  = { 0x52, 0x54, 0x50,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_109[]  = { 0x52, 0x54, 0x4E,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_110[]  = { 0x52, 0x54, 0x5A,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_111[]  = { 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4E, 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, 0x54, 0x69, 0x65, 0x73, 0x54, 0x6F, 0x45, 0x76, 0x65, 0x6E,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_112[]  = { 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4E, 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, 0x54, 0x69, 0x65, 0x73, 0x54, 0x6F, 0x41, 0x77, 0x61, 0x79,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_113[]  = { 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x54, 0x6F, 0x77, 0x61, 0x72, 0x64, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_114[]  = { 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x54, 0x6F, 0x77, 0x61, 0x72, 0x64, 0x4E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_115[]  = { 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x54, 0x6F, 0x77, 0x61, 0x72, 0x64, 0x5A, 0x65, 0x72, 0x6F,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_116[]  = { 0x23, 0x78,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_117[]  = { 0x23, 0x62,  ANTLR3_STRING_TERMINATOR};
-static ANTLR3_UCHAR	lit_118[]  = { 0x22, 0x22,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_35[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x63, 0x6F, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_36[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_37[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_38[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x63, 0x6F, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_39[]  = { 0x70, 0x61, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_40[]  = { 0x69, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_41[]  = { 0x6D, 0x61, 0x74, 0x63, 0x68,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_42[]  = { 0x67, 0x65, 0x74, 0x2D, 0x6D, 0x6F, 0x64, 0x65, 0x6C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_43[]  = { 0x65, 0x63, 0x68, 0x6F,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_44[]  = { 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x2D, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_45[]  = { 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x2D, 0x72, 0x65, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_46[]  = { 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x2D, 0x70, 0x72, 0x6F, 0x70, 0x61, 0x67, 0x61, 0x74, 0x69, 0x6F, 0x6E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_47[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x73, 0x6F, 0x72, 0x74, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_48[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x66, 0x75, 0x6E, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_49[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x70, 0x72, 0x65, 0x64, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_50[]  = { 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_51[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x63, 0x6F, 0x6E, 0x73, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_52[]  = { 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x2D, 0x63, 0x6F, 0x6E, 0x73, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_53[]  = { 0x73, 0x69, 0x6D, 0x70, 0x6C, 0x69, 0x66, 0x79,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_54[]  = { 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x64, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_55[]  = { 0x67, 0x65, 0x74, 0x2D, 0x71, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_56[]  = { 0x67, 0x65, 0x74, 0x2D, 0x71, 0x65, 0x2D, 0x64, 0x69, 0x73, 0x6A, 0x75, 0x6E, 0x63, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_57[]  = { 0x73, 0x79, 0x6E, 0x74, 0x68, 0x2D, 0x66, 0x75, 0x6E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_58[]  = { 0x73, 0x79, 0x6E, 0x74, 0x68, 0x2D, 0x69, 0x6E, 0x76,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_59[]  = { 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x73, 0x79, 0x6E, 0x74, 0x68,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_60[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x76, 0x61, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_61[]  = { 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x2D, 0x70, 0x72, 0x69, 0x6D, 0x65, 0x64, 0x2D, 0x76, 0x61, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_62[]  = { 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6E, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_63[]  = { 0x69, 0x6E, 0x76, 0x2D, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6E, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_64[]  = { 0x73, 0x65, 0x74, 0x2D, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_65[]  = { 0x45, 0x6E, 0x75, 0x6D,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_66[]  = { 0x3A, 0x3A,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_67[]  = { 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_68[]  = { 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_69[]  = { 0x49, 0x6E, 0x70, 0x75, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_70[]  = { 0x4C, 0x6F, 0x63, 0x61, 0x6C, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_71[]  = { 0x3A, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_72[]  = { 0x3A, 0x6E, 0x6F, 0x2D, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_73[]  = { 0x3A, 0x6E, 0x61, 0x6D, 0x65, 0x64,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_74[]  = { 0x3A, 0x71, 0x75, 0x61, 0x6E, 0x74, 0x2D, 0x69, 0x6E, 0x73, 0x74, 0x2D, 0x6D, 0x61, 0x78, 0x2D, 0x6C, 0x65, 0x76, 0x65, 0x6C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_75[]  = { 0x3A, 0x72, 0x72, 0x2D, 0x70, 0x72, 0x69, 0x6F, 0x72, 0x69, 0x74, 0x79,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_76[]  = { 0x61, 0x6E, 0x64,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_77[]  = { 0x64, 0x69, 0x73, 0x74, 0x69, 0x6E, 0x63, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_78[]  = { 0x65, 0x78, 0x69, 0x73, 0x74, 0x73,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_79[]  = { 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_80[]  = { 0x3E, 0x3D,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_81[]  = { 0x3D, 0x3E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_82[]  = { 0x3C, 0x3D,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_83[]  = { 0x6E, 0x6F, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_84[]  = { 0x6F, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_85[]  = { 0x78, 0x6F, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_86[]  = { 0x64, 0x69, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6C, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_87[]  = { 0x62, 0x76, 0x32, 0x6E, 0x61, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_88[]  = { 0x69, 0x6E, 0x74, 0x32, 0x62, 0x76,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_89[]  = { 0x72, 0x65, 0x2E, 0x6E, 0x6F, 0x73, 0x74, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_90[]  = { 0x72, 0x65, 0x2E, 0x61, 0x6C, 0x6C, 0x63, 0x68, 0x61, 0x72,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_91[]  = { 0x64, 0x74, 0x2E, 0x73, 0x69, 0x7A, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_92[]  = { 0x66, 0x6D, 0x66, 0x2E, 0x63, 0x61, 0x72, 0x64,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_93[]  = { 0x66, 0x6D, 0x66, 0x2E, 0x63, 0x61, 0x72, 0x64, 0x2E, 0x76, 0x61, 0x6C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_94[]  = { 0x69, 0x6E, 0x73, 0x74, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x75, 0x72, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_95[]  = { 0x65, 0x6D, 0x70, 0x74, 0x79, 0x73, 0x65, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_96[]  = { 0x75, 0x6E, 0x69, 0x76, 0x73, 0x65, 0x74,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_97[]  = { 0x73, 0x65, 0x70, 0x2E, 0x6E, 0x69, 0x6C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_98[]  = { 0x2B, 0x6F, 0x6F,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_99[]  = { 0x2D, 0x6F, 0x6F,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_100[]  = { 0x2B, 0x7A, 0x65, 0x72, 0x6F,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_101[]  = { 0x2D, 0x7A, 0x65, 0x72, 0x6F,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_102[]  = { 0x4E, 0x61, 0x4E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_103[]  = { 0x74, 0x6F, 0x5F, 0x66, 0x70,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_104[]  = { 0x74, 0x6F, 0x5F, 0x66, 0x70, 0x5F, 0x62, 0x76,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_105[]  = { 0x74, 0x6F, 0x5F, 0x66, 0x70, 0x5F, 0x66, 0x70,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_106[]  = { 0x74, 0x6F, 0x5F, 0x66, 0x70, 0x5F, 0x72, 0x65, 0x61, 0x6C,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_107[]  = { 0x74, 0x6F, 0x5F, 0x66, 0x70, 0x5F, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_108[]  = { 0x74, 0x6F, 0x5F, 0x66, 0x70, 0x5F, 0x75, 0x6E, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_109[]  = { 0x66, 0x70, 0x2E, 0x74, 0x6F, 0x5F, 0x75, 0x62, 0x76,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_110[]  = { 0x66, 0x70, 0x2E, 0x74, 0x6F, 0x5F, 0x73, 0x62, 0x76,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_111[]  = { 0x52, 0x4E, 0x45,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_112[]  = { 0x52, 0x4E, 0x41,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_113[]  = { 0x52, 0x54, 0x50,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_114[]  = { 0x52, 0x54, 0x4E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_115[]  = { 0x52, 0x54, 0x5A,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_116[]  = { 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4E, 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, 0x54, 0x69, 0x65, 0x73, 0x54, 0x6F, 0x45, 0x76, 0x65, 0x6E,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_117[]  = { 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x4E, 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, 0x54, 0x69, 0x65, 0x73, 0x54, 0x6F, 0x41, 0x77, 0x61, 0x79,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_118[]  = { 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x54, 0x6F, 0x77, 0x61, 0x72, 0x64, 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_119[]  = { 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x54, 0x6F, 0x77, 0x61, 0x72, 0x64, 0x4E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_120[]  = { 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x54, 0x6F, 0x77, 0x61, 0x72, 0x64, 0x5A, 0x65, 0x72, 0x6F,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_121[]  = { 0x23, 0x78,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_122[]  = { 0x23, 0x62,  ANTLR3_STRING_TERMINATOR};
+static ANTLR3_UCHAR	lit_123[]  = { 0x22, 0x22,  ANTLR3_STRING_TERMINATOR};
 
 
 
@@ -377,25 +382,25 @@ static ANTLR3_UCHAR	lit_118[]  = { 0x22, 0x22,  ANTLR3_STRING_TERMINATOR};
  */
 static ANTLR3_INLINE 
  void
-	mT__145    (pSmt2Lexer ctx);
+	mT__152    (pSmt2Lexer ctx);
 static ANTLR3_INLINE 
  void
-	mT__146    (pSmt2Lexer ctx);
+	mT__153    (pSmt2Lexer ctx);
 static ANTLR3_INLINE 
  void
-	mT__147    (pSmt2Lexer ctx);
+	mT__154    (pSmt2Lexer ctx);
 static ANTLR3_INLINE 
  void
-	mT__148    (pSmt2Lexer ctx);
+	mT__155    (pSmt2Lexer ctx);
 static ANTLR3_INLINE 
  void
-	mT__149    (pSmt2Lexer ctx);
+	mT__156    (pSmt2Lexer ctx);
 static ANTLR3_INLINE 
  void
-	mT__150    (pSmt2Lexer ctx);
+	mT__157    (pSmt2Lexer ctx);
 static ANTLR3_INLINE 
  void
-	mT__151    (pSmt2Lexer ctx);
+	mT__158    (pSmt2Lexer ctx);
 static ANTLR3_INLINE 
  void
 	mASSERT_TOK    (pSmt2Lexer ctx);
@@ -494,12 +499,33 @@ static ANTLR3_INLINE
 	mCONST_TOK    (pSmt2Lexer ctx);
 static ANTLR3_INLINE 
  void
+	mDECLARE_CODATATYPE_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDECLARE_DATATYPE_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mDECLARE_DATATYPES_2_5_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
 	mDECLARE_DATATYPES_TOK    (pSmt2Lexer ctx);
 static ANTLR3_INLINE 
  void
+	mDECLARE_CODATATYPES_2_5_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
 	mDECLARE_CODATATYPES_TOK    (pSmt2Lexer ctx);
 static ANTLR3_INLINE 
  void
+	mPAR_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mTESTER_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
+	mMATCH_TOK    (pSmt2Lexer ctx);
+static ANTLR3_INLINE 
+ void
 	mGET_MODEL_TOK    (pSmt2Lexer ctx);
 static ANTLR3_INLINE 
  void
@@ -847,7 +873,7 @@ Smt2LexerReset (pSmt2Lexer ctx)
 
 /** \brief Name of the grammar file that generated this code
  */
-static const char fileName[] = "../../../../../../src/parser/smt2/Smt2.g";
+static const char fileName[] = "../../../../src/parser/smt2/Smt2.g";
 
 /** \brief Return the name of the grammar file that generated this code.
  */
@@ -918,13 +944,13 @@ ANTLR3_API pSmt2Lexer Smt2LexerNewSSD
     }
     /* Install the implementation of our Smt2Lexer interface
      */
-    ctx->mT__145	= mT__145;
-    ctx->mT__146	= mT__146;
-    ctx->mT__147	= mT__147;
-    ctx->mT__148	= mT__148;
-    ctx->mT__149	= mT__149;
-    ctx->mT__150	= mT__150;
-    ctx->mT__151	= mT__151;
+    ctx->mT__152	= mT__152;
+    ctx->mT__153	= mT__153;
+    ctx->mT__154	= mT__154;
+    ctx->mT__155	= mT__155;
+    ctx->mT__156	= mT__156;
+    ctx->mT__157	= mT__157;
+    ctx->mT__158	= mT__158;
     ctx->mASSERT_TOK	= mASSERT_TOK;
     ctx->mCHECKSAT_TOK	= mCHECKSAT_TOK;
     ctx->mDECLARE_FUN_TOK	= mDECLARE_FUN_TOK;
@@ -957,8 +983,15 @@ ANTLR3_API pSmt2Lexer Smt2LexerNewSSD
     ctx->mPOP_TOK	= mPOP_TOK;
     ctx->mAS_TOK	= mAS_TOK;
     ctx->mCONST_TOK	= mCONST_TOK;
+    ctx->mDECLARE_CODATATYPE_TOK	= mDECLARE_CODATATYPE_TOK;
+    ctx->mDECLARE_DATATYPE_TOK	= mDECLARE_DATATYPE_TOK;
+    ctx->mDECLARE_DATATYPES_2_5_TOK	= mDECLARE_DATATYPES_2_5_TOK;
     ctx->mDECLARE_DATATYPES_TOK	= mDECLARE_DATATYPES_TOK;
+    ctx->mDECLARE_CODATATYPES_2_5_TOK	= mDECLARE_CODATATYPES_2_5_TOK;
     ctx->mDECLARE_CODATATYPES_TOK	= mDECLARE_CODATATYPES_TOK;
+    ctx->mPAR_TOK	= mPAR_TOK;
+    ctx->mTESTER_TOK	= mTESTER_TOK;
+    ctx->mMATCH_TOK	= mMATCH_TOK;
     ctx->mGET_MODEL_TOK	= mGET_MODEL_TOK;
     ctx->mECHO_TOK	= mECHO_TOK;
     ctx->mREWRITE_RULE_TOK	= mREWRITE_RULE_TOK;
@@ -1092,60 +1125,63 @@ ANTLR3_API pSmt2Lexer Smt2LexerNewSSD
  * DFA tables for the lexer
  */
 /** Static dfa state tables for Cyclic dfa:
- *    1:1: Tokens : ( T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTIONS_TOK | ITE_TOK | LET_TOK | ATTRIBUTE_TOK | LPAREN_TOK | RPAREN_TOK | INDEX_TOK | SET_LOGIC_TOK | SET_INFO_TOK | META_INFO_TOK | GE [...]
+ *    1:1: Tokens : ( T__152 | T__153 | T__154 | T__155 | T__156 | T__157 | T__158 | ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTIONS_TOK | ITE_TOK | LET_TOK | ATTRIBUTE_TOK | LPAREN_TOK | RPAREN_TOK | INDEX_TOK | SET_LOGIC_TOK | SET_INFO_TOK | META_INFO_TOK | GE [...]
  */
-static const ANTLR3_INT32 dfa15_eot[841] =
-    {
-	-1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 69, -1, -1, 70, 43, 43, 
-	43, -1, 43, 43, 43, 43, 85, 86, 87, 89, 43, 94, 96, 99, 43, 43, 104, 105, 
-	43, 43, 43, 43, 43, 43, 115, -1, -1, 116, -1, -1, -1, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 140, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 
-	43, 43, 43, -1, 80, 80, 80, 80, -1, 43, 43, 43, 43, -1, -1, -1, 169, -1, 
-	43, 43, 43, 173, -1, 174, -1, 43, 43, -1, 43, 178, 43, 43, -1, -1, 43, 
-	43, 43, 43, 43, 43, 43, 115, -1, -1, -1, -1, -1, -1, -1, -1, 194, -1, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -1, 214, 43, 
-	43, 43, 43, 43, 43, 43, 43, 223, 43, 43, 43, 43, 228, 43, 43, 231, 43, 
-	80, 80, 80, 80, 80, 43, 43, 43, 43, -1, 43, 43, 43, -1, -1, 245, 43, 247, 
-	-1, 248, 43, 250, 43, 43, 253, 43, 255, 256, 257, 258, 259, 193, -1, -1, 
-	-1, 263, 43, 265, 43, 267, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, -1, 43, 43, 43, 43, -1, 
-	43, 304, -1, 305, 80, 80, 80, 80, 80, 43, 43, 43, 43, 43, 43, 43, -1, 43, 
-	-1, -1, 43, -1, 43, 43, -1, 43, -1, -1, -1, -1, -1, 261, -1, -1, -1, 43, 
-	-1, 43, -1, 43, 43, 328, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 345, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, -1, -1, 80, 80, 80, 80, 80, 43, 43, 43, 43, 43, 43, 43, 377, 
-	378, 43, 43, 382, 43, 384, 43, 386, 43, -1, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 404, 43, 43, -1, 43, 409, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 421, 43, 43, 424, 43, 43, -1, 80, 80, 429, 80, 80, 43, 
-	43, 43, 43, 436, 43, 43, -1, -1, 440, 43, 43, -1, 447, -1, 43, -1, 43, 
-	-1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 461, 43, 43, 43, 43, -1, 43, 
-	43, 43, 43, -1, 43, 43, 476, 43, 43, 43, 43, 43, 43, 43, 43, -1, 486, 43, 
-	-1, 43, 43, 80, 80, -1, 80, 80, 43, 43, 43, 43, -1, 43, 43, 43, -1, 501, 
-	43, 43, 43, 43, 43, -1, 507, 43, 509, 43, 43, 43, 43, 43, 43, 516, 43, 
-	518, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 538, 43, -1, 
-	43, 43, 43, 43, 43, 545, 43, 43, 43, -1, 43, 43, 43, 552, 80, 80, 80, 556, 
-	557, 43, 43, 561, 43, 43, -1, 565, 566, 43, 43, 43, -1, 43, -1, 43, 43, 
-	43, 43, 43, 43, -1, 578, -1, 43, -1, 580, 581, 43, 43, 43, 586, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, -1, 598, 599, 43, 43, 602, 43, -1, 
-	43, 605, 43, 43, 43, 609, -1, 80, 80, 80, -1, -1, 43, 43, 43, -1, 618, 
-	619, -1, -1, -1, 43, 43, 43, -1, 43, 624, 43, 43, 43, 43, 43, -1, 631, 
-	-1, -1, 43, 43, 43, 43, -1, 43, 637, 43, 43, 43, 43, 43, 43, 648, 43, 43, 
-	-1, -1, 43, 43, -1, 43, 654, -1, 43, 43, 43, -1, 80, 80, 80, -1, -1, 43, 
-	43, 43, -1, -1, 664, 43, 43, 43, -1, 668, 43, 43, 43, 674, 675, -1, 676, 
-	43, 43, 43, 680, -1, 682, 43, 43, 43, 43, 43, 43, 689, 43, 43, -1, 692, 
-	43, 43, 43, 43, -1, 43, 43, 43, 700, 80, 80, 43, 43, 43, -1, 43, 43, 43, 
-	-1, 709, 43, 43, 43, 43, -1, -1, -1, 43, 43, 43, -1, 717, -1, 719, 43, 
-	43, 43, 43, 43, -1, 43, 43, -1, 727, 43, 43, 43, 43, 43, 733, -1, 80, 735, 
-	43, 43, 738, 739, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, -1, 749, -1, 
-	43, 43, 752, 753, 43, 43, 43, -1, 43, 43, 43, 43, 43, -1, 80, -1, 763, 
-	764, -1, -1, 43, 43, 43, 43, 43, 43, 771, 43, 43, -1, 43, 43, -1, -1, 43, 
-	777, 43, 779, 780, 781, 43, 783, 80, -1, -1, 787, 43, 43, 43, 43, 792, 
-	-1, 43, 43, 43, 43, 43, -1, 798, -1, -1, -1, 799, -1, 80, -1, -1, -1, 801, 
-	43, 43, 43, -1, 805, 43, 43, 43, 43, -1, -1, 80, -1, 43, 43, 43, -1, 43, 
-	815, 43, 43, 80, 43, 43, 43, 823, -1, 43, 825, 80, 43, 43, 829, 830, -1, 
-	831, -1, 80, 43, 43, -1, -1, -1, 80, 43, 43, 838, 839, 840, -1, -1, -1
-    };
-static const ANTLR3_INT32 dfa15_eof[841] =
+static const ANTLR3_INT32 dfa15_eot[881] =
+    {
+	-1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 70, -1, -1, 71, 43, 43, 
+	43, -1, 43, 43, 43, 43, 88, 89, 90, 92, 43, 97, 99, 102, 43, 43, 107, 108, 
+	43, 43, 43, 43, 43, 43, 118, -1, -1, 119, -1, -1, -1, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 143, 43, 43, 43, 43, 43, 43, 43, 43, 154, 43, 43, -1, -1, 
+	43, 43, 43, 43, 43, 43, -1, 83, 83, 83, 83, -1, 43, 43, 43, 43, -1, -1, 
+	-1, 175, -1, 43, 43, 43, 179, -1, 180, -1, 43, 43, -1, 43, 184, 43, 43, 
+	-1, -1, 43, 43, 43, 43, 43, 43, 43, 118, -1, -1, -1, -1, -1, -1, -1, -1, 
+	200, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	-1, 220, 43, 43, 43, 43, 43, 43, 43, 43, 229, -1, 43, 43, 43, 43, 235, 
+	43, 43, 43, 239, 240, 43, 83, 83, 83, 83, 83, 43, 43, 43, 43, -1, 43, 43, 
+	43, -1, -1, 254, 43, 256, -1, 257, 43, 259, 43, 43, 262, 43, 264, 265, 
+	266, 267, 268, 199, -1, -1, -1, 272, 43, 274, 43, 276, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 
+	43, -1, -1, 43, 43, 43, 43, -1, 43, 43, 314, -1, -1, 316, 83, 83, 83, 83, 
+	83, 43, 43, 43, 43, 43, 43, 43, -1, 43, -1, -1, 43, -1, 43, 43, -1, 43, 
+	-1, -1, -1, -1, -1, 270, -1, -1, -1, 43, -1, 43, -1, 43, 43, 345, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 362, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 381, -1, -1, -1, 83, 
+	83, 83, 83, 83, 43, 43, 43, 43, 43, 43, 43, 395, 396, 43, 43, -1, 400, 
+	-1, -1, -1, -1, -1, 43, 402, 43, 404, 43, -1, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 422, 43, 43, -1, 43, 427, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 439, 43, 43, 442, 43, 43, -1, -1, 83, 83, 448, 83, 83, 
+	43, 43, 43, 43, 455, 43, 43, -1, -1, 459, 43, 43, -1, 467, -1, 43, -1, 
+	43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 481, 43, 43, 43, 43, -1, 
+	43, 43, 43, 43, -1, 43, 43, 496, 43, 43, 43, 43, 43, 43, 43, 43, -1, 506, 
+	43, -1, 43, 43, -1, 83, 83, -1, 83, 83, 43, 43, 43, 43, -1, 43, 43, 43, 
+	-1, 521, 43, 43, 43, 43, 43, -1, -1, 527, 43, 529, 43, 43, 43, 43, 43, 
+	43, 536, 43, 538, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	558, 43, -1, 43, 43, 43, 43, 43, 565, 43, 43, 43, -1, 43, 43, 43, 572, 
+	83, 83, 83, 576, 577, 43, 43, 581, 43, 43, -1, 585, 586, 43, 43, 43, -1, 
+	43, -1, 43, 43, 43, 43, 43, 43, -1, 598, -1, 43, -1, 600, 601, 43, 43, 
+	43, 606, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, -1, 618, 619, 43, 
+	43, 622, 43, -1, 43, 625, 43, 43, 43, 629, -1, 83, 83, 83, -1, -1, 43, 
+	43, 43, -1, 638, 639, -1, -1, -1, 43, 43, 43, -1, 43, 646, 43, 43, 43, 
+	43, 43, -1, 653, -1, -1, 43, 43, 43, 43, -1, 43, 659, 43, 43, 43, 43, 43, 
+	43, 670, 43, 43, -1, -1, 43, 43, -1, 43, 676, -1, 43, 43, 43, -1, 83, 83, 
+	83, -1, -1, 43, 43, 43, -1, -1, -1, -1, 688, 43, 43, 43, -1, 692, 43, 43, 
+	43, 698, 699, -1, 700, 43, 43, 43, 704, -1, 706, 43, 43, 43, 43, 43, 43, 
+	713, 43, 43, -1, 716, 43, 43, 43, 43, -1, 43, 43, 43, 724, 83, 83, 43, 
+	43, 43, -1, -1, -1, 43, 43, 43, -1, 734, 43, 43, 43, 43, -1, -1, -1, 43, 
+	43, 43, -1, 742, -1, 744, 43, 43, 43, 43, 43, -1, 43, 43, -1, 752, 43, 
+	43, 43, 43, 43, 758, -1, 83, 760, 43, 43, 763, -1, 764, 43, 43, -1, 43, 
+	43, 43, 43, 43, 43, 43, -1, 774, -1, 43, 776, 43, 778, 43, 43, 43, -1, 
+	43, 43, 43, 43, 43, -1, 83, -1, 788, 789, -1, -1, 43, 43, 43, 43, 43, 43, 
+	797, 43, 43, -1, 43, -1, 43, -1, 43, 803, 43, 805, 806, 807, 43, 809, 83, 
+	-1, -1, -1, 813, 43, 43, 43, 43, 818, -1, 43, 43, 43, 43, 43, -1, 824, 
+	-1, -1, -1, 825, -1, 83, -1, -1, -1, 828, 43, 43, 43, -1, 833, 43, 43, 
+	837, 43, -1, -1, 83, -1, -1, 43, 43, 43, -1, -1, 43, 43, 845, -1, 43, 83, 
+	43, 43, 43, 853, 855, -1, -1, 858, 83, 43, 43, 862, 863, -1, 864, -1, -1, 
+	-1, -1, 83, 43, 43, -1, -1, -1, -1, 83, 43, 43, -1, -1, -1, -1, 876, 877, 
+	878, -1, -1, -1, -1, -1
+    };
+static const ANTLR3_INT32 dfa15_eof[881] =
     {
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
@@ -1193,220 +1229,232 @@ static const ANTLR3_INT32 dfa15_eof[841] =
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
     };
-static const ANTLR3_INT32 dfa15_min[841] =
+static const ANTLR3_INT32 dfa15_min[881] =
     {
 	9, -1, 99, 101, 101, 101, 110, 104, 101, 101, 110, 101, 33, -1, -1, 33, 
-	101, 111, 110, 33, 111, 97, 110, 111, 33, 33, 33, 33, 109, 33, 33, 33, 
-	111, 114, 33, 33, 111, 118, 110, 97, 111, 78, 0, -1, -1, 46, 98, 0, -1, 
-	105, 104, 112, 46, 116, 103, 112, 110, 114, 33, 100, 101, 110, 99, 115, 
-	46, 116, 101, 99, 116, -1, -1, 116, 115, 112, 117, -1, 97, 97, 117, 114, 
-	-1, 110, 114, 112, 99, -1, -1, -1, 33, -1, 114, 102, 46, 33, -1, 33, -1, 
-	111, 101, -1, 116, 33, 111, 101, -1, -1, 114, 50, 105, 78, 95, 65, 78, 
-	0, -1, -1, -1, -1, -1, -1, 0, 0, 34, 0, 114, 115, 111, 116, 101, 101, 97, 
-	97, 110, 110, 112, 45, 46, 116, 111, 101, -1, 33, 99, 115, 108, 105, 116, 
-	105, 115, 45, 33, 108, 45, 50, 116, 33, 97, 104, 33, 109, 116, 45, 109, 
-	97, 45, 115, 105, 117, 97, -1, 97, 46, 116, -1, -1, 33, 114, 33, -1, 33, 
-	114, 33, 110, 118, 33, 102, 33, 33, 33, 33, 33, 0, 0, -1, 0, 34, 97, 33, 
-	116, 33, 121, 97, 116, 111, 108, 116, 100, 95, 108, 105, 110, 104, 95, 
-	114, -1, 107, 116, 97, 110, 105, 115, 105, 97, -1, 117, 99, 98, 45, -1, 
-	45, 33, -1, 33, 116, 112, 101, 110, 112, 116, 97, 116, 108, 108, 99, 111, 
-	-1, 111, -1, -1, 111, -1, 97, 115, -1, 112, -1, -1, -1, -1, -1, 0, -1, 
-	-1, 0, 99, -1, 115, -1, 115, 116, 33, 115, 108, 101, 78, 101, 105, 111, 
-	110, 112, 105, 45, 101, 116, 45, 33, 114, 101, 110, 105, 122, 97, 115, 
-	114, 110, 110, 112, 111, 101, 100, 111, 118, 99, 105, -1, 0, 101, 97, 100, 
-	116, 114, 97, 98, 86, 86, 108, 97, 95, 33, 33, 116, 101, 33, 116, 33, 101, 
-	33, 97, 0, 116, 99, 95, 101, 111, 120, 102, 103, 102, 116, 108, 102, 120, 
-	33, 115, 97, -1, 101, 33, 99, 98, 101, 108, 115, 111, 115, 102, 116, 100, 
-	33, 101, 110, 33, 108, 110, -1, 114, 116, 33, 45, 105, 110, 108, 97, 97, 
-	33, 114, 115, -1, -1, 33, 116, 98, -1, 33, -1, 116, -1, 115, -1, 114, 104, 
+	97, 97, 110, 33, 111, 97, 110, 111, 33, 33, 33, 33, 109, 33, 33, 33, 111, 
+	114, 33, 33, 111, 118, 110, 97, 111, 78, 0, -1, -1, 46, 98, 0, -1, 105, 
+	104, 112, 46, 116, 103, 112, 110, 114, 33, 100, 101, 110, 99, 115, 46, 
+	116, 101, 33, 99, 116, -1, -1, 116, 116, 115, 112, 114, 117, -1, 97, 97, 
+	117, 114, -1, 110, 114, 112, 99, -1, -1, -1, 33, -1, 114, 102, 46, 33, 
+	-1, 33, -1, 111, 101, -1, 116, 33, 111, 101, -1, -1, 114, 50, 105, 78, 
+	95, 65, 78, 0, -1, -1, -1, -1, -1, -1, 0, 0, 34, 0, 114, 115, 111, 116, 
+	101, 101, 97, 97, 110, 110, 112, 45, 46, 116, 111, 101, -1, 33, 99, 115, 
+	108, 105, 116, 105, 115, 45, 33, 0, 108, 45, 50, 116, 33, 97, 99, 104, 
+	33, 33, 109, 116, 45, 109, 97, 45, 115, 105, 117, 97, -1, 97, 46, 116, 
+	-1, -1, 33, 114, 33, -1, 33, 114, 33, 110, 118, 33, 102, 33, 33, 33, 33, 
+	33, 0, 0, -1, 0, 34, 97, 33, 116, 33, 121, 97, 116, 111, 108, 116, 100, 
+	95, 108, 105, 110, 104, 95, 114, -1, 107, 116, 97, 110, 105, 115, 105, 
+	97, -1, -1, 117, 99, 98, 45, -1, 45, 104, 33, -1, 0, 33, 116, 112, 101, 
+	110, 112, 116, 97, 116, 108, 108, 99, 111, -1, 111, -1, -1, 111, -1, 97, 
+	115, 0, 112, 0, 0, 0, 0, 0, 0, -1, -1, 0, 99, -1, 115, -1, 115, 116, 33, 
+	115, 108, 101, 78, 101, 105, 111, 110, 112, 105, 45, 101, 116, 45, 33, 
+	114, 101, 110, 105, 122, 97, 115, 114, 110, 110, 112, 111, 101, 100, 111, 
+	118, 99, 105, 33, -1, -1, 0, 101, 97, 100, 116, 114, 97, 98, 86, 86, 108, 
+	97, 95, 33, 33, 116, 101, -1, 33, -1, -1, -1, -1, -1, 116, 33, 101, 33, 
+	97, 0, 116, 99, 95, 101, 111, 120, 102, 103, 102, 116, 108, 102, 120, 33, 
+	115, 97, -1, 101, 33, 99, 98, 101, 108, 115, 111, 115, 102, 116, 100, 33, 
+	101, 110, 33, 108, 110, 0, -1, 114, 116, 33, 45, 105, 110, 108, 97, 97, 
+	33, 114, 115, -1, -1, 33, 116, 98, 0, 33, -1, 116, -1, 115, -1, 114, 104, 
 	108, 97, 119, 116, 121, 105, 111, 105, 33, 117, 110, 116, 112, -1, 97, 
 	105, 45, 99, -1, 116, 108, 33, 117, 101, 111, 97, 111, 105, 101, 100, -1, 
-	33, 115, -1, 111, 102, 110, 116, -1, 105, 111, 116, 101, 114, 114, -1, 
-	100, 98, 98, -1, 33, 118, 112, 101, 105, 110, -1, 33, 115, 33, 97, 101, 
-	105, 114, 97, 101, 33, 99, 33, 111, 0, 110, 118, 101, 101, 114, 116, 110, 
-	110, 99, 117, 111, 111, 33, 101, -1, 101, 103, 114, 102, 116, 33, 111, 
-	108, 105, -1, 116, 115, 111, 33, 101, 110, 114, 33, 33, 105, 105, 33, 118, 
-	118, 0, 33, 33, 97, 103, 115, 0, 101, -1, 114, 102, 103, 101, 114, 110, 
-	-1, 33, -1, 110, -1, 33, 33, 110, 100, 111, 33, 116, 116, 117, 111, 97, 
-	111, 114, 97, 110, 114, 110, -1, 33, 33, 110, 116, 33, 45, -1, 110, 33, 
-	115, 114, 117, 33, -1, 114, 115, 105, 0, 0, 97, 97, 118, -1, 33, 33, -1, 
-	-1, -1, 108, 110, 105, -1, 114, 33, 116, 104, 115, 100, 100, -1, 33, -1, 
-	-1, 100, 114, 117, 112, -1, 104, 33, 110, 114, 116, 100, 101, 114, 33, 
-	116, 115, -1, -1, 109, 105, -1, 99, 33, -1, 106, 97, 114, -1, 110, 116, 
-	116, -1, -1, 98, 98, 97, -1, -1, 33, 101, 103, 116, -1, 33, 116, 116, 78, 
-	33, 33, -1, 33, 105, 99, 97, 33, -1, 33, 116, 97, 97, 115, 100, 109, 33, 
-	114, 45, -1, 33, 116, 101, 111, 111, -1, 117, 105, 101, 33, 45, 121, 108, 
-	108, 108, -1, 100, 110, 105, -1, 33, 84, 111, 101, 101, -1, -1, -1, 116, 
-	116, 103, -1, 33, -1, 33, 116, 116, 116, 115, 101, -1, 101, 114, -1, 33, 
-	110, 110, 114, 110, 110, 33, -1, 109, 33, 101, 101, 33, 33, 101, 111, -1, 
-	105, 115, 103, 114, 101, 105, 97, -1, 33, -1, 121, 97, 33, 33, 100, 99, 
-	101, -1, 116, 115, 101, 99, 116, -1, 97, -1, 33, 33, -1, -1, 100, 110, 
-	101, 105, 97, 111, 33, 111, 116, -1, 112, 116, -1, -1, 45, 33, 99, 33, 
-	33, 33, 116, 33, 120, 0, 0, 33, 115, 115, 116, 116, 33, -1, 110, 105, 101, 
-	121, 118, -1, 33, -1, -1, -1, 33, -1, 45, -1, -1, -1, 33, 84, 105, 105, 
-	-1, 33, 111, 115, 112, 97, -1, -1, 108, -1, 111, 118, 118, -1, 110, 33, 
-	101, 114, 101, 65, 101, 101, 33, -1, 115, 33, 118, 118, 119, 33, 33, -1, 
-	33, -1, 101, 101, 97, -1, -1, -1, 108, 110, 121, 33, 33, 33, -1, -1, -1
-    };
-static const ANTLR3_INT32 dfa15_max[841] =
+	33, 115, -1, 111, 102, -1, 110, 116, -1, 105, 111, 116, 101, 114, 114, 
+	-1, 100, 98, 98, -1, 33, 118, 112, 101, 105, 110, -1, -1, 33, 115, 33, 
+	97, 101, 105, 114, 97, 101, 33, 99, 33, 111, 0, 110, 118, 101, 101, 114, 
+	116, 110, 110, 99, 117, 111, 111, 33, 101, -1, 101, 103, 114, 102, 116, 
+	33, 111, 108, 105, -1, 116, 115, 111, 33, 101, 110, 114, 33, 33, 105, 105, 
+	33, 118, 118, 0, 33, 33, 97, 103, 115, 0, 101, -1, 114, 102, 103, 101, 
+	114, 110, -1, 33, -1, 110, -1, 33, 33, 110, 100, 111, 33, 116, 116, 117, 
+	111, 111, 97, 114, 97, 110, 114, 110, -1, 33, 33, 110, 116, 33, 45, -1, 
+	110, 33, 115, 114, 117, 33, -1, 114, 115, 105, 0, 0, 97, 97, 118, -1, 33, 
+	33, -1, 0, 0, 108, 110, 105, -1, 114, 33, 116, 104, 115, 100, 100, -1, 
+	33, -1, -1, 100, 114, 117, 112, -1, 104, 33, 110, 114, 100, 116, 101, 114, 
+	33, 116, 115, -1, -1, 109, 105, -1, 99, 33, -1, 106, 97, 114, -1, 110, 
+	116, 116, -1, -1, 98, 98, 97, 0, 0, -1, -1, 33, 101, 103, 116, -1, 33, 
+	116, 116, 78, 33, 33, -1, 33, 105, 99, 97, 33, -1, 33, 116, 97, 115, 97, 
+	100, 109, 33, 114, 45, -1, 33, 116, 101, 111, 111, -1, 117, 105, 101, 33, 
+	45, 121, 108, 108, 108, -1, -1, 0, 100, 110, 105, -1, 33, 84, 111, 101, 
+	101, -1, -1, -1, 116, 116, 103, -1, 33, -1, 33, 116, 116, 116, 115, 101, 
+	-1, 101, 114, -1, 33, 110, 110, 114, 110, 110, 33, -1, 109, 33, 101, 101, 
+	33, -1, 33, 101, 111, -1, 105, 115, 103, 114, 101, 105, 97, -1, 33, -1, 
+	97, 33, 121, 33, 100, 99, 101, -1, 116, 115, 101, 99, 116, -1, 97, -1, 
+	33, 33, -1, 0, 100, 110, 101, 105, 97, 111, 33, 111, 116, -1, 116, -1, 
+	112, -1, 45, 33, 99, 33, 33, 33, 116, 33, 120, 0, 0, -1, 33, 115, 115, 
+	116, 116, 33, -1, 110, 105, 121, 101, 118, -1, 33, -1, -1, -1, 33, -1, 
+	45, -1, -1, 0, 33, 84, 105, 105, 0, 33, 111, 112, 33, 97, -1, -1, 108, 
+	-1, -1, 111, 118, 118, -1, -1, 110, 101, 33, 0, 114, 101, 65, 101, 101, 
+	33, 33, 0, -1, 33, 118, 118, 119, 33, 33, -1, 33, 0, -1, -1, -1, 101, 101, 
+	97, 0, 0, 0, -1, 108, 110, 121, -1, -1, -1, -1, 33, 33, 33, -1, 0, 0, -1, 
+	-1
+    };
+static const ANTLR3_INT32 dfa15_max[881] =
     {
 	126, -1, 120, 111, 121, 101, 115, 111, 116, 101, 116, 101, 126, -1, -1, 
 	126, 101, 117, 110, 126, 111, 97, 110, 111, 126, 126, 126, 126, 112, 126, 
 	126, 126, 111, 114, 126, 126, 111, 118, 110, 97, 111, 84, 65535, -1, -1, 
 	57, 120, 65535, -1, 116, 104, 112, 115, 117, 109, 116, 110, 114, 126, 100, 
-	101, 110, 102, 118, 46, 116, 101, 118, 116, -1, -1, 116, 115, 112, 117, 
-	-1, 97, 111, 117, 114, -1, 110, 114, 112, 99, -1, -1, -1, 126, -1, 114, 
-	102, 46, 126, -1, 126, -1, 111, 101, -1, 116, 126, 111, 101, -1, -1, 114, 
-	50, 105, 78, 95, 69, 90, 65535, -1, -1, -1, -1, -1, -1, 65535, 65535, 34, 
-	65535, 114, 116, 111, 116, 101, 101, 110, 97, 110, 110, 112, 45, 46, 116, 
-	111, 101, -1, 126, 99, 115, 108, 105, 116, 105, 115, 45, 126, 108, 45, 
-	50, 116, 126, 97, 104, 126, 109, 116, 45, 109, 97, 45, 115, 105, 117, 97, 
-	-1, 97, 46, 116, -1, -1, 126, 114, 126, -1, 126, 114, 126, 110, 118, 126, 
-	102, 126, 126, 126, 126, 126, 65535, 65535, -1, 0, 34, 97, 126, 116, 126, 
-	121, 97, 116, 111, 108, 116, 100, 95, 108, 111, 110, 104, 95, 114, -1, 
-	107, 116, 97, 110, 105, 115, 105, 118, -1, 117, 99, 98, 45, -1, 45, 126, 
-	-1, 126, 116, 112, 101, 110, 112, 116, 97, 116, 108, 108, 99, 111, -1, 
-	111, -1, -1, 111, -1, 97, 115, -1, 112, -1, -1, -1, -1, -1, 65535, -1, 
-	-1, 0, 99, -1, 115, -1, 115, 116, 126, 115, 108, 101, 84, 101, 105, 111, 
-	110, 112, 105, 45, 101, 116, 45, 126, 114, 101, 110, 105, 122, 97, 115, 
-	114, 110, 110, 112, 111, 101, 100, 111, 118, 99, 105, -1, 0, 101, 97, 100, 
-	116, 114, 97, 98, 86, 86, 108, 97, 95, 126, 126, 116, 101, 126, 116, 126, 
-	101, 126, 97, 0, 116, 99, 95, 101, 111, 120, 102, 103, 102, 116, 108, 105, 
-	120, 126, 115, 97, -1, 101, 126, 99, 98, 101, 108, 115, 111, 115, 102, 
-	116, 100, 126, 101, 110, 126, 108, 110, -1, 114, 116, 126, 45, 105, 110, 
-	108, 97, 97, 126, 114, 117, -1, -1, 126, 116, 117, -1, 126, -1, 116, -1, 
-	115, -1, 114, 104, 114, 97, 119, 116, 121, 105, 111, 105, 126, 117, 110, 
-	116, 114, -1, 121, 105, 45, 115, -1, 116, 108, 126, 117, 105, 111, 97, 
-	111, 105, 101, 100, -1, 126, 115, -1, 111, 102, 110, 116, -1, 105, 111, 
+	101, 110, 102, 118, 46, 116, 101, 126, 118, 116, -1, -1, 116, 116, 115, 
+	112, 114, 117, -1, 97, 111, 117, 114, -1, 110, 114, 112, 99, -1, -1, -1, 
+	126, -1, 114, 102, 46, 126, -1, 126, -1, 111, 101, -1, 116, 126, 111, 101, 
+	-1, -1, 114, 50, 105, 78, 95, 69, 90, 65535, -1, -1, -1, -1, -1, -1, 65535, 
+	65535, 34, 65535, 114, 116, 111, 116, 101, 101, 110, 97, 110, 110, 112, 
+	45, 46, 116, 111, 101, -1, 126, 99, 115, 108, 105, 116, 105, 115, 45, 126, 
+	0, 108, 45, 50, 116, 126, 97, 99, 104, 126, 126, 109, 116, 45, 109, 97, 
+	45, 115, 105, 117, 97, -1, 97, 46, 116, -1, -1, 126, 114, 126, -1, 126, 
+	114, 126, 110, 118, 126, 102, 126, 126, 126, 126, 126, 65535, 65535, -1, 
+	0, 34, 97, 126, 116, 126, 121, 97, 116, 111, 108, 116, 100, 95, 108, 111, 
+	110, 104, 95, 114, -1, 107, 116, 97, 110, 105, 115, 105, 118, -1, -1, 117, 
+	99, 98, 45, -1, 45, 104, 126, -1, 0, 126, 116, 112, 101, 110, 112, 116, 
+	97, 116, 108, 108, 99, 111, -1, 111, -1, -1, 111, -1, 97, 115, 0, 112, 
+	0, 0, 0, 0, 0, 65535, -1, -1, 0, 99, -1, 115, -1, 115, 116, 126, 115, 108, 
+	101, 84, 101, 105, 111, 110, 112, 105, 45, 101, 116, 45, 126, 114, 101, 
+	110, 105, 122, 97, 115, 114, 110, 110, 112, 111, 101, 100, 111, 118, 99, 
+	105, 126, -1, -1, 0, 101, 97, 100, 116, 114, 97, 98, 86, 86, 108, 97, 95, 
+	126, 126, 116, 101, -1, 126, -1, -1, -1, -1, -1, 116, 126, 101, 126, 97, 
+	0, 116, 99, 95, 101, 111, 120, 102, 103, 102, 116, 108, 105, 120, 126, 
+	115, 97, -1, 101, 126, 99, 98, 101, 108, 115, 111, 115, 102, 116, 100, 
+	126, 101, 110, 126, 108, 110, 0, -1, 114, 116, 126, 45, 105, 110, 108, 
+	97, 97, 126, 114, 117, -1, -1, 126, 116, 117, 0, 126, -1, 116, -1, 115, 
+	-1, 114, 104, 114, 97, 119, 116, 121, 105, 111, 105, 126, 117, 110, 116, 
+	114, -1, 121, 105, 45, 115, -1, 116, 108, 126, 117, 105, 111, 97, 111, 
+	105, 101, 100, -1, 126, 115, -1, 111, 102, -1, 110, 116, -1, 105, 111, 
 	116, 101, 114, 114, -1, 100, 98, 98, -1, 126, 118, 112, 101, 105, 110, 
-	-1, 126, 115, 126, 97, 101, 105, 114, 97, 101, 126, 99, 126, 111, 0, 110, 
-	118, 101, 101, 114, 116, 110, 110, 118, 117, 111, 111, 126, 101, -1, 101, 
-	103, 114, 102, 116, 126, 111, 108, 105, -1, 116, 115, 111, 126, 101, 110, 
-	114, 126, 126, 105, 105, 126, 118, 118, 0, 126, 126, 97, 103, 115, 0, 101, 
-	-1, 114, 102, 103, 101, 114, 110, -1, 126, -1, 110, -1, 126, 126, 110, 
-	119, 111, 126, 116, 116, 117, 111, 97, 111, 114, 97, 110, 114, 110, -1, 
-	126, 126, 110, 116, 126, 45, -1, 110, 126, 115, 114, 117, 126, -1, 114, 
-	115, 105, 0, 0, 97, 97, 118, -1, 126, 126, -1, -1, -1, 108, 110, 105, -1, 
-	114, 126, 116, 104, 115, 100, 100, -1, 126, -1, -1, 100, 114, 117, 112, 
-	-1, 104, 126, 110, 114, 116, 110, 105, 114, 126, 116, 115, -1, -1, 109, 
-	105, -1, 99, 126, -1, 106, 97, 114, -1, 110, 116, 116, -1, -1, 98, 98, 
-	97, -1, -1, 126, 101, 103, 116, -1, 126, 116, 116, 90, 126, 126, -1, 126, 
-	105, 99, 97, 126, -1, 126, 116, 97, 97, 115, 100, 109, 126, 114, 45, -1, 
-	126, 116, 101, 111, 111, -1, 117, 105, 101, 126, 45, 121, 108, 108, 108, 
-	-1, 100, 110, 105, -1, 126, 84, 111, 101, 101, -1, -1, -1, 116, 116, 103, 
-	-1, 126, -1, 126, 116, 116, 116, 115, 101, -1, 101, 114, -1, 126, 110, 
-	110, 114, 110, 110, 126, -1, 109, 126, 101, 101, 126, 126, 101, 111, -1, 
-	105, 115, 103, 114, 101, 105, 97, -1, 126, -1, 121, 97, 126, 126, 100, 
-	99, 101, -1, 116, 115, 101, 99, 116, -1, 97, -1, 126, 126, -1, -1, 100, 
-	110, 101, 105, 97, 111, 126, 111, 116, -1, 112, 116, -1, -1, 45, 126, 99, 
-	126, 126, 126, 116, 126, 120, 0, 0, 126, 115, 115, 116, 116, 126, -1, 110, 
-	105, 101, 121, 118, -1, 126, -1, -1, -1, 126, -1, 45, -1, -1, -1, 126, 
-	84, 105, 105, -1, 126, 111, 115, 112, 97, -1, -1, 108, -1, 111, 118, 118, 
-	-1, 110, 126, 101, 114, 101, 69, 101, 101, 126, -1, 115, 126, 118, 118, 
-	119, 126, 126, -1, 126, -1, 101, 101, 97, -1, -1, -1, 108, 110, 121, 126, 
-	126, 126, -1, -1, -1
-    };
-static const ANTLR3_INT32 dfa15_accept[841] =
+	-1, -1, 126, 115, 126, 97, 101, 105, 114, 97, 101, 126, 99, 126, 111, 0, 
+	110, 118, 101, 101, 114, 116, 110, 110, 118, 117, 111, 111, 126, 101, -1, 
+	101, 103, 114, 102, 116, 126, 111, 108, 105, -1, 116, 115, 111, 126, 101, 
+	110, 114, 126, 126, 105, 105, 126, 118, 118, 0, 126, 126, 97, 103, 115, 
+	0, 101, -1, 114, 102, 103, 101, 114, 110, -1, 126, -1, 110, -1, 126, 126, 
+	110, 119, 111, 126, 116, 116, 117, 111, 111, 97, 114, 97, 110, 114, 110, 
+	-1, 126, 126, 110, 116, 126, 45, -1, 110, 126, 115, 114, 117, 126, -1, 
+	114, 115, 105, 0, 0, 97, 97, 118, -1, 126, 126, -1, 0, 0, 108, 110, 105, 
+	-1, 114, 126, 116, 104, 115, 100, 100, -1, 126, -1, -1, 100, 114, 117, 
+	112, -1, 104, 126, 110, 114, 110, 116, 105, 114, 126, 116, 115, -1, -1, 
+	109, 105, -1, 99, 126, -1, 106, 97, 114, -1, 110, 116, 116, -1, -1, 98, 
+	98, 97, 0, 0, -1, -1, 126, 101, 103, 116, -1, 126, 116, 116, 90, 126, 126, 
+	-1, 126, 105, 99, 97, 126, -1, 126, 116, 97, 115, 97, 100, 109, 126, 114, 
+	45, -1, 126, 116, 101, 111, 111, -1, 117, 105, 101, 126, 45, 121, 108, 
+	108, 108, -1, -1, 0, 100, 110, 105, -1, 126, 84, 111, 101, 101, -1, -1, 
+	-1, 116, 116, 103, -1, 126, -1, 126, 116, 116, 116, 115, 101, -1, 101, 
+	114, -1, 126, 110, 110, 114, 110, 110, 126, -1, 109, 126, 101, 101, 126, 
+	-1, 126, 101, 111, -1, 105, 115, 103, 114, 101, 105, 97, -1, 126, -1, 97, 
+	126, 121, 126, 100, 99, 101, -1, 116, 115, 101, 99, 116, -1, 97, -1, 126, 
+	126, -1, 0, 100, 110, 101, 105, 97, 111, 126, 111, 116, -1, 116, -1, 112, 
+	-1, 45, 126, 99, 126, 126, 126, 116, 126, 120, 0, 0, -1, 126, 115, 115, 
+	116, 116, 126, -1, 110, 105, 121, 101, 118, -1, 126, -1, -1, -1, 126, -1, 
+	45, -1, -1, 0, 126, 84, 105, 105, 0, 126, 111, 112, 126, 97, -1, -1, 108, 
+	-1, -1, 111, 118, 118, -1, -1, 110, 101, 126, 0, 114, 101, 69, 101, 101, 
+	126, 126, 0, -1, 126, 118, 118, 119, 126, 126, -1, 126, 0, -1, -1, -1, 
+	101, 101, 97, 0, 0, 0, -1, 108, 110, 121, -1, -1, -1, -1, 126, 126, 126, 
+	-1, 0, 0, -1, -1
+    };
+static const ANTLR3_INT32 dfa15_accept[881] =
     {
 	-1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 27, 28, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 142, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 26, 29, 
-	-1, -1, -1, -1, 66, -1, -1, -1, -1, 132, -1, -1, -1, -1, 76, 78, 80, -1, 
-	81, -1, -1, -1, -1, 84, -1, 87, -1, -1, 89, -1, -1, -1, -1, 92, 93, -1, 
-	-1, -1, -1, -1, -1, -1, -1, 130, 131, 135, 136, 137, 138, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, 86, -1, -1, -1, 85, 88, -1, -1, -1, 
-	91, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 140, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	77, -1, -1, -1, -1, -1, -1, -1, -1, 24, -1, -1, -1, -1, 25, -1, -1, 37, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 108, -1, 90, 107, -1, 
-	94, -1, -1, 111, -1, 120, 121, 122, 123, 124, -1, 139, 141, -1, -1, 21, 
-	-1, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, 110, 109, -1, -1, -1, 112, -1, 82, -1, 3, -1, 22, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, -1, -1, 50, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 55, -1, -1, 97, -1, -1, -1, 
-	-1, 73, -1, -1, -1, -1, -1, -1, 83, -1, -1, -1, 96, -1, -1, -1, -1, -1, 
-	-1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, 53, -1, 
-	31, -1, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, 79, -1, -1, -1, -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, 71, -1, 
-	-1, -1, -1, -1, -1, -1, -1, 101, -1, -1, 105, 113, 114, -1, -1, -1, 104, 
-	-1, -1, -1, -1, -1, -1, -1, 30, -1, 57, 58, -1, -1, -1, -1, 9, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, 95, 16, -1, -1, 19, -1, -1, 42, -1, 
-	-1, -1, 32, -1, -1, -1, 67, 68, -1, -1, -1, 118, 119, -1, -1, -1, -1, 99, 
-	-1, -1, -1, -1, -1, -1, 34, -1, -1, -1, -1, -1, 62, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, 12, -1, -1, -1, -1, -1, 35, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, 115, -1, -1, -1, 4, -1, -1, -1, -1, -1, 6, 64, 7, -1, -1, -1, 
-	59, -1, 10, -1, -1, -1, -1, -1, -1, 60, -1, -1, 15, -1, -1, -1, -1, -1, 
-	-1, -1, 72, -1, -1, -1, -1, -1, -1, -1, -1, 5, -1, -1, -1, -1, -1, -1, 
-	-1, 48, -1, 11, -1, -1, -1, -1, -1, -1, -1, 52, -1, -1, -1, -1, -1, 103, 
-	-1, 75, -1, -1, 102, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, 
-	51, 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, 44, -1, -1, -1, -1, -1, 13, -1, 17, 18, 20, -1, 63, -1, 69, 70, 117, 
-	-1, -1, -1, -1, 129, -1, -1, -1, -1, -1, 14, 56, -1, 23, -1, -1, -1, 45, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, -1, -1, -1, -1, -1, 46, 
-	-1, 61, -1, -1, -1, 127, 128, 41, -1, -1, -1, -1, -1, -1, 74, 125, 126
-    };
-static const ANTLR3_INT32 dfa15_special[841] =
-    {
-	14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, 140, 141, -1, -1, -1, 149, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 26, 
+	29, -1, -1, -1, -1, -1, -1, 73, -1, -1, -1, -1, 139, -1, -1, -1, -1, 83, 
+	85, 87, -1, 88, -1, -1, -1, -1, 91, -1, 94, -1, -1, 96, -1, -1, -1, -1, 
+	99, 100, -1, -1, -1, -1, -1, -1, -1, -1, 137, 138, 142, 143, 144, 145, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, 38, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, 
+	-1, -1, 92, 95, -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, 147, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 24, 47, 
+	-1, -1, -1, -1, 25, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, 115, -1, 97, 114, -1, 101, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, 146, 148, -1, -1, 21, -1, 50, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, 4, 18, 16, 21, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, 46, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 118, -1, 127, 128, 
+	129, 130, 131, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 72, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, 117, 116, -1, -1, -1, -1, -1, 89, -1, 3, -1, 22, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, -1, -1, 
+	-1, 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, 104, -1, 
+	-1, 48, -1, -1, 80, -1, -1, -1, -1, -1, -1, 90, -1, -1, -1, 103, -1, -1, 
+	-1, -1, -1, -1, 119, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 107, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, -1, -1, -1, -1, 
+	-1, -1, 60, -1, 31, -1, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, 86, -1, -1, -1, -1, -1, -1, 33, -1, -1, -1, -1, 
+	-1, -1, 78, -1, -1, -1, -1, -1, -1, -1, -1, 108, -1, -1, 112, -1, -1, -1, 
+	-1, -1, 111, -1, -1, -1, -1, -1, -1, -1, 30, -1, 64, 65, -1, -1, -1, -1, 
+	9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 102, 16, -1, -1, 19, -1, 
+	-1, 49, -1, -1, -1, 32, -1, -1, -1, 74, 75, -1, -1, -1, -1, -1, 120, 121, 
+	-1, -1, -1, -1, 106, -1, -1, -1, -1, -1, -1, 34, -1, -1, -1, -1, -1, 69, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 12, -1, -1, -1, -1, -1, 35, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, 125, 126, -1, -1, -1, -1, 4, -1, -1, -1, 
+	-1, -1, 6, 71, 7, -1, -1, -1, 66, -1, 10, -1, -1, -1, -1, -1, -1, 67, -1, 
+	-1, 15, -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, 122, -1, -1, 
+	-1, 5, -1, -1, -1, -1, -1, -1, -1, 55, -1, 11, -1, -1, -1, -1, -1, -1, 
+	-1, 59, -1, -1, -1, -1, -1, 110, -1, 82, -1, -1, 109, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, 54, -1, 58, -1, 56, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, 123, -1, -1, -1, -1, -1, -1, 51, -1, -1, -1, -1, -1, 13, -1, 
+	17, 18, 20, -1, 70, -1, 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, 14, 63, -1, 124, 23, -1, -1, -1, 136, 52, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, 41, -1, -1, -1, -1, -1, -1, 53, -1, -1, 42, 43, 68, 
+	-1, -1, -1, -1, -1, -1, 40, -1, -1, -1, 134, 135, 44, 45, -1, -1, -1, 81, 
+	-1, -1, 132, 133
+    };
+static const ANTLR3_INT32 dfa15_special[881] =
+    {
+	8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, -1, 17, 22, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, 7, -1, -1, -1, -1, -1, -1, 1, 5, 9, 3, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, 1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, 2, -1, 
+	0, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, 
+	-1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, 25, -1, 34, 35, 36, 37, 38, 48, -1, -1, 
+	44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, 26, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, -1, -1, 
+	-1, -1, -1, 21, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 11, -1, -1, -1, 
-	-1, -1, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 17, 18, 
+	-1, -1, -1, -1, -1, -1, -1, 27, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 6, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, 32, 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, 30, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, 20, -1, -1, -1, -1, 
 	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1
+	-1, 31, -1, -1, -1, -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, 12, -1, -1, -1, -1, -1, -1, -1, 46, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, 11, -1, -1, -1, -1, -1, -1, 41, 42, 47, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, -1, -1
     };
 
 /** Used when there is no transition table entry for a particular state */
@@ -1414,7 +1462,12 @@ static const ANTLR3_INT32 dfa15_special[841] =
 
 static const ANTLR3_INT32 dfa15_T0[] =
     {
-	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	-1
+    };
+
+static const ANTLR3_INT32 dfa15_T1[] =
+    {
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 426, 43, 43, 43, 43, 43, 
 	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
 	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
 	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
@@ -1422,4393 +1475,9 @@ static const ANTLR3_INT32 dfa15_T0[] =
 	-1, -1, -1, 43
     };
 
-static const ANTLR3_INT32 dfa15_T1[] =
-    {
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, -1, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 114, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 
-	113
-    };
-
 static const ANTLR3_INT32 dfa15_T2[] =
     {
-	80, -1, -1, 80, 80, 80, -1, -1, -1, 80, 80, -1, 80, 80, 80, 80, 80, 80, 
-	80, 80, 80, 80, 80, 80, 80, -1, -1, 80, 80, 80, 80, 80, 80, 80, 80, 80, 
-	80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 
-	80, 80, 80, 80, -1, -1, -1, 80, 80, -1, 80, 80, 80, 80, 80, 80, 80, 80, 
-	80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 
-	-1, -1, -1, 80
-    };
-
-static const ANTLR3_INT32 dfa15_T3[] =
-    {
-	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 408, 43, 43, 43, 43, 43, 
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
 	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
 	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
 	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
@@ -5816,4686 +1485,9034 @@ static const ANTLR3_INT32 dfa15_T3[] =
 	-1, -1, -1, 43
     };
 
+static const ANTLR3_INT32 dfa15_T3[] =
+    {
+	55, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, 56
+    };
+
 static const ANTLR3_INT32 dfa15_T4[] =
     {
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 
-	193
+	149, -1, -1, 150
     };
 
 static const ANTLR3_INT32 dfa15_T5[] =
     {
-	125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124
+	57
     };
 
 static const ANTLR3_INT32 dfa15_T6[] =
     {
-	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 630, 43, 43, 43, 43, 43, 43, 43, 
-	-1, -1, -1, 43
+	164
     };
 
 static const ANTLR3_INT32 dfa15_T7[] =
     {
-	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, -1, -1, -1, 43, 381, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	-1, -1, -1, 43
+	161
     };
 
 static const ANTLR3_INT32 dfa15_T8[] =
     {
-	130, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, 129
+	237
     };
 
 static const ANTLR3_INT32 dfa15_T9[] =
     {
-	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 344, 43, 43, 43, 43, 43, 43, 43, 43, 
-	-1, -1, -1, 43
+	313
     };
 
 static const ANTLR3_INT32 dfa15_T10[] =
     {
-	80, -1, -1, 80, 80, 80, -1, -1, -1, 80, 80, -1, 80, 80, 80, 80, 80, 80, 
-	80, 80, 80, 80, 80, 80, 80, 75, -1, 80, 80, 80, 80, 80, 80, 80, 80, 80, 
-	80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 
-	80, 80, 80, 80, -1, -1, -1, 80, 80, -1, 80, 80, 80, 80, 80, 80, 80, 80, 
-	80, 80, 80, 80, 80, 77, 80, 76, 78, 79, 80, 80, 80, 80, 80, 80, 80, 80, 
-	-1, -1, -1, 80
+	493, -1, -1, 491, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 492
     };
 
 static const ANTLR3_INT32 dfa15_T11[] =
     {
-	196
+	374
     };
 
 static const ANTLR3_INT32 dfa15_T12[] =
     {
-	264
+	437
     };
 
 static const ANTLR3_INT32 dfa15_T13[] =
     {
-	323
+	504
     };
 
 static const ANTLR3_INT32 dfa15_T14[] =
     {
-	383
+	567
     };
 
 static const ANTLR3_INT32 dfa15_T15[] =
     {
-	111, -1, -1, -1, -1, -1, 112
+	129
     };
 
 static const ANTLR3_INT32 dfa15_T16[] =
     {
-	201
+	205
     };
 
 static const ANTLR3_INT32 dfa15_T17[] =
     {
-	269
+	655
     };
 
 static const ANTLR3_INT32 dfa15_T18[] =
     {
-	326
+	701
     };
 
 static const ANTLR3_INT32 dfa15_T19[] =
     {
-	511
+	739
     };
 
 static const ANTLR3_INT32 dfa15_T20[] =
     {
-	573
+	771
     };
 
 static const ANTLR3_INT32 dfa15_T21[] =
     {
-	625
+	656
     };
 
 static const ANTLR3_INT32 dfa15_T22[] =
     {
-	512
+	702
     };
 
 static const ANTLR3_INT32 dfa15_T23[] =
     {
-	574
+	740
     };
 
 static const ANTLR3_INT32 dfa15_T24[] =
     {
-	626
+	772
     };
 
 static const ANTLR3_INT32 dfa15_T25[] =
     {
-	669
+	798
     };
 
 static const ANTLR3_INT32 dfa15_T26[] =
     {
-	206
+	819
     };
 
 static const ANTLR3_INT32 dfa15_T27[] =
     {
-	207
+	545
     };
 
 static const ANTLR3_INT32 dfa15_T28[] =
     {
-	274
+	605
     };
 
 static const ANTLR3_INT32 dfa15_T29[] =
     {
-	275
+	657
     };
 
 static const ANTLR3_INT32 dfa15_T30[] =
     {
-	334
+	703
     };
 
 static const ANTLR3_INT32 dfa15_T31[] =
     {
-	394
+	741
     };
 
 static const ANTLR3_INT32 dfa15_T32[] =
     {
-	456
+	773
     };
 
 static const ANTLR3_INT32 dfa15_T33[] =
     {
-	332, -1, -1, -1, -1, -1, 333
+	799
     };
 
 static const ANTLR3_INT32 dfa15_T34[] =
     {
-	515
+	820
     };
 
 static const ANTLR3_INT32 dfa15_T35[] =
     {
-	577
+	834
     };
 
 static const ANTLR3_INT32 dfa15_T36[] =
     {
-	629
+	843
     };
 
 static const ANTLR3_INT32 dfa15_T37[] =
     {
-	138
+	210, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 209
     };
 
 static const ANTLR3_INT32 dfa15_T38[] =
     {
-	212
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 197, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 
+	198
     };
 
 static const ANTLR3_INT32 dfa15_T39[] =
     {
-	282
+	152
     };
 
 static const ANTLR3_INT32 dfa15_T40[] =
     {
-	341
+	711
     };
 
 static const ANTLR3_INT32 dfa15_T41[] =
     {
-	402
+	748
     };
 
 static const ANTLR3_INT32 dfa15_T42[] =
     {
-	464
+	228
     };
 
 static const ANTLR3_INT32 dfa15_T43[] =
     {
-	523
+	301, -1, -1, -1, -1, -1, -1, -1, 304, -1, -1, -1, 306, -1, 305, 302, 307, 
+	-1, -1, -1, 303, 300
     };
 
 static const ANTLR3_INT32 dfa15_T44[] =
     {
-	582
+	709
     };
 
 static const ANTLR3_INT32 dfa15_T45[] =
     {
-	632
+	746
     };
 
 static const ANTLR3_INT32 dfa15_T46[] =
     {
-	466, -1, 465
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 201, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 123, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126
     };
 
 static const ANTLR3_INT32 dfa15_T47[] =
     {
-	526
+	557
     };
 
 static const ANTLR3_INT32 dfa15_T48[] =
     {
-	136, -1, -1, -1, 135
+	617
     };
 
 static const ANTLR3_INT32 dfa15_T49[] =
     {
-	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 420, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	-1, -1, -1, 43
+	369
     };
 
 static const ANTLR3_INT32 dfa15_T50[] =
     {
-	690
+	672
     };
 
 static const ANTLR3_INT32 dfa15_T51[] =
     {
-	725
+	717
     };
 
 static const ANTLR3_INT32 dfa15_T52[] =
     {
-	755
+	432
     };
 
 static const ANTLR3_INT32 dfa15_T53[] =
     {
-	691
+	177
     };
 
 static const ANTLR3_INT32 dfa15_T54[] =
     {
-	726
+	499, -1, -1, -1, 498
     };
 
 static const ANTLR3_INT32 dfa15_T55[] =
     {
-	756
+	252
     };
 
 static const ANTLR3_INT32 dfa15_T56[] =
     {
-	778
+	214
     };
 
 static const ANTLR3_INT32 dfa15_T57[] =
     {
-	536
+	327
     };
 
 static const ANTLR3_INT32 dfa15_T58[] =
     {
-	596
+	285
     };
 
 static const ANTLR3_INT32 dfa15_T59[] =
     {
-	649
+	352
     };
 
 static const ANTLR3_INT32 dfa15_T60[] =
     {
-	351
+	393
     };
 
 static const ANTLR3_INT32 dfa15_T61[] =
@@ -10505,10745 +10522,10782 @@ static const ANTLR3_INT32 dfa15_T61[] =
 
 static const ANTLR3_INT32 dfa15_T62[] =
     {
-	477
+	456
     };
 
 static const ANTLR3_INT32 dfa15_T63[] =
     {
-	540
+	477
     };
 
 static const ANTLR3_INT32 dfa15_T64[] =
     {
-	541
+	518
     };
 
 static const ANTLR3_INT32 dfa15_T65[] =
     {
-	600
+	231
     };
 
 static const ANTLR3_INT32 dfa15_T66[] =
     {
-	651
+	308
     };
 
 static const ANTLR3_INT32 dfa15_T67[] =
     {
-	694
+	376
     };
 
 static const ANTLR3_INT32 dfa15_T68[] =
     {
-	728
+	440
     };
 
 static const ANTLR3_INT32 dfa15_T69[] =
     {
-	757
+	505
     };
 
 static const ANTLR3_INT32 dfa15_T70[] =
     {
-	149
+	568
     };
 
 static const ANTLR3_INT32 dfa15_T71[] =
     {
-	222
+	626
     };
 
 static const ANTLR3_INT32 dfa15_T72[] =
     {
-	542
+	677
     };
 
 static const ANTLR3_INT32 dfa15_T73[] =
     {
-	601
+	721
     };
 
 static const ANTLR3_INT32 dfa15_T74[] =
     {
-	652
+	756
     };
 
 static const ANTLR3_INT32 dfa15_T75[] =
     {
-	695
+	785
     };
 
 static const ANTLR3_INT32 dfa15_T76[] =
     {
-	729
+	808
     };
 
 static const ANTLR3_INT32 dfa15_T77[] =
     {
-	162, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 438, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
     };
 
 static const ANTLR3_INT32 dfa15_T78[] =
     {
-	758
+	482
     };
 
 static const ANTLR3_INT32 dfa15_T79[] =
     {
-	292, -1, -1, -1, -1, -1, -1, -1, 295, -1, -1, -1, 297, -1, 296, 293, 298, 
-	-1, -1, -1, 294, 291
+	541
     };
 
 static const ANTLR3_INT32 dfa15_T80[] =
     {
-	353
+	69
     };
 
 static const ANTLR3_INT32 dfa15_T81[] =
     {
-	415
+	483
     };
 
 static const ANTLR3_INT32 dfa15_T82[] =
     {
-	480
+	542
     };
 
 static const ANTLR3_INT32 dfa15_T83[] =
     {
-	543
+	547
     };
 
 static const ANTLR3_INT32 dfa15_T84[] =
     {
-	354
+	607
     };
 
 static const ANTLR3_INT32 dfa15_T85[] =
     {
-	416
+	658
     };
 
 static const ANTLR3_INT32 dfa15_T86[] =
     {
-	481
+	614
     };
 
 static const ANTLR3_INT32 dfa15_T87[] =
     {
-	544
+	667
     };
 
 static const ANTLR3_INT32 dfa15_T88[] =
     {
-	603
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 836, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
     };
 
 static const ANTLR3_INT32 dfa15_T89[] =
     {
-	653
+	215
     };
 
 static const ANTLR3_INT32 dfa15_T90[] =
     {
-	696
+	287, -1, -1, 286, -1, -1, 288
     };
 
 static const ANTLR3_INT32 dfa15_T91[] =
     {
-	730
+	219
     };
 
 static const ANTLR3_INT32 dfa15_T92[] =
     {
-	759
+	712
     };
 
 static const ANTLR3_INT32 dfa15_T93[] =
     {
-	146, -1, -1, 147
+	749
     };
 
 static const ANTLR3_INT32 dfa15_T94[] =
     {
-	387
+	779
     };
 
 static const ANTLR3_INT32 dfa15_T95[] =
     {
-	449
+	292
     };
 
 static const ANTLR3_INT32 dfa15_T96[] =
     {
-	508
+	802
     };
 
 static const ANTLR3_INT32 dfa15_T97[] =
     {
-	571
+	823
     };
 
 static const ANTLR3_INT32 dfa15_T98[] =
     {
-	623
+	838
     };
 
 static const ANTLR3_INT32 dfa15_T99[] =
     {
-	667
+	847
     };
 
 static const ANTLR3_INT32 dfa15_T100[] =
     {
-	708
+	212
     };
 
 static const ANTLR3_INT32 dfa15_T101[] =
     {
-	741
+	359
     };
 
 static const ANTLR3_INT32 dfa15_T102[] =
     {
-	766
+	283
     };
 
 static const ANTLR3_INT32 dfa15_T103[] =
     {
-	788
+	208
     };
 
 static const ANTLR3_INT32 dfa15_T104[] =
     {
-	150
+	424
     };
 
 static const ANTLR3_INT32 dfa15_T105[] =
     {
-	50, -1, -1, -1, -1, -1, -1, -1, -1, -1, 51, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, 49
+	279
     };
 
 static const ANTLR3_INT32 dfa15_T106[] =
     {
-	155
+	349, -1, -1, -1, -1, -1, 350
     };
 
 static const ANTLR3_INT32 dfa15_T107[] =
     {
-	336
+	489
     };
 
 static const ANTLR3_INT32 dfa15_T108[] =
     {
-	396
+	548
     };
 
 static const ANTLR3_INT32 dfa15_T109[] =
     {
-	458
+	608
     };
 
 static const ANTLR3_INT32 dfa15_T110[] =
     {
-	517
+	232
     };
 
 static const ANTLR3_INT32 dfa15_T111[] =
     {
-	337
+	309
     };
 
 static const ANTLR3_INT32 dfa15_T112[] =
     {
-	397
+	377
     };
 
 static const ANTLR3_INT32 dfa15_T113[] =
     {
-	459
+	441
     };
 
 static const ANTLR3_INT32 dfa15_T114[] =
     {
-	156
+	507
     };
 
 static const ANTLR3_INT32 dfa15_T115[] =
     {
-	229
+	569
     };
 
 static const ANTLR3_INT32 dfa15_T116[] =
     {
-	303
+	627
     };
 
 static const ANTLR3_INT32 dfa15_T117[] =
     {
-	363
+	678
     };
 
 static const ANTLR3_INT32 dfa15_T118[] =
     {
-	426
+	722
     };
 
 static const ANTLR3_INT32 dfa15_T119[] =
     {
-	489
+	757
     };
 
 static const ANTLR3_INT32 dfa15_T120[] =
     {
-	551
+	786
     };
 
 static const ANTLR3_INT32 dfa15_T121[] =
     {
-	205
+	68, -1, -1, -1, -1, 67, 66
     };
 
 static const ANTLR3_INT32 dfa15_T122[] =
     {
-	273
+	50, -1, -1, -1, -1, -1, -1, -1, -1, -1, 51, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, 49
     };
 
 static const ANTLR3_INT32 dfa15_T123[] =
     {
-	331
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, -1, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 117, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
+	116
     };
 
 static const ANTLR3_INT32 dfa15_T124[] =
     {
-	355
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 854, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
     };
 
 static const ANTLR3_INT32 dfa15_T125[] =
     {
-	391
+	165
     };
 
 static const ANTLR3_INT32 dfa15_T126[] =
     {
-	417
+	241
     };
 
 static const ANTLR3_INT32 dfa15_T127[] =
     {
-	452, -1, -1, -1, -1, -1, 453
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 125, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 126, 126, 
+	126, 126, 126, 126, 126, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 
+	124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 
+	124, 126, 123, 126, 126, 126, 126, 124, 124, 124, 124, 124, 124, 124, 124, 
+	124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 
+	124, 124, 124, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 
+	126
     };
 
 static const ANTLR3_INT32 dfa15_T128[] =
     {
-	482
+	171
     };
 
 static const ANTLR3_INT32 dfa15_T129[] =
     {
-	57
+	247
     };
 
 static const ANTLR3_INT32 dfa15_T130[] =
     {
-	356
+	322
     };
 
 static const ANTLR3_INT32 dfa15_T131[] =
     {
-	418
+	388
     };
 
 static const ANTLR3_INT32 dfa15_T132[] =
     {
-	483
+	451
     };
 
 static const ANTLR3_INT32 dfa15_T133[] =
     {
-	546
+	514
     };
 
 static const ANTLR3_INT32 dfa15_T134[] =
     {
-	604
+	172
     };
 
 static const ANTLR3_INT32 dfa15_T135[] =
     {
-	157
+	248
     };
 
 static const ANTLR3_INT32 dfa15_T136[] =
     {
-	230
+	323
     };
 
 static const ANTLR3_INT32 dfa15_T137[] =
     {
-	158
+	389
     };
 
 static const ANTLR3_INT32 dfa15_T138[] =
     {
-	473, -1, -1, 471, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 472
+	452
     };
 
 static const ANTLR3_INT32 dfa15_T139[] =
     {
-	204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 203
+	515
     };
 
 static const ANTLR3_INT32 dfa15_T140[] =
     {
-	591
+	155, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 158, 157, 
+	-1, 156
     };
 
 static const ANTLR3_INT32 dfa15_T141[] =
     {
-	151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 154, 153, 
-	-1, 152
+	173
     };
 
 static const ANTLR3_INT32 dfa15_T142[] =
     {
-	640
+	249
     };
 
 static const ANTLR3_INT32 dfa15_T143[] =
     {
-	684
+	324
     };
 
 static const ANTLR3_INT32 dfa15_T144[] =
     {
-	720
+	390
     };
 
 static const ANTLR3_INT32 dfa15_T145[] =
     {
-	750
+	453
     };
 
 static const ANTLR3_INT32 dfa15_T146[] =
     {
-	774
+	516
     };
 
 static const ANTLR3_INT32 dfa15_T147[] =
     {
-	795
+	578
     };
 
 static const ANTLR3_INT32 dfa15_T148[] =
     {
-	807
+	635
     };
 
 static const ANTLR3_INT32 dfa15_T149[] =
     {
-	685
+	683
     };
 
 static const ANTLR3_INT32 dfa15_T150[] =
     {
-	721
+	727
     };
 
 static const ANTLR3_INT32 dfa15_T151[] =
     {
-	751
+	761
     };
 
 static const ANTLR3_INT32 dfa15_T152[] =
     {
-	775
+	114, -1, -1, -1, -1, -1, 115
     };
 
 static const ANTLR3_INT32 dfa15_T153[] =
     {
-	213
+	174
     };
 
 static const ANTLR3_INT32 dfa15_T154[] =
     {
-	796
+	250
     };
 
 static const ANTLR3_INT32 dfa15_T155[] =
     {
-	808
+	325
     };
 
 static const ANTLR3_INT32 dfa15_T156[] =
     {
-	816
+	391
     };
 
 static const ANTLR3_INT32 dfa15_T157[] =
     {
-	824
+	454
     };
 
 static const ANTLR3_INT32 dfa15_T158[] =
     {
-	283
+	517
     };
 
 static const ANTLR3_INT32 dfa15_T159[] =
     {
-	342
+	579
     };
 
 static const ANTLR3_INT32 dfa15_T160[] =
     {
-	357
+	636
     };
 
 static const ANTLR3_INT32 dfa15_T161[] =
     {
-	419
+	684
     };
 
 static const ANTLR3_INT32 dfa15_T162[] =
     {
-	484
+	728
     };
 
 static const ANTLR3_INT32 dfa15_T163[] =
     {
-	547
+	762
     };
 
 static const ANTLR3_INT32 dfa15_T164[] =
     {
-	126
+	195, -1, 194, -1, -1, -1, -1, -1, -1, -1, -1, -1, 196
     };
 
 static const ANTLR3_INT32 dfa15_T165[] =
     {
-	199
+	166
     };
 
 static const ANTLR3_INT32 dfa15_T166[] =
     {
-	171
+	242
     };
 
 static const ANTLR3_INT32 dfa15_T167[] =
     {
-	633
+	317
     };
 
 static const ANTLR3_INT32 dfa15_T168[] =
     {
-	677
+	383
     };
 
 static const ANTLR3_INT32 dfa15_T169[] =
     {
-	243
+	446
     };
 
 static const ANTLR3_INT32 dfa15_T170[] =
     {
-	714
+	510
     };
 
 static const ANTLR3_INT32 dfa15_T171[] =
     {
-	746
+	243
     };
 
 static const ANTLR3_INT32 dfa15_T172[] =
     {
-	316
+	318
     };
 
 static const ANTLR3_INT32 dfa15_T173[] =
     {
-	375
+	384
     };
 
 static const ANTLR3_INT32 dfa15_T174[] =
     {
-	437
+	447
     };
 
 static const ANTLR3_INT32 dfa15_T175[] =
     {
-	498
+	511
     };
 
 static const ANTLR3_INT32 dfa15_T176[] =
     {
-	65
+	573
     };
 
 static const ANTLR3_INT32 dfa15_T177[] =
     {
-	634
+	630
     };
 
 static const ANTLR3_INT32 dfa15_T178[] =
     {
-	678
+	680
     };
 
 static const ANTLR3_INT32 dfa15_T179[] =
     {
-	715
+	244
     };
 
 static const ANTLR3_INT32 dfa15_T180[] =
     {
-	747
+	319
     };
 
 static const ANTLR3_INT32 dfa15_T181[] =
     {
-	772
+	385
     };
 
 static const ANTLR3_INT32 dfa15_T182[] =
     {
-	793
+	169
     };
 
 static const ANTLR3_INT32 dfa15_T183[] =
     {
-	525
+	245
     };
 
 static const ANTLR3_INT32 dfa15_T184[] =
     {
-	585
+	320
     };
 
 static const ANTLR3_INT32 dfa15_T185[] =
     {
-	635
+	386
     };
 
 static const ANTLR3_INT32 dfa15_T186[] =
     {
-	679
+	449
     };
 
 static const ANTLR3_INT32 dfa15_T187[] =
     {
-	716
+	512
     };
 
 static const ANTLR3_INT32 dfa15_T188[] =
     {
-	748
+	574
     };
 
 static const ANTLR3_INT32 dfa15_T189[] =
     {
-	773
+	631
     };
 
 static const ANTLR3_INT32 dfa15_T190[] =
     {
-	794
+	681
     };
 
 static const ANTLR3_INT32 dfa15_T191[] =
     {
-	806
+	725
     };
 
 static const ANTLR3_INT32 dfa15_T192[] =
     {
-	814
+	759
     };
 
 static const ANTLR3_INT32 dfa15_T193[] =
     {
-	189, -1, 188, -1, -1, -1, -1, -1, -1, -1, -1, -1, 190
+	787
     };
 
 static const ANTLR3_INT32 dfa15_T194[] =
     {
-	-1
+	810
     };
 
 static const ANTLR3_INT32 dfa15_T195[] =
     {
-	687
+	826
     };
 
 static const ANTLR3_INT32 dfa15_T196[] =
     {
-	723
+	839
     };
 
 static const ANTLR3_INT32 dfa15_T197[] =
     {
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 191, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 
-	192
+	848
     };
 
 static const ANTLR3_INT32 dfa15_T198[] =
     {
-	686
+	859
     };
 
 static const ANTLR3_INT32 dfa15_T199[] =
     {
-	722
+	866
     };
 
 static const ANTLR3_INT32 dfa15_T200[] =
     {
-	68
+	873
     };
 
 static const ANTLR3_INT32 dfa15_T201[] =
     {
-	537
+	170
     };
 
 static const ANTLR3_INT32 dfa15_T202[] =
     {
-	597
+	144
     };
 
 static const ANTLR3_INT32 dfa15_T203[] =
     {
-	650
+	246
     };
 
 static const ANTLR3_INT32 dfa15_T204[] =
     {
-	693
+	321
     };
 
 static const ANTLR3_INT32 dfa15_T205[] =
     {
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 122, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 123, 123, 
-	123, 123, 123, 123, 123, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 
-	121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 
-	121, 123, 120, 123, 123, 123, 123, 121, 121, 121, 121, 121, 121, 121, 121, 
-	121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 
-	121, 121, 121, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123
+	387
     };
 
 static const ANTLR3_INT32 dfa15_T206[] =
     {
-	208
+	450
     };
 
 static const ANTLR3_INT32 dfa15_T207[] =
     {
-	276
+	513
     };
 
 static const ANTLR3_INT32 dfa15_T208[] =
     {
-	335
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 399, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
     };
 
 static const ANTLR3_INT32 dfa15_T209[] =
     {
-	395
+	575
     };
 
 static const ANTLR3_INT32 dfa15_T210[] =
     {
-	457
+	632
     };
 
 static const ANTLR3_INT32 dfa15_T211[] =
     {
-	224
+	682
     };
 
 static const ANTLR3_INT32 dfa15_T212[] =
     {
-	299
+	555
     };
 
 static const ANTLR3_INT32 dfa15_T213[] =
     {
-	359
+	726
     };
 
 static const ANTLR3_INT32 dfa15_T214[] =
     {
-	422
+	225
     };
 
 static const ANTLR3_INT32 dfa15_T215[] =
     {
-	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 403, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	-1, -1, -1, 43
+	615
     };
 
 static const ANTLR3_INT32 dfa15_T216[] =
     {
-	71
+	297
     };
 
 static const ANTLR3_INT32 dfa15_T217[] =
     {
-	485
+	365
     };
 
 static const ANTLR3_INT32 dfa15_T218[] =
     {
-	548
+	428
     };
 
 static const ANTLR3_INT32 dfa15_T219[] =
     {
-	606
+	494
     };
 
 static const ANTLR3_INT32 dfa15_T220[] =
     {
-	655
+	275
     };
 
 static const ANTLR3_INT32 dfa15_T221[] =
     {
-	697
+	341
     };
 
 static const ANTLR3_INT32 dfa15_T222[] =
     {
-	731
+	610
     };
 
 static const ANTLR3_INT32 dfa15_T223[] =
     {
-	760
+	176
     };
 
 static const ANTLR3_INT32 dfa15_T224[] =
     {
-	782
+	251
     };
 
 static const ANTLR3_INT32 dfa15_T225[] =
     {
-	59, -1, -1, -1, -1, 58
+	609
     };
 
 static const ANTLR3_INT32 dfa15_T226[] =
     {
-	44, 44, -1, 44, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, 44, 12, 47, 46, 43, 43, 24, -1, 13, 14, 35, 34, -1, 
-	31, 43, 26, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 19, 48, 30, 27, 29, 
-	43, 25, 43, 43, 20, 43, 18, 43, 43, 43, 22, 43, 43, 23, 43, 39, 43, 43, 
-	43, 41, 43, 43, 43, 21, 43, 43, 43, 43, -1, 1, -1, 43, 15, -1, 6, 37, 7, 
-	8, 2, 28, 9, 43, 10, 43, 43, 11, 16, 32, 33, 17, 43, 3, 4, 40, 38, 43, 
-	43, 36, 43, 5, -1, 42, -1, 43
+	661
     };
 
 static const ANTLR3_INT32 dfa15_T227[] =
     {
-	462
+	326
     };
 
 static const ANTLR3_INT32 dfa15_T228[] =
     {
-	521
+	392
     };
 
 static const ANTLR3_INT32 dfa15_T229[] =
     {
-	209
+	660
     };
 
 static const ANTLR3_INT32 dfa15_T230[] =
     {
-	278, -1, -1, 277, -1, -1, 279
+	707
     };
 
 static const ANTLR3_INT32 dfa15_T231[] =
     {
-	463
+	136, -1, -1, -1, -1, -1, 137
     };
 
 static const ANTLR3_INT32 dfa15_T232[] =
     {
-	522
+	611
     };
 
 static const ANTLR3_INT32 dfa15_T233[] =
     {
-	131, 132
+	662, -1, -1, -1, -1, -1, -1, -1, -1, -1, 663
     };
 
 static const ANTLR3_INT32 dfa15_T234[] =
     {
-	527
+	183
     };
 
 static const ANTLR3_INT32 dfa15_T235[] =
     {
-	587
+	178
     };
 
 static const ANTLR3_INT32 dfa15_T236[] =
     {
-	636
+	253
     };
 
 static const ANTLR3_INT32 dfa15_T237[] =
     {
-	594
+	328
     };
 
 static const ANTLR3_INT32 dfa15_T238[] =
     {
-	645
+	394
     };
 
 static const ANTLR3_INT32 dfa15_T239[] =
     {
-	352
+	187
     };
 
 static const ANTLR3_INT32 dfa15_T240[] =
     {
-	414
+	458, -1, 457
     };
 
 static const ANTLR3_INT32 dfa15_T241[] =
     {
-	479, -1, -1, -1, 478
+	226
     };
 
 static const ANTLR3_INT32 dfa15_T242[] =
     {
-	688
+	298
     };
 
 static const ANTLR3_INT32 dfa15_T243[] =
     {
-	724
+	366
     };
 
 static const ANTLR3_INT32 dfa15_T244[] =
     {
-	754
+	429
     };
 
 static const ANTLR3_INT32 dfa15_T245[] =
     {
-	776
+	495
     };
 
 static const ANTLR3_INT32 dfa15_T246[] =
     {
-	797
+	559
     };
 
 static const ANTLR3_INT32 dfa15_T247[] =
     {
-	809
+	188
     };
 
 static const ANTLR3_INT32 dfa15_T248[] =
     {
-	817
+	260
     };
 
 static const ANTLR3_INT32 dfa15_T249[] =
     {
-	406
+	331
     };
 
 static const ANTLR3_INT32 dfa15_T250[] =
     {
-	469
+	397
     };
 
 static const ANTLR3_INT32 dfa15_T251[] =
     {
-	528
+	65
     };
 
 static const ANTLR3_INT32 dfa15_T252[] =
     {
-	588
+	233
     };
 
 static const ANTLR3_INT32 dfa15_T253[] =
     {
-	225
+	310
     };
 
 static const ANTLR3_INT32 dfa15_T254[] =
     {
-	300
+	378
     };
 
 static const ANTLR3_INT32 dfa15_T255[] =
     {
-	360
+	280
     };
 
 static const ANTLR3_INT32 dfa15_T256[] =
     {
-	423
+	346
     };
 
 static const ANTLR3_INT32 dfa15_T257[] =
     {
-	487
+	407
     };
 
 static const ANTLR3_INT32 dfa15_T258[] =
     {
-	549
+	470
     };
 
 static const ANTLR3_INT32 dfa15_T259[] =
     {
-	607
+	193, -1, -1, -1, 192
     };
 
 static const ANTLR3_INT32 dfa15_T260[] =
     {
-	656
+	281
     };
 
 static const ANTLR3_INT32 dfa15_T261[] =
     {
-	698
+	347
     };
 
 static const ANTLR3_INT32 dfa15_T262[] =
     {
-	732
+	408
     };
 
 static const ANTLR3_INT32 dfa15_T263[] =
     {
-	761
+	471
     };
 
 static const ANTLR3_INT32 dfa15_T264[] =
     {
-	159
+	530
     };
 
 static const ANTLR3_INT32 dfa15_T265[] =
     {
-	232
+	592
     };
 
 static const ANTLR3_INT32 dfa15_T266[] =
     {
-	117, -1, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45
+	151
     };
 
 static const ANTLR3_INT32 dfa15_T267[] =
     {
-	393
+	227
     };
 
 static const ANTLR3_INT32 dfa15_T268[] =
     {
-	455
+	299
     };
 
 static const ANTLR3_INT32 dfa15_T269[] =
     {
-	514
+	145
     };
 
 static const ANTLR3_INT32 dfa15_T270[] =
     {
-	165
+	367
     };
 
 static const ANTLR3_INT32 dfa15_T271[] =
     {
-	576
+	430
     };
 
 static const ANTLR3_INT32 dfa15_T272[] =
     {
-	238
+	221
     };
 
 static const ANTLR3_INT32 dfa15_T273[] =
     {
-	311
+	293
     };
 
 static const ANTLR3_INT32 dfa15_T274[] =
     {
-	370
+	360
     };
 
 static const ANTLR3_INT32 dfa15_T275[] =
     {
-	628
+	423
     };
 
 static const ANTLR3_INT32 dfa15_T276[] =
     {
-	432
+	487, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, 488
     };
 
 static const ANTLR3_INT32 dfa15_T277[] =
     {
-	494
+	637
     };
 
 static const ANTLR3_INT32 dfa15_T278[] =
     {
-	672, -1, 671, -1, -1, -1, -1, -1, -1, -1, -1, -1, 673
+	685
     };
 
 static const ANTLR3_INT32 dfa15_T279[] =
     {
-	193
+	729
     };
 
 static const ANTLR3_INT32 dfa15_T280[] =
     {
-	166
+	234
     };
 
 static const ANTLR3_INT32 dfa15_T281[] =
     {
-	239
+	311
     };
 
 static const ANTLR3_INT32 dfa15_T282[] =
     {
-	312
+	379
     };
 
 static const ANTLR3_INT32 dfa15_T283[] =
     {
-	371
+	443
     };
 
 static const ANTLR3_INT32 dfa15_T284[] =
     {
-	433
+	508
     };
 
 static const ANTLR3_INT32 dfa15_T285[] =
     {
-	495
+	570
     };
 
 static const ANTLR3_INT32 dfa15_T286[] =
     {
-	167
+	628
     };
 
 static const ANTLR3_INT32 dfa15_T287[] =
     {
-	240
+	679
     };
 
 static const ANTLR3_INT32 dfa15_T288[] =
     {
-	185
+	723
     };
 
 static const ANTLR3_INT32 dfa15_T289[] =
     {
-	313
+	130
     };
 
 static const ANTLR3_INT32 dfa15_T290[] =
     {
-	372
+	206
     };
 
 static const ANTLR3_INT32 dfa15_T291[] =
     {
-	434
+	277
     };
 
 static const ANTLR3_INT32 dfa15_T292[] =
     {
-	496
+	342
     };
 
 static const ANTLR3_INT32 dfa15_T293[] =
     {
-	558
+	403
     };
 
 static const ANTLR3_INT32 dfa15_T294[] =
     {
-	615
+	468
     };
 
 static const ANTLR3_INT32 dfa15_T295[] =
     {
-	254
+	189
     };
 
 static const ANTLR3_INT32 dfa15_T296[] =
     {
-	661
+	261
     };
 
 static const ANTLR3_INT32 dfa15_T297[] =
     {
-	703
+	332
     };
 
 static const ANTLR3_INT32 dfa15_T298[] =
     {
-	736
+	398
     };
 
 static const ANTLR3_INT32 dfa15_T299[] =
     {
-	322
+	460
     };
 
 static const ANTLR3_INT32 dfa15_T300[] =
     {
-	168
+	411
     };
 
 static const ANTLR3_INT32 dfa15_T301[] =
     {
-	241
+	475
     };
 
 static const ANTLR3_INT32 dfa15_T302[] =
     {
-	202
+	147, -1, -1, 148
     };
 
 static const ANTLR3_INT32 dfa15_T303[] =
     {
-	314
+	216
     };
 
 static const ANTLR3_INT32 dfa15_T304[] =
     {
-	373
+	289
     };
 
 static const ANTLR3_INT32 dfa15_T305[] =
     {
-	270
+	356
     };
 
 static const ANTLR3_INT32 dfa15_T306[] =
     {
-	435
+	534
     };
 
 static const ANTLR3_INT32 dfa15_T307[] =
     {
-	497
+	417
     };
 
 static const ANTLR3_INT32 dfa15_T308[] =
     {
-	559
+	596
     };
 
 static const ANTLR3_INT32 dfa15_T309[] =
     {
-	616
+	650
     };
 
 static const ANTLR3_INT32 dfa15_T310[] =
     {
-	662
+	185
     };
 
 static const ANTLR3_INT32 dfa15_T311[] =
     {
-	704
+	410
     };
 
 static const ANTLR3_INT32 dfa15_T312[] =
     {
-	737
+	696, -1, 695, -1, -1, -1, -1, -1, -1, -1, -1, -1, 697
     };
 
 static const ANTLR3_INT32 dfa15_T313[] =
     {
-	172
+	474
     };
 
 static const ANTLR3_INT32 dfa15_T314[] =
     {
-	244
+	181
     };
 
 static const ANTLR3_INT32 dfa15_T315[] =
     {
-	317
+	533
     };
 
 static const ANTLR3_INT32 dfa15_T316[] =
     {
-	376
+	595
     };
 
 static const ANTLR3_INT32 dfa15_T317[] =
     {
-	439, -1, 438
+	649
     };
 
 static const ANTLR3_INT32 dfa15_T318[] =
     {
-	187, -1, -1, -1, 186
+	186
     };
 
 static const ANTLR3_INT32 dfa15_T319[] =
     {
-	144, -1, -1, 145
+	694
     };
 
 static const ANTLR3_INT32 dfa15_T320[] =
     {
-	141
+	258
     };
 
 static const ANTLR3_INT32 dfa15_T321[] =
     {
-	219
+	330
     };
 
 static const ANTLR3_INT32 dfa15_T322[] =
     {
-	288
+	735
     };
 
 static const ANTLR3_INT32 dfa15_T323[] =
     {
-	348
+	767
     };
 
 static const ANTLR3_INT32 dfa15_T324[] =
     {
-	410
+	793
     };
 
 static const ANTLR3_INT32 dfa15_T325[] =
     {
-	474
+	182
     };
 
 static const ANTLR3_INT32 dfa15_T326[] =
     {
-	590
+	815
     };
 
 static const ANTLR3_INT32 dfa15_T327[] =
     {
-	589
+	255
     };
 
 static const ANTLR3_INT32 dfa15_T328[] =
     {
-	639
+	329
     };
 
 static const ANTLR3_INT32 dfa15_T329[] =
     {
-	638
+	829
     };
 
 static const ANTLR3_INT32 dfa15_T330[] =
     {
-	683
+	840
     };
 
 static const ANTLR3_INT32 dfa15_T331[] =
     {
-	266
+	850, -1, -1, -1, 849
     };
 
 static const ANTLR3_INT32 dfa15_T332[] =
     {
-	324
+	190
     };
 
 static const ANTLR3_INT32 dfa15_T333[] =
     {
-	133, -1, -1, -1, -1, -1, 134
+	44, 44, -1, 44, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, 44, 12, 47, 46, 43, 43, 24, -1, 13, 14, 35, 34, -1, 
+	31, 43, 26, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 19, 48, 30, 27, 29, 
+	43, 25, 43, 43, 20, 43, 18, 43, 43, 43, 22, 43, 43, 23, 43, 39, 43, 43, 
+	43, 41, 43, 43, 43, 21, 43, 43, 43, 43, -1, 1, -1, 43, 15, -1, 6, 37, 7, 
+	8, 2, 28, 9, 43, 10, 43, 43, 11, 16, 32, 33, 17, 43, 3, 4, 40, 38, 43, 
+	43, 36, 43, 5, -1, 42, -1, 43
     };
 
 static const ANTLR3_INT32 dfa15_T334[] =
     {
-	170
+	522
     };
 
 static const ANTLR3_INT32 dfa15_T335[] =
     {
-	242
+	523
     };
 
 static const ANTLR3_INT32 dfa15_T336[] =
     {
-	315
+	524
     };
 
 static const ANTLR3_INT32 dfa15_T337[] =
     {
-	374
+	587
     };
 
 static const ANTLR3_INT32 dfa15_T338[] =
     {
-	392
+	642
     };
 
 static const ANTLR3_INT32 dfa15_T339[] =
     {
-	454
+	525
     };
 
 static const ANTLR3_INT32 dfa15_T340[] =
     {
-	513
+	588
     };
 
 static const ANTLR3_INT32 dfa15_T341[] =
     {
-	575
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 421, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
     };
 
 static const ANTLR3_INT32 dfa15_T342[] =
     {
-	627
+	643
     };
 
 static const ANTLR3_INT32 dfa15_T343[] =
     {
-	670
+	689
     };
 
 static const ANTLR3_INT32 dfa15_T344[] =
     {
-	710
+	731
     };
 
 static const ANTLR3_INT32 dfa15_T345[] =
     {
-	742
+	77
     };
 
 static const ANTLR3_INT32 dfa15_T346[] =
     {
-	767
+	59, -1, -1, -1, -1, 58
     };
 
 static const ANTLR3_INT32 dfa15_T347[] =
     {
-	789
+	526
     };
 
 static const ANTLR3_INT32 dfa15_T348[] =
     {
-	802
+	589
     };
 
 static const ANTLR3_INT32 dfa15_T349[] =
     {
-	811
+	644
     };
 
 static const ANTLR3_INT32 dfa15_T350[] =
     {
-	820, -1, -1, -1, 819
+	690
     };
 
 static const ANTLR3_INT32 dfa15_T351[] =
     {
-	177
+	732
     };
 
 static const ANTLR3_INT32 dfa15_T352[] =
     {
-	181
+	765
     };
 
 static const ANTLR3_INT32 dfa15_T353[] =
     {
-	535
+	791
     };
 
 static const ANTLR3_INT32 dfa15_T354[] =
     {
-	220
+	84
     };
 
 static const ANTLR3_INT32 dfa15_T355[] =
     {
-	289
+	519
     };
 
 static const ANTLR3_INT32 dfa15_T356[] =
     {
-	349
+	582
     };
 
 static const ANTLR3_INT32 dfa15_T357[] =
     {
-	595
+	85
     };
 
 static const ANTLR3_INT32 dfa15_T358[] =
     {
-	411
+	520
     };
 
 static const ANTLR3_INT32 dfa15_T359[] =
     {
-	475
+	583
     };
 
 static const ANTLR3_INT32 dfa15_T360[] =
     {
-	539
+	86
     };
 
 static const ANTLR3_INT32 dfa15_T361[] =
     {
-	182
+	223
     };
 
 static const ANTLR3_INT32 dfa15_T362[] =
     {
-	160
+	199
     };
 
 static const ANTLR3_INT32 dfa15_T363[] =
     {
-	251
+	295
     };
 
 static const ANTLR3_INT32 dfa15_T364[] =
     {
-	233
+	87
     };
 
 static const ANTLR3_INT32 dfa15_T365[] =
     {
-	320
+	363
     };
 
 static const ANTLR3_INT32 dfa15_T366[] =
     {
-	306
+	425
     };
 
 static const ANTLR3_INT32 dfa15_T367[] =
     {
-	379
+	490
     };
 
 static const ANTLR3_INT32 dfa15_T368[] =
     {
-	365
+	860
     };
 
 static const ANTLR3_INT32 dfa15_T369[] =
     {
-	427
+	867
     };
 
 static const ANTLR3_INT32 dfa15_T370[] =
     {
-	490
+	874
     };
 
 static const ANTLR3_INT32 dfa15_T371[] =
     {
-	226
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 344, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
     };
 
 static const ANTLR3_INT32 dfa15_T372[] =
     {
-	301
+	551, 552, -1, 549, -1, -1, -1, -1, -1, -1, -1, -1, -1, 553, -1, -1, 550, 
+	-1, -1, 554
     };
 
 static const ANTLR3_INT32 dfa15_T373[] =
     {
-	361
+	861
     };
 
 static const ANTLR3_INT32 dfa15_T374[] =
     {
-	234
+	868
     };
 
 static const ANTLR3_INT32 dfa15_T375[] =
     {
-	307
+	875
     };
 
 static const ANTLR3_INT32 dfa15_T376[] =
     {
-	366
+	134, 135
     };
 
 static const ANTLR3_INT32 dfa15_T377[] =
     {
-	428
+	544
     };
 
 static const ANTLR3_INT32 dfa15_T378[] =
     {
-	491
+	604, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, 603
     };
 
 static const ANTLR3_INT32 dfa15_T379[] =
     {
-	553
+	736
     };
 
 static const ANTLR3_INT32 dfa15_T380[] =
     {
-	610
+	768
     };
 
 static const ANTLR3_INT32 dfa15_T381[] =
     {
-	271
+	794
     };
 
 static const ANTLR3_INT32 dfa15_T382[] =
     {
-	658
+	816
     };
 
 static const ANTLR3_INT32 dfa15_T383[] =
     {
-	329
+	830
     };
 
 static const ANTLR3_INT32 dfa15_T384[] =
     {
-	389
+	841
     };
 
 static const ANTLR3_INT32 dfa15_T385[] =
     {
-	450
+	851
     };
 
 static const ANTLR3_INT32 dfa15_T386[] =
     {
-	235
+	224
     };
 
 static const ANTLR3_INT32 dfa15_T387[] =
     {
-	308
+	737
     };
 
 static const ANTLR3_INT32 dfa15_T388[] =
     {
-	367
+	769
     };
 
 static const ANTLR3_INT32 dfa15_T389[] =
     {
-	142
+	795
     };
 
 static const ANTLR3_INT32 dfa15_T390[] =
     {
-	272
+	817
     };
 
 static const ANTLR3_INT32 dfa15_T391[] =
     {
-	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 97, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 98, 
-	-1, -1, -1, 43
+	831
     };
 
 static const ANTLR3_INT32 dfa15_T392[] =
     {
-	330
+	842
     };
 
 static const ANTLR3_INT32 dfa15_T393[] =
     {
-	215
+	296
     };
 
 static const ANTLR3_INT32 dfa15_T394[] =
     {
-	390
+	852
     };
 
 static const ANTLR3_INT32 dfa15_T395[] =
     {
-	451
+	60, -1, -1, -1, -1, -1, -1, 61
     };
 
 static const ANTLR3_INT32 dfa15_T396[] =
     {
-	163
+	355
     };
 
 static const ANTLR3_INT32 dfa15_T397[] =
     {
-	284
+	416
     };
 
 static const ANTLR3_INT32 dfa15_T398[] =
     {
-	510
+	480
     };
 
 static const ANTLR3_INT32 dfa15_T399[] =
     {
-	236
+	364
     };
 
 static const ANTLR3_INT32 dfa15_T400[] =
     {
-	572
+	539
     };
 
 static const ANTLR3_INT32 dfa15_T401[] =
     {
-	309
+	146
     };
 
 static const ANTLR3_INT32 dfa15_T402[] =
     {
-	343
+	599
     };
 
 static const ANTLR3_INT32 dfa15_T403[] =
     {
-	368
+	222
     };
 
 static const ANTLR3_INT32 dfa15_T404[] =
     {
-	405
+	294
     };
 
 static const ANTLR3_INT32 dfa15_T405[] =
     {
-	430
+	738
     };
 
 static const ANTLR3_INT32 dfa15_T406[] =
     {
-	492
+	770
     };
 
 static const ANTLR3_INT32 dfa15_T407[] =
     {
-	467, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, -1, -1, 468
+	796
     };
 
 static const ANTLR3_INT32 dfa15_T408[] =
     {
-	554
+	103
     };
 
 static const ANTLR3_INT32 dfa15_T409[] =
     {
-	148
+	104
     };
 
 static const ANTLR3_INT32 dfa15_T410[] =
     {
-	611
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 668, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 669, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
     };
 
 static const ANTLR3_INT32 dfa15_T411[] =
     {
-	74
+	109
     };
 
 static const ANTLR3_INT32 dfa15_T412[] =
     {
-	221
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 705, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
     };
 
 static const ANTLR3_INT32 dfa15_T413[] =
     {
-	659
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 743, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
     };
 
 static const ANTLR3_INT32 dfa15_T414[] =
     {
-	290
+	110
     };
 
 static const ANTLR3_INT32 dfa15_T415[] =
     {
-	701
+	191
     };
 
 static const ANTLR3_INT32 dfa15_T416[] =
     {
-	350
+	204, 203
     };
 
 static const ANTLR3_INT32 dfa15_T417[] =
     {
-	734
+	263
     };
 
 static const ANTLR3_INT32 dfa15_T418[] =
     {
-	412
+	334
     };
 
 static const ANTLR3_INT32 dfa15_T419[] =
     {
-	762
+	73, -1, -1, -1, 72
     };
 
 static const ANTLR3_INT32 dfa15_T420[] =
     {
-	784
+	111
     };
 
 static const ANTLR3_INT32 dfa15_T421[] =
     {
-	800
+	112
     };
 
 static const ANTLR3_INT32 dfa15_T422[] =
     {
-	810
+	375
     };
 
 static const ANTLR3_INT32 dfa15_T423[] =
     {
-	818
+	613
     };
 
 static const ANTLR3_INT32 dfa15_T424[] =
     {
-	826
+	665, -1, -1, -1, 666
     };
 
 static const ANTLR3_INT32 dfa15_T425[] =
     {
-	832
+	140
     };
 
 static const ANTLR3_INT32 dfa15_T426[] =
     {
-	835
+	217
     };
 
 static const ANTLR3_INT32 dfa15_T427[] =
     {
-	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 102, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 103, 
-	-1, -1, -1, 43
+	290
     };
 
 static const ANTLR3_INT32 dfa15_T428[] =
     {
-	81
+	357
     };
 
 static const ANTLR3_INT32 dfa15_T429[] =
     {
-	164
+	418, -1, -1, 419
     };
 
 static const ANTLR3_INT32 dfa15_T430[] =
     {
-	237
+	128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127
     };
 
 static const ANTLR3_INT32 dfa15_T431[] =
     {
-	310
+	83, -1, -1, 83, 83, 83, -1, -1, -1, 83, 83, -1, 83, 83, 83, 83, 83, 83, 
+	83, 83, 83, 83, 83, 83, 83, 78, -1, 83, 83, 83, 83, 83, 83, 83, 83, 83, 
+	83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 
+	83, 83, 83, 83, -1, -1, -1, 83, 83, -1, 83, 83, 83, 83, 83, 83, 83, 83, 
+	83, 83, 83, 83, 83, 80, 83, 79, 81, 82, 83, 83, 83, 83, 83, 83, 83, 83, 
+	-1, -1, -1, 83
     };
 
 static const ANTLR3_INT32 dfa15_T432[] =
     {
-	369
+	202
     };
 
 static const ANTLR3_INT32 dfa15_T433[] =
     {
-	431
+	273
     };
 
 static const ANTLR3_INT32 dfa15_T434[] =
     {
-	493
+	340
     };
 
 static const ANTLR3_INT32 dfa15_T435[] =
     {
-	60, -1, -1, -1, -1, -1, -1, 61
+	401
     };
 
 static const ANTLR3_INT32 dfa15_T436[] =
     {
-	555
+	207
     };
 
 static const ANTLR3_INT32 dfa15_T437[] =
     {
-	612
+	278
     };
 
 static const ANTLR3_INT32 dfa15_T438[] =
     {
-	660
+	343
     };
 
 static const ANTLR3_INT32 dfa15_T439[] =
     {
-	702
+	531
     };
 
 static const ANTLR3_INT32 dfa15_T440[] =
     {
-	617
+	612
     };
 
 static const ANTLR3_INT32 dfa15_T441[] =
     {
-	663
+	593
     };
 
 static const ANTLR3_INT32 dfa15_T442[] =
     {
-	82
+	647
     };
 
 static const ANTLR3_INT32 dfa15_T443[] =
     {
-	705
+	664
     };
 
 static const ANTLR3_INT32 dfa15_T444[] =
     {
-	227
+	710
     };
 
 static const ANTLR3_INT32 dfa15_T445[] =
     {
-	302
+	461, -1, -1, -1, 462, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 463, 
+	464, -1, 465
     };
 
 static const ANTLR3_INT32 dfa15_T446[] =
     {
-	362
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 100, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 101, 
+	-1, -1, -1, 43
     };
 
 static const ANTLR3_INT32 dfa15_T447[] =
     {
-	110
+	747
     };
 
 static const ANTLR3_INT32 dfa15_T448[] =
     {
-	425
+	777
     };
 
 static const ANTLR3_INT32 dfa15_T449[] =
     {
-	488
+	532
     };
 
 static const ANTLR3_INT32 dfa15_T450[] =
     {
-	550
+	594
     };
 
 static const ANTLR3_INT32 dfa15_T451[] =
     {
-	83
+	801
     };
 
 static const ANTLR3_INT32 dfa15_T452[] =
     {
-	608
+	648
     };
 
 static const ANTLR3_INT32 dfa15_T453[] =
     {
-	657
+	693
     };
 
 static const ANTLR3_INT32 dfa15_T454[] =
     {
-	699
+	822
     };
 
 static const ANTLR3_INT32 dfa15_T455[] =
     {
-	62, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64
+	94, -1, 93, 95
     };
 
 static const ANTLR3_INT32 dfa15_T456[] =
     {
-	127
-    };
-
-static const ANTLR3_INT32 dfa15_T457[] =
-    {
-	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 327, 43, 43, 43, 43, 43, 
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 580, 43, 43, 43, 43, 
 	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
 	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
 	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
@@ -21251,9392 +21305,9417 @@ static const ANTLR3_INT32 dfa15_T457[] =
 	-1, -1, -1, 43
     };
 
+static const ANTLR3_INT32 dfa15_T457[] =
+    {
+	213
+    };
+
 static const ANTLR3_INT32 dfa15_T458[] =
     {
-	52, -1, -1, -1, -1, -1, -1, -1, -1, -1, 53
+	284
     };
 
 static const ANTLR3_INT32 dfa15_T459[] =
     {
-	200
+	351
     };
 
 static const ANTLR3_INT32 dfa15_T460[] =
     {
-	268
+	412
     };
 
 static const ANTLR3_INT32 dfa15_T461[] =
     {
-	325
+	476
     };
 
 static const ANTLR3_INT32 dfa15_T462[] =
     {
-	385
+	535
     };
 
 static const ANTLR3_INT32 dfa15_T463[] =
     {
-	448
+	597
     };
 
 static const ANTLR3_INT32 dfa15_T464[] =
     {
-	84
+	651
     };
 
 static const ANTLR3_INT32 dfa15_T465[] =
     {
-	183
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 105, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 106, 
+	-1, -1, -1, 43
     };
 
 static const ANTLR3_INT32 dfa15_T466[] =
     {
-	252
+	62, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64
     };
 
 static const ANTLR3_INT32 dfa15_T467[] =
     {
-	321
+	141
     };
 
 static const ANTLR3_INT32 dfa15_T468[] =
     {
-	380
+	218
     };
 
 static const ANTLR3_INT32 dfa15_T469[] =
     {
-	441
+	291
     };
 
 static const ANTLR3_INT32 dfa15_T470[] =
     {
-	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 681, 43, 43, 43, 43, 43, 43, 43, 
-	-1, -1, -1, 43
+	358
     };
 
 static const ANTLR3_INT32 dfa15_T471[] =
     {
-	210
+	83, -1, -1, 83, 83, 83, -1, -1, -1, 83, 83, -1, 83, 83, 83, 83, 83, 83, 
+	83, 83, 83, 83, 83, 83, 83, -1, -1, 83, 83, 83, 83, 83, 83, 83, 83, 83, 
+	83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 
+	83, 83, 83, 83, -1, -1, -1, 83, 83, -1, 83, 83, 83, 83, 83, 83, 83, 83, 
+	83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 
+	-1, -1, -1, 83
     };
 
 static const ANTLR3_INT32 dfa15_T472[] =
     {
-	280
+	420
     };
 
 static const ANTLR3_INT32 dfa15_T473[] =
     {
-	339
+	484
     };
 
 static const ANTLR3_INT32 dfa15_T474[] =
     {
-	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 718, 43, 43, 43, 43, 43, 43, 43, 
-	-1, -1, -1, 43
+	543
     };
 
 static const ANTLR3_INT32 dfa15_T475[] =
     {
-	399
+	602
     };
 
 static const ANTLR3_INT32 dfa15_T476[] =
     {
-	179
+	654
     };
 
 static const ANTLR3_INT32 dfa15_T477[] =
     {
-	175
+	546
     };
 
 static const ANTLR3_INT32 dfa15_T478[] =
     {
-	180
+	708
     };
 
 static const ANTLR3_INT32 dfa15_T479[] =
     {
-	249
+	745
     };
 
 static const ANTLR3_INT32 dfa15_T480[] =
     {
-	319
+	775
     };
 
 static const ANTLR3_INT32 dfa15_T481[] =
     {
-	176
+	800
     };
 
 static const ANTLR3_INT32 dfa15_T482[] =
     {
-	246
+	821
     };
 
 static const ANTLR3_INT32 dfa15_T483[] =
     {
-	318
+	835
     };
 
 static const ANTLR3_INT32 dfa15_T484[] =
     {
-	91, -1, 90, 92
+	844
     };
 
 static const ANTLR3_INT32 dfa15_T485[] =
     {
-	184
+	113
     };
 
 static const ANTLR3_INT32 dfa15_T486[] =
     {
-	502
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 91, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
     };
 
 static const ANTLR3_INT32 dfa15_T487[] =
     {
-	503
+	714
     };
 
 static const ANTLR3_INT32 dfa15_T488[] =
     {
-	504
+	133, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, 132
     };
 
 static const ANTLR3_INT32 dfa15_T489[] =
     {
-	567
+	750
     };
 
 static const ANTLR3_INT32 dfa15_T490[] =
     {
-	620
+	780
     };
 
 static const ANTLR3_INT32 dfa15_T491[] =
     {
-	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 646, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 647, 43, 43, 43, 43, 43, 43, 43, 
-	-1, -1, -1, 43
+	715
     };
 
 static const ANTLR3_INT32 dfa15_T492[] =
     {
-	505
+	751
     };
 
 static const ANTLR3_INT32 dfa15_T493[] =
     {
-	568
+	781
     };
 
 static const ANTLR3_INT32 dfa15_T494[] =
     {
-	621
+	804
     };
 
 static const ANTLR3_INT32 dfa15_T495[] =
     {
-	665
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 96, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
     };
 
 static const ANTLR3_INT32 dfa15_T496[] =
     {
-	706
+	556
     };
 
 static const ANTLR3_INT32 dfa15_T497[] =
     {
-	218
+	616
     };
 
 static const ANTLR3_INT32 dfa15_T498[] =
     {
-	506
+	671
     };
 
 static const ANTLR3_INT32 dfa15_T499[] =
     {
-	287
+	368
     };
 
 static const ANTLR3_INT32 dfa15_T500[] =
     {
-	569
+	431
     };
 
 static const ANTLR3_INT32 dfa15_T501[] =
     {
-	622
+	497
     };
 
 static const ANTLR3_INT32 dfa15_T502[] =
     {
-	666
+	560
     };
 
 static const ANTLR3_INT32 dfa15_T503[] =
     {
-	707
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 269, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 
+	270
     };
 
 static const ANTLR3_INT32 dfa15_T504[] =
     {
-	740
+	561
     };
 
 static const ANTLR3_INT32 dfa15_T505[] =
     {
-	765
+	620
     };
 
 static const ANTLR3_INT32 dfa15_T506[] =
     {
-	347
+	673
     };
 
 static const ANTLR3_INT32 dfa15_T507[] =
     {
-	499
+	718
     };
 
 static const ANTLR3_INT32 dfa15_T508[] =
     {
-	524
+	753
     };
 
 static const ANTLR3_INT32 dfa15_T509[] =
     {
-	562
+	782
     };
 
 static const ANTLR3_INT32 dfa15_T510[] =
     {
-	584, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, 583
+	562
     };
 
 static const ANTLR3_INT32 dfa15_T511[] =
     {
-	500
+	621
     };
 
 static const ANTLR3_INT32 dfa15_T512[] =
     {
-	563
+	674
     };
 
 static const ANTLR3_INT32 dfa15_T513[] =
     {
+	719
+    };
+
+static const ANTLR3_INT32 dfa15_T514[] =
+    {
 	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 88, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 98, 43, 43, 43, 43, 43, 43, 43, 
 	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
 	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
 	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
 	-1, -1, -1, 43
     };
 
-static const ANTLR3_INT32 dfa15_T514[] =
-    {
-	100
-    };
-
 static const ANTLR3_INT32 dfa15_T515[] =
     {
-	101
+	754
     };
 
 static const ANTLR3_INT32 dfa15_T516[] =
     {
-	67, -1, -1, -1, -1, -1, 66
+	783
     };
 
 static const ANTLR3_INT32 dfa15_T517[] =
     {
-	106
+	370
     };
 
 static const ANTLR3_INT32 dfa15_T518[] =
     {
-	592
+	433
     };
 
 static const ANTLR3_INT32 dfa15_T519[] =
     {
-	641, -1, -1, -1, -1, -1, -1, -1, -1, -1, 642
+	500
     };
 
 static const ANTLR3_INT32 dfa15_T520[] =
     {
-	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 93, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	-1, -1, -1, 43
+	563
     };
 
 static const ANTLR3_INT32 dfa15_T521[] =
     {
-	107
+	371
     };
 
 static const ANTLR3_INT32 dfa15_T522[] =
     {
-	827
+	434
     };
 
 static const ANTLR3_INT32 dfa15_T523[] =
     {
-	833
+	501
     };
 
 static const ANTLR3_INT32 dfa15_T524[] =
     {
-	836
+	564
     };
 
 static const ANTLR3_INT32 dfa15_T525[] =
     {
-	442, -1, -1, -1, 443, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 444, 
-	445, -1, 446
+	623
     };
 
 static const ANTLR3_INT32 dfa15_T526[] =
     {
-	119, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, -1, -1, 118
+	675
     };
 
 static const ANTLR3_INT32 dfa15_T527[] =
     {
-	828
+	720
     };
 
 static const ANTLR3_INT32 dfa15_T528[] =
     {
-	834
+	755
     };
 
 static const ANTLR3_INT32 dfa15_T529[] =
     {
-	837
+	784
     };
 
 static const ANTLR3_INT32 dfa15_T530[] =
     {
-	217
+	405
     };
 
 static const ANTLR3_INT32 dfa15_T531[] =
     {
-	711
+	469
     };
 
 static const ANTLR3_INT32 dfa15_T532[] =
     {
-	743
+	528
     };
 
 static const ANTLR3_INT32 dfa15_T533[] =
     {
-	73, -1, -1, -1, -1, -1, 72
+	591
     };
 
 static const ANTLR3_INT32 dfa15_T534[] =
     {
-	768
+	645
     };
 
 static const ANTLR3_INT32 dfa15_T535[] =
     {
-	790
+	691
     };
 
 static const ANTLR3_INT32 dfa15_T536[] =
     {
-	803
+	733
     };
 
 static const ANTLR3_INT32 dfa15_T537[] =
     {
-	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 95, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	-1, -1, -1, 43
+	766
     };
 
 static const ANTLR3_INT32 dfa15_T538[] =
     {
-	812
+	792
     };
 
 static const ANTLR3_INT32 dfa15_T539[] =
     {
-	286
+	814
     };
 
 static const ANTLR3_INT32 dfa15_T540[] =
     {
-	821
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 
+	199
     };
 
 static const ANTLR3_INT32 dfa15_T541[] =
     {
-	346
+	153
     };
 
 static const ANTLR3_INT32 dfa15_T542[] =
     {
-	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 560, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	-1, -1, -1, 43
+	159
     };
 
 static const ANTLR3_INT32 dfa15_T543[] =
     {
-	712
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 652, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
     };
 
 static const ANTLR3_INT32 dfa15_T544[] =
     {
-	744
+	168, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 167
     };
 
 static const ANTLR3_INT32 dfa15_T545[] =
     {
-	769
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 142, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
     };
 
 static const ANTLR3_INT32 dfa15_T546[] =
     {
-	791
+	120, -1, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45
     };
 
 static const ANTLR3_INT32 dfa15_T547[] =
     {
-	407
+	353
     };
 
 static const ANTLR3_INT32 dfa15_T548[] =
     {
-	804
+	414
     };
 
 static const ANTLR3_INT32 dfa15_T549[] =
     {
-	813
+	478
     };
 
 static const ANTLR3_INT32 dfa15_T550[] =
     {
-	822
+	537
     };
 
 static const ANTLR3_INT32 dfa15_T551[] =
     {
-	470
+	354
     };
 
 static const ANTLR3_INT32 dfa15_T552[] =
     {
-	713
+	415
     };
 
 static const ANTLR3_INT32 dfa15_T553[] =
     {
-	745
+	479
     };
 
 static const ANTLR3_INT32 dfa15_T554[] =
     {
-	532, 531, -1, 529, -1, -1, -1, -1, -1, -1, -1, -1, -1, 533, -1, -1, 530, 
-	-1, -1, 534
+	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
+	43, 43, 43, 43, 43, 43, 43, 43, 43, 361, 43, 43, 43, 43, 43, 43, 43, 43, 
+	-1, -1, -1, 43
     };
 
 static const ANTLR3_INT32 dfa15_T555[] =
     {
-	770
+	160
     };
 
 static const ANTLR3_INT32 dfa15_T556[] =
     {
-	338
+	236
     };
 
 static const ANTLR3_INT32 dfa15_T557[] =
     {
-	398
+	312
     };
 
 static const ANTLR3_INT32 dfa15_T558[] =
     {
-	460
+	380
     };
 
 static const ANTLR3_INT32 dfa15_T559[] =
     {
-	519
+	444
     };
 
 static const ANTLR3_INT32 dfa15_T560[] =
     {
-	143
+	509
     };
 
 static const ANTLR3_INT32 dfa15_T561[] =
     {
-	579
+	571
     };
 
 static const ANTLR3_INT32 dfa15_T562[] =
     {
-	216
+	372
     };
 
 static const ANTLR3_INT32 dfa15_T563[] =
     {
-	108
+	435
     };
 
 static const ANTLR3_INT32 dfa15_T564[] =
     {
-	285
+	502
     };
 
 static const ANTLR3_INT32 dfa15_T565[] =
     {
-	109
+	211
     };
 
 static const ANTLR3_INT32 dfa15_T566[] =
     {
-	198, 197
+	282
     };
 
 static const ANTLR3_INT32 dfa15_T567[] =
     {
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 260, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 
-	261
+	348
     };
 
 static const ANTLR3_INT32 dfa15_T568[] =
     {
-	43, -1, -1, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, -1, -1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, -1, -1, -1, 43, 43, -1, 43, 43, 43, 43, 43, 43, 43, 43, 
-	43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 139, 43, 43, 43, 43, 43, 43, 43, 
-	-1, -1, -1, 43
+	409
     };
 
 static const ANTLR3_INT32 dfa15_T569[] =
     {
-	358
+	472, -1, -1, -1, -1, -1, 473
     };
 
 static const ANTLR3_INT32 dfa15_T570[] =
     {
-	593
+	373
     };
 
 static const ANTLR3_INT32 dfa15_T571[] =
     {
-	643, -1, -1, -1, 644
+	436
     };
 
 static const ANTLR3_INT32 dfa15_T572[] =
     {
-	55, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-	-1, -1, 56
+	503
     };
 
 static const ANTLR3_INT32 dfa15_T573[] =
     {
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 195, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 120, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 
-	123
+	566
     };
 
 static const ANTLR3_INT32 dfa15_T574[] =
     {
-	137
+	624
     };
 
 static const ANTLR3_INT32 dfa15_T575[] =
     {
-	211
+	162
     };
 
 static const ANTLR3_INT32 dfa15_T576[] =
     {
-	281
+	238
     };
 
 static const ANTLR3_INT32 dfa15_T577[] =
     {
-	340
+	163
     };
 
 static const ANTLR3_INT32 dfa15_T578[] =
     {
-	400, -1, -1, 401
+	139, -1, -1, -1, 138
+    };
+
+static const ANTLR3_INT32 dfa15_T579[] =
+    {
+	122, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+	-1, -1, -1, -1, 121
+    };
+
+static const ANTLR3_INT32 dfa15_T580[] =
+    {
+	76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 75, -1, -1, -1, 
+	-1, -1, 74
+    };
+
+static const ANTLR3_INT32 dfa15_T581[] =
+    {
+	52, -1, -1, -1, -1, -1, -1, -1, -1, -1, 53
+    };
+
+static const ANTLR3_INT32 dfa15_T582[] =
+    {
+	486, -1, 485
     };
 
 
@@ -30645,130 +30724,135 @@ static const ANTLR3_INT32 dfa15_T578[] =
  */
 static const ANTLR3_INT32 * const dfa15_transitions[] =
 {
-    dfa15_T226, NULL, dfa15_T105, dfa15_T458, dfa15_T572, dfa15_T129, dfa15_T225, 
-    dfa15_T435, dfa15_T455, dfa15_T176, dfa15_T516, dfa15_T200, dfa15_T0, 
-    NULL, NULL, dfa15_T0, dfa15_T216, dfa15_T533, dfa15_T411, dfa15_T10, 
-    dfa15_T428, dfa15_T442, dfa15_T451, dfa15_T464, dfa15_T0, dfa15_T0, 
-    dfa15_T0, dfa15_T513, dfa15_T484, dfa15_T520, dfa15_T537, dfa15_T391, 
-    dfa15_T514, dfa15_T515, dfa15_T427, dfa15_T0, dfa15_T517, dfa15_T521, 
-    dfa15_T563, dfa15_T565, dfa15_T447, dfa15_T15, dfa15_T1, NULL, NULL, 
-    dfa15_T266, dfa15_T526, dfa15_T205, NULL, dfa15_T5, dfa15_T164, dfa15_T456, 
-    dfa15_T8, dfa15_T233, dfa15_T333, dfa15_T48, dfa15_T574, dfa15_T37, 
-    dfa15_T568, dfa15_T320, dfa15_T389, dfa15_T560, dfa15_T319, dfa15_T93, 
-    dfa15_T409, dfa15_T70, dfa15_T104, dfa15_T141, dfa15_T106, NULL, NULL, 
-    dfa15_T114, dfa15_T135, dfa15_T137, dfa15_T264, NULL, dfa15_T362, dfa15_T77, 
-    dfa15_T396, dfa15_T429, NULL, dfa15_T270, dfa15_T280, dfa15_T286, dfa15_T300, 
-    NULL, NULL, NULL, dfa15_T0, NULL, dfa15_T334, dfa15_T166, dfa15_T313, 
-    dfa15_T0, NULL, dfa15_T0, NULL, dfa15_T477, dfa15_T481, NULL, dfa15_T351, 
-    dfa15_T0, dfa15_T476, dfa15_T478, NULL, NULL, dfa15_T352, dfa15_T361, 
-    dfa15_T465, dfa15_T485, dfa15_T288, dfa15_T318, dfa15_T193, dfa15_T1, 
-    NULL, NULL, NULL, NULL, NULL, NULL, dfa15_T197, dfa15_T205, dfa15_T279, 
-    dfa15_T573, dfa15_T11, dfa15_T566, dfa15_T165, dfa15_T459, dfa15_T16, 
-    dfa15_T302, dfa15_T139, dfa15_T121, dfa15_T26, dfa15_T27, dfa15_T206, 
-    dfa15_T229, dfa15_T471, dfa15_T575, dfa15_T38, dfa15_T153, NULL, dfa15_T0, 
-    dfa15_T393, dfa15_T562, dfa15_T530, dfa15_T497, dfa15_T321, dfa15_T354, 
-    dfa15_T412, dfa15_T71, dfa15_T0, dfa15_T211, dfa15_T253, dfa15_T371, 
-    dfa15_T444, dfa15_T0, dfa15_T115, dfa15_T136, dfa15_T0, dfa15_T265, 
-    dfa15_T364, dfa15_T374, dfa15_T386, dfa15_T399, dfa15_T430, dfa15_T272, 
-    dfa15_T281, dfa15_T287, dfa15_T301, NULL, dfa15_T335, dfa15_T169, dfa15_T314, 
-    NULL, NULL, dfa15_T0, dfa15_T482, dfa15_T0, NULL, dfa15_T0, dfa15_T479, 
-    dfa15_T0, dfa15_T363, dfa15_T466, dfa15_T0, dfa15_T295, dfa15_T0, dfa15_T0, 
-    dfa15_T0, dfa15_T0, dfa15_T0, dfa15_T567, dfa15_T573, NULL, dfa15_T194, 
-    dfa15_T279, dfa15_T12, dfa15_T0, dfa15_T331, dfa15_T0, dfa15_T460, dfa15_T17, 
-    dfa15_T305, dfa15_T381, dfa15_T390, dfa15_T122, dfa15_T28, dfa15_T29, 
-    dfa15_T207, dfa15_T230, dfa15_T472, dfa15_T576, dfa15_T39, dfa15_T158, 
-    NULL, dfa15_T397, dfa15_T564, dfa15_T539, dfa15_T499, dfa15_T322, dfa15_T355, 
-    dfa15_T414, dfa15_T79, NULL, dfa15_T212, dfa15_T254, dfa15_T372, dfa15_T445, 
-    NULL, dfa15_T116, dfa15_T0, NULL, dfa15_T0, dfa15_T366, dfa15_T375, 
-    dfa15_T387, dfa15_T401, dfa15_T431, dfa15_T273, dfa15_T282, dfa15_T289, 
-    dfa15_T303, dfa15_T336, dfa15_T172, dfa15_T315, NULL, dfa15_T483, NULL, 
-    NULL, dfa15_T480, NULL, dfa15_T365, dfa15_T467, NULL, dfa15_T299, NULL, 
-    NULL, NULL, NULL, NULL, dfa15_T4, NULL, NULL, dfa15_T194, dfa15_T13, 
-    NULL, dfa15_T332, NULL, dfa15_T461, dfa15_T18, dfa15_T457, dfa15_T383, 
-    dfa15_T392, dfa15_T123, dfa15_T33, dfa15_T30, dfa15_T208, dfa15_T107, 
-    dfa15_T111, dfa15_T556, dfa15_T473, dfa15_T577, dfa15_T40, dfa15_T159, 
-    dfa15_T402, dfa15_T9, dfa15_T541, dfa15_T506, dfa15_T323, dfa15_T356, 
-    dfa15_T416, dfa15_T60, dfa15_T239, dfa15_T80, dfa15_T84, dfa15_T124, 
-    dfa15_T130, dfa15_T160, dfa15_T569, dfa15_T213, dfa15_T255, dfa15_T373, 
-    dfa15_T446, dfa15_T117, NULL, dfa15_T194, dfa15_T368, dfa15_T376, dfa15_T388, 
-    dfa15_T403, dfa15_T432, dfa15_T274, dfa15_T283, dfa15_T290, dfa15_T304, 
-    dfa15_T337, dfa15_T173, dfa15_T316, dfa15_T0, dfa15_T0, dfa15_T367, 
-    dfa15_T468, dfa15_T7, dfa15_T14, dfa15_T0, dfa15_T462, dfa15_T0, dfa15_T94, 
-    dfa15_T194, dfa15_T384, dfa15_T394, dfa15_T125, dfa15_T338, dfa15_T267, 
-    dfa15_T31, dfa15_T209, dfa15_T108, dfa15_T112, dfa15_T557, dfa15_T475, 
-    dfa15_T578, dfa15_T41, dfa15_T215, dfa15_T404, dfa15_T249, NULL, dfa15_T547, 
-    dfa15_T3, dfa15_T324, dfa15_T358, dfa15_T418, dfa15_T61, dfa15_T240, 
-    dfa15_T81, dfa15_T85, dfa15_T126, dfa15_T131, dfa15_T161, dfa15_T49, 
-    dfa15_T214, dfa15_T256, dfa15_T0, dfa15_T448, dfa15_T118, NULL, dfa15_T369, 
-    dfa15_T377, dfa15_T2, dfa15_T405, dfa15_T433, dfa15_T276, dfa15_T284, 
-    dfa15_T291, dfa15_T306, dfa15_T0, dfa15_T174, dfa15_T317, NULL, NULL, 
-    dfa15_T0, dfa15_T469, dfa15_T525, NULL, dfa15_T0, NULL, dfa15_T463, 
-    NULL, dfa15_T95, NULL, dfa15_T385, dfa15_T395, dfa15_T127, dfa15_T339, 
-    dfa15_T268, dfa15_T32, dfa15_T210, dfa15_T109, dfa15_T113, dfa15_T558, 
-    dfa15_T0, dfa15_T227, dfa15_T231, dfa15_T42, dfa15_T46, NULL, dfa15_T407, 
-    dfa15_T250, dfa15_T551, dfa15_T138, NULL, dfa15_T325, dfa15_T359, dfa15_T0, 
-    dfa15_T62, dfa15_T241, dfa15_T82, dfa15_T86, dfa15_T128, dfa15_T132, 
-    dfa15_T162, dfa15_T217, NULL, dfa15_T0, dfa15_T257, NULL, dfa15_T449, 
-    dfa15_T119, dfa15_T370, dfa15_T378, NULL, dfa15_T406, dfa15_T434, dfa15_T277, 
-    dfa15_T285, dfa15_T292, dfa15_T307, NULL, dfa15_T175, dfa15_T507, dfa15_T511, 
-    NULL, dfa15_T0, dfa15_T486, dfa15_T487, dfa15_T488, dfa15_T492, dfa15_T498, 
-    NULL, dfa15_T0, dfa15_T96, dfa15_T0, dfa15_T398, dfa15_T19, dfa15_T22, 
-    dfa15_T340, dfa15_T269, dfa15_T34, dfa15_T0, dfa15_T110, dfa15_T0, dfa15_T559, 
-    dfa15_T194, dfa15_T228, dfa15_T232, dfa15_T43, dfa15_T508, dfa15_T183, 
-    dfa15_T47, dfa15_T234, dfa15_T251, dfa15_T554, dfa15_T353, dfa15_T57, 
-    dfa15_T201, dfa15_T0, dfa15_T360, NULL, dfa15_T63, dfa15_T64, dfa15_T72, 
-    dfa15_T83, dfa15_T87, dfa15_T0, dfa15_T133, dfa15_T163, dfa15_T218, 
-    NULL, dfa15_T258, dfa15_T450, dfa15_T120, dfa15_T2, dfa15_T379, dfa15_T408, 
-    dfa15_T436, dfa15_T0, dfa15_T0, dfa15_T293, dfa15_T308, dfa15_T542, 
-    dfa15_T509, dfa15_T512, dfa15_T194, dfa15_T0, dfa15_T0, dfa15_T489, 
-    dfa15_T493, dfa15_T500, dfa15_T194, dfa15_T97, NULL, dfa15_T400, dfa15_T20, 
-    dfa15_T23, dfa15_T341, dfa15_T271, dfa15_T35, NULL, dfa15_T0, NULL, 
-    dfa15_T561, NULL, dfa15_T0, dfa15_T0, dfa15_T44, dfa15_T510, dfa15_T184, 
-    dfa15_T0, dfa15_T235, dfa15_T252, dfa15_T327, dfa15_T326, dfa15_T140, 
-    dfa15_T518, dfa15_T570, dfa15_T237, dfa15_T357, dfa15_T58, dfa15_T202, 
-    NULL, dfa15_T0, dfa15_T0, dfa15_T65, dfa15_T73, dfa15_T0, dfa15_T88, 
-    NULL, dfa15_T134, dfa15_T0, dfa15_T219, dfa15_T259, dfa15_T452, dfa15_T0, 
-    NULL, dfa15_T380, dfa15_T410, dfa15_T437, dfa15_T194, dfa15_T194, dfa15_T294, 
-    dfa15_T309, dfa15_T440, NULL, dfa15_T0, dfa15_T0, NULL, NULL, NULL, 
-    dfa15_T490, dfa15_T494, dfa15_T501, NULL, dfa15_T98, dfa15_T0, dfa15_T21, 
-    dfa15_T24, dfa15_T342, dfa15_T275, dfa15_T36, NULL, dfa15_T6, NULL, 
-    NULL, dfa15_T45, dfa15_T167, dfa15_T177, dfa15_T185, NULL, dfa15_T236, 
-    dfa15_T0, dfa15_T329, dfa15_T328, dfa15_T142, dfa15_T519, dfa15_T571, 
-    dfa15_T238, dfa15_T491, dfa15_T59, dfa15_T203, NULL, NULL, dfa15_T66, 
-    dfa15_T74, NULL, dfa15_T89, dfa15_T0, NULL, dfa15_T220, dfa15_T260, 
-    dfa15_T453, NULL, dfa15_T382, dfa15_T413, dfa15_T438, NULL, NULL, dfa15_T296, 
-    dfa15_T310, dfa15_T441, NULL, NULL, dfa15_T0, dfa15_T495, dfa15_T502, 
-    dfa15_T99, NULL, dfa15_T0, dfa15_T25, dfa15_T343, dfa15_T278, dfa15_T0, 
-    dfa15_T0, NULL, dfa15_T0, dfa15_T168, dfa15_T178, dfa15_T186, dfa15_T0, 
-    NULL, dfa15_T470, dfa15_T330, dfa15_T143, dfa15_T149, dfa15_T198, dfa15_T195, 
-    dfa15_T242, dfa15_T0, dfa15_T50, dfa15_T53, NULL, dfa15_T0, dfa15_T204, 
-    dfa15_T67, dfa15_T75, dfa15_T90, NULL, dfa15_T221, dfa15_T261, dfa15_T454, 
-    dfa15_T2, dfa15_T415, dfa15_T439, dfa15_T297, dfa15_T311, dfa15_T443, 
-    NULL, dfa15_T496, dfa15_T503, dfa15_T100, NULL, dfa15_T0, dfa15_T344, 
-    dfa15_T531, dfa15_T543, dfa15_T552, NULL, NULL, NULL, dfa15_T170, dfa15_T179, 
-    dfa15_T187, NULL, dfa15_T0, NULL, dfa15_T474, dfa15_T144, dfa15_T150, 
-    dfa15_T199, dfa15_T196, dfa15_T243, NULL, dfa15_T51, dfa15_T54, NULL, 
-    dfa15_T0, dfa15_T68, dfa15_T76, dfa15_T91, dfa15_T222, dfa15_T262, dfa15_T0, 
-    NULL, dfa15_T417, dfa15_T2, dfa15_T298, dfa15_T312, dfa15_T0, dfa15_T0, 
-    dfa15_T504, dfa15_T101, NULL, dfa15_T345, dfa15_T532, dfa15_T544, dfa15_T553, 
-    dfa15_T171, dfa15_T180, dfa15_T188, NULL, dfa15_T0, NULL, dfa15_T145, 
-    dfa15_T151, dfa15_T0, dfa15_T0, dfa15_T244, dfa15_T52, dfa15_T55, NULL, 
-    dfa15_T69, dfa15_T78, dfa15_T92, dfa15_T223, dfa15_T263, NULL, dfa15_T419, 
-    NULL, dfa15_T0, dfa15_T0, NULL, NULL, dfa15_T505, dfa15_T102, dfa15_T346, 
-    dfa15_T534, dfa15_T545, dfa15_T555, dfa15_T0, dfa15_T181, dfa15_T189, 
-    NULL, dfa15_T146, dfa15_T152, NULL, NULL, dfa15_T245, dfa15_T0, dfa15_T56, 
-    dfa15_T0, dfa15_T0, dfa15_T0, dfa15_T224, dfa15_T0, dfa15_T420, dfa15_T194, 
-    dfa15_T194, dfa15_T0, dfa15_T103, dfa15_T347, dfa15_T535, dfa15_T546, 
-    dfa15_T0, NULL, dfa15_T182, dfa15_T190, dfa15_T147, dfa15_T154, dfa15_T246, 
-    NULL, dfa15_T0, NULL, NULL, NULL, dfa15_T0, NULL, dfa15_T421, NULL, 
-    NULL, NULL, dfa15_T0, dfa15_T348, dfa15_T536, dfa15_T548, NULL, dfa15_T0, 
-    dfa15_T191, dfa15_T148, dfa15_T155, dfa15_T247, NULL, NULL, dfa15_T422, 
-    NULL, dfa15_T349, dfa15_T538, dfa15_T549, NULL, dfa15_T192, dfa15_T0, 
-    dfa15_T156, dfa15_T248, dfa15_T423, dfa15_T350, dfa15_T540, dfa15_T550, 
-    dfa15_T0, NULL, dfa15_T157, dfa15_T0, dfa15_T424, dfa15_T522, dfa15_T527, 
-    dfa15_T0, dfa15_T0, NULL, dfa15_T0, NULL, dfa15_T425, dfa15_T523, dfa15_T528, 
-    NULL, NULL, NULL, dfa15_T426, dfa15_T524, dfa15_T529, dfa15_T2, dfa15_T0, 
-    dfa15_T0, NULL, NULL, NULL
+    dfa15_T333, NULL, dfa15_T122, dfa15_T581, dfa15_T3, dfa15_T5, dfa15_T346, 
+    dfa15_T395, dfa15_T466, dfa15_T251, dfa15_T121, dfa15_T80, dfa15_T2, 
+    NULL, NULL, dfa15_T2, dfa15_T419, dfa15_T580, dfa15_T345, dfa15_T431, 
+    dfa15_T354, dfa15_T357, dfa15_T360, dfa15_T364, dfa15_T2, dfa15_T2, 
+    dfa15_T2, dfa15_T486, dfa15_T455, dfa15_T495, dfa15_T514, dfa15_T446, 
+    dfa15_T408, dfa15_T409, dfa15_T465, dfa15_T2, dfa15_T411, dfa15_T414, 
+    dfa15_T420, dfa15_T421, dfa15_T485, dfa15_T152, dfa15_T123, NULL, NULL, 
+    dfa15_T546, dfa15_T579, dfa15_T127, NULL, dfa15_T430, dfa15_T15, dfa15_T289, 
+    dfa15_T488, dfa15_T376, dfa15_T231, dfa15_T578, dfa15_T425, dfa15_T467, 
+    dfa15_T545, dfa15_T202, dfa15_T269, dfa15_T401, dfa15_T302, dfa15_T4, 
+    dfa15_T266, dfa15_T39, dfa15_T541, dfa15_T2, dfa15_T140, dfa15_T542, 
+    NULL, NULL, dfa15_T555, dfa15_T7, dfa15_T575, dfa15_T577, dfa15_T6, 
+    dfa15_T125, NULL, dfa15_T165, dfa15_T544, dfa15_T182, dfa15_T201, NULL, 
+    dfa15_T128, dfa15_T134, dfa15_T141, dfa15_T153, NULL, NULL, NULL, dfa15_T2, 
+    NULL, dfa15_T223, dfa15_T53, dfa15_T235, dfa15_T2, NULL, dfa15_T2, NULL, 
+    dfa15_T314, dfa15_T325, NULL, dfa15_T234, dfa15_T2, dfa15_T310, dfa15_T318, 
+    NULL, NULL, dfa15_T239, dfa15_T247, dfa15_T295, dfa15_T332, dfa15_T415, 
+    dfa15_T259, dfa15_T164, dfa15_T123, NULL, NULL, NULL, NULL, NULL, NULL, 
+    dfa15_T38, dfa15_T127, dfa15_T362, dfa15_T46, dfa15_T432, dfa15_T416, 
+    dfa15_T16, dfa15_T290, dfa15_T436, dfa15_T103, dfa15_T37, dfa15_T565, 
+    dfa15_T100, dfa15_T457, dfa15_T56, dfa15_T89, dfa15_T303, dfa15_T426, 
+    dfa15_T468, dfa15_T91, NULL, dfa15_T2, dfa15_T272, dfa15_T403, dfa15_T361, 
+    dfa15_T386, dfa15_T214, dfa15_T241, dfa15_T267, dfa15_T42, dfa15_T2, 
+    dfa15_T0, dfa15_T65, dfa15_T110, dfa15_T252, dfa15_T280, dfa15_T2, dfa15_T556, 
+    dfa15_T8, dfa15_T576, dfa15_T2, dfa15_T2, dfa15_T126, dfa15_T166, dfa15_T171, 
+    dfa15_T179, dfa15_T183, dfa15_T203, dfa15_T129, dfa15_T135, dfa15_T142, 
+    dfa15_T154, NULL, dfa15_T224, dfa15_T55, dfa15_T236, NULL, NULL, dfa15_T2, 
+    dfa15_T327, dfa15_T2, NULL, dfa15_T2, dfa15_T320, dfa15_T2, dfa15_T248, 
+    dfa15_T296, dfa15_T2, dfa15_T417, dfa15_T2, dfa15_T2, dfa15_T2, dfa15_T2, 
+    dfa15_T2, dfa15_T503, dfa15_T46, NULL, dfa15_T0, dfa15_T362, dfa15_T433, 
+    dfa15_T2, dfa15_T220, dfa15_T2, dfa15_T291, dfa15_T437, dfa15_T105, 
+    dfa15_T255, dfa15_T260, dfa15_T566, dfa15_T102, dfa15_T458, dfa15_T58, 
+    dfa15_T90, dfa15_T304, dfa15_T427, dfa15_T469, dfa15_T95, NULL, dfa15_T273, 
+    dfa15_T404, dfa15_T363, dfa15_T393, dfa15_T216, dfa15_T242, dfa15_T268, 
+    dfa15_T43, NULL, NULL, dfa15_T66, dfa15_T111, dfa15_T253, dfa15_T281, 
+    NULL, dfa15_T557, dfa15_T9, dfa15_T2, NULL, dfa15_T0, dfa15_T2, dfa15_T167, 
+    dfa15_T172, dfa15_T180, dfa15_T184, dfa15_T204, dfa15_T130, dfa15_T136, 
+    dfa15_T143, dfa15_T155, dfa15_T227, dfa15_T57, dfa15_T237, NULL, dfa15_T328, 
+    NULL, NULL, dfa15_T321, NULL, dfa15_T249, dfa15_T297, dfa15_T0, dfa15_T418, 
+    dfa15_T0, dfa15_T0, dfa15_T0, dfa15_T0, dfa15_T0, dfa15_T540, NULL, 
+    NULL, dfa15_T0, dfa15_T434, NULL, dfa15_T221, NULL, dfa15_T292, dfa15_T438, 
+    dfa15_T371, dfa15_T256, dfa15_T261, dfa15_T567, dfa15_T106, dfa15_T459, 
+    dfa15_T59, dfa15_T547, dfa15_T551, dfa15_T396, dfa15_T305, dfa15_T428, 
+    dfa15_T470, dfa15_T101, dfa15_T274, dfa15_T554, dfa15_T365, dfa15_T399, 
+    dfa15_T217, dfa15_T243, dfa15_T270, dfa15_T499, dfa15_T49, dfa15_T517, 
+    dfa15_T521, dfa15_T562, dfa15_T570, dfa15_T11, dfa15_T422, dfa15_T67, 
+    dfa15_T112, dfa15_T254, dfa15_T282, dfa15_T558, dfa15_T2, NULL, NULL, 
+    dfa15_T0, dfa15_T168, dfa15_T173, dfa15_T181, dfa15_T185, dfa15_T205, 
+    dfa15_T131, dfa15_T137, dfa15_T144, dfa15_T156, dfa15_T228, dfa15_T60, 
+    dfa15_T238, dfa15_T2, dfa15_T2, dfa15_T250, dfa15_T298, NULL, dfa15_T208, 
+    NULL, NULL, NULL, NULL, NULL, dfa15_T435, dfa15_T2, dfa15_T293, dfa15_T2, 
+    dfa15_T530, dfa15_T0, dfa15_T257, dfa15_T262, dfa15_T568, dfa15_T311, 
+    dfa15_T300, dfa15_T460, dfa15_T61, dfa15_T548, dfa15_T552, dfa15_T397, 
+    dfa15_T307, dfa15_T429, dfa15_T472, dfa15_T341, dfa15_T275, dfa15_T104, 
+    NULL, dfa15_T366, dfa15_T1, dfa15_T218, dfa15_T244, dfa15_T271, dfa15_T500, 
+    dfa15_T52, dfa15_T518, dfa15_T522, dfa15_T563, dfa15_T571, dfa15_T12, 
+    dfa15_T77, dfa15_T68, dfa15_T113, dfa15_T2, dfa15_T283, dfa15_T559, 
+    dfa15_T0, NULL, dfa15_T169, dfa15_T174, dfa15_T471, dfa15_T186, dfa15_T206, 
+    dfa15_T132, dfa15_T138, dfa15_T145, dfa15_T157, dfa15_T2, dfa15_T62, 
+    dfa15_T240, NULL, NULL, dfa15_T2, dfa15_T299, dfa15_T445, dfa15_T0, 
+    dfa15_T2, NULL, dfa15_T294, NULL, dfa15_T531, NULL, dfa15_T258, dfa15_T263, 
+    dfa15_T569, dfa15_T313, dfa15_T301, dfa15_T461, dfa15_T63, dfa15_T549, 
+    dfa15_T553, dfa15_T398, dfa15_T2, dfa15_T78, dfa15_T81, dfa15_T473, 
+    dfa15_T582, NULL, dfa15_T276, dfa15_T107, dfa15_T367, dfa15_T10, NULL, 
+    dfa15_T219, dfa15_T245, dfa15_T2, dfa15_T501, dfa15_T54, dfa15_T519, 
+    dfa15_T523, dfa15_T564, dfa15_T572, dfa15_T13, dfa15_T69, NULL, dfa15_T2, 
+    dfa15_T114, NULL, dfa15_T284, dfa15_T560, NULL, dfa15_T170, dfa15_T175, 
+    NULL, dfa15_T187, dfa15_T207, dfa15_T133, dfa15_T139, dfa15_T146, dfa15_T158, 
+    NULL, dfa15_T64, dfa15_T355, dfa15_T358, NULL, dfa15_T2, dfa15_T334, 
+    dfa15_T335, dfa15_T336, dfa15_T339, dfa15_T347, NULL, NULL, dfa15_T2, 
+    dfa15_T532, dfa15_T2, dfa15_T264, dfa15_T439, dfa15_T449, dfa15_T315, 
+    dfa15_T306, dfa15_T462, dfa15_T2, dfa15_T550, dfa15_T2, dfa15_T400, 
+    dfa15_T0, dfa15_T79, dfa15_T82, dfa15_T474, dfa15_T377, dfa15_T27, dfa15_T477, 
+    dfa15_T83, dfa15_T108, dfa15_T372, dfa15_T212, dfa15_T496, dfa15_T47, 
+    dfa15_T2, dfa15_T246, NULL, dfa15_T502, dfa15_T504, dfa15_T510, dfa15_T520, 
+    dfa15_T524, dfa15_T2, dfa15_T573, dfa15_T14, dfa15_T70, NULL, dfa15_T115, 
+    dfa15_T285, dfa15_T561, dfa15_T471, dfa15_T176, dfa15_T188, dfa15_T209, 
+    dfa15_T2, dfa15_T2, dfa15_T147, dfa15_T159, dfa15_T456, dfa15_T356, 
+    dfa15_T359, dfa15_T0, dfa15_T2, dfa15_T2, dfa15_T337, dfa15_T340, dfa15_T348, 
+    dfa15_T0, dfa15_T533, NULL, dfa15_T265, dfa15_T441, dfa15_T450, dfa15_T316, 
+    dfa15_T308, dfa15_T463, NULL, dfa15_T2, NULL, dfa15_T402, NULL, dfa15_T2, 
+    dfa15_T2, dfa15_T475, dfa15_T378, dfa15_T28, dfa15_T2, dfa15_T84, dfa15_T109, 
+    dfa15_T225, dfa15_T222, dfa15_T232, dfa15_T440, dfa15_T423, dfa15_T86, 
+    dfa15_T215, dfa15_T497, dfa15_T48, NULL, dfa15_T2, dfa15_T2, dfa15_T505, 
+    dfa15_T511, dfa15_T2, dfa15_T525, NULL, dfa15_T574, dfa15_T2, dfa15_T71, 
+    dfa15_T116, dfa15_T286, dfa15_T2, NULL, dfa15_T177, dfa15_T189, dfa15_T210, 
+    dfa15_T0, dfa15_T0, dfa15_T148, dfa15_T160, dfa15_T277, NULL, dfa15_T2, 
+    dfa15_T2, NULL, dfa15_T0, dfa15_T0, dfa15_T338, dfa15_T342, dfa15_T349, 
+    NULL, dfa15_T534, dfa15_T2, dfa15_T442, dfa15_T452, dfa15_T317, dfa15_T309, 
+    dfa15_T464, NULL, dfa15_T543, NULL, NULL, dfa15_T476, dfa15_T17, dfa15_T21, 
+    dfa15_T29, NULL, dfa15_T85, dfa15_T2, dfa15_T229, dfa15_T226, dfa15_T233, 
+    dfa15_T443, dfa15_T424, dfa15_T87, dfa15_T410, dfa15_T498, dfa15_T50, 
+    NULL, NULL, dfa15_T506, dfa15_T512, NULL, dfa15_T526, dfa15_T2, NULL, 
+    dfa15_T72, dfa15_T117, dfa15_T287, NULL, dfa15_T178, dfa15_T190, dfa15_T211, 
+    NULL, NULL, dfa15_T149, dfa15_T161, dfa15_T278, dfa15_T0, dfa15_T0, 
+    NULL, NULL, dfa15_T2, dfa15_T343, dfa15_T350, dfa15_T535, NULL, dfa15_T2, 
+    dfa15_T453, dfa15_T319, dfa15_T312, dfa15_T2, dfa15_T2, NULL, dfa15_T2, 
+    dfa15_T18, dfa15_T22, dfa15_T30, dfa15_T2, NULL, dfa15_T412, dfa15_T230, 
+    dfa15_T478, dfa15_T44, dfa15_T444, dfa15_T40, dfa15_T92, dfa15_T2, dfa15_T487, 
+    dfa15_T491, NULL, dfa15_T2, dfa15_T51, dfa15_T507, dfa15_T513, dfa15_T527, 
+    NULL, dfa15_T73, dfa15_T118, dfa15_T288, dfa15_T471, dfa15_T191, dfa15_T213, 
+    dfa15_T150, dfa15_T162, dfa15_T279, NULL, NULL, dfa15_T0, dfa15_T344, 
+    dfa15_T351, dfa15_T536, NULL, dfa15_T2, dfa15_T322, dfa15_T379, dfa15_T387, 
+    dfa15_T405, NULL, NULL, NULL, dfa15_T19, dfa15_T23, dfa15_T31, NULL, 
+    dfa15_T2, NULL, dfa15_T413, dfa15_T479, dfa15_T45, dfa15_T447, dfa15_T41, 
+    dfa15_T93, NULL, dfa15_T489, dfa15_T492, NULL, dfa15_T2, dfa15_T508, 
+    dfa15_T515, dfa15_T528, dfa15_T74, dfa15_T119, dfa15_T2, NULL, dfa15_T192, 
+    dfa15_T471, dfa15_T151, dfa15_T163, dfa15_T2, NULL, dfa15_T2, dfa15_T352, 
+    dfa15_T537, NULL, dfa15_T323, dfa15_T380, dfa15_T388, dfa15_T406, dfa15_T20, 
+    dfa15_T24, dfa15_T32, NULL, dfa15_T2, NULL, dfa15_T480, dfa15_T2, dfa15_T448, 
+    dfa15_T2, dfa15_T94, dfa15_T490, dfa15_T493, NULL, dfa15_T509, dfa15_T516, 
+    dfa15_T529, dfa15_T75, dfa15_T120, NULL, dfa15_T193, NULL, dfa15_T2, 
+    dfa15_T2, NULL, dfa15_T0, dfa15_T353, dfa15_T538, dfa15_T324, dfa15_T381, 
+    dfa15_T389, dfa15_T407, dfa15_T2, dfa15_T25, dfa15_T33, NULL, dfa15_T481, 
+    NULL, dfa15_T451, NULL, dfa15_T96, dfa15_T2, dfa15_T494, dfa15_T2, dfa15_T2, 
+    dfa15_T2, dfa15_T76, dfa15_T2, dfa15_T194, dfa15_T0, dfa15_T0, NULL, 
+    dfa15_T2, dfa15_T539, dfa15_T326, dfa15_T382, dfa15_T390, dfa15_T2, 
+    NULL, dfa15_T26, dfa15_T34, dfa15_T482, dfa15_T454, dfa15_T97, NULL, 
+    dfa15_T2, NULL, NULL, NULL, dfa15_T2, NULL, dfa15_T195, NULL, NULL, 
+    dfa15_T0, dfa15_T2, dfa15_T329, dfa15_T383, dfa15_T391, dfa15_T0, dfa15_T2, 
+    dfa15_T35, dfa15_T483, dfa15_T88, dfa15_T98, NULL, NULL, dfa15_T196, 
+    NULL, NULL, dfa15_T330, dfa15_T384, dfa15_T392, NULL, NULL, dfa15_T36, 
+    dfa15_T484, dfa15_T2, dfa15_T0, dfa15_T99, dfa15_T197, dfa15_T331, dfa15_T385, 
+    dfa15_T394, dfa15_T2, dfa15_T124, dfa15_T0, NULL, dfa15_T2, dfa15_T198, 
+    dfa15_T368, dfa15_T373, dfa15_T2, dfa15_T2, NULL, dfa15_T2, dfa15_T0, 
+    NULL, NULL, NULL, dfa15_T199, dfa15_T369, dfa15_T374, dfa15_T0, dfa15_T0, 
+    dfa15_T0, NULL, dfa15_T200, dfa15_T370, dfa15_T375, NULL, NULL, NULL, 
+    NULL, dfa15_T471, dfa15_T2, dfa15_T2, NULL, dfa15_T0, dfa15_T0, NULL, 
+    NULL
 };
 
 static ANTLR3_INT32 dfa15_sst(pSmt2Lexer ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s)
@@ -30781,25 +30865,36 @@ static ANTLR3_INT32 dfa15_sst(pSmt2Lexer ctx, pANTLR3_BASE_RECOGNIZER recognizer
         case 0:
 
     	{
-    	    ANTLR3_UINT32 LA15_42;
+    	    ANTLR3_UINT32 LA15_200;
 
-    	    ANTLR3_MARKER index15_42;
+    	    ANTLR3_MARKER index15_200;
 
 
-    		LA15_42 = LA(1);
+    		LA15_200 = LA(1);
+
+    	     
+    	        index15_200 = INDEX();
+
+    	        REWINDLAST();
 
     	    s = -1;
-    	    if ( (((LA15_42 >= 0x0000) && (LA15_42 <= '[')) || ((LA15_42 >= ']') && (LA15_42 <= '{')) || ((LA15_42 >= '}') && (LA15_42 <= 0xFFFF))) )
+    	    if ( (( PARSER_STATE->v2_0() )) )
     	    {
-    	        s = 113;
+    	        s = 270;
     	    }
 
-    	    else if ( (LA15_42 == '|') )
+    	    else if ( (( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() )) )
+    	    {
+    	        s = 199;
+    	    }
+
+    	    else if ( (( PARSER_STATE->sygus() )) )
     	    {
-    	        s = 114;
+    	        s = 271;
     	    }
 
-    	    else s = 115;
+    		 
+    			SEEK(index15_200);
 
     	    if ( s>=0 )
     	    {
@@ -30811,28 +30906,31 @@ static ANTLR3_INT32 dfa15_sst(pSmt2Lexer ctx, pANTLR3_BASE_RECOGNIZER recognizer
         case 1:
 
     	{
-    	    ANTLR3_UINT32 LA15_260;
+    	    ANTLR3_UINT32 LA15_123;
 
-    	    ANTLR3_MARKER index15_260;
+    	    ANTLR3_MARKER index15_123;
 
 
-    		LA15_260 = LA(1);
+    		LA15_123 = LA(1);
 
     	     
-    	        index15_260 = INDEX();
+    	        index15_123 = INDEX();
 
     	        REWINDLAST();
 
     	    s = -1;
-    	    if ( (( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )) && (((LA15_260 >= 0x0000) && (LA15_260 <= 0xFFFF))) )
+    	    if ( (((( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() ))||(( PARSER_STATE->v2_0() )))) && (LA15_123 == '"') )
     	    {
-    	        s = 193;
+    	        s = 197;
     	    }
 
-    	    else s = 261;
+    	    else if ( (((( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() ))||(( PARSER_STATE->v2_0() )))) && (((LA15_123 >= 0x0000) && (LA15_123 <= '!')) || ((LA15_123 >= '#') && (LA15_123 <= 0xFFFF))) )
+    	    {
+    	        s = 198;
+    	    }
 
     		 
-    			SEEK(index15_260);
+    			SEEK(index15_123);
 
     	    if ( s>=0 )
     	    {
@@ -30844,31 +30942,36 @@ static ANTLR3_INT32 dfa15_sst(pSmt2Lexer ctx, pANTLR3_BASE_RECOGNIZER recognizer
         case 2:
 
     	{
-    	    ANTLR3_UINT32 LA15_328;
+    	    ANTLR3_UINT32 LA15_198;
 
-    	    ANTLR3_MARKER index15_328;
+    	    ANTLR3_MARKER index15_198;
 
 
-    		LA15_328 = LA(1);
+    		LA15_198 = LA(1);
 
     	     
-    	        index15_328 = INDEX();
+    	        index15_198 = INDEX();
 
     	        REWINDLAST();
 
     	    s = -1;
-    	    if ( (( PARSER_STATE->v2_5() )) )
+    	    if ( (((( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() ))||(( PARSER_STATE->v2_0() )))) && (LA15_198 == '"') )
     	    {
-    	        s = 388;
+    	        s = 201;
     	    }
 
-    	    else if ( (ANTLR3_TRUE) )
+    	    else if ( (((( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() ))||(( PARSER_STATE->v2_0() )))) && (LA15_198 == '\\') )
     	    {
-    	        s = 43;
+    	        s = 123;
+    	    }
+
+    	    else if ( (((( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() ))||(( PARSER_STATE->v2_0() )))) && (((LA15_198 >= 0x0000) && (LA15_198 <= '!')) || ((LA15_198 >= '#') && (LA15_198 <= '[')) || ((LA15_198 >= ']') && (LA15_198 <= 0xFFFF))) )
+    	    {
+    	        s = 126;
     	    }
 
     		 
-    			SEEK(index15_328);
+    			SEEK(index15_198);
 
     	    if ( s>=0 )
     	    {
@@ -30880,31 +30983,36 @@ static ANTLR3_INT32 dfa15_sst(pSmt2Lexer ctx, pANTLR3_BASE_RECOGNIZER recognizer
         case 3:
 
     	{
-    	    ANTLR3_UINT32 LA15_305;
+    	    ANTLR3_UINT32 LA15_126;
 
-    	    ANTLR3_MARKER index15_305;
+    	    ANTLR3_MARKER index15_126;
 
 
-    		LA15_305 = LA(1);
+    		LA15_126 = LA(1);
 
     	     
-    	        index15_305 = INDEX();
+    	        index15_126 = INDEX();
 
     	        REWINDLAST();
 
     	    s = -1;
-    	    if ( (( PARSER_STATE->sygus() )) )
+    	    if ( (((( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() ))||(( PARSER_STATE->v2_0() )))) && (LA15_126 == '"') )
     	    {
-    	        s = 364;
+    	        s = 201;
     	    }
 
-    	    else if ( (ANTLR3_TRUE) )
+    	    else if ( (((( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() ))||(( PARSER_STATE->v2_0() )))) && (LA15_126 == '\\') )
     	    {
-    	        s = 43;
+    	        s = 123;
+    	    }
+
+    	    else if ( (((( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() ))||(( PARSER_STATE->v2_0() )))) && (((LA15_126 >= 0x0000) && (LA15_126 <= '!')) || ((LA15_126 >= '#') && (LA15_126 <= '[')) || ((LA15_126 >= ']') && (LA15_126 <= 0xFFFF))) )
+    	    {
+    	        s = 126;
     	    }
 
     		 
-    			SEEK(index15_305);
+    			SEEK(index15_126);
 
     	    if ( s>=0 )
     	    {
@@ -30916,31 +31024,25 @@ static ANTLR3_INT32 dfa15_sst(pSmt2Lexer ctx, pANTLR3_BASE_RECOGNIZER recognizer
         case 4:
 
     	{
-    	    ANTLR3_UINT32 LA15_120;
-
-    	    ANTLR3_MARKER index15_120;
-
+    	    ANTLR3_UINT32 LA15_42;
 
-    		LA15_120 = LA(1);
+    	    ANTLR3_MARKER index15_42;
 
-    	     
-    	        index15_120 = INDEX();
 
-    	        REWINDLAST();
+    		LA15_42 = LA(1);
 
     	    s = -1;
-    	    if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (LA15_120 == '"') )
+    	    if ( (((LA15_42 >= 0x0000) && (LA15_42 <= '[')) || ((LA15_42 >= ']') && (LA15_42 <= '{')) || ((LA15_42 >= '}') && (LA15_42 <= 0xFFFF))) )
     	    {
-    	        s = 191;
+    	        s = 116;
     	    }
 
-    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (((LA15_120 >= 0x0000) && (LA15_120 <= '!')) || ((LA15_120 >= '#') && (LA15_120 <= 0xFFFF))) )
+    	    else if ( (LA15_42 == '|') )
     	    {
-    	        s = 192;
+    	        s = 117;
     	    }
 
-    		 
-    			SEEK(index15_120);
+    	    else s = 118;
 
     	    if ( s>=0 )
     	    {
@@ -30952,31 +31054,41 @@ static ANTLR3_INT32 dfa15_sst(pSmt2Lexer ctx, pANTLR3_BASE_RECOGNIZER recognizer
         case 5:
 
     	{
-    	    ANTLR3_UINT32 LA15_556;
+    	    ANTLR3_UINT32 LA15_124;
 
-    	    ANTLR3_MARKER index15_556;
+    	    ANTLR3_MARKER index15_124;
 
 
-    		LA15_556 = LA(1);
+    		LA15_124 = LA(1);
 
     	     
-    	        index15_556 = INDEX();
+    	        index15_124 = INDEX();
 
     	        REWINDLAST();
 
     	    s = -1;
-    	    if ( (( PARSER_STATE->sygus() )) )
+    	    if ( (((( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() ))||(( PARSER_STATE->v2_0() ))||(( PARSER_STATE->sygus() )))) && (LA15_124 == '"') )
     	    {
-    	        s = 613;
+    	        s = 125;
     	    }
 
-    	    else if ( (ANTLR3_TRUE) )
+    	    else if ( (((( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() ))||(( PARSER_STATE->v2_0() )))) && (LA15_124 == '\\') )
     	    {
-    	        s = 43;
+    	        s = 123;
+    	    }
+
+    	    else if ( (((( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() ))||(( PARSER_STATE->v2_0() ))||(( PARSER_STATE->sygus() )))) && (((LA15_124 >= '0') && (LA15_124 <= '9')) || ((LA15_124 >= 'A') && (LA15_124 <= 'Z')) || ((LA15_124 >= 'a') && (LA15_124 <= 'z'))) )
+    	    {
+    	        s = 124;
+    	    }
+
+    	    else if ( (((( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() ))||(( PARSER_STATE->v2_0() )))) && (((LA15_124 >= 0x0000) && (LA15_124 <= '!')) || ((LA15_124 >= '#') && (LA15_124 <= '/')) || ((LA15_124 >= ':') && (LA15_124 <= '@')) || LA15_124 == '[' || ((LA15_124 >= ']') && (LA15_124 <= '`')) || ((LA15_124 >= '{') && (LA15_124 <= 0xFFFF))) )
+    	    {
+    	        s = 126;
     	    }
 
     		 
-    			SEEK(index15_556);
+    			SEEK(index15_124);
 
     	    if ( s>=0 )
     	    {
@@ -30988,31 +31100,41 @@ static ANTLR3_INT32 dfa15_sst(pSmt2Lexer ctx, pANTLR3_BASE_RECOGNIZER recognizer
         case 6:
 
     	{
-    	    ANTLR3_UINT32 LA15_557;
+    	    ANTLR3_UINT32 LA15_47;
 
-    	    ANTLR3_MARKER index15_557;
+    	    ANTLR3_MARKER index15_47;
 
 
-    		LA15_557 = LA(1);
+    		LA15_47 = LA(1);
 
     	     
-    	        index15_557 = INDEX();
+    	        index15_47 = INDEX();
 
     	        REWINDLAST();
 
     	    s = -1;
-    	    if ( (( PARSER_STATE->sygus() )) )
+    	    if ( (((( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() ))||(( PARSER_STATE->v2_0() )))) && (LA15_47 == '\\') )
+    	    {
+    	        s = 123;
+    	    }
+
+    	    else if ( (((( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() ))||(( PARSER_STATE->v2_0() ))||(( PARSER_STATE->sygus() )))) && (((LA15_47 >= '0') && (LA15_47 <= '9')) || ((LA15_47 >= 'A') && (LA15_47 <= 'Z')) || ((LA15_47 >= 'a') && (LA15_47 <= 'z'))) )
     	    {
-    	        s = 614;
+    	        s = 124;
     	    }
 
-    	    else if ( (ANTLR3_TRUE) )
+    	    else if ( (((( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() ))||(( PARSER_STATE->v2_0() ))||(( PARSER_STATE->sygus() )))) && (LA15_47 == '"') )
     	    {
-    	        s = 43;
+    	        s = 125;
+    	    }
+
+    	    else if ( (((( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() ))||(( PARSER_STATE->v2_0() )))) && (((LA15_47 >= 0x0000) && (LA15_47 <= '!')) || ((LA15_47 >= '#') && (LA15_47 <= '/')) || ((LA15_47 >= ':') && (LA15_47 <= '@')) || LA15_47 == '[' || ((LA15_47 >= ']') && (LA15_47 <= '`')) || ((LA15_47 >= '{') && (LA15_47 <= 0xFFFF))) )
+    	    {
+    	        s = 126;
     	    }
 
     		 
-    			SEEK(index15_557);
+    			SEEK(index15_47);
 
     	    if ( s>=0 )
     	    {
@@ -31024,31 +31146,25 @@ static ANTLR3_INT32 dfa15_sst(pSmt2Lexer ctx, pANTLR3_BASE_RECOGNIZER recognizer
         case 7:
 
     	{
-    	    ANTLR3_UINT32 LA15_763;
-
-    	    ANTLR3_MARKER index15_763;
+    	    ANTLR3_UINT32 LA15_116;
 
+    	    ANTLR3_MARKER index15_116;
 
-    		LA15_763 = LA(1);
-
-    	     
-    	        index15_763 = INDEX();
 
-    	        REWINDLAST();
+    		LA15_116 = LA(1);
 
     	    s = -1;
-    	    if ( (( PARSER_STATE->sygus() )) )
+    	    if ( (LA15_116 == '|') )
     	    {
-    	        s = 785;
+    	        s = 117;
     	    }
 
-    	    else if ( (ANTLR3_TRUE) )
+    	    else if ( (((LA15_116 >= 0x0000) && (LA15_116 <= '[')) || ((LA15_116 >= ']') && (LA15_116 <= '{')) || ((LA15_116 >= '}') && (LA15_116 <= 0xFFFF))) )
     	    {
-    	        s = 43;
+    	        s = 116;
     	    }
 
-    		 
-    			SEEK(index15_763);
+    	    else s = 118;
 
     	    if ( s>=0 )
     	    {
@@ -31060,258 +31176,32 @@ static ANTLR3_INT32 dfa15_sst(pSmt2Lexer ctx, pANTLR3_BASE_RECOGNIZER recognizer
         case 8:
 
     	{
-    	    ANTLR3_UINT32 LA15_764;
+    	    ANTLR3_UINT32 LA15_0;
 
-    	    ANTLR3_MARKER index15_764;
+    	    ANTLR3_MARKER index15_0;
 
 
-    		LA15_764 = LA(1);
+    		LA15_0 = LA(1);
 
     	     
-    	        index15_764 = INDEX();
+    	        index15_0 = INDEX();
 
     	        REWINDLAST();
 
     	    s = -1;
-    	    if ( (( PARSER_STATE->sygus() )) )
+    	    if ( (LA15_0 == '\\') )
     	    {
-    	        s = 786;
+    	        s = 1;
     	    }
 
-    	    else if ( (ANTLR3_TRUE) )
+    	    else if ( (LA15_0 == 'e') )
     	    {
-    	        s = 43;
+    	        s = 2;
     	    }
 
-    		 
-    			SEEK(index15_764);
-
-    	    if ( s>=0 )
+    	    else if ( (LA15_0 == 'r') )
     	    {
-    		return s;
-    	    }
-    	}
-    	break;
-
-        case 9:
-
-    	{
-    	    ANTLR3_UINT32 LA15_47;
-
-    	    ANTLR3_MARKER index15_47;
-
-
-    		LA15_47 = LA(1);
-
-    	     
-    	        index15_47 = INDEX();
-
-    	        REWINDLAST();
-
-    	    s = -1;
-    	    if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (LA15_47 == '\\') )
-    	    {
-    	        s = 120;
-    	    }
-
-    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() ))||(( PARSER_STATE->sygus() )))) && (((LA15_47 >= '0') && (LA15_47 <= '9')) || ((LA15_47 >= 'A') && (LA15_47 <= 'Z')) || ((LA15_47 >= 'a') && (LA15_47 <= 'z'))) )
-    	    {
-    	        s = 121;
-    	    }
-
-    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() ))||(( PARSER_STATE->sygus() )))) && (LA15_47 == '"') )
-    	    {
-    	        s = 122;
-    	    }
-
-    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (((LA15_47 >= 0x0000) && (LA15_47 <= '!')) || ((LA15_47 >= '#') && (LA15_47 <= '/')) || ((LA15_47 >= ':') && (LA15_47 <= '@')) || LA15_47 == '[' || ((LA15_47 >= ']') && (LA15_47 <= '`')) || ((LA15_47 >= '{') && (LA15_47 <= 0xFFFF))) )
-    	    {
-    	        s = 123;
-    	    }
-
-    		 
-    			SEEK(index15_47);
-
-    	    if ( s>=0 )
-    	    {
-    		return s;
-    	    }
-    	}
-    	break;
-
-        case 10:
-
-    	{
-    	    ANTLR3_UINT32 LA15_507;
-
-    	    ANTLR3_MARKER index15_507;
-
-
-    		LA15_507 = LA(1);
-
-    	     
-    	        index15_507 = INDEX();
-
-    	        REWINDLAST();
-
-    	    s = -1;
-    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SETS) )) )
-    	    {
-    	        s = 570;
-    	    }
-
-    	    else if ( (ANTLR3_TRUE) )
-    	    {
-    	        s = 43;
-    	    }
-
-    		 
-    			SEEK(index15_507);
-
-    	    if ( s>=0 )
-    	    {
-    		return s;
-    	    }
-    	}
-    	break;
-
-        case 11:
-
-    	{
-    	    ANTLR3_UINT32 LA15_501;
-
-    	    ANTLR3_MARKER index15_501;
-
-
-    		LA15_501 = LA(1);
-
-    	     
-    	        index15_501 = INDEX();
-
-    	        REWINDLAST();
-
-    	    s = -1;
-    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SETS) )) )
-    	    {
-    	        s = 564;
-    	    }
-
-    	    else if ( (ANTLR3_TRUE) )
-    	    {
-    	        s = 43;
-    	    }
-
-    		 
-    			SEEK(index15_501);
-
-    	    if ( s>=0 )
-    	    {
-    		return s;
-    	    }
-    	}
-    	break;
-
-        case 12:
-
-    	{
-    	    ANTLR3_UINT32 LA15_461;
-
-    	    ANTLR3_MARKER index15_461;
-
-
-    		LA15_461 = LA(1);
-
-    	     
-    	        index15_461 = INDEX();
-
-    	        REWINDLAST();
-
-    	    s = -1;
-    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SEP) )) )
-    	    {
-    	        s = 520;
-    	    }
-
-    	    else if ( (ANTLR3_TRUE) )
-    	    {
-    	        s = 43;
-    	    }
-
-    		 
-    			SEEK(index15_461);
-
-    	    if ( s>=0 )
-    	    {
-    		return s;
-    	    }
-    	}
-    	break;
-
-        case 13:
-
-    	{
-    	    ANTLR3_UINT32 LA15_263;
-
-    	    ANTLR3_MARKER index15_263;
-
-
-    		LA15_263 = LA(1);
-
-    	     
-    	        index15_263 = INDEX();
-
-    	        REWINDLAST();
-
-    	    s = -1;
-    	    if ( (( PARSER_STATE->v2_0() )) )
-    	    {
-    	        s = 261;
-    	    }
-
-    	    else if ( (( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )) )
-    	    {
-    	        s = 193;
-    	    }
-
-    		 
-    			SEEK(index15_263);
-
-    	    if ( s>=0 )
-    	    {
-    		return s;
-    	    }
-    	}
-    	break;
-
-        case 14:
-
-    	{
-    	    ANTLR3_UINT32 LA15_0;
-
-    	    ANTLR3_MARKER index15_0;
-
-
-    		LA15_0 = LA(1);
-
-    	     
-    	        index15_0 = INDEX();
-
-    	        REWINDLAST();
-
-    	    s = -1;
-    	    if ( (LA15_0 == '\\') )
-    	    {
-    	        s = 1;
-    	    }
-
-    	    else if ( (LA15_0 == 'e') )
-    	    {
-    	        s = 2;
-    	    }
-
-    	    else if ( (LA15_0 == 'r') )
-    	    {
-    	        s = 3;
+    	        s = 3;
     	    }
 
     	    else if ( (LA15_0 == 's') )
@@ -31529,7 +31419,7 @@ static ANTLR3_INT32 dfa15_sst(pSmt2Lexer ctx, pANTLR3_BASE_RECOGNIZER recognizer
     	        s = 46;
     	    }
 
-    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() ))||(( PARSER_STATE->sygus() )))) && (LA15_0 == '"') )
+    	    else if ( (((( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() ))||(( PARSER_STATE->v2_0() ))||(( PARSER_STATE->sygus() )))) && (LA15_0 == '"') )
     	    {
     	        s = 47;
     	    }
@@ -31549,28 +31439,31 @@ static ANTLR3_INT32 dfa15_sst(pSmt2Lexer ctx, pANTLR3_BASE_RECOGNIZER recognizer
     	}
     	break;
 
-        case 15:
+        case 9:
 
     	{
-    	    ANTLR3_UINT32 LA15_113;
+    	    ANTLR3_UINT32 LA15_125;
+
+    	    ANTLR3_MARKER index15_125;
 
-    	    ANTLR3_MARKER index15_113;
 
+    		LA15_125 = LA(1);
 
-    		LA15_113 = LA(1);
+    	     
+    	        index15_125 = INDEX();
+
+    	        REWINDLAST();
 
     	    s = -1;
-    	    if ( (LA15_113 == '|') )
+    	    if ( (( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() )) && (LA15_125 == '"') )
     	    {
-    	        s = 114;
+    	        s = 199;
     	    }
 
-    	    else if ( (((LA15_113 >= 0x0000) && (LA15_113 <= '[')) || ((LA15_113 >= ']') && (LA15_113 <= '{')) || ((LA15_113 >= '}') && (LA15_113 <= 0xFFFF))) )
-    	    {
-    	        s = 113;
-    	    }
+    	    else s = 200;
 
-    	    else s = 115;
+    		 
+    			SEEK(index15_125);
 
     	    if ( s>=0 )
     	    {
@@ -31579,31 +31472,34 @@ static ANTLR3_INT32 dfa15_sst(pSmt2Lexer ctx, pANTLR3_BASE_RECOGNIZER recognizer
     	}
     	break;
 
-        case 16:
+        case 10:
 
     	{
-    	    ANTLR3_UINT32 LA15_122;
+    	    ANTLR3_UINT32 LA15_345;
 
-    	    ANTLR3_MARKER index15_122;
+    	    ANTLR3_MARKER index15_345;
 
 
-    		LA15_122 = LA(1);
+    		LA15_345 = LA(1);
 
     	     
-    	        index15_122 = INDEX();
+    	        index15_345 = INDEX();
 
     	        REWINDLAST();
 
     	    s = -1;
-    	    if ( (( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )) && (LA15_122 == '"') )
+    	    if ( (( PARSER_STATE->v2_5(false) )) )
     	    {
-    	        s = 193;
+    	        s = 406;
     	    }
 
-    	    else s = 194;
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
 
     		 
-    			SEEK(index15_122);
+    			SEEK(index15_345);
 
     	    if ( s>=0 )
     	    {
@@ -31612,39 +31508,34 @@ static ANTLR3_INT32 dfa15_sst(pSmt2Lexer ctx, pANTLR3_BASE_RECOGNIZER recognizer
     	}
     	break;
 
-        case 17:
+        case 11:
 
     	{
-    	    ANTLR3_UINT32 LA15_194;
+    	    ANTLR3_UINT32 LA15_855;
 
-    	    ANTLR3_MARKER index15_194;
+    	    ANTLR3_MARKER index15_855;
 
 
-    		LA15_194 = LA(1);
+    		LA15_855 = LA(1);
 
     	     
-    	        index15_194 = INDEX();
+    	        index15_855 = INDEX();
 
     	        REWINDLAST();
 
     	    s = -1;
-    	    if ( (( PARSER_STATE->v2_0() )) )
-    	    {
-    	        s = 261;
-    	    }
-
-    	    else if ( (( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )) )
+    	    if ( (( PARSER_STATE->v2_6() )) )
     	    {
-    	        s = 193;
+    	        s = 865;
     	    }
 
-    	    else if ( (( PARSER_STATE->sygus() )) )
+    	    else if ( (ANTLR3_TRUE) )
     	    {
-    	        s = 262;
+    	        s = 43;
     	    }
 
     		 
-    			SEEK(index15_194);
+    			SEEK(index15_855);
 
     	    if ( s>=0 )
     	    {
@@ -31653,44 +31544,34 @@ static ANTLR3_INT32 dfa15_sst(pSmt2Lexer ctx, pANTLR3_BASE_RECOGNIZER recognizer
     	}
     	break;
 
-        case 18:
+        case 12:
 
     	{
-    	    ANTLR3_UINT32 LA15_121;
+    	    ANTLR3_UINT32 LA15_837;
 
-    	    ANTLR3_MARKER index15_121;
+    	    ANTLR3_MARKER index15_837;
 
 
-    		LA15_121 = LA(1);
+    		LA15_837 = LA(1);
 
     	     
-    	        index15_121 = INDEX();
+    	        index15_837 = INDEX();
 
     	        REWINDLAST();
 
     	    s = -1;
-    	    if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() ))||(( PARSER_STATE->sygus() )))) && (LA15_121 == '"') )
-    	    {
-    	        s = 122;
-    	    }
-
-    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (LA15_121 == '\\') )
-    	    {
-    	        s = 120;
-    	    }
-
-    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() ))||(( PARSER_STATE->sygus() )))) && (((LA15_121 >= '0') && (LA15_121 <= '9')) || ((LA15_121 >= 'A') && (LA15_121 <= 'Z')) || ((LA15_121 >= 'a') && (LA15_121 <= 'z'))) )
+    	    if ( (( PARSER_STATE->v2_6() )) )
     	    {
-    	        s = 121;
+    	        s = 846;
     	    }
 
-    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (((LA15_121 >= 0x0000) && (LA15_121 <= '!')) || ((LA15_121 >= '#') && (LA15_121 <= '/')) || ((LA15_121 >= ':') && (LA15_121 <= '@')) || LA15_121 == '[' || ((LA15_121 >= ']') && (LA15_121 <= '`')) || ((LA15_121 >= '{') && (LA15_121 <= 0xFFFF))) )
+    	    else if ( (ANTLR3_TRUE) )
     	    {
-    	        s = 123;
+    	        s = 43;
     	    }
 
     		 
-    			SEEK(index15_121);
+    			SEEK(index15_837);
 
     	    if ( s>=0 )
     	    {
@@ -31699,36 +31580,34 @@ static ANTLR3_INT32 dfa15_sst(pSmt2Lexer ctx, pANTLR3_BASE_RECOGNIZER recognizer
     	}
     	break;
 
-        case 19:
+        case 13:
 
     	{
-    	    ANTLR3_UINT32 LA15_191;
+    	    ANTLR3_UINT32 LA15_240;
 
-    	    ANTLR3_MARKER index15_191;
+    	    ANTLR3_MARKER index15_240;
 
 
-    		LA15_191 = LA(1);
+    		LA15_240 = LA(1);
 
     	     
-    	        index15_191 = INDEX();
+    	        index15_240 = INDEX();
 
     	        REWINDLAST();
 
     	    s = -1;
-    	    if ( (((( PARSER_STATE->v2_5() || PARSER_STATE->sygus() ))||(( PARSER_STATE->v2_0() )))) && (LA15_191 == '"') )
+    	    if ( (( PARSER_STATE->v2_6() )) )
     	    {
-    	        s = 260;
+    	        s = 315;
     	    }
 
-    	    else if ( (( PARSER_STATE->v2_0() )) && (((LA15_191 >= 0x0000) && (LA15_191 <= '!')) || ((LA15_191 >= '#') && (LA15_191 <= 0xFFFF))) )
+    	    else if ( (ANTLR3_TRUE) )
     	    {
-    	        s = 261;
+    	        s = 43;
     	    }
 
-    	    else s = 193;
-
     		 
-    			SEEK(index15_191);
+    			SEEK(index15_240);
 
     	    if ( s>=0 )
     	    {
@@ -31737,39 +31616,34 @@ static ANTLR3_INT32 dfa15_sst(pSmt2Lexer ctx, pANTLR3_BASE_RECOGNIZER recognizer
     	}
     	break;
 
-        case 20:
+        case 14:
 
     	{
-    	    ANTLR3_UINT32 LA15_192;
+    	    ANTLR3_UINT32 LA15_154;
 
-    	    ANTLR3_MARKER index15_192;
+    	    ANTLR3_MARKER index15_154;
 
 
-    		LA15_192 = LA(1);
+    		LA15_154 = LA(1);
 
     	     
-    	        index15_192 = INDEX();
+    	        index15_154 = INDEX();
 
     	        REWINDLAST();
 
     	    s = -1;
-    	    if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (LA15_192 == '"') )
-    	    {
-    	        s = 195;
-    	    }
-
-    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (LA15_192 == '\\') )
+    	    if ( (( PARSER_STATE->v2_6() && PARSER_STATE->isTheoryEnabled(Smt2::THEORY_DATATYPES) )) )
     	    {
-    	        s = 120;
+    	        s = 230;
     	    }
 
-    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (((LA15_192 >= 0x0000) && (LA15_192 <= '!')) || ((LA15_192 >= '#') && (LA15_192 <= '[')) || ((LA15_192 >= ']') && (LA15_192 <= 0xFFFF))) )
+    	    else if ( (ANTLR3_TRUE) )
     	    {
-    	        s = 123;
+    	        s = 43;
     	    }
 
     		 
-    			SEEK(index15_192);
+    			SEEK(index15_154);
 
     	    if ( s>=0 )
     	    {
@@ -31778,39 +31652,34 @@ static ANTLR3_INT32 dfa15_sst(pSmt2Lexer ctx, pANTLR3_BASE_RECOGNIZER recognizer
     	}
     	break;
 
-        case 21:
+        case 15:
 
     	{
-    	    ANTLR3_UINT32 LA15_123;
+    	    ANTLR3_UINT32 LA15_381;
 
-    	    ANTLR3_MARKER index15_123;
+    	    ANTLR3_MARKER index15_381;
 
 
-    		LA15_123 = LA(1);
+    		LA15_381 = LA(1);
 
     	     
-    	        index15_123 = INDEX();
+    	        index15_381 = INDEX();
 
     	        REWINDLAST();
 
     	    s = -1;
-    	    if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (LA15_123 == '"') )
-    	    {
-    	        s = 195;
-    	    }
-
-    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (LA15_123 == '\\') )
+    	    if ( (( PARSER_STATE->v2_6() && PARSER_STATE->isTheoryEnabled(Smt2::THEORY_DATATYPES) )) )
     	    {
-    	        s = 120;
+    	        s = 445;
     	    }
 
-    	    else if ( (((( PARSER_STATE->v2_0() ))||(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )))) && (((LA15_123 >= 0x0000) && (LA15_123 <= '!')) || ((LA15_123 >= '#') && (LA15_123 <= '[')) || ((LA15_123 >= ']') && (LA15_123 <= 0xFFFF))) )
+    	    else if ( (ANTLR3_TRUE) )
     	    {
-    	        s = 123;
+    	        s = 43;
     	    }
 
     		 
-    			SEEK(index15_123);
+    			SEEK(index15_381);
 
     	    if ( s>=0 )
     	    {
@@ -31819,32 +31688,1193 @@ static ANTLR3_INT32 dfa15_sst(pSmt2Lexer ctx, pANTLR3_BASE_RECOGNIZER recognizer
     	}
     	break;
 
-        case 22:
+        case 16:
 
     	{
-    	    ANTLR3_UINT32 LA15_195;
+    	    ANTLR3_UINT32 LA15_316;
 
-    	    ANTLR3_MARKER index15_195;
+    	    ANTLR3_MARKER index15_316;
 
 
-    		LA15_195 = LA(1);
+    		LA15_316 = LA(1);
 
     	     
-    	        index15_195 = INDEX();
+    	        index15_316 = INDEX();
 
     	        REWINDLAST();
 
     	    s = -1;
-    	    if ( (( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )) && (LA15_195 == '"') )
+    	    if ( (( PARSER_STATE->sygus() )) )
     	    {
-    	        s = 193;
+    	        s = 382;
     	    }
 
-    	    else s = 263;
-
-    		 
-    			SEEK(index15_195);
-
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_316);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 17:
+
+    	{
+    	    ANTLR3_UINT32 LA15_576;
+
+    	    ANTLR3_MARKER index15_576;
+
+
+    		LA15_576 = LA(1);
+
+    	     
+    	        index15_576 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->sygus() )) )
+    	    {
+    	        s = 633;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_576);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 18:
+
+    	{
+    	    ANTLR3_UINT32 LA15_577;
+
+    	    ANTLR3_MARKER index15_577;
+
+
+    		LA15_577 = LA(1);
+
+    	     
+    	        index15_577 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->sygus() )) )
+    	    {
+    	        s = 634;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_577);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 19:
+
+    	{
+    	    ANTLR3_UINT32 LA15_788;
+
+    	    ANTLR3_MARKER index15_788;
+
+
+    		LA15_788 = LA(1);
+
+    	     
+    	        index15_788 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->sygus() )) )
+    	    {
+    	        s = 811;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_788);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 20:
+
+    	{
+    	    ANTLR3_UINT32 LA15_789;
+
+    	    ANTLR3_MARKER index15_789;
+
+
+    		LA15_789 = LA(1);
+
+    	     
+    	        index15_789 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->sygus() )) )
+    	    {
+    	        s = 812;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_789);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 21:
+
+    	{
+    	    ANTLR3_UINT32 LA15_527;
+
+    	    ANTLR3_MARKER index15_527;
+
+
+    		LA15_527 = LA(1);
+
+    	     
+    	        index15_527 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SETS) )) )
+    	    {
+    	        s = 590;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_527);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 22:
+
+    	{
+    	    ANTLR3_UINT32 LA15_521;
+
+    	    ANTLR3_MARKER index15_521;
+
+
+    		LA15_521 = LA(1);
+
+    	     
+    	        index15_521 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SETS) )) )
+    	    {
+    	        s = 584;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_521);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 23:
+
+    	{
+    	    ANTLR3_UINT32 LA15_481;
+
+    	    ANTLR3_MARKER index15_481;
+
+
+    		LA15_481 = LA(1);
+
+    	     
+    	        index15_481 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SEP) )) )
+    	    {
+    	        s = 540;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_481);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 24:
+
+    	{
+    	    ANTLR3_UINT32 LA15_201;
+
+    	    ANTLR3_MARKER index15_201;
+
+
+    		LA15_201 = LA(1);
+
+    	     
+    	        index15_201 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() )) && (LA15_201 == '"') )
+    	    {
+    	        s = 199;
+    	    }
+
+    	    else s = 272;
+
+    		 
+    			SEEK(index15_201);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 25:
+
+    	{
+    	    ANTLR3_UINT32 LA15_262;
+
+    	    ANTLR3_MARKER index15_262;
+
+
+    		LA15_262 = LA(1);
+
+    	     
+    	        index15_262 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+    	    {
+    	        s = 333;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_262);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 26:
+
+    	{
+    	    ANTLR3_UINT32 LA15_400;
+
+    	    ANTLR3_MARKER index15_400;
+
+
+    		LA15_400 = LA(1);
+
+    	     
+    	        index15_400 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+    	    {
+    	        s = 466;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_400);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 27:
+
+    	{
+    	    ANTLR3_UINT32 LA15_585;
+
+    	    ANTLR3_MARKER index15_585;
+
+
+    		LA15_585 = LA(1);
+
+    	     
+    	        index15_585 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+    	    {
+    	        s = 640;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_585);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 28:
+
+    	{
+    	    ANTLR3_UINT32 LA15_586;
+
+    	    ANTLR3_MARKER index15_586;
+
+
+    		LA15_586 = LA(1);
+
+    	     
+    	        index15_586 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+    	    {
+    	        s = 641;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_586);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 29:
+
+    	{
+    	    ANTLR3_UINT32 LA15_688;
+
+    	    ANTLR3_MARKER index15_688;
+
+
+    		LA15_688 = LA(1);
+
+    	     
+    	        index15_688 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+    	    {
+    	        s = 730;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_688);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 30:
+
+    	{
+    	    ANTLR3_UINT32 LA15_764;
+
+    	    ANTLR3_MARKER index15_764;
+
+
+    		LA15_764 = LA(1);
+
+    	     
+    	        index15_764 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+    	    {
+    	        s = 790;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_764);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 31:
+
+    	{
+    	    ANTLR3_UINT32 LA15_813;
+
+    	    ANTLR3_MARKER index15_813;
+
+
+    		LA15_813 = LA(1);
+
+    	     
+    	        index15_813 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+    	    {
+    	        s = 827;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_813);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 32:
+
+    	{
+    	    ANTLR3_UINT32 LA15_638;
+
+    	    ANTLR3_MARKER index15_638;
+
+
+    		LA15_638 = LA(1);
+
+    	     
+    	        index15_638 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+    	    {
+    	        s = 686;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_638);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 33:
+
+    	{
+    	    ANTLR3_UINT32 LA15_639;
+
+    	    ANTLR3_MARKER index15_639;
+
+
+    		LA15_639 = LA(1);
+
+    	     
+    	        index15_639 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+    	    {
+    	        s = 687;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_639);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 34:
+
+    	{
+    	    ANTLR3_UINT32 LA15_264;
+
+    	    ANTLR3_MARKER index15_264;
+
+
+    		LA15_264 = LA(1);
+
+    	     
+    	        index15_264 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+    	    {
+    	        s = 335;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_264);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 35:
+
+    	{
+    	    ANTLR3_UINT32 LA15_265;
+
+    	    ANTLR3_MARKER index15_265;
+
+
+    		LA15_265 = LA(1);
+
+    	     
+    	        index15_265 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+    	    {
+    	        s = 336;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_265);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 36:
+
+    	{
+    	    ANTLR3_UINT32 LA15_266;
+
+    	    ANTLR3_MARKER index15_266;
+
+
+    		LA15_266 = LA(1);
+
+    	     
+    	        index15_266 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+    	    {
+    	        s = 337;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_266);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 37:
+
+    	{
+    	    ANTLR3_UINT32 LA15_267;
+
+    	    ANTLR3_MARKER index15_267;
+
+
+    		LA15_267 = LA(1);
+
+    	     
+    	        index15_267 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+    	    {
+    	        s = 338;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_267);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 38:
+
+    	{
+    	    ANTLR3_UINT32 LA15_268;
+
+    	    ANTLR3_MARKER index15_268;
+
+
+    		LA15_268 = LA(1);
+
+    	     
+    	        index15_268 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+    	    {
+    	        s = 339;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_268);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 39:
+
+    	{
+    	    ANTLR3_UINT32 LA15_877;
+
+    	    ANTLR3_MARKER index15_877;
+
+
+    		LA15_877 = LA(1);
+
+    	     
+    	        index15_877 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+    	    {
+    	        s = 879;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_877);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 40:
+
+    	{
+    	    ANTLR3_UINT32 LA15_878;
+
+    	    ANTLR3_MARKER index15_878;
+
+
+    		LA15_878 = LA(1);
+
+    	     
+    	        index15_878 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+    	    {
+    	        s = 880;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_878);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 41:
+
+    	{
+    	    ANTLR3_UINT32 LA15_862;
+
+    	    ANTLR3_MARKER index15_862;
+
+
+    		LA15_862 = LA(1);
+
+    	     
+    	        index15_862 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+    	    {
+    	        s = 869;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_862);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 42:
+
+    	{
+    	    ANTLR3_UINT32 LA15_863;
+
+    	    ANTLR3_MARKER index15_863;
+
+
+    		LA15_863 = LA(1);
+
+    	     
+    	        index15_863 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+    	    {
+    	        s = 870;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_863);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 43:
+
+    	{
+    	    ANTLR3_UINT32 LA15_818;
+
+    	    ANTLR3_MARKER index15_818;
+
+
+    		LA15_818 = LA(1);
+
+    	     
+    	        index15_818 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+    	    {
+    	        s = 832;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_818);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 44:
+
+    	{
+    	    ANTLR3_UINT32 LA15_272;
+
+    	    ANTLR3_MARKER index15_272;
+
+
+    		LA15_272 = LA(1);
+
+    	     
+    	        index15_272 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->v2_0() )) )
+    	    {
+    	        s = 270;
+    	    }
+
+    	    else if ( (( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() )) )
+    	    {
+    	        s = 199;
+    	    }
+
+    		 
+    			SEEK(index15_272);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 45:
+
+    	{
+    	    ANTLR3_UINT32 LA15_197;
+
+    	    ANTLR3_MARKER index15_197;
+
+
+    		LA15_197 = LA(1);
+
+    	     
+    	        index15_197 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (((( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() ))||(( PARSER_STATE->v2_0() )))) && (LA15_197 == '"') )
+    	    {
+    	        s = 269;
+    	    }
+
+    	    else if ( (( PARSER_STATE->v2_0() )) && (((LA15_197 >= 0x0000) && (LA15_197 <= '!')) || ((LA15_197 >= '#') && (LA15_197 <= 0xFFFF))) )
+    	    {
+    	        s = 270;
+    	    }
+
+    	    else s = 199;
+
+    		 
+    			SEEK(index15_197);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 46:
+
+    	{
+    	    ANTLR3_UINT32 LA15_845;
+
+    	    ANTLR3_MARKER index15_845;
+
+
+    		LA15_845 = LA(1);
+
+    	     
+    	        index15_845 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( !PARSER_STATE->v2_6() )) )
+    	    {
+    	        s = 856;
+    	    }
+
+    	    else if ( (( PARSER_STATE->v2_6() )) )
+    	    {
+    	        s = 857;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_845);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 47:
+
+    	{
+    	    ANTLR3_UINT32 LA15_864;
+
+    	    ANTLR3_MARKER index15_864;
+
+
+    		LA15_864 = LA(1);
+
+    	     
+    	        index15_864 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( !PARSER_STATE->v2_6() )) )
+    	    {
+    	        s = 871;
+    	    }
+
+    	    else if ( (( PARSER_STATE->v2_6() )) )
+    	    {
+    	        s = 872;
+    	    }
+
+    	    else if ( (ANTLR3_TRUE) )
+    	    {
+    	        s = 43;
+    	    }
+
+    		 
+    			SEEK(index15_864);
+
+    	    if ( s>=0 )
+    	    {
+    		return s;
+    	    }
+    	}
+    	break;
+
+        case 48:
+
+    	{
+    	    ANTLR3_UINT32 LA15_269;
+
+    	    ANTLR3_MARKER index15_269;
+
+
+    		LA15_269 = LA(1);
+
+    	     
+    	        index15_269 = INDEX();
+
+    	        REWINDLAST();
+
+    	    s = -1;
+    	    if ( (( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() )) && (((LA15_269 >= 0x0000) && (LA15_269 <= 0xFFFF))) )
+    	    {
+    	        s = 199;
+    	    }
+
+    	    else s = 270;
+
+    		 
+    			SEEK(index15_269);
+
     	    if ( s>=0 )
     	    {
     		return s;
@@ -31852,52 +32882,308 @@ static ANTLR3_INT32 dfa15_sst(pSmt2Lexer ctx, pANTLR3_BASE_RECOGNIZER recognizer
     	}
     	break;
     }
-    CONSTRUCTEX();
-    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
-    EXCEPTION->message      = (void *)"1:1: Tokens : ( T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTIONS_TOK | ITE_TOK | LET_TOK | ATTRIBUTE_TOK | LPAREN_TOK | RPAREN_TOK | INDEX_TOK | SET_LOGIC_TOK |  [...]
-    EXCEPTION->decisionNum  = 15;
-    EXCEPTION->state        = _s;
-    return -1;
-}
+    CONSTRUCTEX();
+    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+    EXCEPTION->message      = (void *)"1:1: Tokens : ( T__152 | T__153 | T__154 | T__155 | T__156 | T__157 | T__158 | ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTIONS_TOK | ITE_TOK | LET_TOK | ATTRIBUTE_TOK | LPAREN_TOK | RPAREN_TOK | INDEX_TOK | SET_LOGIC_TOK |  [...]
+    EXCEPTION->decisionNum  = 15;
+    EXCEPTION->state        = _s;
+    return -1;
+}
+
+
+/* Declare tracking structure for Cyclic DFA 15
+ */
+static
+ANTLR3_CYCLIC_DFA cdfa15
+    =	{
+	    15,		    /* Decision number of this dfa	    */
+	    /* Which decision this represents:   */
+	    (const pANTLR3_UCHAR)"1:1: Tokens : ( T__152 | T__153 | T__154 | T__155 | T__156 | T__157 | T__158 | ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTIONS_TOK | ITE_TOK | LET_TOK | ATTRIBUTE_TOK | LPAREN_TOK | RPAREN_TOK | INDEX_TOK | SET_LOGIC_TOK | SET_INFO_TOK [...]
+	    (CDFA_SPECIAL_FUNC) dfa15_sst,
+	    antlr3dfaspecialTransition,		/* DFA specialTransition is currently just a default function in the runtime */
+	    antlr3dfapredict,			/* DFA simulator function is in the runtime */
+	    dfa15_eot,	    /* EOT table			    */
+	    dfa15_eof,	    /* EOF table			    */
+	    dfa15_min,	    /* Minimum tokens for each state    */
+	    dfa15_max,	    /* Maximum tokens for each state    */
+	    dfa15_accept,	/* Accept table			    */
+	    dfa15_special,	/* Special transition states	    */
+	    dfa15_transitions	/* Table of transition tables	    */
+
+	};
+/* End of Cyclic DFA 15
+ * ---------------------
+ */ 
+/* =========================================================================
+ * End of DFA tables for the lexer
+ */
+
+/* =========================================================================
+ * Functions to match the lexer grammar defined tokens from the input stream
+ */
+
+//   Comes from: 46:8: ( '\\\\' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__152
+ *
+ * Looks to match the characters the constitute the token T__152
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__152(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__152;
+
+
+    // ../../../../src/parser/smt2/Smt2.g:46:8: ( '\\\\' )
+    // ../../../../src/parser/smt2/Smt2.g:46:10: '\\\\'
+    {
+        MATCHC('\\');
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__152Ex;
+        }
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__152Ex; /* Prevent compiler warnings */
+    ruleT__152Ex: ;
+
+}
+// $ANTLR end T__152
+
+//   Comes from: 47:8: ( 'extract' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__153
+ *
+ * Looks to match the characters the constitute the token T__153
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__153(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__153;
+
+
+    // ../../../../src/parser/smt2/Smt2.g:47:8: ( 'extract' )
+    // ../../../../src/parser/smt2/Smt2.g:47:10: 'extract'
+    {
+        MATCHS(lit_1);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__153Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__153Ex; /* Prevent compiler warnings */
+    ruleT__153Ex: ;
+
+}
+// $ANTLR end T__153
+
+//   Comes from: 48:8: ( 'repeat' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__154
+ *
+ * Looks to match the characters the constitute the token T__154
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mT__154(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = T__154;
+
+
+    // ../../../../src/parser/smt2/Smt2.g:48:8: ( 'repeat' )
+    // ../../../../src/parser/smt2/Smt2.g:48:10: 'repeat'
+    {
+        MATCHS(lit_2);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__154Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__154Ex; /* Prevent compiler warnings */
+    ruleT__154Ex: ;
 
+}
+// $ANTLR end T__154
 
-/* Declare tracking structure for Cyclic DFA 15
+//   Comes from: 49:8: ( 'rotate_left' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__155
+ *
+ * Looks to match the characters the constitute the token T__155
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
-static
-ANTLR3_CYCLIC_DFA cdfa15
-    =	{
-	    15,		    /* Decision number of this dfa	    */
-	    /* Which decision this represents:   */
-	    (const pANTLR3_UCHAR)"1:1: Tokens : ( T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTIONS_TOK | ITE_TOK | LET_TOK | ATTRIBUTE_TOK | LPAREN_TOK | RPAREN_TOK | INDEX_TOK | SET_LOGIC_TOK | SET_INFO_TOK [...]
-	    (CDFA_SPECIAL_FUNC) dfa15_sst,
-	    antlr3dfaspecialTransition,		/* DFA specialTransition is currently just a default function in the runtime */
-	    antlr3dfapredict,			/* DFA simulator function is in the runtime */
-	    dfa15_eot,	    /* EOT table			    */
-	    dfa15_eof,	    /* EOF table			    */
-	    dfa15_min,	    /* Minimum tokens for each state    */
-	    dfa15_max,	    /* Maximum tokens for each state    */
-	    dfa15_accept,	/* Accept table			    */
-	    dfa15_special,	/* Special transition states	    */
-	    dfa15_transitions	/* Table of transition tables	    */
+static ANTLR3_INLINE
+void mT__155(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
 
-	};
-/* End of Cyclic DFA 15
- * ---------------------
- */ 
-/* =========================================================================
- * End of DFA tables for the lexer
+    _type	    = T__155;
+
+
+    // ../../../../src/parser/smt2/Smt2.g:49:8: ( 'rotate_left' )
+    // ../../../../src/parser/smt2/Smt2.g:49:10: 'rotate_left'
+    {
+        MATCHS(lit_3);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__155Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__155Ex; /* Prevent compiler warnings */
+    ruleT__155Ex: ;
+
+}
+// $ANTLR end T__155
+
+//   Comes from: 50:8: ( 'rotate_right' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__156
+ *
+ * Looks to match the characters the constitute the token T__156
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
+static ANTLR3_INLINE
+void mT__156(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
 
-/* =========================================================================
- * Functions to match the lexer grammar defined tokens from the input stream
+    _type	    = T__156;
+
+
+    // ../../../../src/parser/smt2/Smt2.g:50:8: ( 'rotate_right' )
+    // ../../../../src/parser/smt2/Smt2.g:50:10: 'rotate_right'
+    {
+        MATCHS(lit_4);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__156Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__156Ex; /* Prevent compiler warnings */
+    ruleT__156Ex: ;
+
+}
+// $ANTLR end T__156
+
+//   Comes from: 51:8: ( 'sign_extend' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start T__157
+ *
+ * Looks to match the characters the constitute the token T__157
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
+static ANTLR3_INLINE
+void mT__157(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
 
-//   Comes from: 46:8: ( '\\\\' )
+    _type	    = T__157;
+
+
+    // ../../../../src/parser/smt2/Smt2.g:51:8: ( 'sign_extend' )
+    // ../../../../src/parser/smt2/Smt2.g:51:10: 'sign_extend'
+    {
+        MATCHS(lit_5);
+        if  (HASEXCEPTION())
+        {
+            goto ruleT__157Ex;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleT__157Ex; /* Prevent compiler warnings */
+    ruleT__157Ex: ;
+
+}
+// $ANTLR end T__157
+
+//   Comes from: 52:8: ( 'zero_extend' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start T__145
+ * $ANTLR start T__158
  *
- * Looks to match the characters the constitute the token T__145
+ * Looks to match the characters the constitute the token T__158
  * from the attached input stream.
  *
  *
@@ -31905,40 +33191,42 @@ ANTLR3_CYCLIC_DFA cdfa15
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mT__145(pSmt2Lexer ctx)
+void mT__158(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = T__145;
+    _type	    = T__158;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:46:8: ( '\\\\' )
-    // ../../../../../../src/parser/smt2/Smt2.g:46:10: '\\\\'
+    // ../../../../src/parser/smt2/Smt2.g:52:8: ( 'zero_extend' )
+    // ../../../../src/parser/smt2/Smt2.g:52:10: 'zero_extend'
     {
-        MATCHC('\\');
+        MATCHS(lit_6);
         if  (HASEXCEPTION())
         {
-            goto ruleT__145Ex;
+            goto ruleT__158Ex;
         }
 
 
+
+
     }
 
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleT__145Ex; /* Prevent compiler warnings */
-    ruleT__145Ex: ;
+    goto ruleT__158Ex; /* Prevent compiler warnings */
+    ruleT__158Ex: ;
 
 }
-// $ANTLR end T__145
+// $ANTLR end T__158
 
-//   Comes from: 47:8: ( 'extract' )
+//   Comes from: 2989:12: ( 'assert' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start T__146
+ * $ANTLR start ASSERT_TOK
  *
- * Looks to match the characters the constitute the token T__146
+ * Looks to match the characters the constitute the token ASSERT_TOK
  * from the attached input stream.
  *
  *
@@ -31946,20 +33234,20 @@ void mT__145(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mT__146(pSmt2Lexer ctx)
+void mASSERT_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = T__146;
+    _type	    = ASSERT_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:47:8: ( 'extract' )
-    // ../../../../../../src/parser/smt2/Smt2.g:47:10: 'extract'
+    // ../../../../src/parser/smt2/Smt2.g:2989:12: ( 'assert' )
+    // ../../../../src/parser/smt2/Smt2.g:2989:14: 'assert'
     {
-        MATCHS(lit_1);
+        MATCHS(lit_7);
         if  (HASEXCEPTION())
         {
-            goto ruleT__146Ex;
+            goto ruleASSERT_TOKEx;
         }
 
 
@@ -31970,18 +33258,18 @@ void mT__146(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleT__146Ex; /* Prevent compiler warnings */
-    ruleT__146Ex: ;
+    goto ruleASSERT_TOKEx; /* Prevent compiler warnings */
+    ruleASSERT_TOKEx: ;
 
 }
-// $ANTLR end T__146
+// $ANTLR end ASSERT_TOK
 
-//   Comes from: 48:8: ( 'repeat' )
+//   Comes from: 2990:14: ( 'check-sat' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start T__147
+ * $ANTLR start CHECKSAT_TOK
  *
- * Looks to match the characters the constitute the token T__147
+ * Looks to match the characters the constitute the token CHECKSAT_TOK
  * from the attached input stream.
  *
  *
@@ -31989,20 +33277,20 @@ void mT__146(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mT__147(pSmt2Lexer ctx)
+void mCHECKSAT_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = T__147;
+    _type	    = CHECKSAT_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:48:8: ( 'repeat' )
-    // ../../../../../../src/parser/smt2/Smt2.g:48:10: 'repeat'
+    // ../../../../src/parser/smt2/Smt2.g:2990:14: ( 'check-sat' )
+    // ../../../../src/parser/smt2/Smt2.g:2990:16: 'check-sat'
     {
-        MATCHS(lit_2);
+        MATCHS(lit_8);
         if  (HASEXCEPTION())
         {
-            goto ruleT__147Ex;
+            goto ruleCHECKSAT_TOKEx;
         }
 
 
@@ -32013,18 +33301,18 @@ void mT__147(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleT__147Ex; /* Prevent compiler warnings */
-    ruleT__147Ex: ;
+    goto ruleCHECKSAT_TOKEx; /* Prevent compiler warnings */
+    ruleCHECKSAT_TOKEx: ;
 
 }
-// $ANTLR end T__147
+// $ANTLR end CHECKSAT_TOK
 
-//   Comes from: 49:8: ( 'rotate_left' )
+//   Comes from: 2991:17: ( 'declare-fun' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start T__148
+ * $ANTLR start DECLARE_FUN_TOK
  *
- * Looks to match the characters the constitute the token T__148
+ * Looks to match the characters the constitute the token DECLARE_FUN_TOK
  * from the attached input stream.
  *
  *
@@ -32032,20 +33320,20 @@ void mT__147(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mT__148(pSmt2Lexer ctx)
+void mDECLARE_FUN_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = T__148;
+    _type	    = DECLARE_FUN_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:49:8: ( 'rotate_left' )
-    // ../../../../../../src/parser/smt2/Smt2.g:49:10: 'rotate_left'
+    // ../../../../src/parser/smt2/Smt2.g:2991:17: ( 'declare-fun' )
+    // ../../../../src/parser/smt2/Smt2.g:2991:19: 'declare-fun'
     {
-        MATCHS(lit_3);
+        MATCHS(lit_9);
         if  (HASEXCEPTION())
         {
-            goto ruleT__148Ex;
+            goto ruleDECLARE_FUN_TOKEx;
         }
 
 
@@ -32056,18 +33344,18 @@ void mT__148(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleT__148Ex; /* Prevent compiler warnings */
-    ruleT__148Ex: ;
+    goto ruleDECLARE_FUN_TOKEx; /* Prevent compiler warnings */
+    ruleDECLARE_FUN_TOKEx: ;
 
 }
-// $ANTLR end T__148
+// $ANTLR end DECLARE_FUN_TOK
 
-//   Comes from: 50:8: ( 'rotate_right' )
+//   Comes from: 2992:18: ( 'declare-sort' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start T__149
+ * $ANTLR start DECLARE_SORT_TOK
  *
- * Looks to match the characters the constitute the token T__149
+ * Looks to match the characters the constitute the token DECLARE_SORT_TOK
  * from the attached input stream.
  *
  *
@@ -32075,20 +33363,20 @@ void mT__148(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mT__149(pSmt2Lexer ctx)
+void mDECLARE_SORT_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = T__149;
+    _type	    = DECLARE_SORT_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:50:8: ( 'rotate_right' )
-    // ../../../../../../src/parser/smt2/Smt2.g:50:10: 'rotate_right'
+    // ../../../../src/parser/smt2/Smt2.g:2992:18: ( 'declare-sort' )
+    // ../../../../src/parser/smt2/Smt2.g:2992:20: 'declare-sort'
     {
-        MATCHS(lit_4);
+        MATCHS(lit_10);
         if  (HASEXCEPTION())
         {
-            goto ruleT__149Ex;
+            goto ruleDECLARE_SORT_TOKEx;
         }
 
 
@@ -32099,18 +33387,18 @@ void mT__149(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleT__149Ex; /* Prevent compiler warnings */
-    ruleT__149Ex: ;
+    goto ruleDECLARE_SORT_TOKEx; /* Prevent compiler warnings */
+    ruleDECLARE_SORT_TOKEx: ;
 
 }
-// $ANTLR end T__149
+// $ANTLR end DECLARE_SORT_TOK
 
-//   Comes from: 51:8: ( 'sign_extend' )
+//   Comes from: 2993:16: ( 'define-fun' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start T__150
+ * $ANTLR start DEFINE_FUN_TOK
  *
- * Looks to match the characters the constitute the token T__150
+ * Looks to match the characters the constitute the token DEFINE_FUN_TOK
  * from the attached input stream.
  *
  *
@@ -32118,20 +33406,20 @@ void mT__149(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mT__150(pSmt2Lexer ctx)
+void mDEFINE_FUN_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = T__150;
+    _type	    = DEFINE_FUN_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:51:8: ( 'sign_extend' )
-    // ../../../../../../src/parser/smt2/Smt2.g:51:10: 'sign_extend'
+    // ../../../../src/parser/smt2/Smt2.g:2993:16: ( 'define-fun' )
+    // ../../../../src/parser/smt2/Smt2.g:2993:18: 'define-fun'
     {
-        MATCHS(lit_5);
+        MATCHS(lit_11);
         if  (HASEXCEPTION())
         {
-            goto ruleT__150Ex;
+            goto ruleDEFINE_FUN_TOKEx;
         }
 
 
@@ -32142,18 +33430,18 @@ void mT__150(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleT__150Ex; /* Prevent compiler warnings */
-    ruleT__150Ex: ;
+    goto ruleDEFINE_FUN_TOKEx; /* Prevent compiler warnings */
+    ruleDEFINE_FUN_TOKEx: ;
 
 }
-// $ANTLR end T__150
+// $ANTLR end DEFINE_FUN_TOK
 
-//   Comes from: 52:8: ( 'zero_extend' )
+//   Comes from: 2994:20: ( 'define-fun-rec' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start T__151
+ * $ANTLR start DEFINE_FUN_REC_TOK
  *
- * Looks to match the characters the constitute the token T__151
+ * Looks to match the characters the constitute the token DEFINE_FUN_REC_TOK
  * from the attached input stream.
  *
  *
@@ -32161,20 +33449,20 @@ void mT__150(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mT__151(pSmt2Lexer ctx)
+void mDEFINE_FUN_REC_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = T__151;
+    _type	    = DEFINE_FUN_REC_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:52:8: ( 'zero_extend' )
-    // ../../../../../../src/parser/smt2/Smt2.g:52:10: 'zero_extend'
+    // ../../../../src/parser/smt2/Smt2.g:2994:20: ( 'define-fun-rec' )
+    // ../../../../src/parser/smt2/Smt2.g:2994:22: 'define-fun-rec'
     {
-        MATCHS(lit_6);
+        MATCHS(lit_12);
         if  (HASEXCEPTION())
         {
-            goto ruleT__151Ex;
+            goto ruleDEFINE_FUN_REC_TOKEx;
         }
 
 
@@ -32185,18 +33473,18 @@ void mT__151(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleT__151Ex; /* Prevent compiler warnings */
-    ruleT__151Ex: ;
+    goto ruleDEFINE_FUN_REC_TOKEx; /* Prevent compiler warnings */
+    ruleDEFINE_FUN_REC_TOKEx: ;
 
 }
-// $ANTLR end T__151
+// $ANTLR end DEFINE_FUN_REC_TOK
 
-//   Comes from: 2784:12: ( 'assert' )
+//   Comes from: 2995:21: ( 'define-funs-rec' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start ASSERT_TOK
+ * $ANTLR start DEFINE_FUNS_REC_TOK
  *
- * Looks to match the characters the constitute the token ASSERT_TOK
+ * Looks to match the characters the constitute the token DEFINE_FUNS_REC_TOK
  * from the attached input stream.
  *
  *
@@ -32204,20 +33492,20 @@ void mT__151(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mASSERT_TOK(pSmt2Lexer ctx)
+void mDEFINE_FUNS_REC_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = ASSERT_TOK;
+    _type	    = DEFINE_FUNS_REC_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2784:12: ( 'assert' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2784:14: 'assert'
+    // ../../../../src/parser/smt2/Smt2.g:2995:21: ( 'define-funs-rec' )
+    // ../../../../src/parser/smt2/Smt2.g:2995:23: 'define-funs-rec'
     {
-        MATCHS(lit_7);
+        MATCHS(lit_13);
         if  (HASEXCEPTION())
         {
-            goto ruleASSERT_TOKEx;
+            goto ruleDEFINE_FUNS_REC_TOKEx;
         }
 
 
@@ -32228,18 +33516,61 @@ void mASSERT_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleASSERT_TOKEx; /* Prevent compiler warnings */
-    ruleASSERT_TOKEx: ;
+    goto ruleDEFINE_FUNS_REC_TOKEx; /* Prevent compiler warnings */
+    ruleDEFINE_FUNS_REC_TOKEx: ;
+
+}
+// $ANTLR end DEFINE_FUNS_REC_TOK
+
+//   Comes from: 2996:17: ( 'define-sort' )
+/** \brief Lexer rule generated by ANTLR3
+ *
+ * $ANTLR start DEFINE_SORT_TOK
+ *
+ * Looks to match the characters the constitute the token DEFINE_SORT_TOK
+ * from the attached input stream.
+ *
+ *
+ * \remark
+ *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
+ */
+static ANTLR3_INLINE
+void mDEFINE_SORT_TOK(pSmt2Lexer ctx)
+{
+	ANTLR3_UINT32	_type;
+
+    _type	    = DEFINE_SORT_TOK;
+
+
+    // ../../../../src/parser/smt2/Smt2.g:2996:17: ( 'define-sort' )
+    // ../../../../src/parser/smt2/Smt2.g:2996:19: 'define-sort'
+    {
+        MATCHS(lit_14);
+        if  (HASEXCEPTION())
+        {
+            goto ruleDEFINE_SORT_TOKEx;
+        }
+
+
+
+
+    }
+
+	LEXSTATE->type = _type;
+    // This is where rules clean up and exit
+    //
+    goto ruleDEFINE_SORT_TOKEx; /* Prevent compiler warnings */
+    ruleDEFINE_SORT_TOKEx: ;
 
 }
-// $ANTLR end ASSERT_TOK
+// $ANTLR end DEFINE_SORT_TOK
 
-//   Comes from: 2785:14: ( 'check-sat' )
+//   Comes from: 2997:15: ( 'get-value' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start CHECKSAT_TOK
+ * $ANTLR start GET_VALUE_TOK
  *
- * Looks to match the characters the constitute the token CHECKSAT_TOK
+ * Looks to match the characters the constitute the token GET_VALUE_TOK
  * from the attached input stream.
  *
  *
@@ -32247,20 +33578,20 @@ void mASSERT_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mCHECKSAT_TOK(pSmt2Lexer ctx)
+void mGET_VALUE_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = CHECKSAT_TOK;
+    _type	    = GET_VALUE_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2785:14: ( 'check-sat' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2785:16: 'check-sat'
+    // ../../../../src/parser/smt2/Smt2.g:2997:15: ( 'get-value' )
+    // ../../../../src/parser/smt2/Smt2.g:2997:17: 'get-value'
     {
-        MATCHS(lit_8);
+        MATCHS(lit_15);
         if  (HASEXCEPTION())
         {
-            goto ruleCHECKSAT_TOKEx;
+            goto ruleGET_VALUE_TOKEx;
         }
 
 
@@ -32271,18 +33602,18 @@ void mCHECKSAT_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleCHECKSAT_TOKEx; /* Prevent compiler warnings */
-    ruleCHECKSAT_TOKEx: ;
+    goto ruleGET_VALUE_TOKEx; /* Prevent compiler warnings */
+    ruleGET_VALUE_TOKEx: ;
 
 }
-// $ANTLR end CHECKSAT_TOK
+// $ANTLR end GET_VALUE_TOK
 
-//   Comes from: 2786:17: ( 'declare-fun' )
+//   Comes from: 2998:20: ( 'get-assignment' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start DECLARE_FUN_TOK
+ * $ANTLR start GET_ASSIGNMENT_TOK
  *
- * Looks to match the characters the constitute the token DECLARE_FUN_TOK
+ * Looks to match the characters the constitute the token GET_ASSIGNMENT_TOK
  * from the attached input stream.
  *
  *
@@ -32290,20 +33621,20 @@ void mCHECKSAT_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mDECLARE_FUN_TOK(pSmt2Lexer ctx)
+void mGET_ASSIGNMENT_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = DECLARE_FUN_TOK;
+    _type	    = GET_ASSIGNMENT_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2786:17: ( 'declare-fun' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2786:19: 'declare-fun'
+    // ../../../../src/parser/smt2/Smt2.g:2998:20: ( 'get-assignment' )
+    // ../../../../src/parser/smt2/Smt2.g:2998:22: 'get-assignment'
     {
-        MATCHS(lit_9);
+        MATCHS(lit_16);
         if  (HASEXCEPTION())
         {
-            goto ruleDECLARE_FUN_TOKEx;
+            goto ruleGET_ASSIGNMENT_TOKEx;
         }
 
 
@@ -32314,18 +33645,18 @@ void mDECLARE_FUN_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleDECLARE_FUN_TOKEx; /* Prevent compiler warnings */
-    ruleDECLARE_FUN_TOKEx: ;
+    goto ruleGET_ASSIGNMENT_TOKEx; /* Prevent compiler warnings */
+    ruleGET_ASSIGNMENT_TOKEx: ;
 
 }
-// $ANTLR end DECLARE_FUN_TOK
+// $ANTLR end GET_ASSIGNMENT_TOK
 
-//   Comes from: 2787:18: ( 'declare-sort' )
+//   Comes from: 2999:20: ( 'get-assertions' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start DECLARE_SORT_TOK
+ * $ANTLR start GET_ASSERTIONS_TOK
  *
- * Looks to match the characters the constitute the token DECLARE_SORT_TOK
+ * Looks to match the characters the constitute the token GET_ASSERTIONS_TOK
  * from the attached input stream.
  *
  *
@@ -32333,20 +33664,20 @@ void mDECLARE_FUN_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mDECLARE_SORT_TOK(pSmt2Lexer ctx)
+void mGET_ASSERTIONS_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = DECLARE_SORT_TOK;
+    _type	    = GET_ASSERTIONS_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2787:18: ( 'declare-sort' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2787:20: 'declare-sort'
+    // ../../../../src/parser/smt2/Smt2.g:2999:20: ( 'get-assertions' )
+    // ../../../../src/parser/smt2/Smt2.g:2999:22: 'get-assertions'
     {
-        MATCHS(lit_10);
+        MATCHS(lit_17);
         if  (HASEXCEPTION())
         {
-            goto ruleDECLARE_SORT_TOKEx;
+            goto ruleGET_ASSERTIONS_TOKEx;
         }
 
 
@@ -32357,18 +33688,18 @@ void mDECLARE_SORT_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleDECLARE_SORT_TOKEx; /* Prevent compiler warnings */
-    ruleDECLARE_SORT_TOKEx: ;
+    goto ruleGET_ASSERTIONS_TOKEx; /* Prevent compiler warnings */
+    ruleGET_ASSERTIONS_TOKEx: ;
 
 }
-// $ANTLR end DECLARE_SORT_TOK
+// $ANTLR end GET_ASSERTIONS_TOK
 
-//   Comes from: 2788:16: ( 'define-fun' )
+//   Comes from: 3000:15: ( 'get-proof' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start DEFINE_FUN_TOK
+ * $ANTLR start GET_PROOF_TOK
  *
- * Looks to match the characters the constitute the token DEFINE_FUN_TOK
+ * Looks to match the characters the constitute the token GET_PROOF_TOK
  * from the attached input stream.
  *
  *
@@ -32376,20 +33707,20 @@ void mDECLARE_SORT_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mDEFINE_FUN_TOK(pSmt2Lexer ctx)
+void mGET_PROOF_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = DEFINE_FUN_TOK;
+    _type	    = GET_PROOF_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2788:16: ( 'define-fun' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2788:18: 'define-fun'
+    // ../../../../src/parser/smt2/Smt2.g:3000:15: ( 'get-proof' )
+    // ../../../../src/parser/smt2/Smt2.g:3000:17: 'get-proof'
     {
-        MATCHS(lit_11);
+        MATCHS(lit_18);
         if  (HASEXCEPTION())
         {
-            goto ruleDEFINE_FUN_TOKEx;
+            goto ruleGET_PROOF_TOKEx;
         }
 
 
@@ -32400,18 +33731,18 @@ void mDEFINE_FUN_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleDEFINE_FUN_TOKEx; /* Prevent compiler warnings */
-    ruleDEFINE_FUN_TOKEx: ;
+    goto ruleGET_PROOF_TOKEx; /* Prevent compiler warnings */
+    ruleGET_PROOF_TOKEx: ;
 
 }
-// $ANTLR end DEFINE_FUN_TOK
+// $ANTLR end GET_PROOF_TOK
 
-//   Comes from: 2789:20: ( 'define-fun-rec' )
+//   Comes from: 3001:20: ( 'get-unsat-core' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start DEFINE_FUN_REC_TOK
+ * $ANTLR start GET_UNSAT_CORE_TOK
  *
- * Looks to match the characters the constitute the token DEFINE_FUN_REC_TOK
+ * Looks to match the characters the constitute the token GET_UNSAT_CORE_TOK
  * from the attached input stream.
  *
  *
@@ -32419,20 +33750,20 @@ void mDEFINE_FUN_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mDEFINE_FUN_REC_TOK(pSmt2Lexer ctx)
+void mGET_UNSAT_CORE_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = DEFINE_FUN_REC_TOK;
+    _type	    = GET_UNSAT_CORE_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2789:20: ( 'define-fun-rec' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2789:22: 'define-fun-rec'
+    // ../../../../src/parser/smt2/Smt2.g:3001:20: ( 'get-unsat-core' )
+    // ../../../../src/parser/smt2/Smt2.g:3001:22: 'get-unsat-core'
     {
-        MATCHS(lit_12);
+        MATCHS(lit_19);
         if  (HASEXCEPTION())
         {
-            goto ruleDEFINE_FUN_REC_TOKEx;
+            goto ruleGET_UNSAT_CORE_TOKEx;
         }
 
 
@@ -32443,18 +33774,18 @@ void mDEFINE_FUN_REC_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleDEFINE_FUN_REC_TOKEx; /* Prevent compiler warnings */
-    ruleDEFINE_FUN_REC_TOKEx: ;
+    goto ruleGET_UNSAT_CORE_TOKEx; /* Prevent compiler warnings */
+    ruleGET_UNSAT_CORE_TOKEx: ;
 
 }
-// $ANTLR end DEFINE_FUN_REC_TOK
+// $ANTLR end GET_UNSAT_CORE_TOK
 
-//   Comes from: 2790:21: ( 'define-funs-rec' )
+//   Comes from: 3002:10: ( 'exit' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start DEFINE_FUNS_REC_TOK
+ * $ANTLR start EXIT_TOK
  *
- * Looks to match the characters the constitute the token DEFINE_FUNS_REC_TOK
+ * Looks to match the characters the constitute the token EXIT_TOK
  * from the attached input stream.
  *
  *
@@ -32462,20 +33793,20 @@ void mDEFINE_FUN_REC_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mDEFINE_FUNS_REC_TOK(pSmt2Lexer ctx)
+void mEXIT_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = DEFINE_FUNS_REC_TOK;
+    _type	    = EXIT_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2790:21: ( 'define-funs-rec' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2790:23: 'define-funs-rec'
+    // ../../../../src/parser/smt2/Smt2.g:3002:10: ( 'exit' )
+    // ../../../../src/parser/smt2/Smt2.g:3002:12: 'exit'
     {
-        MATCHS(lit_13);
+        MATCHS(lit_20);
         if  (HASEXCEPTION())
         {
-            goto ruleDEFINE_FUNS_REC_TOKEx;
+            goto ruleEXIT_TOKEx;
         }
 
 
@@ -32486,18 +33817,18 @@ void mDEFINE_FUNS_REC_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleDEFINE_FUNS_REC_TOKEx; /* Prevent compiler warnings */
-    ruleDEFINE_FUNS_REC_TOKEx: ;
+    goto ruleEXIT_TOKEx; /* Prevent compiler warnings */
+    ruleEXIT_TOKEx: ;
 
 }
-// $ANTLR end DEFINE_FUNS_REC_TOK
+// $ANTLR end EXIT_TOK
 
-//   Comes from: 2791:17: ( 'define-sort' )
+//   Comes from: 3003:11: ({...}? 'reset' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start DEFINE_SORT_TOK
+ * $ANTLR start RESET_TOK
  *
- * Looks to match the characters the constitute the token DEFINE_SORT_TOK
+ * Looks to match the characters the constitute the token RESET_TOK
  * from the attached input stream.
  *
  *
@@ -32505,20 +33836,30 @@ void mDEFINE_FUNS_REC_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mDEFINE_SORT_TOK(pSmt2Lexer ctx)
+void mRESET_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = DEFINE_SORT_TOK;
+    _type	    = RESET_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2791:17: ( 'define-sort' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2791:19: 'define-sort'
+    // ../../../../src/parser/smt2/Smt2.g:3003:11: ({...}? 'reset' )
+    // ../../../../src/parser/smt2/Smt2.g:3003:13: {...}? 'reset'
     {
-        MATCHS(lit_14);
+        if ( !(( PARSER_STATE->v2_5(false) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->v2_5(false) ";
+                EXCEPTION->ruleName	 = (void *)"RESET_TOK";
+
+
+        }
+
+        MATCHS(lit_21);
         if  (HASEXCEPTION())
         {
-            goto ruleDEFINE_SORT_TOKEx;
+            goto ruleRESET_TOKEx;
         }
 
 
@@ -32529,18 +33870,18 @@ void mDEFINE_SORT_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleDEFINE_SORT_TOKEx; /* Prevent compiler warnings */
-    ruleDEFINE_SORT_TOKEx: ;
+    goto ruleRESET_TOKEx; /* Prevent compiler warnings */
+    ruleRESET_TOKEx: ;
 
 }
-// $ANTLR end DEFINE_SORT_TOK
+// $ANTLR end RESET_TOK
 
-//   Comes from: 2792:15: ( 'get-value' )
+//   Comes from: 3004:22: ( 'reset-assertions' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start GET_VALUE_TOK
+ * $ANTLR start RESET_ASSERTIONS_TOK
  *
- * Looks to match the characters the constitute the token GET_VALUE_TOK
+ * Looks to match the characters the constitute the token RESET_ASSERTIONS_TOK
  * from the attached input stream.
  *
  *
@@ -32548,20 +33889,20 @@ void mDEFINE_SORT_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mGET_VALUE_TOK(pSmt2Lexer ctx)
+void mRESET_ASSERTIONS_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = GET_VALUE_TOK;
+    _type	    = RESET_ASSERTIONS_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2792:15: ( 'get-value' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2792:17: 'get-value'
+    // ../../../../src/parser/smt2/Smt2.g:3004:22: ( 'reset-assertions' )
+    // ../../../../src/parser/smt2/Smt2.g:3004:24: 'reset-assertions'
     {
-        MATCHS(lit_15);
+        MATCHS(lit_22);
         if  (HASEXCEPTION())
         {
-            goto ruleGET_VALUE_TOKEx;
+            goto ruleRESET_ASSERTIONS_TOKEx;
         }
 
 
@@ -32572,18 +33913,18 @@ void mGET_VALUE_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleGET_VALUE_TOKEx; /* Prevent compiler warnings */
-    ruleGET_VALUE_TOKEx: ;
+    goto ruleRESET_ASSERTIONS_TOKEx; /* Prevent compiler warnings */
+    ruleRESET_ASSERTIONS_TOKEx: ;
 
 }
-// $ANTLR end GET_VALUE_TOK
+// $ANTLR end RESET_ASSERTIONS_TOK
 
-//   Comes from: 2793:20: ( 'get-assignment' )
+//   Comes from: 3005:9: ( 'ite' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start GET_ASSIGNMENT_TOK
+ * $ANTLR start ITE_TOK
  *
- * Looks to match the characters the constitute the token GET_ASSIGNMENT_TOK
+ * Looks to match the characters the constitute the token ITE_TOK
  * from the attached input stream.
  *
  *
@@ -32591,20 +33932,20 @@ void mGET_VALUE_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mGET_ASSIGNMENT_TOK(pSmt2Lexer ctx)
+void mITE_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = GET_ASSIGNMENT_TOK;
+    _type	    = ITE_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2793:20: ( 'get-assignment' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2793:22: 'get-assignment'
+    // ../../../../src/parser/smt2/Smt2.g:3005:9: ( 'ite' )
+    // ../../../../src/parser/smt2/Smt2.g:3005:11: 'ite'
     {
-        MATCHS(lit_16);
+        MATCHS(lit_23);
         if  (HASEXCEPTION())
         {
-            goto ruleGET_ASSIGNMENT_TOKEx;
+            goto ruleITE_TOKEx;
         }
 
 
@@ -32615,18 +33956,18 @@ void mGET_ASSIGNMENT_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleGET_ASSIGNMENT_TOKEx; /* Prevent compiler warnings */
-    ruleGET_ASSIGNMENT_TOKEx: ;
+    goto ruleITE_TOKEx; /* Prevent compiler warnings */
+    ruleITE_TOKEx: ;
 
 }
-// $ANTLR end GET_ASSIGNMENT_TOK
+// $ANTLR end ITE_TOK
 
-//   Comes from: 2794:20: ( 'get-assertions' )
+//   Comes from: 3006:9: ( 'let' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start GET_ASSERTIONS_TOK
+ * $ANTLR start LET_TOK
  *
- * Looks to match the characters the constitute the token GET_ASSERTIONS_TOK
+ * Looks to match the characters the constitute the token LET_TOK
  * from the attached input stream.
  *
  *
@@ -32634,20 +33975,20 @@ void mGET_ASSIGNMENT_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mGET_ASSERTIONS_TOK(pSmt2Lexer ctx)
+void mLET_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = GET_ASSERTIONS_TOK;
+    _type	    = LET_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2794:20: ( 'get-assertions' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2794:22: 'get-assertions'
+    // ../../../../src/parser/smt2/Smt2.g:3006:9: ( 'let' )
+    // ../../../../src/parser/smt2/Smt2.g:3006:11: 'let'
     {
-        MATCHS(lit_17);
+        MATCHS(lit_24);
         if  (HASEXCEPTION())
         {
-            goto ruleGET_ASSERTIONS_TOKEx;
+            goto ruleLET_TOKEx;
         }
 
 
@@ -32658,18 +33999,18 @@ void mGET_ASSERTIONS_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleGET_ASSERTIONS_TOKEx; /* Prevent compiler warnings */
-    ruleGET_ASSERTIONS_TOKEx: ;
+    goto ruleLET_TOKEx; /* Prevent compiler warnings */
+    ruleLET_TOKEx: ;
 
 }
-// $ANTLR end GET_ASSERTIONS_TOK
+// $ANTLR end LET_TOK
 
-//   Comes from: 2795:15: ( 'get-proof' )
+//   Comes from: 3007:15: ( '!' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start GET_PROOF_TOK
+ * $ANTLR start ATTRIBUTE_TOK
  *
- * Looks to match the characters the constitute the token GET_PROOF_TOK
+ * Looks to match the characters the constitute the token ATTRIBUTE_TOK
  * from the attached input stream.
  *
  *
@@ -32677,42 +34018,40 @@ void mGET_ASSERTIONS_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mGET_PROOF_TOK(pSmt2Lexer ctx)
+void mATTRIBUTE_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = GET_PROOF_TOK;
+    _type	    = ATTRIBUTE_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2795:15: ( 'get-proof' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2795:17: 'get-proof'
+    // ../../../../src/parser/smt2/Smt2.g:3007:15: ( '!' )
+    // ../../../../src/parser/smt2/Smt2.g:3007:17: '!'
     {
-        MATCHS(lit_18);
+        MATCHC('!');
         if  (HASEXCEPTION())
         {
-            goto ruleGET_PROOF_TOKEx;
+            goto ruleATTRIBUTE_TOKEx;
         }
 
 
-
-
     }
 
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleGET_PROOF_TOKEx; /* Prevent compiler warnings */
-    ruleGET_PROOF_TOKEx: ;
+    goto ruleATTRIBUTE_TOKEx; /* Prevent compiler warnings */
+    ruleATTRIBUTE_TOKEx: ;
 
 }
-// $ANTLR end GET_PROOF_TOK
+// $ANTLR end ATTRIBUTE_TOK
 
-//   Comes from: 2796:20: ( 'get-unsat-core' )
+//   Comes from: 3008:12: ( '(' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start GET_UNSAT_CORE_TOK
+ * $ANTLR start LPAREN_TOK
  *
- * Looks to match the characters the constitute the token GET_UNSAT_CORE_TOK
+ * Looks to match the characters the constitute the token LPAREN_TOK
  * from the attached input stream.
  *
  *
@@ -32720,42 +34059,40 @@ void mGET_PROOF_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mGET_UNSAT_CORE_TOK(pSmt2Lexer ctx)
+void mLPAREN_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = GET_UNSAT_CORE_TOK;
+    _type	    = LPAREN_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2796:20: ( 'get-unsat-core' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2796:22: 'get-unsat-core'
+    // ../../../../src/parser/smt2/Smt2.g:3008:12: ( '(' )
+    // ../../../../src/parser/smt2/Smt2.g:3008:14: '('
     {
-        MATCHS(lit_19);
+        MATCHC('(');
         if  (HASEXCEPTION())
         {
-            goto ruleGET_UNSAT_CORE_TOKEx;
+            goto ruleLPAREN_TOKEx;
         }
 
 
-
-
     }
 
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleGET_UNSAT_CORE_TOKEx; /* Prevent compiler warnings */
-    ruleGET_UNSAT_CORE_TOKEx: ;
+    goto ruleLPAREN_TOKEx; /* Prevent compiler warnings */
+    ruleLPAREN_TOKEx: ;
 
 }
-// $ANTLR end GET_UNSAT_CORE_TOK
+// $ANTLR end LPAREN_TOK
 
-//   Comes from: 2797:10: ( 'exit' )
+//   Comes from: 3009:12: ( ')' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start EXIT_TOK
+ * $ANTLR start RPAREN_TOK
  *
- * Looks to match the characters the constitute the token EXIT_TOK
+ * Looks to match the characters the constitute the token RPAREN_TOK
  * from the attached input stream.
  *
  *
@@ -32763,42 +34100,40 @@ void mGET_UNSAT_CORE_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mEXIT_TOK(pSmt2Lexer ctx)
+void mRPAREN_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = EXIT_TOK;
+    _type	    = RPAREN_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2797:10: ( 'exit' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2797:12: 'exit'
+    // ../../../../src/parser/smt2/Smt2.g:3009:12: ( ')' )
+    // ../../../../src/parser/smt2/Smt2.g:3009:14: ')'
     {
-        MATCHS(lit_20);
+        MATCHC(')');
         if  (HASEXCEPTION())
         {
-            goto ruleEXIT_TOKEx;
+            goto ruleRPAREN_TOKEx;
         }
 
 
-
-
     }
 
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleEXIT_TOKEx; /* Prevent compiler warnings */
-    ruleEXIT_TOKEx: ;
+    goto ruleRPAREN_TOKEx; /* Prevent compiler warnings */
+    ruleRPAREN_TOKEx: ;
 
 }
-// $ANTLR end EXIT_TOK
+// $ANTLR end RPAREN_TOK
 
-//   Comes from: 2798:11: ({...}? 'reset' )
+//   Comes from: 3010:11: ( '_' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start RESET_TOK
+ * $ANTLR start INDEX_TOK
  *
- * Looks to match the characters the constitute the token RESET_TOK
+ * Looks to match the characters the constitute the token INDEX_TOK
  * from the attached input stream.
  *
  *
@@ -32806,52 +34141,40 @@ void mEXIT_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mRESET_TOK(pSmt2Lexer ctx)
+void mINDEX_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = RESET_TOK;
+    _type	    = INDEX_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2798:11: ({...}? 'reset' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2798:13: {...}? 'reset'
+    // ../../../../src/parser/smt2/Smt2.g:3010:11: ( '_' )
+    // ../../../../src/parser/smt2/Smt2.g:3010:13: '_'
     {
-        if ( !(( PARSER_STATE->v2_5() )) )
-        {
-                CONSTRUCTEX();
-                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
-                EXCEPTION->message      = (void *)" PARSER_STATE->v2_5() ";
-                EXCEPTION->ruleName	 = (void *)"RESET_TOK";
-
-
-        }
-
-        MATCHS(lit_21);
+        MATCHC('_');
         if  (HASEXCEPTION())
         {
-            goto ruleRESET_TOKEx;
+            goto ruleINDEX_TOKEx;
         }
 
 
-
-
     }
 
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleRESET_TOKEx; /* Prevent compiler warnings */
-    ruleRESET_TOKEx: ;
+    goto ruleINDEX_TOKEx; /* Prevent compiler warnings */
+    ruleINDEX_TOKEx: ;
 
 }
-// $ANTLR end RESET_TOK
+// $ANTLR end INDEX_TOK
 
-//   Comes from: 2799:22: ( 'reset-assertions' )
+//   Comes from: 3011:15: ( 'set-logic' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start RESET_ASSERTIONS_TOK
+ * $ANTLR start SET_LOGIC_TOK
  *
- * Looks to match the characters the constitute the token RESET_ASSERTIONS_TOK
+ * Looks to match the characters the constitute the token SET_LOGIC_TOK
  * from the attached input stream.
  *
  *
@@ -32859,20 +34182,20 @@ void mRESET_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mRESET_ASSERTIONS_TOK(pSmt2Lexer ctx)
+void mSET_LOGIC_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = RESET_ASSERTIONS_TOK;
+    _type	    = SET_LOGIC_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2799:22: ( 'reset-assertions' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2799:24: 'reset-assertions'
+    // ../../../../src/parser/smt2/Smt2.g:3011:15: ( 'set-logic' )
+    // ../../../../src/parser/smt2/Smt2.g:3011:17: 'set-logic'
     {
-        MATCHS(lit_22);
+        MATCHS(lit_25);
         if  (HASEXCEPTION())
         {
-            goto ruleRESET_ASSERTIONS_TOKEx;
+            goto ruleSET_LOGIC_TOKEx;
         }
 
 
@@ -32883,18 +34206,18 @@ void mRESET_ASSERTIONS_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleRESET_ASSERTIONS_TOKEx; /* Prevent compiler warnings */
-    ruleRESET_ASSERTIONS_TOKEx: ;
+    goto ruleSET_LOGIC_TOKEx; /* Prevent compiler warnings */
+    ruleSET_LOGIC_TOKEx: ;
 
 }
-// $ANTLR end RESET_ASSERTIONS_TOK
+// $ANTLR end SET_LOGIC_TOK
 
-//   Comes from: 2800:9: ( 'ite' )
+//   Comes from: 3012:14: ( 'set-info' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start ITE_TOK
+ * $ANTLR start SET_INFO_TOK
  *
- * Looks to match the characters the constitute the token ITE_TOK
+ * Looks to match the characters the constitute the token SET_INFO_TOK
  * from the attached input stream.
  *
  *
@@ -32902,20 +34225,20 @@ void mRESET_ASSERTIONS_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mITE_TOK(pSmt2Lexer ctx)
+void mSET_INFO_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = ITE_TOK;
+    _type	    = SET_INFO_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2800:9: ( 'ite' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2800:11: 'ite'
+    // ../../../../src/parser/smt2/Smt2.g:3012:14: ( 'set-info' )
+    // ../../../../src/parser/smt2/Smt2.g:3012:16: 'set-info'
     {
-        MATCHS(lit_23);
+        MATCHS(lit_26);
         if  (HASEXCEPTION())
         {
-            goto ruleITE_TOKEx;
+            goto ruleSET_INFO_TOKEx;
         }
 
 
@@ -32926,18 +34249,18 @@ void mITE_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleITE_TOKEx; /* Prevent compiler warnings */
-    ruleITE_TOKEx: ;
+    goto ruleSET_INFO_TOKEx; /* Prevent compiler warnings */
+    ruleSET_INFO_TOKEx: ;
 
 }
-// $ANTLR end ITE_TOK
+// $ANTLR end SET_INFO_TOK
 
-//   Comes from: 2801:9: ( 'let' )
+//   Comes from: 3013:15: ( 'meta-info' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start LET_TOK
+ * $ANTLR start META_INFO_TOK
  *
- * Looks to match the characters the constitute the token LET_TOK
+ * Looks to match the characters the constitute the token META_INFO_TOK
  * from the attached input stream.
  *
  *
@@ -32945,20 +34268,20 @@ void mITE_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mLET_TOK(pSmt2Lexer ctx)
+void mMETA_INFO_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = LET_TOK;
+    _type	    = META_INFO_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2801:9: ( 'let' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2801:11: 'let'
+    // ../../../../src/parser/smt2/Smt2.g:3013:15: ( 'meta-info' )
+    // ../../../../src/parser/smt2/Smt2.g:3013:17: 'meta-info'
     {
-        MATCHS(lit_24);
+        MATCHS(lit_27);
         if  (HASEXCEPTION())
         {
-            goto ruleLET_TOKEx;
+            goto ruleMETA_INFO_TOKEx;
         }
 
 
@@ -32969,18 +34292,18 @@ void mLET_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleLET_TOKEx; /* Prevent compiler warnings */
-    ruleLET_TOKEx: ;
+    goto ruleMETA_INFO_TOKEx; /* Prevent compiler warnings */
+    ruleMETA_INFO_TOKEx: ;
 
 }
-// $ANTLR end LET_TOK
+// $ANTLR end META_INFO_TOK
 
-//   Comes from: 2802:15: ( '!' )
+//   Comes from: 3014:14: ( 'get-info' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start ATTRIBUTE_TOK
+ * $ANTLR start GET_INFO_TOK
  *
- * Looks to match the characters the constitute the token ATTRIBUTE_TOK
+ * Looks to match the characters the constitute the token GET_INFO_TOK
  * from the attached input stream.
  *
  *
@@ -32988,40 +34311,42 @@ void mLET_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mATTRIBUTE_TOK(pSmt2Lexer ctx)
+void mGET_INFO_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = ATTRIBUTE_TOK;
+    _type	    = GET_INFO_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2802:15: ( '!' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2802:17: '!'
+    // ../../../../src/parser/smt2/Smt2.g:3014:14: ( 'get-info' )
+    // ../../../../src/parser/smt2/Smt2.g:3014:16: 'get-info'
     {
-        MATCHC('!');
+        MATCHS(lit_28);
         if  (HASEXCEPTION())
         {
-            goto ruleATTRIBUTE_TOKEx;
+            goto ruleGET_INFO_TOKEx;
         }
 
 
+
+
     }
 
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleATTRIBUTE_TOKEx; /* Prevent compiler warnings */
-    ruleATTRIBUTE_TOKEx: ;
+    goto ruleGET_INFO_TOKEx; /* Prevent compiler warnings */
+    ruleGET_INFO_TOKEx: ;
 
 }
-// $ANTLR end ATTRIBUTE_TOK
+// $ANTLR end GET_INFO_TOK
 
-//   Comes from: 2803:12: ( '(' )
+//   Comes from: 3015:16: ( 'set-option' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start LPAREN_TOK
+ * $ANTLR start SET_OPTION_TOK
  *
- * Looks to match the characters the constitute the token LPAREN_TOK
+ * Looks to match the characters the constitute the token SET_OPTION_TOK
  * from the attached input stream.
  *
  *
@@ -33029,40 +34354,42 @@ void mATTRIBUTE_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mLPAREN_TOK(pSmt2Lexer ctx)
+void mSET_OPTION_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = LPAREN_TOK;
+    _type	    = SET_OPTION_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2803:12: ( '(' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2803:14: '('
+    // ../../../../src/parser/smt2/Smt2.g:3015:16: ( 'set-option' )
+    // ../../../../src/parser/smt2/Smt2.g:3015:18: 'set-option'
     {
-        MATCHC('(');
+        MATCHS(lit_29);
         if  (HASEXCEPTION())
         {
-            goto ruleLPAREN_TOKEx;
+            goto ruleSET_OPTION_TOKEx;
         }
 
 
+
+
     }
 
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleLPAREN_TOKEx; /* Prevent compiler warnings */
-    ruleLPAREN_TOKEx: ;
+    goto ruleSET_OPTION_TOKEx; /* Prevent compiler warnings */
+    ruleSET_OPTION_TOKEx: ;
 
 }
-// $ANTLR end LPAREN_TOK
+// $ANTLR end SET_OPTION_TOK
 
-//   Comes from: 2804:12: ( ')' )
+//   Comes from: 3016:16: ( 'get-option' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start RPAREN_TOK
+ * $ANTLR start GET_OPTION_TOK
  *
- * Looks to match the characters the constitute the token RPAREN_TOK
+ * Looks to match the characters the constitute the token GET_OPTION_TOK
  * from the attached input stream.
  *
  *
@@ -33070,40 +34397,42 @@ void mLPAREN_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mRPAREN_TOK(pSmt2Lexer ctx)
+void mGET_OPTION_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = RPAREN_TOK;
+    _type	    = GET_OPTION_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2804:12: ( ')' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2804:14: ')'
+    // ../../../../src/parser/smt2/Smt2.g:3016:16: ( 'get-option' )
+    // ../../../../src/parser/smt2/Smt2.g:3016:18: 'get-option'
     {
-        MATCHC(')');
+        MATCHS(lit_30);
         if  (HASEXCEPTION())
         {
-            goto ruleRPAREN_TOKEx;
+            goto ruleGET_OPTION_TOKEx;
         }
 
 
+
+
     }
 
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleRPAREN_TOKEx; /* Prevent compiler warnings */
-    ruleRPAREN_TOKEx: ;
+    goto ruleGET_OPTION_TOKEx; /* Prevent compiler warnings */
+    ruleGET_OPTION_TOKEx: ;
 
 }
-// $ANTLR end RPAREN_TOK
+// $ANTLR end GET_OPTION_TOK
 
-//   Comes from: 2805:11: ( '_' )
+//   Comes from: 3017:10: ( 'push' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start INDEX_TOK
+ * $ANTLR start PUSH_TOK
  *
- * Looks to match the characters the constitute the token INDEX_TOK
+ * Looks to match the characters the constitute the token PUSH_TOK
  * from the attached input stream.
  *
  *
@@ -33111,40 +34440,42 @@ void mRPAREN_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mINDEX_TOK(pSmt2Lexer ctx)
+void mPUSH_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = INDEX_TOK;
+    _type	    = PUSH_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2805:11: ( '_' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2805:13: '_'
+    // ../../../../src/parser/smt2/Smt2.g:3017:10: ( 'push' )
+    // ../../../../src/parser/smt2/Smt2.g:3017:12: 'push'
     {
-        MATCHC('_');
+        MATCHS(lit_31);
         if  (HASEXCEPTION())
         {
-            goto ruleINDEX_TOKEx;
+            goto rulePUSH_TOKEx;
         }
 
 
+
+
     }
 
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleINDEX_TOKEx; /* Prevent compiler warnings */
-    ruleINDEX_TOKEx: ;
+    goto rulePUSH_TOKEx; /* Prevent compiler warnings */
+    rulePUSH_TOKEx: ;
 
 }
-// $ANTLR end INDEX_TOK
+// $ANTLR end PUSH_TOK
 
-//   Comes from: 2806:15: ( 'set-logic' )
+//   Comes from: 3018:9: ( 'pop' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start SET_LOGIC_TOK
+ * $ANTLR start POP_TOK
  *
- * Looks to match the characters the constitute the token SET_LOGIC_TOK
+ * Looks to match the characters the constitute the token POP_TOK
  * from the attached input stream.
  *
  *
@@ -33152,20 +34483,20 @@ void mINDEX_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mSET_LOGIC_TOK(pSmt2Lexer ctx)
+void mPOP_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = SET_LOGIC_TOK;
+    _type	    = POP_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2806:15: ( 'set-logic' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2806:17: 'set-logic'
+    // ../../../../src/parser/smt2/Smt2.g:3018:9: ( 'pop' )
+    // ../../../../src/parser/smt2/Smt2.g:3018:11: 'pop'
     {
-        MATCHS(lit_25);
+        MATCHS(lit_32);
         if  (HASEXCEPTION())
         {
-            goto ruleSET_LOGIC_TOKEx;
+            goto rulePOP_TOKEx;
         }
 
 
@@ -33176,18 +34507,18 @@ void mSET_LOGIC_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleSET_LOGIC_TOKEx; /* Prevent compiler warnings */
-    ruleSET_LOGIC_TOKEx: ;
+    goto rulePOP_TOKEx; /* Prevent compiler warnings */
+    rulePOP_TOKEx: ;
 
 }
-// $ANTLR end SET_LOGIC_TOK
+// $ANTLR end POP_TOK
 
-//   Comes from: 2807:14: ( 'set-info' )
+//   Comes from: 3019:8: ( 'as' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start SET_INFO_TOK
+ * $ANTLR start AS_TOK
  *
- * Looks to match the characters the constitute the token SET_INFO_TOK
+ * Looks to match the characters the constitute the token AS_TOK
  * from the attached input stream.
  *
  *
@@ -33195,20 +34526,20 @@ void mSET_LOGIC_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mSET_INFO_TOK(pSmt2Lexer ctx)
+void mAS_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = SET_INFO_TOK;
+    _type	    = AS_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2807:14: ( 'set-info' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2807:16: 'set-info'
+    // ../../../../src/parser/smt2/Smt2.g:3019:8: ( 'as' )
+    // ../../../../src/parser/smt2/Smt2.g:3019:10: 'as'
     {
-        MATCHS(lit_26);
+        MATCHS(lit_33);
         if  (HASEXCEPTION())
         {
-            goto ruleSET_INFO_TOKEx;
+            goto ruleAS_TOKEx;
         }
 
 
@@ -33219,18 +34550,18 @@ void mSET_INFO_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleSET_INFO_TOKEx; /* Prevent compiler warnings */
-    ruleSET_INFO_TOKEx: ;
+    goto ruleAS_TOKEx; /* Prevent compiler warnings */
+    ruleAS_TOKEx: ;
 
 }
-// $ANTLR end SET_INFO_TOK
+// $ANTLR end AS_TOK
 
-//   Comes from: 2808:15: ( 'meta-info' )
+//   Comes from: 3020:11: ( 'const' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start META_INFO_TOK
+ * $ANTLR start CONST_TOK
  *
- * Looks to match the characters the constitute the token META_INFO_TOK
+ * Looks to match the characters the constitute the token CONST_TOK
  * from the attached input stream.
  *
  *
@@ -33238,20 +34569,20 @@ void mSET_INFO_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mMETA_INFO_TOK(pSmt2Lexer ctx)
+void mCONST_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = META_INFO_TOK;
+    _type	    = CONST_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2808:15: ( 'meta-info' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2808:17: 'meta-info'
+    // ../../../../src/parser/smt2/Smt2.g:3020:11: ( 'const' )
+    // ../../../../src/parser/smt2/Smt2.g:3020:13: 'const'
     {
-        MATCHS(lit_27);
+        MATCHS(lit_34);
         if  (HASEXCEPTION())
         {
-            goto ruleMETA_INFO_TOKEx;
+            goto ruleCONST_TOKEx;
         }
 
 
@@ -33262,18 +34593,18 @@ void mMETA_INFO_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleMETA_INFO_TOKEx; /* Prevent compiler warnings */
-    ruleMETA_INFO_TOKEx: ;
+    goto ruleCONST_TOKEx; /* Prevent compiler warnings */
+    ruleCONST_TOKEx: ;
 
 }
-// $ANTLR end META_INFO_TOK
+// $ANTLR end CONST_TOK
 
-//   Comes from: 2809:14: ( 'get-info' )
+//   Comes from: 3023:24: ({...}? 'declare-codatatype' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start GET_INFO_TOK
+ * $ANTLR start DECLARE_CODATATYPE_TOK
  *
- * Looks to match the characters the constitute the token GET_INFO_TOK
+ * Looks to match the characters the constitute the token DECLARE_CODATATYPE_TOK
  * from the attached input stream.
  *
  *
@@ -33281,20 +34612,30 @@ void mMETA_INFO_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mGET_INFO_TOK(pSmt2Lexer ctx)
+void mDECLARE_CODATATYPE_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = GET_INFO_TOK;
+    _type	    = DECLARE_CODATATYPE_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2809:14: ( 'get-info' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2809:16: 'get-info'
+    // ../../../../src/parser/smt2/Smt2.g:3023:24: ({...}? 'declare-codatatype' )
+    // ../../../../src/parser/smt2/Smt2.g:3023:26: {...}? 'declare-codatatype'
     {
-        MATCHS(lit_28);
+        if ( !(( PARSER_STATE->v2_6() )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->v2_6() ";
+                EXCEPTION->ruleName	 = (void *)"DECLARE_CODATATYPE_TOK";
+
+
+        }
+
+        MATCHS(lit_35);
         if  (HASEXCEPTION())
         {
-            goto ruleGET_INFO_TOKEx;
+            goto ruleDECLARE_CODATATYPE_TOKEx;
         }
 
 
@@ -33305,18 +34646,18 @@ void mGET_INFO_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleGET_INFO_TOKEx; /* Prevent compiler warnings */
-    ruleGET_INFO_TOKEx: ;
+    goto ruleDECLARE_CODATATYPE_TOKEx; /* Prevent compiler warnings */
+    ruleDECLARE_CODATATYPE_TOKEx: ;
 
 }
-// $ANTLR end GET_INFO_TOK
+// $ANTLR end DECLARE_CODATATYPE_TOK
 
-//   Comes from: 2810:16: ( 'set-option' )
+//   Comes from: 3024:22: ({...}? 'declare-datatype' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start SET_OPTION_TOK
+ * $ANTLR start DECLARE_DATATYPE_TOK
  *
- * Looks to match the characters the constitute the token SET_OPTION_TOK
+ * Looks to match the characters the constitute the token DECLARE_DATATYPE_TOK
  * from the attached input stream.
  *
  *
@@ -33324,20 +34665,30 @@ void mGET_INFO_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mSET_OPTION_TOK(pSmt2Lexer ctx)
+void mDECLARE_DATATYPE_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = SET_OPTION_TOK;
+    _type	    = DECLARE_DATATYPE_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2810:16: ( 'set-option' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2810:18: 'set-option'
+    // ../../../../src/parser/smt2/Smt2.g:3024:22: ({...}? 'declare-datatype' )
+    // ../../../../src/parser/smt2/Smt2.g:3024:24: {...}? 'declare-datatype'
     {
-        MATCHS(lit_29);
+        if ( !(( PARSER_STATE->v2_6() )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->v2_6() ";
+                EXCEPTION->ruleName	 = (void *)"DECLARE_DATATYPE_TOK";
+
+
+        }
+
+        MATCHS(lit_36);
         if  (HASEXCEPTION())
         {
-            goto ruleSET_OPTION_TOKEx;
+            goto ruleDECLARE_DATATYPE_TOKEx;
         }
 
 
@@ -33348,18 +34699,18 @@ void mSET_OPTION_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleSET_OPTION_TOKEx; /* Prevent compiler warnings */
-    ruleSET_OPTION_TOKEx: ;
+    goto ruleDECLARE_DATATYPE_TOKEx; /* Prevent compiler warnings */
+    ruleDECLARE_DATATYPE_TOKEx: ;
 
 }
-// $ANTLR end SET_OPTION_TOK
+// $ANTLR end DECLARE_DATATYPE_TOK
 
-//   Comes from: 2811:16: ( 'get-option' )
+//   Comes from: 3025:27: ({...}? 'declare-datatypes' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start GET_OPTION_TOK
+ * $ANTLR start DECLARE_DATATYPES_2_5_TOK
  *
- * Looks to match the characters the constitute the token GET_OPTION_TOK
+ * Looks to match the characters the constitute the token DECLARE_DATATYPES_2_5_TOK
  * from the attached input stream.
  *
  *
@@ -33367,20 +34718,30 @@ void mSET_OPTION_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mGET_OPTION_TOK(pSmt2Lexer ctx)
+void mDECLARE_DATATYPES_2_5_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = GET_OPTION_TOK;
+    _type	    = DECLARE_DATATYPES_2_5_TOK;
+
+
+    // ../../../../src/parser/smt2/Smt2.g:3025:27: ({...}? 'declare-datatypes' )
+    // ../../../../src/parser/smt2/Smt2.g:3025:29: {...}? 'declare-datatypes'
+    {
+        if ( !(( !PARSER_STATE->v2_6() )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" !PARSER_STATE->v2_6() ";
+                EXCEPTION->ruleName	 = (void *)"DECLARE_DATATYPES_2_5_TOK";
+
 
+        }
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2811:16: ( 'get-option' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2811:18: 'get-option'
-    {
-        MATCHS(lit_30);
+        MATCHS(lit_37);
         if  (HASEXCEPTION())
         {
-            goto ruleGET_OPTION_TOKEx;
+            goto ruleDECLARE_DATATYPES_2_5_TOKEx;
         }
 
 
@@ -33391,18 +34752,18 @@ void mGET_OPTION_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleGET_OPTION_TOKEx; /* Prevent compiler warnings */
-    ruleGET_OPTION_TOKEx: ;
+    goto ruleDECLARE_DATATYPES_2_5_TOKEx; /* Prevent compiler warnings */
+    ruleDECLARE_DATATYPES_2_5_TOKEx: ;
 
 }
-// $ANTLR end GET_OPTION_TOK
+// $ANTLR end DECLARE_DATATYPES_2_5_TOK
 
-//   Comes from: 2812:10: ( 'push' )
+//   Comes from: 3026:23: ({...}? 'declare-datatypes' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start PUSH_TOK
+ * $ANTLR start DECLARE_DATATYPES_TOK
  *
- * Looks to match the characters the constitute the token PUSH_TOK
+ * Looks to match the characters the constitute the token DECLARE_DATATYPES_TOK
  * from the attached input stream.
  *
  *
@@ -33410,20 +34771,30 @@ void mGET_OPTION_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mPUSH_TOK(pSmt2Lexer ctx)
+void mDECLARE_DATATYPES_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = PUSH_TOK;
+    _type	    = DECLARE_DATATYPES_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2812:10: ( 'push' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2812:12: 'push'
+    // ../../../../src/parser/smt2/Smt2.g:3026:23: ({...}? 'declare-datatypes' )
+    // ../../../../src/parser/smt2/Smt2.g:3026:25: {...}? 'declare-datatypes'
     {
-        MATCHS(lit_31);
+        if ( !(( PARSER_STATE->v2_6() )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->v2_6() ";
+                EXCEPTION->ruleName	 = (void *)"DECLARE_DATATYPES_TOK";
+
+
+        }
+
+        MATCHS(lit_37);
         if  (HASEXCEPTION())
         {
-            goto rulePUSH_TOKEx;
+            goto ruleDECLARE_DATATYPES_TOKEx;
         }
 
 
@@ -33434,18 +34805,18 @@ void mPUSH_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto rulePUSH_TOKEx; /* Prevent compiler warnings */
-    rulePUSH_TOKEx: ;
+    goto ruleDECLARE_DATATYPES_TOKEx; /* Prevent compiler warnings */
+    ruleDECLARE_DATATYPES_TOKEx: ;
 
 }
-// $ANTLR end PUSH_TOK
+// $ANTLR end DECLARE_DATATYPES_TOK
 
-//   Comes from: 2813:9: ( 'pop' )
+//   Comes from: 3027:29: ({...}? 'declare-codatatypes' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start POP_TOK
+ * $ANTLR start DECLARE_CODATATYPES_2_5_TOK
  *
- * Looks to match the characters the constitute the token POP_TOK
+ * Looks to match the characters the constitute the token DECLARE_CODATATYPES_2_5_TOK
  * from the attached input stream.
  *
  *
@@ -33453,20 +34824,30 @@ void mPUSH_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mPOP_TOK(pSmt2Lexer ctx)
+void mDECLARE_CODATATYPES_2_5_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = POP_TOK;
+    _type	    = DECLARE_CODATATYPES_2_5_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2813:9: ( 'pop' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2813:11: 'pop'
+    // ../../../../src/parser/smt2/Smt2.g:3027:29: ({...}? 'declare-codatatypes' )
+    // ../../../../src/parser/smt2/Smt2.g:3027:31: {...}? 'declare-codatatypes'
     {
-        MATCHS(lit_32);
+        if ( !(( !PARSER_STATE->v2_6() )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" !PARSER_STATE->v2_6() ";
+                EXCEPTION->ruleName	 = (void *)"DECLARE_CODATATYPES_2_5_TOK";
+
+
+        }
+
+        MATCHS(lit_38);
         if  (HASEXCEPTION())
         {
-            goto rulePOP_TOKEx;
+            goto ruleDECLARE_CODATATYPES_2_5_TOKEx;
         }
 
 
@@ -33477,18 +34858,18 @@ void mPOP_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto rulePOP_TOKEx; /* Prevent compiler warnings */
-    rulePOP_TOKEx: ;
+    goto ruleDECLARE_CODATATYPES_2_5_TOKEx; /* Prevent compiler warnings */
+    ruleDECLARE_CODATATYPES_2_5_TOKEx: ;
 
 }
-// $ANTLR end POP_TOK
+// $ANTLR end DECLARE_CODATATYPES_2_5_TOK
 
-//   Comes from: 2814:8: ( 'as' )
+//   Comes from: 3028:25: ({...}? 'declare-codatatypes' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start AS_TOK
+ * $ANTLR start DECLARE_CODATATYPES_TOK
  *
- * Looks to match the characters the constitute the token AS_TOK
+ * Looks to match the characters the constitute the token DECLARE_CODATATYPES_TOK
  * from the attached input stream.
  *
  *
@@ -33496,20 +34877,30 @@ void mPOP_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mAS_TOK(pSmt2Lexer ctx)
+void mDECLARE_CODATATYPES_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = AS_TOK;
+    _type	    = DECLARE_CODATATYPES_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2814:8: ( 'as' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2814:10: 'as'
+    // ../../../../src/parser/smt2/Smt2.g:3028:25: ({...}? 'declare-codatatypes' )
+    // ../../../../src/parser/smt2/Smt2.g:3028:27: {...}? 'declare-codatatypes'
     {
-        MATCHS(lit_33);
+        if ( !(( PARSER_STATE->v2_6() )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->v2_6() ";
+                EXCEPTION->ruleName	 = (void *)"DECLARE_CODATATYPES_TOK";
+
+
+        }
+
+        MATCHS(lit_38);
         if  (HASEXCEPTION())
         {
-            goto ruleAS_TOKEx;
+            goto ruleDECLARE_CODATATYPES_TOKEx;
         }
 
 
@@ -33520,18 +34911,18 @@ void mAS_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleAS_TOKEx; /* Prevent compiler warnings */
-    ruleAS_TOKEx: ;
+    goto ruleDECLARE_CODATATYPES_TOKEx; /* Prevent compiler warnings */
+    ruleDECLARE_CODATATYPES_TOKEx: ;
 
 }
-// $ANTLR end AS_TOK
+// $ANTLR end DECLARE_CODATATYPES_TOK
 
-//   Comes from: 2815:11: ( 'const' )
+//   Comes from: 3029:9: ({...}? 'par' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start CONST_TOK
+ * $ANTLR start PAR_TOK
  *
- * Looks to match the characters the constitute the token CONST_TOK
+ * Looks to match the characters the constitute the token PAR_TOK
  * from the attached input stream.
  *
  *
@@ -33539,20 +34930,30 @@ void mAS_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mCONST_TOK(pSmt2Lexer ctx)
+void mPAR_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = CONST_TOK;
+    _type	    = PAR_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2815:11: ( 'const' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2815:13: 'const'
+    // ../../../../src/parser/smt2/Smt2.g:3029:9: ({...}? 'par' )
+    // ../../../../src/parser/smt2/Smt2.g:3029:11: {...}? 'par'
     {
-        MATCHS(lit_34);
+        if ( !(( PARSER_STATE->v2_6() )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->v2_6() ";
+                EXCEPTION->ruleName	 = (void *)"PAR_TOK";
+
+
+        }
+
+        MATCHS(lit_39);
         if  (HASEXCEPTION())
         {
-            goto ruleCONST_TOKEx;
+            goto rulePAR_TOKEx;
         }
 
 
@@ -33563,18 +34964,18 @@ void mCONST_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleCONST_TOKEx; /* Prevent compiler warnings */
-    ruleCONST_TOKEx: ;
+    goto rulePAR_TOKEx; /* Prevent compiler warnings */
+    rulePAR_TOKEx: ;
 
 }
-// $ANTLR end CONST_TOK
+// $ANTLR end PAR_TOK
 
-//   Comes from: 2818:23: ( 'declare-datatypes' )
+//   Comes from: 3030:12: ({...}? 'is' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start DECLARE_DATATYPES_TOK
+ * $ANTLR start TESTER_TOK
  *
- * Looks to match the characters the constitute the token DECLARE_DATATYPES_TOK
+ * Looks to match the characters the constitute the token TESTER_TOK
  * from the attached input stream.
  *
  *
@@ -33582,20 +34983,30 @@ void mCONST_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mDECLARE_DATATYPES_TOK(pSmt2Lexer ctx)
+void mTESTER_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = DECLARE_DATATYPES_TOK;
+    _type	    = TESTER_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2818:23: ( 'declare-datatypes' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2818:25: 'declare-datatypes'
+    // ../../../../src/parser/smt2/Smt2.g:3030:12: ({...}? 'is' )
+    // ../../../../src/parser/smt2/Smt2.g:3030:14: {...}? 'is'
     {
-        MATCHS(lit_35);
+        if ( !(( PARSER_STATE->v2_6() && PARSER_STATE->isTheoryEnabled(Smt2::THEORY_DATATYPES) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->v2_6() && PARSER_STATE->isTheoryEnabled(Smt2::THEORY_DATATYPES) ";
+                EXCEPTION->ruleName	 = (void *)"TESTER_TOK";
+
+
+        }
+
+        MATCHS(lit_40);
         if  (HASEXCEPTION())
         {
-            goto ruleDECLARE_DATATYPES_TOKEx;
+            goto ruleTESTER_TOKEx;
         }
 
 
@@ -33606,18 +35017,18 @@ void mDECLARE_DATATYPES_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleDECLARE_DATATYPES_TOKEx; /* Prevent compiler warnings */
-    ruleDECLARE_DATATYPES_TOKEx: ;
+    goto ruleTESTER_TOKEx; /* Prevent compiler warnings */
+    ruleTESTER_TOKEx: ;
 
 }
-// $ANTLR end DECLARE_DATATYPES_TOK
+// $ANTLR end TESTER_TOK
 
-//   Comes from: 2819:25: ( 'declare-codatatypes' )
+//   Comes from: 3031:11: ({...}? 'match' )
 /** \brief Lexer rule generated by ANTLR3
  *
- * $ANTLR start DECLARE_CODATATYPES_TOK
+ * $ANTLR start MATCH_TOK
  *
- * Looks to match the characters the constitute the token DECLARE_CODATATYPES_TOK
+ * Looks to match the characters the constitute the token MATCH_TOK
  * from the attached input stream.
  *
  *
@@ -33625,20 +35036,30 @@ void mDECLARE_DATATYPES_TOK(pSmt2Lexer ctx)
  *  - lexer->error == ANTLR3_TRUE if an exception was thrown.
  */
 static ANTLR3_INLINE
-void mDECLARE_CODATATYPES_TOK(pSmt2Lexer ctx)
+void mMATCH_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = DECLARE_CODATATYPES_TOK;
+    _type	    = MATCH_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2819:25: ( 'declare-codatatypes' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2819:27: 'declare-codatatypes'
+    // ../../../../src/parser/smt2/Smt2.g:3031:11: ({...}? 'match' )
+    // ../../../../src/parser/smt2/Smt2.g:3031:13: {...}? 'match'
     {
-        MATCHS(lit_36);
+        if ( !(( PARSER_STATE->v2_6() && PARSER_STATE->isTheoryEnabled(Smt2::THEORY_DATATYPES) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->v2_6() && PARSER_STATE->isTheoryEnabled(Smt2::THEORY_DATATYPES) ";
+                EXCEPTION->ruleName	 = (void *)"MATCH_TOK";
+
+
+        }
+
+        MATCHS(lit_41);
         if  (HASEXCEPTION())
         {
-            goto ruleDECLARE_CODATATYPES_TOKEx;
+            goto ruleMATCH_TOKEx;
         }
 
 
@@ -33649,13 +35070,13 @@ void mDECLARE_CODATATYPES_TOK(pSmt2Lexer ctx)
 	LEXSTATE->type = _type;
     // This is where rules clean up and exit
     //
-    goto ruleDECLARE_CODATATYPES_TOKEx; /* Prevent compiler warnings */
-    ruleDECLARE_CODATATYPES_TOKEx: ;
+    goto ruleMATCH_TOKEx; /* Prevent compiler warnings */
+    ruleMATCH_TOKEx: ;
 
 }
-// $ANTLR end DECLARE_CODATATYPES_TOK
+// $ANTLR end MATCH_TOK
 
-//   Comes from: 2820:15: ( 'get-model' )
+//   Comes from: 3032:15: ( 'get-model' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start GET_MODEL_TOK
@@ -33675,10 +35096,10 @@ void mGET_MODEL_TOK(pSmt2Lexer ctx)
     _type	    = GET_MODEL_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2820:15: ( 'get-model' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2820:17: 'get-model'
+    // ../../../../src/parser/smt2/Smt2.g:3032:15: ( 'get-model' )
+    // ../../../../src/parser/smt2/Smt2.g:3032:17: 'get-model'
     {
-        MATCHS(lit_37);
+        MATCHS(lit_42);
         if  (HASEXCEPTION())
         {
             goto ruleGET_MODEL_TOKEx;
@@ -33698,7 +35119,7 @@ void mGET_MODEL_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end GET_MODEL_TOK
 
-//   Comes from: 2821:10: ( 'echo' )
+//   Comes from: 3033:10: ( 'echo' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start ECHO_TOK
@@ -33718,10 +35139,10 @@ void mECHO_TOK(pSmt2Lexer ctx)
     _type	    = ECHO_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2821:10: ( 'echo' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2821:12: 'echo'
+    // ../../../../src/parser/smt2/Smt2.g:3033:10: ( 'echo' )
+    // ../../../../src/parser/smt2/Smt2.g:3033:12: 'echo'
     {
-        MATCHS(lit_38);
+        MATCHS(lit_43);
         if  (HASEXCEPTION())
         {
             goto ruleECHO_TOKEx;
@@ -33741,7 +35162,7 @@ void mECHO_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end ECHO_TOK
 
-//   Comes from: 2822:18: ( 'assert-rewrite' )
+//   Comes from: 3034:18: ( 'assert-rewrite' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start REWRITE_RULE_TOK
@@ -33761,10 +35182,10 @@ void mREWRITE_RULE_TOK(pSmt2Lexer ctx)
     _type	    = REWRITE_RULE_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2822:18: ( 'assert-rewrite' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2822:20: 'assert-rewrite'
+    // ../../../../src/parser/smt2/Smt2.g:3034:18: ( 'assert-rewrite' )
+    // ../../../../src/parser/smt2/Smt2.g:3034:20: 'assert-rewrite'
     {
-        MATCHS(lit_39);
+        MATCHS(lit_44);
         if  (HASEXCEPTION())
         {
             goto ruleREWRITE_RULE_TOKEx;
@@ -33784,7 +35205,7 @@ void mREWRITE_RULE_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end REWRITE_RULE_TOK
 
-//   Comes from: 2823:20: ( 'assert-reduction' )
+//   Comes from: 3035:20: ( 'assert-reduction' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start REDUCTION_RULE_TOK
@@ -33804,10 +35225,10 @@ void mREDUCTION_RULE_TOK(pSmt2Lexer ctx)
     _type	    = REDUCTION_RULE_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2823:20: ( 'assert-reduction' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2823:22: 'assert-reduction'
+    // ../../../../src/parser/smt2/Smt2.g:3035:20: ( 'assert-reduction' )
+    // ../../../../src/parser/smt2/Smt2.g:3035:22: 'assert-reduction'
     {
-        MATCHS(lit_40);
+        MATCHS(lit_45);
         if  (HASEXCEPTION())
         {
             goto ruleREDUCTION_RULE_TOKEx;
@@ -33827,7 +35248,7 @@ void mREDUCTION_RULE_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end REDUCTION_RULE_TOK
 
-//   Comes from: 2824:22: ( 'assert-propagation' )
+//   Comes from: 3036:22: ( 'assert-propagation' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start PROPAGATION_RULE_TOK
@@ -33847,10 +35268,10 @@ void mPROPAGATION_RULE_TOK(pSmt2Lexer ctx)
     _type	    = PROPAGATION_RULE_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2824:22: ( 'assert-propagation' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2824:24: 'assert-propagation'
+    // ../../../../src/parser/smt2/Smt2.g:3036:22: ( 'assert-propagation' )
+    // ../../../../src/parser/smt2/Smt2.g:3036:24: 'assert-propagation'
     {
-        MATCHS(lit_41);
+        MATCHS(lit_46);
         if  (HASEXCEPTION())
         {
             goto rulePROPAGATION_RULE_TOKEx;
@@ -33870,7 +35291,7 @@ void mPROPAGATION_RULE_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end PROPAGATION_RULE_TOK
 
-//   Comes from: 2825:19: ( 'declare-sorts' )
+//   Comes from: 3037:19: ( 'declare-sorts' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DECLARE_SORTS_TOK
@@ -33890,10 +35311,10 @@ void mDECLARE_SORTS_TOK(pSmt2Lexer ctx)
     _type	    = DECLARE_SORTS_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2825:19: ( 'declare-sorts' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2825:21: 'declare-sorts'
+    // ../../../../src/parser/smt2/Smt2.g:3037:19: ( 'declare-sorts' )
+    // ../../../../src/parser/smt2/Smt2.g:3037:21: 'declare-sorts'
     {
-        MATCHS(lit_42);
+        MATCHS(lit_47);
         if  (HASEXCEPTION())
         {
             goto ruleDECLARE_SORTS_TOKEx;
@@ -33913,7 +35334,7 @@ void mDECLARE_SORTS_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end DECLARE_SORTS_TOK
 
-//   Comes from: 2826:18: ( 'declare-funs' )
+//   Comes from: 3038:18: ( 'declare-funs' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DECLARE_FUNS_TOK
@@ -33933,10 +35354,10 @@ void mDECLARE_FUNS_TOK(pSmt2Lexer ctx)
     _type	    = DECLARE_FUNS_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2826:18: ( 'declare-funs' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2826:20: 'declare-funs'
+    // ../../../../src/parser/smt2/Smt2.g:3038:18: ( 'declare-funs' )
+    // ../../../../src/parser/smt2/Smt2.g:3038:20: 'declare-funs'
     {
-        MATCHS(lit_43);
+        MATCHS(lit_48);
         if  (HASEXCEPTION())
         {
             goto ruleDECLARE_FUNS_TOKEx;
@@ -33956,7 +35377,7 @@ void mDECLARE_FUNS_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end DECLARE_FUNS_TOK
 
-//   Comes from: 2827:19: ( 'declare-preds' )
+//   Comes from: 3039:19: ( 'declare-preds' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DECLARE_PREDS_TOK
@@ -33976,10 +35397,10 @@ void mDECLARE_PREDS_TOK(pSmt2Lexer ctx)
     _type	    = DECLARE_PREDS_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2827:19: ( 'declare-preds' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2827:21: 'declare-preds'
+    // ../../../../src/parser/smt2/Smt2.g:3039:19: ( 'declare-preds' )
+    // ../../../../src/parser/smt2/Smt2.g:3039:21: 'declare-preds'
     {
-        MATCHS(lit_44);
+        MATCHS(lit_49);
         if  (HASEXCEPTION())
         {
             goto ruleDECLARE_PREDS_TOKEx;
@@ -33999,7 +35420,7 @@ void mDECLARE_PREDS_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end DECLARE_PREDS_TOK
 
-//   Comes from: 2828:12: ( 'define' )
+//   Comes from: 3040:12: ( 'define' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DEFINE_TOK
@@ -34019,10 +35440,10 @@ void mDEFINE_TOK(pSmt2Lexer ctx)
     _type	    = DEFINE_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2828:12: ( 'define' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2828:14: 'define'
+    // ../../../../src/parser/smt2/Smt2.g:3040:12: ( 'define' )
+    // ../../../../src/parser/smt2/Smt2.g:3040:14: 'define'
     {
-        MATCHS(lit_45);
+        MATCHS(lit_50);
         if  (HASEXCEPTION())
         {
             goto ruleDEFINE_TOKEx;
@@ -34042,7 +35463,7 @@ void mDEFINE_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end DEFINE_TOK
 
-//   Comes from: 2829:19: ( 'declare-const' )
+//   Comes from: 3041:19: ( 'declare-const' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DECLARE_CONST_TOK
@@ -34062,10 +35483,10 @@ void mDECLARE_CONST_TOK(pSmt2Lexer ctx)
     _type	    = DECLARE_CONST_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2829:19: ( 'declare-const' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2829:21: 'declare-const'
+    // ../../../../src/parser/smt2/Smt2.g:3041:19: ( 'declare-const' )
+    // ../../../../src/parser/smt2/Smt2.g:3041:21: 'declare-const'
     {
-        MATCHS(lit_46);
+        MATCHS(lit_51);
         if  (HASEXCEPTION())
         {
             goto ruleDECLARE_CONST_TOKEx;
@@ -34085,7 +35506,7 @@ void mDECLARE_CONST_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end DECLARE_CONST_TOK
 
-//   Comes from: 2830:18: ( 'define-const' )
+//   Comes from: 3042:18: ( 'define-const' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DEFINE_CONST_TOK
@@ -34105,10 +35526,10 @@ void mDEFINE_CONST_TOK(pSmt2Lexer ctx)
     _type	    = DEFINE_CONST_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2830:18: ( 'define-const' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2830:20: 'define-const'
+    // ../../../../src/parser/smt2/Smt2.g:3042:18: ( 'define-const' )
+    // ../../../../src/parser/smt2/Smt2.g:3042:20: 'define-const'
     {
-        MATCHS(lit_47);
+        MATCHS(lit_52);
         if  (HASEXCEPTION())
         {
             goto ruleDEFINE_CONST_TOKEx;
@@ -34128,7 +35549,7 @@ void mDEFINE_CONST_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end DEFINE_CONST_TOK
 
-//   Comes from: 2831:14: ( 'simplify' )
+//   Comes from: 3043:14: ( 'simplify' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SIMPLIFY_TOK
@@ -34148,10 +35569,10 @@ void mSIMPLIFY_TOK(pSmt2Lexer ctx)
     _type	    = SIMPLIFY_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2831:14: ( 'simplify' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2831:16: 'simplify'
+    // ../../../../src/parser/smt2/Smt2.g:3043:14: ( 'simplify' )
+    // ../../../../src/parser/smt2/Smt2.g:3043:16: 'simplify'
     {
-        MATCHS(lit_48);
+        MATCHS(lit_53);
         if  (HASEXCEPTION())
         {
             goto ruleSIMPLIFY_TOKEx;
@@ -34171,7 +35592,7 @@ void mSIMPLIFY_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end SIMPLIFY_TOK
 
-//   Comes from: 2832:13: ( 'include' )
+//   Comes from: 3044:13: ( 'include' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start INCLUDE_TOK
@@ -34191,10 +35612,10 @@ void mINCLUDE_TOK(pSmt2Lexer ctx)
     _type	    = INCLUDE_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2832:13: ( 'include' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2832:15: 'include'
+    // ../../../../src/parser/smt2/Smt2.g:3044:13: ( 'include' )
+    // ../../../../src/parser/smt2/Smt2.g:3044:15: 'include'
     {
-        MATCHS(lit_49);
+        MATCHS(lit_54);
         if  (HASEXCEPTION())
         {
             goto ruleINCLUDE_TOKEx;
@@ -34214,7 +35635,7 @@ void mINCLUDE_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end INCLUDE_TOK
 
-//   Comes from: 2833:12: ( 'get-qe' )
+//   Comes from: 3045:12: ( 'get-qe' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start GET_QE_TOK
@@ -34234,10 +35655,10 @@ void mGET_QE_TOK(pSmt2Lexer ctx)
     _type	    = GET_QE_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2833:12: ( 'get-qe' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2833:14: 'get-qe'
+    // ../../../../src/parser/smt2/Smt2.g:3045:12: ( 'get-qe' )
+    // ../../../../src/parser/smt2/Smt2.g:3045:14: 'get-qe'
     {
-        MATCHS(lit_50);
+        MATCHS(lit_55);
         if  (HASEXCEPTION())
         {
             goto ruleGET_QE_TOKEx;
@@ -34257,7 +35678,7 @@ void mGET_QE_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end GET_QE_TOK
 
-//   Comes from: 2834:21: ( 'get-qe-disjunct' )
+//   Comes from: 3046:21: ( 'get-qe-disjunct' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start GET_QE_DISJUNCT_TOK
@@ -34277,10 +35698,10 @@ void mGET_QE_DISJUNCT_TOK(pSmt2Lexer ctx)
     _type	    = GET_QE_DISJUNCT_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2834:21: ( 'get-qe-disjunct' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2834:23: 'get-qe-disjunct'
+    // ../../../../src/parser/smt2/Smt2.g:3046:21: ( 'get-qe-disjunct' )
+    // ../../../../src/parser/smt2/Smt2.g:3046:23: 'get-qe-disjunct'
     {
-        MATCHS(lit_51);
+        MATCHS(lit_56);
         if  (HASEXCEPTION())
         {
             goto ruleGET_QE_DISJUNCT_TOKEx;
@@ -34300,7 +35721,7 @@ void mGET_QE_DISJUNCT_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end GET_QE_DISJUNCT_TOK
 
-//   Comes from: 2837:15: ( 'synth-fun' )
+//   Comes from: 3049:15: ( 'synth-fun' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SYNTH_FUN_TOK
@@ -34320,10 +35741,10 @@ void mSYNTH_FUN_TOK(pSmt2Lexer ctx)
     _type	    = SYNTH_FUN_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2837:15: ( 'synth-fun' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2837:17: 'synth-fun'
+    // ../../../../src/parser/smt2/Smt2.g:3049:15: ( 'synth-fun' )
+    // ../../../../src/parser/smt2/Smt2.g:3049:17: 'synth-fun'
     {
-        MATCHS(lit_52);
+        MATCHS(lit_57);
         if  (HASEXCEPTION())
         {
             goto ruleSYNTH_FUN_TOKEx;
@@ -34343,7 +35764,7 @@ void mSYNTH_FUN_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end SYNTH_FUN_TOK
 
-//   Comes from: 2838:15: ( 'synth-inv' )
+//   Comes from: 3050:15: ( 'synth-inv' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SYNTH_INV_TOK
@@ -34363,10 +35784,10 @@ void mSYNTH_INV_TOK(pSmt2Lexer ctx)
     _type	    = SYNTH_INV_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2838:15: ( 'synth-inv' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2838:17: 'synth-inv'
+    // ../../../../src/parser/smt2/Smt2.g:3050:15: ( 'synth-inv' )
+    // ../../../../src/parser/smt2/Smt2.g:3050:17: 'synth-inv'
     {
-        MATCHS(lit_53);
+        MATCHS(lit_58);
         if  (HASEXCEPTION())
         {
             goto ruleSYNTH_INV_TOKEx;
@@ -34386,7 +35807,7 @@ void mSYNTH_INV_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end SYNTH_INV_TOK
 
-//   Comes from: 2839:17: ( 'check-synth' )
+//   Comes from: 3051:17: ( 'check-synth' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start CHECK_SYNTH_TOK
@@ -34406,10 +35827,10 @@ void mCHECK_SYNTH_TOK(pSmt2Lexer ctx)
     _type	    = CHECK_SYNTH_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2839:17: ( 'check-synth' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2839:19: 'check-synth'
+    // ../../../../src/parser/smt2/Smt2.g:3051:17: ( 'check-synth' )
+    // ../../../../src/parser/smt2/Smt2.g:3051:19: 'check-synth'
     {
-        MATCHS(lit_54);
+        MATCHS(lit_59);
         if  (HASEXCEPTION())
         {
             goto ruleCHECK_SYNTH_TOKEx;
@@ -34429,7 +35850,7 @@ void mCHECK_SYNTH_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end CHECK_SYNTH_TOK
 
-//   Comes from: 2840:17: ( 'declare-var' )
+//   Comes from: 3052:17: ( 'declare-var' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DECLARE_VAR_TOK
@@ -34449,10 +35870,10 @@ void mDECLARE_VAR_TOK(pSmt2Lexer ctx)
     _type	    = DECLARE_VAR_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2840:17: ( 'declare-var' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2840:19: 'declare-var'
+    // ../../../../src/parser/smt2/Smt2.g:3052:17: ( 'declare-var' )
+    // ../../../../src/parser/smt2/Smt2.g:3052:19: 'declare-var'
     {
-        MATCHS(lit_55);
+        MATCHS(lit_60);
         if  (HASEXCEPTION())
         {
             goto ruleDECLARE_VAR_TOKEx;
@@ -34472,7 +35893,7 @@ void mDECLARE_VAR_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end DECLARE_VAR_TOK
 
-//   Comes from: 2841:24: ( 'declare-primed-var' )
+//   Comes from: 3053:24: ( 'declare-primed-var' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DECLARE_PRIMED_VAR_TOK
@@ -34492,10 +35913,10 @@ void mDECLARE_PRIMED_VAR_TOK(pSmt2Lexer ctx)
     _type	    = DECLARE_PRIMED_VAR_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2841:24: ( 'declare-primed-var' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2841:26: 'declare-primed-var'
+    // ../../../../src/parser/smt2/Smt2.g:3053:24: ( 'declare-primed-var' )
+    // ../../../../src/parser/smt2/Smt2.g:3053:26: 'declare-primed-var'
     {
-        MATCHS(lit_56);
+        MATCHS(lit_61);
         if  (HASEXCEPTION())
         {
             goto ruleDECLARE_PRIMED_VAR_TOKEx;
@@ -34515,7 +35936,7 @@ void mDECLARE_PRIMED_VAR_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end DECLARE_PRIMED_VAR_TOK
 
-//   Comes from: 2842:16: ( 'constraint' )
+//   Comes from: 3054:16: ( 'constraint' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start CONSTRAINT_TOK
@@ -34535,10 +35956,10 @@ void mCONSTRAINT_TOK(pSmt2Lexer ctx)
     _type	    = CONSTRAINT_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2842:16: ( 'constraint' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2842:18: 'constraint'
+    // ../../../../src/parser/smt2/Smt2.g:3054:16: ( 'constraint' )
+    // ../../../../src/parser/smt2/Smt2.g:3054:18: 'constraint'
     {
-        MATCHS(lit_57);
+        MATCHS(lit_62);
         if  (HASEXCEPTION())
         {
             goto ruleCONSTRAINT_TOKEx;
@@ -34558,7 +35979,7 @@ void mCONSTRAINT_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end CONSTRAINT_TOK
 
-//   Comes from: 2843:20: ( 'inv-constraint' )
+//   Comes from: 3055:20: ( 'inv-constraint' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start INV_CONSTRAINT_TOK
@@ -34578,10 +35999,10 @@ void mINV_CONSTRAINT_TOK(pSmt2Lexer ctx)
     _type	    = INV_CONSTRAINT_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2843:20: ( 'inv-constraint' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2843:22: 'inv-constraint'
+    // ../../../../src/parser/smt2/Smt2.g:3055:20: ( 'inv-constraint' )
+    // ../../../../src/parser/smt2/Smt2.g:3055:22: 'inv-constraint'
     {
-        MATCHS(lit_58);
+        MATCHS(lit_63);
         if  (HASEXCEPTION())
         {
             goto ruleINV_CONSTRAINT_TOKEx;
@@ -34601,7 +36022,7 @@ void mINV_CONSTRAINT_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end INV_CONSTRAINT_TOK
 
-//   Comes from: 2844:17: ( 'set-options' )
+//   Comes from: 3056:17: ( 'set-options' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SET_OPTIONS_TOK
@@ -34621,10 +36042,10 @@ void mSET_OPTIONS_TOK(pSmt2Lexer ctx)
     _type	    = SET_OPTIONS_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2844:17: ( 'set-options' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2844:19: 'set-options'
+    // ../../../../src/parser/smt2/Smt2.g:3056:17: ( 'set-options' )
+    // ../../../../src/parser/smt2/Smt2.g:3056:19: 'set-options'
     {
-        MATCHS(lit_59);
+        MATCHS(lit_64);
         if  (HASEXCEPTION())
         {
             goto ruleSET_OPTIONS_TOKEx;
@@ -34644,7 +36065,7 @@ void mSET_OPTIONS_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end SET_OPTIONS_TOK
 
-//   Comes from: 2845:16: ({...}? 'Enum' )
+//   Comes from: 3057:16: ({...}? 'Enum' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SYGUS_ENUM_TOK
@@ -34664,8 +36085,8 @@ void mSYGUS_ENUM_TOK(pSmt2Lexer ctx)
     _type	    = SYGUS_ENUM_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2845:16: ({...}? 'Enum' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2845:18: {...}? 'Enum'
+    // ../../../../src/parser/smt2/Smt2.g:3057:16: ({...}? 'Enum' )
+    // ../../../../src/parser/smt2/Smt2.g:3057:18: {...}? 'Enum'
     {
         if ( !(( PARSER_STATE->sygus() )) )
         {
@@ -34677,7 +36098,7 @@ void mSYGUS_ENUM_TOK(pSmt2Lexer ctx)
 
         }
 
-        MATCHS(lit_60);
+        MATCHS(lit_65);
         if  (HASEXCEPTION())
         {
             goto ruleSYGUS_ENUM_TOKEx;
@@ -34697,7 +36118,7 @@ void mSYGUS_ENUM_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end SYGUS_ENUM_TOK
 
-//   Comes from: 2846:21: ({...}? '::' )
+//   Comes from: 3058:21: ({...}? '::' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SYGUS_ENUM_CONS_TOK
@@ -34717,8 +36138,8 @@ void mSYGUS_ENUM_CONS_TOK(pSmt2Lexer ctx)
     _type	    = SYGUS_ENUM_CONS_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2846:21: ({...}? '::' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2846:23: {...}? '::'
+    // ../../../../src/parser/smt2/Smt2.g:3058:21: ({...}? '::' )
+    // ../../../../src/parser/smt2/Smt2.g:3058:23: {...}? '::'
     {
         if ( !(( PARSER_STATE->sygus() )) )
         {
@@ -34730,7 +36151,7 @@ void mSYGUS_ENUM_CONS_TOK(pSmt2Lexer ctx)
 
         }
 
-        MATCHS(lit_61);
+        MATCHS(lit_66);
         if  (HASEXCEPTION())
         {
             goto ruleSYGUS_ENUM_CONS_TOKEx;
@@ -34750,7 +36171,7 @@ void mSYGUS_ENUM_CONS_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end SYGUS_ENUM_CONS_TOK
 
-//   Comes from: 2847:20: ({...}? 'Constant' )
+//   Comes from: 3059:20: ({...}? 'Constant' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SYGUS_CONSTANT_TOK
@@ -34770,8 +36191,8 @@ void mSYGUS_CONSTANT_TOK(pSmt2Lexer ctx)
     _type	    = SYGUS_CONSTANT_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2847:20: ({...}? 'Constant' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2847:22: {...}? 'Constant'
+    // ../../../../src/parser/smt2/Smt2.g:3059:20: ({...}? 'Constant' )
+    // ../../../../src/parser/smt2/Smt2.g:3059:22: {...}? 'Constant'
     {
         if ( !(( PARSER_STATE->sygus() )) )
         {
@@ -34783,7 +36204,7 @@ void mSYGUS_CONSTANT_TOK(pSmt2Lexer ctx)
 
         }
 
-        MATCHS(lit_62);
+        MATCHS(lit_67);
         if  (HASEXCEPTION())
         {
             goto ruleSYGUS_CONSTANT_TOKEx;
@@ -34803,7 +36224,7 @@ void mSYGUS_CONSTANT_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end SYGUS_CONSTANT_TOK
 
-//   Comes from: 2848:20: ({...}? 'Variable' )
+//   Comes from: 3060:20: ({...}? 'Variable' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SYGUS_VARIABLE_TOK
@@ -34823,8 +36244,8 @@ void mSYGUS_VARIABLE_TOK(pSmt2Lexer ctx)
     _type	    = SYGUS_VARIABLE_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2848:20: ({...}? 'Variable' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2848:22: {...}? 'Variable'
+    // ../../../../src/parser/smt2/Smt2.g:3060:20: ({...}? 'Variable' )
+    // ../../../../src/parser/smt2/Smt2.g:3060:22: {...}? 'Variable'
     {
         if ( !(( PARSER_STATE->sygus() )) )
         {
@@ -34836,7 +36257,7 @@ void mSYGUS_VARIABLE_TOK(pSmt2Lexer ctx)
 
         }
 
-        MATCHS(lit_63);
+        MATCHS(lit_68);
         if  (HASEXCEPTION())
         {
             goto ruleSYGUS_VARIABLE_TOKEx;
@@ -34856,7 +36277,7 @@ void mSYGUS_VARIABLE_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end SYGUS_VARIABLE_TOK
 
-//   Comes from: 2849:26: ({...}? 'InputVariable' )
+//   Comes from: 3061:26: ({...}? 'InputVariable' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SYGUS_INPUT_VARIABLE_TOK
@@ -34876,8 +36297,8 @@ void mSYGUS_INPUT_VARIABLE_TOK(pSmt2Lexer ctx)
     _type	    = SYGUS_INPUT_VARIABLE_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2849:26: ({...}? 'InputVariable' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2849:28: {...}? 'InputVariable'
+    // ../../../../src/parser/smt2/Smt2.g:3061:26: ({...}? 'InputVariable' )
+    // ../../../../src/parser/smt2/Smt2.g:3061:28: {...}? 'InputVariable'
     {
         if ( !(( PARSER_STATE->sygus() )) )
         {
@@ -34889,7 +36310,7 @@ void mSYGUS_INPUT_VARIABLE_TOK(pSmt2Lexer ctx)
 
         }
 
-        MATCHS(lit_64);
+        MATCHS(lit_69);
         if  (HASEXCEPTION())
         {
             goto ruleSYGUS_INPUT_VARIABLE_TOKEx;
@@ -34909,7 +36330,7 @@ void mSYGUS_INPUT_VARIABLE_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end SYGUS_INPUT_VARIABLE_TOK
 
-//   Comes from: 2850:26: ({...}? 'LocalVariable' )
+//   Comes from: 3062:26: ({...}? 'LocalVariable' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SYGUS_LOCAL_VARIABLE_TOK
@@ -34929,8 +36350,8 @@ void mSYGUS_LOCAL_VARIABLE_TOK(pSmt2Lexer ctx)
     _type	    = SYGUS_LOCAL_VARIABLE_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2850:26: ({...}? 'LocalVariable' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2850:28: {...}? 'LocalVariable'
+    // ../../../../src/parser/smt2/Smt2.g:3062:26: ({...}? 'LocalVariable' )
+    // ../../../../src/parser/smt2/Smt2.g:3062:28: {...}? 'LocalVariable'
     {
         if ( !(( PARSER_STATE->sygus() )) )
         {
@@ -34942,7 +36363,7 @@ void mSYGUS_LOCAL_VARIABLE_TOK(pSmt2Lexer ctx)
 
         }
 
-        MATCHS(lit_65);
+        MATCHS(lit_70);
         if  (HASEXCEPTION())
         {
             goto ruleSYGUS_LOCAL_VARIABLE_TOKEx;
@@ -34962,7 +36383,7 @@ void mSYGUS_LOCAL_VARIABLE_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end SYGUS_LOCAL_VARIABLE_TOK
 
-//   Comes from: 2853:23: ( ':pattern' )
+//   Comes from: 3065:23: ( ':pattern' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start ATTRIBUTE_PATTERN_TOK
@@ -34982,10 +36403,10 @@ void mATTRIBUTE_PATTERN_TOK(pSmt2Lexer ctx)
     _type	    = ATTRIBUTE_PATTERN_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2853:23: ( ':pattern' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2853:25: ':pattern'
+    // ../../../../src/parser/smt2/Smt2.g:3065:23: ( ':pattern' )
+    // ../../../../src/parser/smt2/Smt2.g:3065:25: ':pattern'
     {
-        MATCHS(lit_66);
+        MATCHS(lit_71);
         if  (HASEXCEPTION())
         {
             goto ruleATTRIBUTE_PATTERN_TOKEx;
@@ -35005,7 +36426,7 @@ void mATTRIBUTE_PATTERN_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end ATTRIBUTE_PATTERN_TOK
 
-//   Comes from: 2854:26: ( ':no-pattern' )
+//   Comes from: 3066:26: ( ':no-pattern' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start ATTRIBUTE_NO_PATTERN_TOK
@@ -35025,10 +36446,10 @@ void mATTRIBUTE_NO_PATTERN_TOK(pSmt2Lexer ctx)
     _type	    = ATTRIBUTE_NO_PATTERN_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2854:26: ( ':no-pattern' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2854:28: ':no-pattern'
+    // ../../../../src/parser/smt2/Smt2.g:3066:26: ( ':no-pattern' )
+    // ../../../../src/parser/smt2/Smt2.g:3066:28: ':no-pattern'
     {
-        MATCHS(lit_67);
+        MATCHS(lit_72);
         if  (HASEXCEPTION())
         {
             goto ruleATTRIBUTE_NO_PATTERN_TOKEx;
@@ -35048,7 +36469,7 @@ void mATTRIBUTE_NO_PATTERN_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end ATTRIBUTE_NO_PATTERN_TOK
 
-//   Comes from: 2855:21: ( ':named' )
+//   Comes from: 3067:21: ( ':named' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start ATTRIBUTE_NAMED_TOK
@@ -35068,10 +36489,10 @@ void mATTRIBUTE_NAMED_TOK(pSmt2Lexer ctx)
     _type	    = ATTRIBUTE_NAMED_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2855:21: ( ':named' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2855:23: ':named'
+    // ../../../../src/parser/smt2/Smt2.g:3067:21: ( ':named' )
+    // ../../../../src/parser/smt2/Smt2.g:3067:23: ':named'
     {
-        MATCHS(lit_68);
+        MATCHS(lit_73);
         if  (HASEXCEPTION())
         {
             goto ruleATTRIBUTE_NAMED_TOKEx;
@@ -35091,7 +36512,7 @@ void mATTRIBUTE_NAMED_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end ATTRIBUTE_NAMED_TOK
 
-//   Comes from: 2856:22: ( ':quant-inst-max-level' )
+//   Comes from: 3068:22: ( ':quant-inst-max-level' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start ATTRIBUTE_INST_LEVEL
@@ -35111,10 +36532,10 @@ void mATTRIBUTE_INST_LEVEL(pSmt2Lexer ctx)
     _type	    = ATTRIBUTE_INST_LEVEL;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2856:22: ( ':quant-inst-max-level' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2856:24: ':quant-inst-max-level'
+    // ../../../../src/parser/smt2/Smt2.g:3068:22: ( ':quant-inst-max-level' )
+    // ../../../../src/parser/smt2/Smt2.g:3068:24: ':quant-inst-max-level'
     {
-        MATCHS(lit_69);
+        MATCHS(lit_74);
         if  (HASEXCEPTION())
         {
             goto ruleATTRIBUTE_INST_LEVELEx;
@@ -35134,7 +36555,7 @@ void mATTRIBUTE_INST_LEVEL(pSmt2Lexer ctx)
 }
 // $ANTLR end ATTRIBUTE_INST_LEVEL
 
-//   Comes from: 2857:23: ( ':rr-priority' )
+//   Comes from: 3069:23: ( ':rr-priority' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start ATTRIBUTE_RR_PRIORITY
@@ -35154,10 +36575,10 @@ void mATTRIBUTE_RR_PRIORITY(pSmt2Lexer ctx)
     _type	    = ATTRIBUTE_RR_PRIORITY;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2857:23: ( ':rr-priority' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2857:25: ':rr-priority'
+    // ../../../../src/parser/smt2/Smt2.g:3069:23: ( ':rr-priority' )
+    // ../../../../src/parser/smt2/Smt2.g:3069:25: ':rr-priority'
     {
-        MATCHS(lit_70);
+        MATCHS(lit_75);
         if  (HASEXCEPTION())
         {
             goto ruleATTRIBUTE_RR_PRIORITYEx;
@@ -35177,7 +36598,7 @@ void mATTRIBUTE_RR_PRIORITY(pSmt2Lexer ctx)
 }
 // $ANTLR end ATTRIBUTE_RR_PRIORITY
 
-//   Comes from: 2860:19: ( '&' )
+//   Comes from: 3072:19: ( '&' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start AMPERSAND_TOK
@@ -35197,8 +36618,8 @@ void mAMPERSAND_TOK(pSmt2Lexer ctx)
     _type	    = AMPERSAND_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2860:19: ( '&' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2860:21: '&'
+    // ../../../../src/parser/smt2/Smt2.g:3072:19: ( '&' )
+    // ../../../../src/parser/smt2/Smt2.g:3072:21: '&'
     {
         MATCHC('&');
         if  (HASEXCEPTION())
@@ -35218,7 +36639,7 @@ void mAMPERSAND_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end AMPERSAND_TOK
 
-//   Comes from: 2861:19: ( 'and' )
+//   Comes from: 3073:19: ( 'and' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start AND_TOK
@@ -35238,10 +36659,10 @@ void mAND_TOK(pSmt2Lexer ctx)
     _type	    = AND_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2861:19: ( 'and' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2861:21: 'and'
+    // ../../../../src/parser/smt2/Smt2.g:3073:19: ( 'and' )
+    // ../../../../src/parser/smt2/Smt2.g:3073:21: 'and'
     {
-        MATCHS(lit_71);
+        MATCHS(lit_76);
         if  (HASEXCEPTION())
         {
             goto ruleAND_TOKEx;
@@ -35261,7 +36682,7 @@ void mAND_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end AND_TOK
 
-//   Comes from: 2862:19: ( '@' )
+//   Comes from: 3074:19: ( '@' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start AT_TOK
@@ -35281,8 +36702,8 @@ void mAT_TOK(pSmt2Lexer ctx)
     _type	    = AT_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2862:19: ( '@' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2862:21: '@'
+    // ../../../../src/parser/smt2/Smt2.g:3074:19: ( '@' )
+    // ../../../../src/parser/smt2/Smt2.g:3074:21: '@'
     {
         MATCHC('@');
         if  (HASEXCEPTION())
@@ -35302,7 +36723,7 @@ void mAT_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end AT_TOK
 
-//   Comes from: 2863:19: ( 'distinct' )
+//   Comes from: 3075:19: ( 'distinct' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DISTINCT_TOK
@@ -35322,10 +36743,10 @@ void mDISTINCT_TOK(pSmt2Lexer ctx)
     _type	    = DISTINCT_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2863:19: ( 'distinct' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2863:21: 'distinct'
+    // ../../../../src/parser/smt2/Smt2.g:3075:19: ( 'distinct' )
+    // ../../../../src/parser/smt2/Smt2.g:3075:21: 'distinct'
     {
-        MATCHS(lit_72);
+        MATCHS(lit_77);
         if  (HASEXCEPTION())
         {
             goto ruleDISTINCT_TOKEx;
@@ -35345,7 +36766,7 @@ void mDISTINCT_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end DISTINCT_TOK
 
-//   Comes from: 2864:19: ( '/' )
+//   Comes from: 3076:19: ( '/' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DIV_TOK
@@ -35365,8 +36786,8 @@ void mDIV_TOK(pSmt2Lexer ctx)
     _type	    = DIV_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2864:19: ( '/' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2864:21: '/'
+    // ../../../../src/parser/smt2/Smt2.g:3076:19: ( '/' )
+    // ../../../../src/parser/smt2/Smt2.g:3076:21: '/'
     {
         MATCHC('/');
         if  (HASEXCEPTION())
@@ -35386,7 +36807,7 @@ void mDIV_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end DIV_TOK
 
-//   Comes from: 2865:19: ( '=' )
+//   Comes from: 3077:19: ( '=' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start EQUAL_TOK
@@ -35406,8 +36827,8 @@ void mEQUAL_TOK(pSmt2Lexer ctx)
     _type	    = EQUAL_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2865:19: ( '=' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2865:21: '='
+    // ../../../../src/parser/smt2/Smt2.g:3077:19: ( '=' )
+    // ../../../../src/parser/smt2/Smt2.g:3077:21: '='
     {
         MATCHC('=');
         if  (HASEXCEPTION())
@@ -35427,7 +36848,7 @@ void mEQUAL_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end EQUAL_TOK
 
-//   Comes from: 2866:19: ( 'exists' )
+//   Comes from: 3078:19: ( 'exists' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start EXISTS_TOK
@@ -35447,10 +36868,10 @@ void mEXISTS_TOK(pSmt2Lexer ctx)
     _type	    = EXISTS_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2866:19: ( 'exists' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2866:21: 'exists'
+    // ../../../../src/parser/smt2/Smt2.g:3078:19: ( 'exists' )
+    // ../../../../src/parser/smt2/Smt2.g:3078:21: 'exists'
     {
-        MATCHS(lit_73);
+        MATCHS(lit_78);
         if  (HASEXCEPTION())
         {
             goto ruleEXISTS_TOKEx;
@@ -35470,7 +36891,7 @@ void mEXISTS_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end EXISTS_TOK
 
-//   Comes from: 2867:19: ( 'forall' )
+//   Comes from: 3079:19: ( 'forall' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FORALL_TOK
@@ -35490,10 +36911,10 @@ void mFORALL_TOK(pSmt2Lexer ctx)
     _type	    = FORALL_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2867:19: ( 'forall' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2867:21: 'forall'
+    // ../../../../src/parser/smt2/Smt2.g:3079:19: ( 'forall' )
+    // ../../../../src/parser/smt2/Smt2.g:3079:21: 'forall'
     {
-        MATCHS(lit_74);
+        MATCHS(lit_79);
         if  (HASEXCEPTION())
         {
             goto ruleFORALL_TOKEx;
@@ -35513,7 +36934,7 @@ void mFORALL_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FORALL_TOK
 
-//   Comes from: 2868:19: ( '>' )
+//   Comes from: 3080:19: ( '>' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start GREATER_THAN_TOK
@@ -35533,8 +36954,8 @@ void mGREATER_THAN_TOK(pSmt2Lexer ctx)
     _type	    = GREATER_THAN_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2868:19: ( '>' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2868:21: '>'
+    // ../../../../src/parser/smt2/Smt2.g:3080:19: ( '>' )
+    // ../../../../src/parser/smt2/Smt2.g:3080:21: '>'
     {
         MATCHC('>');
         if  (HASEXCEPTION())
@@ -35554,7 +36975,7 @@ void mGREATER_THAN_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end GREATER_THAN_TOK
 
-//   Comes from: 2869:25: ( '>=' )
+//   Comes from: 3081:25: ( '>=' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start GREATER_THAN_EQUAL_TOK
@@ -35574,10 +36995,10 @@ void mGREATER_THAN_EQUAL_TOK(pSmt2Lexer ctx)
     _type	    = GREATER_THAN_EQUAL_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2869:25: ( '>=' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2869:27: '>='
+    // ../../../../src/parser/smt2/Smt2.g:3081:25: ( '>=' )
+    // ../../../../src/parser/smt2/Smt2.g:3081:27: '>='
     {
-        MATCHS(lit_75);
+        MATCHS(lit_80);
         if  (HASEXCEPTION())
         {
             goto ruleGREATER_THAN_EQUAL_TOKEx;
@@ -35597,7 +37018,7 @@ void mGREATER_THAN_EQUAL_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end GREATER_THAN_EQUAL_TOK
 
-//   Comes from: 2870:19: ( '=>' )
+//   Comes from: 3082:19: ( '=>' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start IMPLIES_TOK
@@ -35617,10 +37038,10 @@ void mIMPLIES_TOK(pSmt2Lexer ctx)
     _type	    = IMPLIES_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2870:19: ( '=>' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2870:21: '=>'
+    // ../../../../src/parser/smt2/Smt2.g:3082:19: ( '=>' )
+    // ../../../../src/parser/smt2/Smt2.g:3082:21: '=>'
     {
-        MATCHS(lit_76);
+        MATCHS(lit_81);
         if  (HASEXCEPTION())
         {
             goto ruleIMPLIES_TOKEx;
@@ -35640,7 +37061,7 @@ void mIMPLIES_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end IMPLIES_TOK
 
-//   Comes from: 2871:19: ( '<' )
+//   Comes from: 3083:19: ( '<' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start LESS_THAN_TOK
@@ -35660,8 +37081,8 @@ void mLESS_THAN_TOK(pSmt2Lexer ctx)
     _type	    = LESS_THAN_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2871:19: ( '<' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2871:21: '<'
+    // ../../../../src/parser/smt2/Smt2.g:3083:19: ( '<' )
+    // ../../../../src/parser/smt2/Smt2.g:3083:21: '<'
     {
         MATCHC('<');
         if  (HASEXCEPTION())
@@ -35681,7 +37102,7 @@ void mLESS_THAN_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end LESS_THAN_TOK
 
-//   Comes from: 2872:25: ( '<=' )
+//   Comes from: 3084:25: ( '<=' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start LESS_THAN_EQUAL_TOK
@@ -35701,10 +37122,10 @@ void mLESS_THAN_EQUAL_TOK(pSmt2Lexer ctx)
     _type	    = LESS_THAN_EQUAL_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2872:25: ( '<=' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2872:27: '<='
+    // ../../../../src/parser/smt2/Smt2.g:3084:25: ( '<=' )
+    // ../../../../src/parser/smt2/Smt2.g:3084:27: '<='
     {
-        MATCHS(lit_77);
+        MATCHS(lit_82);
         if  (HASEXCEPTION())
         {
             goto ruleLESS_THAN_EQUAL_TOKEx;
@@ -35724,7 +37145,7 @@ void mLESS_THAN_EQUAL_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end LESS_THAN_EQUAL_TOK
 
-//   Comes from: 2873:19: ( '-' )
+//   Comes from: 3085:19: ( '-' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start MINUS_TOK
@@ -35744,8 +37165,8 @@ void mMINUS_TOK(pSmt2Lexer ctx)
     _type	    = MINUS_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2873:19: ( '-' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2873:21: '-'
+    // ../../../../src/parser/smt2/Smt2.g:3085:19: ( '-' )
+    // ../../../../src/parser/smt2/Smt2.g:3085:21: '-'
     {
         MATCHC('-');
         if  (HASEXCEPTION())
@@ -35765,7 +37186,7 @@ void mMINUS_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end MINUS_TOK
 
-//   Comes from: 2874:19: ( 'not' )
+//   Comes from: 3086:19: ( 'not' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start NOT_TOK
@@ -35785,10 +37206,10 @@ void mNOT_TOK(pSmt2Lexer ctx)
     _type	    = NOT_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2874:19: ( 'not' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2874:21: 'not'
+    // ../../../../src/parser/smt2/Smt2.g:3086:19: ( 'not' )
+    // ../../../../src/parser/smt2/Smt2.g:3086:21: 'not'
     {
-        MATCHS(lit_78);
+        MATCHS(lit_83);
         if  (HASEXCEPTION())
         {
             goto ruleNOT_TOKEx;
@@ -35808,7 +37229,7 @@ void mNOT_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end NOT_TOK
 
-//   Comes from: 2875:19: ( 'or' )
+//   Comes from: 3087:19: ( 'or' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start OR_TOK
@@ -35828,10 +37249,10 @@ void mOR_TOK(pSmt2Lexer ctx)
     _type	    = OR_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2875:19: ( 'or' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2875:21: 'or'
+    // ../../../../src/parser/smt2/Smt2.g:3087:19: ( 'or' )
+    // ../../../../src/parser/smt2/Smt2.g:3087:21: 'or'
     {
-        MATCHS(lit_79);
+        MATCHS(lit_84);
         if  (HASEXCEPTION())
         {
             goto ruleOR_TOKEx;
@@ -35851,7 +37272,7 @@ void mOR_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end OR_TOK
 
-//   Comes from: 2877:19: ( '+' )
+//   Comes from: 3089:19: ( '+' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start PLUS_TOK
@@ -35871,8 +37292,8 @@ void mPLUS_TOK(pSmt2Lexer ctx)
     _type	    = PLUS_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2877:19: ( '+' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2877:21: '+'
+    // ../../../../src/parser/smt2/Smt2.g:3089:19: ( '+' )
+    // ../../../../src/parser/smt2/Smt2.g:3089:21: '+'
     {
         MATCHC('+');
         if  (HASEXCEPTION())
@@ -35892,7 +37313,7 @@ void mPLUS_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end PLUS_TOK
 
-//   Comes from: 2879:19: ( '*' )
+//   Comes from: 3091:19: ( '*' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STAR_TOK
@@ -35912,8 +37333,8 @@ void mSTAR_TOK(pSmt2Lexer ctx)
     _type	    = STAR_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2879:19: ( '*' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2879:21: '*'
+    // ../../../../src/parser/smt2/Smt2.g:3091:19: ( '*' )
+    // ../../../../src/parser/smt2/Smt2.g:3091:21: '*'
     {
         MATCHC('*');
         if  (HASEXCEPTION())
@@ -35933,7 +37354,7 @@ void mSTAR_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end STAR_TOK
 
-//   Comes from: 2881:19: ( 'xor' )
+//   Comes from: 3093:19: ( 'xor' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start XOR_TOK
@@ -35953,10 +37374,10 @@ void mXOR_TOK(pSmt2Lexer ctx)
     _type	    = XOR_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2881:19: ( 'xor' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2881:21: 'xor'
+    // ../../../../src/parser/smt2/Smt2.g:3093:19: ( 'xor' )
+    // ../../../../src/parser/smt2/Smt2.g:3093:21: 'xor'
     {
-        MATCHS(lit_80);
+        MATCHS(lit_85);
         if  (HASEXCEPTION())
         {
             goto ruleXOR_TOKEx;
@@ -35976,7 +37397,7 @@ void mXOR_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end XOR_TOK
 
-//   Comes from: 2884:15: ( 'divisible' )
+//   Comes from: 3096:15: ( 'divisible' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DIVISIBLE_TOK
@@ -35996,10 +37417,10 @@ void mDIVISIBLE_TOK(pSmt2Lexer ctx)
     _type	    = DIVISIBLE_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2884:15: ( 'divisible' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2884:17: 'divisible'
+    // ../../../../src/parser/smt2/Smt2.g:3096:15: ( 'divisible' )
+    // ../../../../src/parser/smt2/Smt2.g:3096:17: 'divisible'
     {
-        MATCHS(lit_81);
+        MATCHS(lit_86);
         if  (HASEXCEPTION())
         {
             goto ruleDIVISIBLE_TOKEx;
@@ -36019,7 +37440,7 @@ void mDIVISIBLE_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end DIVISIBLE_TOK
 
-//   Comes from: 2886:12: ( 'bv2nat' )
+//   Comes from: 3098:12: ( 'bv2nat' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BV2NAT_TOK
@@ -36039,10 +37460,10 @@ void mBV2NAT_TOK(pSmt2Lexer ctx)
     _type	    = BV2NAT_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2886:12: ( 'bv2nat' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2886:14: 'bv2nat'
+    // ../../../../src/parser/smt2/Smt2.g:3098:12: ( 'bv2nat' )
+    // ../../../../src/parser/smt2/Smt2.g:3098:14: 'bv2nat'
     {
-        MATCHS(lit_82);
+        MATCHS(lit_87);
         if  (HASEXCEPTION())
         {
             goto ruleBV2NAT_TOKEx;
@@ -36062,7 +37483,7 @@ void mBV2NAT_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end BV2NAT_TOK
 
-//   Comes from: 2887:12: ( 'int2bv' )
+//   Comes from: 3099:12: ( 'int2bv' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start INT2BV_TOK
@@ -36082,10 +37503,10 @@ void mINT2BV_TOK(pSmt2Lexer ctx)
     _type	    = INT2BV_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2887:12: ( 'int2bv' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2887:14: 'int2bv'
+    // ../../../../src/parser/smt2/Smt2.g:3099:12: ( 'int2bv' )
+    // ../../../../src/parser/smt2/Smt2.g:3099:14: 'int2bv'
     {
-        MATCHS(lit_83);
+        MATCHS(lit_88);
         if  (HASEXCEPTION())
         {
             goto ruleINT2BV_TOKEx;
@@ -36105,7 +37526,7 @@ void mINT2BV_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end INT2BV_TOK
 
-//   Comes from: 2889:13: ( 're.nostr' )
+//   Comes from: 3101:13: ( 're.nostr' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start RENOSTR_TOK
@@ -36125,10 +37546,10 @@ void mRENOSTR_TOK(pSmt2Lexer ctx)
     _type	    = RENOSTR_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2889:13: ( 're.nostr' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2889:15: 're.nostr'
+    // ../../../../src/parser/smt2/Smt2.g:3101:13: ( 're.nostr' )
+    // ../../../../src/parser/smt2/Smt2.g:3101:15: 're.nostr'
     {
-        MATCHS(lit_84);
+        MATCHS(lit_89);
         if  (HASEXCEPTION())
         {
             goto ruleRENOSTR_TOKEx;
@@ -36148,7 +37569,7 @@ void mRENOSTR_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end RENOSTR_TOK
 
-//   Comes from: 2890:15: ( 're.allchar' )
+//   Comes from: 3102:15: ( 're.allchar' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start REALLCHAR_TOK
@@ -36168,10 +37589,10 @@ void mREALLCHAR_TOK(pSmt2Lexer ctx)
     _type	    = REALLCHAR_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2890:15: ( 're.allchar' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2890:17: 're.allchar'
+    // ../../../../src/parser/smt2/Smt2.g:3102:15: ( 're.allchar' )
+    // ../../../../src/parser/smt2/Smt2.g:3102:17: 're.allchar'
     {
-        MATCHS(lit_85);
+        MATCHS(lit_90);
         if  (HASEXCEPTION())
         {
             goto ruleREALLCHAR_TOKEx;
@@ -36191,7 +37612,7 @@ void mREALLCHAR_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end REALLCHAR_TOK
 
-//   Comes from: 2892:12: ( 'dt.size' )
+//   Comes from: 3104:12: ( 'dt.size' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DTSIZE_TOK
@@ -36211,10 +37632,10 @@ void mDTSIZE_TOK(pSmt2Lexer ctx)
     _type	    = DTSIZE_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2892:12: ( 'dt.size' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2892:14: 'dt.size'
+    // ../../../../src/parser/smt2/Smt2.g:3104:12: ( 'dt.size' )
+    // ../../../../src/parser/smt2/Smt2.g:3104:14: 'dt.size'
     {
-        MATCHS(lit_86);
+        MATCHS(lit_91);
         if  (HASEXCEPTION())
         {
             goto ruleDTSIZE_TOKEx;
@@ -36234,7 +37655,7 @@ void mDTSIZE_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end DTSIZE_TOK
 
-//   Comes from: 2894:13: ( 'fmf.card' )
+//   Comes from: 3106:13: ( 'fmf.card' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FMFCARD_TOK
@@ -36254,10 +37675,10 @@ void mFMFCARD_TOK(pSmt2Lexer ctx)
     _type	    = FMFCARD_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2894:13: ( 'fmf.card' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2894:15: 'fmf.card'
+    // ../../../../src/parser/smt2/Smt2.g:3106:13: ( 'fmf.card' )
+    // ../../../../src/parser/smt2/Smt2.g:3106:15: 'fmf.card'
     {
-        MATCHS(lit_87);
+        MATCHS(lit_92);
         if  (HASEXCEPTION())
         {
             goto ruleFMFCARD_TOKEx;
@@ -36277,7 +37698,7 @@ void mFMFCARD_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FMFCARD_TOK
 
-//   Comes from: 2895:16: ( 'fmf.card.val' )
+//   Comes from: 3107:16: ( 'fmf.card.val' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FMFCARDVAL_TOK
@@ -36297,10 +37718,10 @@ void mFMFCARDVAL_TOK(pSmt2Lexer ctx)
     _type	    = FMFCARDVAL_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2895:16: ( 'fmf.card.val' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2895:18: 'fmf.card.val'
+    // ../../../../src/parser/smt2/Smt2.g:3107:16: ( 'fmf.card.val' )
+    // ../../../../src/parser/smt2/Smt2.g:3107:18: 'fmf.card.val'
     {
-        MATCHS(lit_88);
+        MATCHS(lit_93);
         if  (HASEXCEPTION())
         {
             goto ruleFMFCARDVAL_TOKEx;
@@ -36320,7 +37741,7 @@ void mFMFCARDVAL_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FMFCARDVAL_TOK
 
-//   Comes from: 2897:18: ( 'inst-closure' )
+//   Comes from: 3109:18: ( 'inst-closure' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start INST_CLOSURE_TOK
@@ -36340,10 +37761,10 @@ void mINST_CLOSURE_TOK(pSmt2Lexer ctx)
     _type	    = INST_CLOSURE_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2897:18: ( 'inst-closure' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2897:20: 'inst-closure'
+    // ../../../../src/parser/smt2/Smt2.g:3109:18: ( 'inst-closure' )
+    // ../../../../src/parser/smt2/Smt2.g:3109:20: 'inst-closure'
     {
-        MATCHS(lit_89);
+        MATCHS(lit_94);
         if  (HASEXCEPTION())
         {
             goto ruleINST_CLOSURE_TOKEx;
@@ -36363,7 +37784,7 @@ void mINST_CLOSURE_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end INST_CLOSURE_TOK
 
-//   Comes from: 2899:13: ({...}? 'emptyset' )
+//   Comes from: 3111:13: ({...}? 'emptyset' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start EMPTYSET_TOK
@@ -36383,8 +37804,8 @@ void mEMPTYSET_TOK(pSmt2Lexer ctx)
     _type	    = EMPTYSET_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2899:13: ({...}? 'emptyset' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2899:15: {...}? 'emptyset'
+    // ../../../../src/parser/smt2/Smt2.g:3111:13: ({...}? 'emptyset' )
+    // ../../../../src/parser/smt2/Smt2.g:3111:15: {...}? 'emptyset'
     {
         if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SETS) )) )
         {
@@ -36396,7 +37817,7 @@ void mEMPTYSET_TOK(pSmt2Lexer ctx)
 
         }
 
-        MATCHS(lit_90);
+        MATCHS(lit_95);
         if  (HASEXCEPTION())
         {
             goto ruleEMPTYSET_TOKEx;
@@ -36416,7 +37837,7 @@ void mEMPTYSET_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end EMPTYSET_TOK
 
-//   Comes from: 2900:12: ({...}? 'univset' )
+//   Comes from: 3112:12: ({...}? 'univset' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start UNIVSET_TOK
@@ -36436,8 +37857,8 @@ void mUNIVSET_TOK(pSmt2Lexer ctx)
     _type	    = UNIVSET_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2900:12: ({...}? 'univset' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2900:14: {...}? 'univset'
+    // ../../../../src/parser/smt2/Smt2.g:3112:12: ({...}? 'univset' )
+    // ../../../../src/parser/smt2/Smt2.g:3112:14: {...}? 'univset'
     {
         if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SETS) )) )
         {
@@ -36449,7 +37870,7 @@ void mUNIVSET_TOK(pSmt2Lexer ctx)
 
         }
 
-        MATCHS(lit_91);
+        MATCHS(lit_96);
         if  (HASEXCEPTION())
         {
             goto ruleUNIVSET_TOKEx;
@@ -36469,7 +37890,7 @@ void mUNIVSET_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end UNIVSET_TOK
 
-//   Comes from: 2901:11: ({...}? 'sep.nil' )
+//   Comes from: 3113:11: ({...}? 'sep.nil' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start NILREF_TOK
@@ -36489,8 +37910,8 @@ void mNILREF_TOK(pSmt2Lexer ctx)
     _type	    = NILREF_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2901:11: ({...}? 'sep.nil' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2901:13: {...}? 'sep.nil'
+    // ../../../../src/parser/smt2/Smt2.g:3113:11: ({...}? 'sep.nil' )
+    // ../../../../src/parser/smt2/Smt2.g:3113:13: {...}? 'sep.nil'
     {
         if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_SEP) )) )
         {
@@ -36502,7 +37923,7 @@ void mNILREF_TOK(pSmt2Lexer ctx)
 
         }
 
-        MATCHS(lit_92);
+        MATCHS(lit_97);
         if  (HASEXCEPTION())
         {
             goto ruleNILREF_TOKEx;
@@ -36522,7 +37943,7 @@ void mNILREF_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end NILREF_TOK
 
-//   Comes from: 2906:13: ( '+oo' )
+//   Comes from: 3118:13: ( '+oo' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_PINF_TOK
@@ -36542,10 +37963,10 @@ void mFP_PINF_TOK(pSmt2Lexer ctx)
     _type	    = FP_PINF_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2906:13: ( '+oo' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2906:15: '+oo'
+    // ../../../../src/parser/smt2/Smt2.g:3118:13: ( '+oo' )
+    // ../../../../src/parser/smt2/Smt2.g:3118:15: '+oo'
     {
-        MATCHS(lit_93);
+        MATCHS(lit_98);
         if  (HASEXCEPTION())
         {
             goto ruleFP_PINF_TOKEx;
@@ -36565,7 +37986,7 @@ void mFP_PINF_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_PINF_TOK
 
-//   Comes from: 2907:13: ( '-oo' )
+//   Comes from: 3119:13: ( '-oo' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_NINF_TOK
@@ -36585,10 +38006,10 @@ void mFP_NINF_TOK(pSmt2Lexer ctx)
     _type	    = FP_NINF_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2907:13: ( '-oo' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2907:15: '-oo'
+    // ../../../../src/parser/smt2/Smt2.g:3119:13: ( '-oo' )
+    // ../../../../src/parser/smt2/Smt2.g:3119:15: '-oo'
     {
-        MATCHS(lit_94);
+        MATCHS(lit_99);
         if  (HASEXCEPTION())
         {
             goto ruleFP_NINF_TOKEx;
@@ -36608,7 +38029,7 @@ void mFP_NINF_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_NINF_TOK
 
-//   Comes from: 2908:14: ( '+zero' )
+//   Comes from: 3120:14: ( '+zero' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_PZERO_TOK
@@ -36628,10 +38049,10 @@ void mFP_PZERO_TOK(pSmt2Lexer ctx)
     _type	    = FP_PZERO_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2908:14: ( '+zero' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2908:16: '+zero'
+    // ../../../../src/parser/smt2/Smt2.g:3120:14: ( '+zero' )
+    // ../../../../src/parser/smt2/Smt2.g:3120:16: '+zero'
     {
-        MATCHS(lit_95);
+        MATCHS(lit_100);
         if  (HASEXCEPTION())
         {
             goto ruleFP_PZERO_TOKEx;
@@ -36651,7 +38072,7 @@ void mFP_PZERO_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_PZERO_TOK
 
-//   Comes from: 2909:14: ( '-zero' )
+//   Comes from: 3121:14: ( '-zero' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_NZERO_TOK
@@ -36671,10 +38092,10 @@ void mFP_NZERO_TOK(pSmt2Lexer ctx)
     _type	    = FP_NZERO_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2909:14: ( '-zero' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2909:16: '-zero'
+    // ../../../../src/parser/smt2/Smt2.g:3121:14: ( '-zero' )
+    // ../../../../src/parser/smt2/Smt2.g:3121:16: '-zero'
     {
-        MATCHS(lit_96);
+        MATCHS(lit_101);
         if  (HASEXCEPTION())
         {
             goto ruleFP_NZERO_TOKEx;
@@ -36694,7 +38115,7 @@ void mFP_NZERO_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_NZERO_TOK
 
-//   Comes from: 2910:12: ( 'NaN' )
+//   Comes from: 3122:12: ({...}? 'NaN' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_NAN_TOK
@@ -36711,13 +38132,23 @@ void mFP_NAN_TOK(pSmt2Lexer ctx)
 {
 	ANTLR3_UINT32	_type;
 
-    _type	    = FP_NAN_TOK;
+    _type	    = FP_NAN_TOK;
+
+
+    // ../../../../src/parser/smt2/Smt2.g:3122:12: ({...}? 'NaN' )
+    // ../../../../src/parser/smt2/Smt2.g:3122:14: {...}? 'NaN'
+    {
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) ";
+                EXCEPTION->ruleName	 = (void *)"FP_NAN_TOK";
+
 
+        }
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2910:12: ( 'NaN' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2910:14: 'NaN'
-    {
-        MATCHS(lit_97);
+        MATCHS(lit_102);
         if  (HASEXCEPTION())
         {
             goto ruleFP_NAN_TOKEx;
@@ -36737,7 +38168,7 @@ void mFP_NAN_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_NAN_TOK
 
-//   Comes from: 2912:14: ( 'to_fp' )
+//   Comes from: 3124:14: ({...}? 'to_fp' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_TO_FP_TOK
@@ -36757,10 +38188,20 @@ void mFP_TO_FP_TOK(pSmt2Lexer ctx)
     _type	    = FP_TO_FP_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2912:14: ( 'to_fp' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2912:16: 'to_fp'
+    // ../../../../src/parser/smt2/Smt2.g:3124:14: ({...}? 'to_fp' )
+    // ../../../../src/parser/smt2/Smt2.g:3124:16: {...}? 'to_fp'
     {
-        MATCHS(lit_98);
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) ";
+                EXCEPTION->ruleName	 = (void *)"FP_TO_FP_TOK";
+
+
+        }
+
+        MATCHS(lit_103);
         if  (HASEXCEPTION())
         {
             goto ruleFP_TO_FP_TOKEx;
@@ -36780,7 +38221,7 @@ void mFP_TO_FP_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_TO_FP_TOK
 
-//   Comes from: 2913:16: ( 'to_fp_bv' )
+//   Comes from: 3125:16: ({...}? 'to_fp_bv' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_TO_FPBV_TOK
@@ -36800,10 +38241,20 @@ void mFP_TO_FPBV_TOK(pSmt2Lexer ctx)
     _type	    = FP_TO_FPBV_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2913:16: ( 'to_fp_bv' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2913:18: 'to_fp_bv'
+    // ../../../../src/parser/smt2/Smt2.g:3125:16: ({...}? 'to_fp_bv' )
+    // ../../../../src/parser/smt2/Smt2.g:3125:18: {...}? 'to_fp_bv'
     {
-        MATCHS(lit_99);
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) ";
+                EXCEPTION->ruleName	 = (void *)"FP_TO_FPBV_TOK";
+
+
+        }
+
+        MATCHS(lit_104);
         if  (HASEXCEPTION())
         {
             goto ruleFP_TO_FPBV_TOKEx;
@@ -36823,7 +38274,7 @@ void mFP_TO_FPBV_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_TO_FPBV_TOK
 
-//   Comes from: 2914:16: ( 'to_fp_fp' )
+//   Comes from: 3126:16: ({...}? 'to_fp_fp' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_TO_FPFP_TOK
@@ -36843,10 +38294,20 @@ void mFP_TO_FPFP_TOK(pSmt2Lexer ctx)
     _type	    = FP_TO_FPFP_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2914:16: ( 'to_fp_fp' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2914:18: 'to_fp_fp'
+    // ../../../../src/parser/smt2/Smt2.g:3126:16: ({...}? 'to_fp_fp' )
+    // ../../../../src/parser/smt2/Smt2.g:3126:18: {...}? 'to_fp_fp'
     {
-        MATCHS(lit_100);
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) ";
+                EXCEPTION->ruleName	 = (void *)"FP_TO_FPFP_TOK";
+
+
+        }
+
+        MATCHS(lit_105);
         if  (HASEXCEPTION())
         {
             goto ruleFP_TO_FPFP_TOKEx;
@@ -36866,7 +38327,7 @@ void mFP_TO_FPFP_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_TO_FPFP_TOK
 
-//   Comes from: 2915:15: ( 'to_fp_real' )
+//   Comes from: 3127:15: ({...}? 'to_fp_real' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_TO_FPR_TOK
@@ -36886,10 +38347,20 @@ void mFP_TO_FPR_TOK(pSmt2Lexer ctx)
     _type	    = FP_TO_FPR_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2915:15: ( 'to_fp_real' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2915:17: 'to_fp_real'
+    // ../../../../src/parser/smt2/Smt2.g:3127:15: ({...}? 'to_fp_real' )
+    // ../../../../src/parser/smt2/Smt2.g:3127:17: {...}? 'to_fp_real'
     {
-        MATCHS(lit_101);
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) ";
+                EXCEPTION->ruleName	 = (void *)"FP_TO_FPR_TOK";
+
+
+        }
+
+        MATCHS(lit_106);
         if  (HASEXCEPTION())
         {
             goto ruleFP_TO_FPR_TOKEx;
@@ -36909,7 +38380,7 @@ void mFP_TO_FPR_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_TO_FPR_TOK
 
-//   Comes from: 2916:15: ( 'to_fp_signed' )
+//   Comes from: 3128:15: ({...}? 'to_fp_signed' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_TO_FPS_TOK
@@ -36929,10 +38400,20 @@ void mFP_TO_FPS_TOK(pSmt2Lexer ctx)
     _type	    = FP_TO_FPS_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2916:15: ( 'to_fp_signed' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2916:17: 'to_fp_signed'
+    // ../../../../src/parser/smt2/Smt2.g:3128:15: ({...}? 'to_fp_signed' )
+    // ../../../../src/parser/smt2/Smt2.g:3128:17: {...}? 'to_fp_signed'
     {
-        MATCHS(lit_102);
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) ";
+                EXCEPTION->ruleName	 = (void *)"FP_TO_FPS_TOK";
+
+
+        }
+
+        MATCHS(lit_107);
         if  (HASEXCEPTION())
         {
             goto ruleFP_TO_FPS_TOKEx;
@@ -36952,7 +38433,7 @@ void mFP_TO_FPS_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_TO_FPS_TOK
 
-//   Comes from: 2917:15: ( 'to_fp_unsigned' )
+//   Comes from: 3129:15: ({...}? 'to_fp_unsigned' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_TO_FPU_TOK
@@ -36972,10 +38453,20 @@ void mFP_TO_FPU_TOK(pSmt2Lexer ctx)
     _type	    = FP_TO_FPU_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2917:15: ( 'to_fp_unsigned' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2917:17: 'to_fp_unsigned'
+    // ../../../../src/parser/smt2/Smt2.g:3129:15: ({...}? 'to_fp_unsigned' )
+    // ../../../../src/parser/smt2/Smt2.g:3129:17: {...}? 'to_fp_unsigned'
     {
-        MATCHS(lit_103);
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) ";
+                EXCEPTION->ruleName	 = (void *)"FP_TO_FPU_TOK";
+
+
+        }
+
+        MATCHS(lit_108);
         if  (HASEXCEPTION())
         {
             goto ruleFP_TO_FPU_TOKEx;
@@ -36995,7 +38486,7 @@ void mFP_TO_FPU_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_TO_FPU_TOK
 
-//   Comes from: 2918:15: ( 'fp.to_ubv' )
+//   Comes from: 3130:15: ({...}? 'fp.to_ubv' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_TO_UBV_TOK
@@ -37015,10 +38506,20 @@ void mFP_TO_UBV_TOK(pSmt2Lexer ctx)
     _type	    = FP_TO_UBV_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2918:15: ( 'fp.to_ubv' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2918:17: 'fp.to_ubv'
+    // ../../../../src/parser/smt2/Smt2.g:3130:15: ({...}? 'fp.to_ubv' )
+    // ../../../../src/parser/smt2/Smt2.g:3130:17: {...}? 'fp.to_ubv'
     {
-        MATCHS(lit_104);
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) ";
+                EXCEPTION->ruleName	 = (void *)"FP_TO_UBV_TOK";
+
+
+        }
+
+        MATCHS(lit_109);
         if  (HASEXCEPTION())
         {
             goto ruleFP_TO_UBV_TOKEx;
@@ -37038,7 +38539,7 @@ void mFP_TO_UBV_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_TO_UBV_TOK
 
-//   Comes from: 2919:15: ( 'fp.to_sbv' )
+//   Comes from: 3131:15: ({...}? 'fp.to_sbv' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_TO_SBV_TOK
@@ -37058,10 +38559,20 @@ void mFP_TO_SBV_TOK(pSmt2Lexer ctx)
     _type	    = FP_TO_SBV_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2919:15: ( 'fp.to_sbv' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2919:17: 'fp.to_sbv'
+    // ../../../../src/parser/smt2/Smt2.g:3131:15: ({...}? 'fp.to_sbv' )
+    // ../../../../src/parser/smt2/Smt2.g:3131:17: {...}? 'fp.to_sbv'
     {
-        MATCHS(lit_105);
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) ";
+                EXCEPTION->ruleName	 = (void *)"FP_TO_SBV_TOK";
+
+
+        }
+
+        MATCHS(lit_110);
         if  (HASEXCEPTION())
         {
             goto ruleFP_TO_SBV_TOKEx;
@@ -37081,7 +38592,7 @@ void mFP_TO_SBV_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_TO_SBV_TOK
 
-//   Comes from: 2920:12: ( 'RNE' )
+//   Comes from: 3132:12: ({...}? 'RNE' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_RNE_TOK
@@ -37101,10 +38612,20 @@ void mFP_RNE_TOK(pSmt2Lexer ctx)
     _type	    = FP_RNE_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2920:12: ( 'RNE' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2920:14: 'RNE'
+    // ../../../../src/parser/smt2/Smt2.g:3132:12: ({...}? 'RNE' )
+    // ../../../../src/parser/smt2/Smt2.g:3132:14: {...}? 'RNE'
     {
-        MATCHS(lit_106);
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) ";
+                EXCEPTION->ruleName	 = (void *)"FP_RNE_TOK";
+
+
+        }
+
+        MATCHS(lit_111);
         if  (HASEXCEPTION())
         {
             goto ruleFP_RNE_TOKEx;
@@ -37124,7 +38645,7 @@ void mFP_RNE_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_RNE_TOK
 
-//   Comes from: 2921:12: ( 'RNA' )
+//   Comes from: 3133:12: ({...}? 'RNA' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_RNA_TOK
@@ -37144,10 +38665,20 @@ void mFP_RNA_TOK(pSmt2Lexer ctx)
     _type	    = FP_RNA_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2921:12: ( 'RNA' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2921:14: 'RNA'
+    // ../../../../src/parser/smt2/Smt2.g:3133:12: ({...}? 'RNA' )
+    // ../../../../src/parser/smt2/Smt2.g:3133:14: {...}? 'RNA'
     {
-        MATCHS(lit_107);
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) ";
+                EXCEPTION->ruleName	 = (void *)"FP_RNA_TOK";
+
+
+        }
+
+        MATCHS(lit_112);
         if  (HASEXCEPTION())
         {
             goto ruleFP_RNA_TOKEx;
@@ -37167,7 +38698,7 @@ void mFP_RNA_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_RNA_TOK
 
-//   Comes from: 2922:12: ( 'RTP' )
+//   Comes from: 3134:12: ({...}? 'RTP' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_RTP_TOK
@@ -37187,10 +38718,20 @@ void mFP_RTP_TOK(pSmt2Lexer ctx)
     _type	    = FP_RTP_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2922:12: ( 'RTP' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2922:14: 'RTP'
+    // ../../../../src/parser/smt2/Smt2.g:3134:12: ({...}? 'RTP' )
+    // ../../../../src/parser/smt2/Smt2.g:3134:14: {...}? 'RTP'
     {
-        MATCHS(lit_108);
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) ";
+                EXCEPTION->ruleName	 = (void *)"FP_RTP_TOK";
+
+
+        }
+
+        MATCHS(lit_113);
         if  (HASEXCEPTION())
         {
             goto ruleFP_RTP_TOKEx;
@@ -37210,7 +38751,7 @@ void mFP_RTP_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_RTP_TOK
 
-//   Comes from: 2923:12: ( 'RTN' )
+//   Comes from: 3135:12: ({...}? 'RTN' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_RTN_TOK
@@ -37230,10 +38771,20 @@ void mFP_RTN_TOK(pSmt2Lexer ctx)
     _type	    = FP_RTN_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2923:12: ( 'RTN' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2923:14: 'RTN'
+    // ../../../../src/parser/smt2/Smt2.g:3135:12: ({...}? 'RTN' )
+    // ../../../../src/parser/smt2/Smt2.g:3135:14: {...}? 'RTN'
     {
-        MATCHS(lit_109);
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) ";
+                EXCEPTION->ruleName	 = (void *)"FP_RTN_TOK";
+
+
+        }
+
+        MATCHS(lit_114);
         if  (HASEXCEPTION())
         {
             goto ruleFP_RTN_TOKEx;
@@ -37253,7 +38804,7 @@ void mFP_RTN_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_RTN_TOK
 
-//   Comes from: 2924:12: ( 'RTZ' )
+//   Comes from: 3136:12: ({...}? 'RTZ' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_RTZ_TOK
@@ -37273,10 +38824,20 @@ void mFP_RTZ_TOK(pSmt2Lexer ctx)
     _type	    = FP_RTZ_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2924:12: ( 'RTZ' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2924:14: 'RTZ'
+    // ../../../../src/parser/smt2/Smt2.g:3136:12: ({...}? 'RTZ' )
+    // ../../../../src/parser/smt2/Smt2.g:3136:14: {...}? 'RTZ'
     {
-        MATCHS(lit_110);
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) ";
+                EXCEPTION->ruleName	 = (void *)"FP_RTZ_TOK";
+
+
+        }
+
+        MATCHS(lit_115);
         if  (HASEXCEPTION())
         {
             goto ruleFP_RTZ_TOKEx;
@@ -37296,7 +38857,7 @@ void mFP_RTZ_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_RTZ_TOK
 
-//   Comes from: 2925:17: ( 'roundNearestTiesToEven' )
+//   Comes from: 3137:17: ({...}? 'roundNearestTiesToEven' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_RNE_FULL_TOK
@@ -37316,10 +38877,20 @@ void mFP_RNE_FULL_TOK(pSmt2Lexer ctx)
     _type	    = FP_RNE_FULL_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2925:17: ( 'roundNearestTiesToEven' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2925:19: 'roundNearestTiesToEven'
+    // ../../../../src/parser/smt2/Smt2.g:3137:17: ({...}? 'roundNearestTiesToEven' )
+    // ../../../../src/parser/smt2/Smt2.g:3137:19: {...}? 'roundNearestTiesToEven'
     {
-        MATCHS(lit_111);
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) ";
+                EXCEPTION->ruleName	 = (void *)"FP_RNE_FULL_TOK";
+
+
+        }
+
+        MATCHS(lit_116);
         if  (HASEXCEPTION())
         {
             goto ruleFP_RNE_FULL_TOKEx;
@@ -37339,7 +38910,7 @@ void mFP_RNE_FULL_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_RNE_FULL_TOK
 
-//   Comes from: 2926:17: ( 'roundNearestTiesToAway' )
+//   Comes from: 3138:17: ({...}? 'roundNearestTiesToAway' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_RNA_FULL_TOK
@@ -37359,10 +38930,20 @@ void mFP_RNA_FULL_TOK(pSmt2Lexer ctx)
     _type	    = FP_RNA_FULL_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2926:17: ( 'roundNearestTiesToAway' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2926:19: 'roundNearestTiesToAway'
+    // ../../../../src/parser/smt2/Smt2.g:3138:17: ({...}? 'roundNearestTiesToAway' )
+    // ../../../../src/parser/smt2/Smt2.g:3138:19: {...}? 'roundNearestTiesToAway'
     {
-        MATCHS(lit_112);
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) ";
+                EXCEPTION->ruleName	 = (void *)"FP_RNA_FULL_TOK";
+
+
+        }
+
+        MATCHS(lit_117);
         if  (HASEXCEPTION())
         {
             goto ruleFP_RNA_FULL_TOKEx;
@@ -37382,7 +38963,7 @@ void mFP_RNA_FULL_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_RNA_FULL_TOK
 
-//   Comes from: 2927:17: ( 'roundTowardPositive' )
+//   Comes from: 3139:17: ({...}? 'roundTowardPositive' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_RTP_FULL_TOK
@@ -37402,10 +38983,20 @@ void mFP_RTP_FULL_TOK(pSmt2Lexer ctx)
     _type	    = FP_RTP_FULL_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2927:17: ( 'roundTowardPositive' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2927:19: 'roundTowardPositive'
+    // ../../../../src/parser/smt2/Smt2.g:3139:17: ({...}? 'roundTowardPositive' )
+    // ../../../../src/parser/smt2/Smt2.g:3139:19: {...}? 'roundTowardPositive'
     {
-        MATCHS(lit_113);
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) ";
+                EXCEPTION->ruleName	 = (void *)"FP_RTP_FULL_TOK";
+
+
+        }
+
+        MATCHS(lit_118);
         if  (HASEXCEPTION())
         {
             goto ruleFP_RTP_FULL_TOKEx;
@@ -37425,7 +39016,7 @@ void mFP_RTP_FULL_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_RTP_FULL_TOK
 
-//   Comes from: 2928:17: ( 'roundTowardNegative' )
+//   Comes from: 3140:17: ({...}? 'roundTowardNegative' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_RTN_FULL_TOK
@@ -37445,10 +39036,20 @@ void mFP_RTN_FULL_TOK(pSmt2Lexer ctx)
     _type	    = FP_RTN_FULL_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2928:17: ( 'roundTowardNegative' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2928:19: 'roundTowardNegative'
+    // ../../../../src/parser/smt2/Smt2.g:3140:17: ({...}? 'roundTowardNegative' )
+    // ../../../../src/parser/smt2/Smt2.g:3140:19: {...}? 'roundTowardNegative'
     {
-        MATCHS(lit_114);
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) ";
+                EXCEPTION->ruleName	 = (void *)"FP_RTN_FULL_TOK";
+
+
+        }
+
+        MATCHS(lit_119);
         if  (HASEXCEPTION())
         {
             goto ruleFP_RTN_FULL_TOKEx;
@@ -37468,7 +39069,7 @@ void mFP_RTN_FULL_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_RTN_FULL_TOK
 
-//   Comes from: 2929:17: ( 'roundTowardZero' )
+//   Comes from: 3141:17: ({...}? 'roundTowardZero' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FP_RTZ_FULL_TOK
@@ -37488,10 +39089,20 @@ void mFP_RTZ_FULL_TOK(pSmt2Lexer ctx)
     _type	    = FP_RTZ_FULL_TOK;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2929:17: ( 'roundTowardZero' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2929:19: 'roundTowardZero'
+    // ../../../../src/parser/smt2/Smt2.g:3141:17: ({...}? 'roundTowardZero' )
+    // ../../../../src/parser/smt2/Smt2.g:3141:19: {...}? 'roundTowardZero'
     {
-        MATCHS(lit_115);
+        if ( !(( PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) )) )
+        {
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
+                EXCEPTION->message      = (void *)" PARSER_STATE->isTheoryEnabled(Smt2::THEORY_FP) ";
+                EXCEPTION->ruleName	 = (void *)"FP_RTZ_FULL_TOK";
+
+
+        }
+
+        MATCHS(lit_120);
         if  (HASEXCEPTION())
         {
             goto ruleFP_RTZ_FULL_TOKEx;
@@ -37511,7 +39122,7 @@ void mFP_RTZ_FULL_TOK(pSmt2Lexer ctx)
 }
 // $ANTLR end FP_RTZ_FULL_TOK
 
-//   Comes from: 2946:3: ( '|' (~ ( '|' | '\\\\' ) )* '|' )
+//   Comes from: 3158:3: ( '|' (~ ( '|' | '\\\\' ) )* '|' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start QUOTED_SYMBOL
@@ -37531,8 +39142,8 @@ void mQUOTED_SYMBOL(pSmt2Lexer ctx)
     _type	    = QUOTED_SYMBOL;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2946:3: ( '|' (~ ( '|' | '\\\\' ) )* '|' )
-    // ../../../../../../src/parser/smt2/Smt2.g:2946:5: '|' (~ ( '|' | '\\\\' ) )* '|'
+    // ../../../../src/parser/smt2/Smt2.g:3158:3: ( '|' (~ ( '|' | '\\\\' ) )* '|' )
+    // ../../../../src/parser/smt2/Smt2.g:3158:5: '|' (~ ( '|' | '\\\\' ) )* '|'
     {
         MATCHC('|');
         if  (HASEXCEPTION())
@@ -37541,7 +39152,7 @@ void mQUOTED_SYMBOL(pSmt2Lexer ctx)
         }
 
 
-        // ../../../../../../src/parser/smt2/Smt2.g:2946:9: (~ ( '|' | '\\\\' ) )*
+        // ../../../../src/parser/smt2/Smt2.g:3158:9: (~ ( '|' | '\\\\' ) )*
 
         for (;;)
         {
@@ -37559,7 +39170,7 @@ void mQUOTED_SYMBOL(pSmt2Lexer ctx)
             switch (alt1)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:
+        	    // ../../../../src/parser/smt2/Smt2.g:
         	    {
         	        if ( ((LA(1) >= 0x0000) && (LA(1) <= '[')) || ((LA(1) >= ']') && (LA(1) <= '{')) || ((LA(1) >= '}') && (LA(1) <= 0xFFFF)) )
         	        {
@@ -37605,7 +39216,7 @@ void mQUOTED_SYMBOL(pSmt2Lexer ctx)
 }
 // $ANTLR end QUOTED_SYMBOL
 
-//   Comes from: 2942:3: ( '|' (~ ( '|' | '\\\\' ) )* )
+//   Comes from: 3154:3: ( '|' (~ ( '|' | '\\\\' ) )* )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start UNTERMINATED_QUOTED_SYMBOL
@@ -37625,8 +39236,8 @@ void mUNTERMINATED_QUOTED_SYMBOL(pSmt2Lexer ctx)
     _type	    = UNTERMINATED_QUOTED_SYMBOL;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2942:3: ( '|' (~ ( '|' | '\\\\' ) )* )
-    // ../../../../../../src/parser/smt2/Smt2.g:2942:5: '|' (~ ( '|' | '\\\\' ) )*
+    // ../../../../src/parser/smt2/Smt2.g:3154:3: ( '|' (~ ( '|' | '\\\\' ) )* )
+    // ../../../../src/parser/smt2/Smt2.g:3154:5: '|' (~ ( '|' | '\\\\' ) )*
     {
         MATCHC('|');
         if  (HASEXCEPTION())
@@ -37635,7 +39246,7 @@ void mUNTERMINATED_QUOTED_SYMBOL(pSmt2Lexer ctx)
         }
 
 
-        // ../../../../../../src/parser/smt2/Smt2.g:2942:9: (~ ( '|' | '\\\\' ) )*
+        // ../../../../src/parser/smt2/Smt2.g:3154:9: (~ ( '|' | '\\\\' ) )*
 
         for (;;)
         {
@@ -37653,7 +39264,7 @@ void mUNTERMINATED_QUOTED_SYMBOL(pSmt2Lexer ctx)
             switch (alt2)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:
+        	    // ../../../../src/parser/smt2/Smt2.g:
         	    {
         	        if ( ((LA(1) >= 0x0000) && (LA(1) <= '[')) || ((LA(1) >= ']') && (LA(1) <= '{')) || ((LA(1) >= '}') && (LA(1) <= 0xFFFF)) )
         	        {
@@ -37692,7 +39303,7 @@ void mUNTERMINATED_QUOTED_SYMBOL(pSmt2Lexer ctx)
 }
 // $ANTLR end UNTERMINATED_QUOTED_SYMBOL
 
-//   Comes from: 2954:3: ( ':' ( ALPHA | DIGIT | SYMBOL_CHAR )+ )
+//   Comes from: 3166:3: ( ':' ( ALPHA | DIGIT | SYMBOL_CHAR )+ )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start KEYWORD
@@ -37712,8 +39323,8 @@ void mKEYWORD(pSmt2Lexer ctx)
     _type	    = KEYWORD;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2954:3: ( ':' ( ALPHA | DIGIT | SYMBOL_CHAR )+ )
-    // ../../../../../../src/parser/smt2/Smt2.g:2954:5: ':' ( ALPHA | DIGIT | SYMBOL_CHAR )+
+    // ../../../../src/parser/smt2/Smt2.g:3166:3: ( ':' ( ALPHA | DIGIT | SYMBOL_CHAR )+ )
+    // ../../../../src/parser/smt2/Smt2.g:3166:5: ':' ( ALPHA | DIGIT | SYMBOL_CHAR )+
     {
         MATCHC(':');
         if  (HASEXCEPTION())
@@ -37722,7 +39333,7 @@ void mKEYWORD(pSmt2Lexer ctx)
         }
 
 
-        // ../../../../../../src/parser/smt2/Smt2.g:2954:9: ( ALPHA | DIGIT | SYMBOL_CHAR )+
+        // ../../../../src/parser/smt2/Smt2.g:3166:9: ( ALPHA | DIGIT | SYMBOL_CHAR )+
         {
             int cnt3=0;
 
@@ -37820,7 +39431,7 @@ void mKEYWORD(pSmt2Lexer ctx)
         	switch (alt3)
         	{
         	    case 1:
-        	        // ../../../../../../src/parser/smt2/Smt2.g:
+        	        // ../../../../src/parser/smt2/Smt2.g:
         	        {
         	            if ( LA(1) == '!' || ((LA(1) >= '$') && (LA(1) <= '&')) || ((LA(1) >= '*') && (LA(1) <= '+')) || ((LA(1) >= '-') && (LA(1) <= '9')) || ((LA(1) >= '<') && (LA(1) <= 'Z')) || ((LA(1) >= '^') && (LA(1) <= '_')) || ((LA(1) >= 'a') && (LA(1) <= 'z')) || LA(1) == '~' )
         	            {
@@ -37871,7 +39482,7 @@ void mKEYWORD(pSmt2Lexer ctx)
 }
 // $ANTLR end KEYWORD
 
-//   Comes from: 2964:3: ( ( ALPHA | SYMBOL_CHAR ) ( ALPHA | DIGIT | SYMBOL_CHAR )+ | ALPHA | SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE )
+//   Comes from: 3176:3: ( ( ALPHA | SYMBOL_CHAR ) ( ALPHA | DIGIT | SYMBOL_CHAR )+ | ALPHA | SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SIMPLE_SYMBOL
@@ -37892,7 +39503,7 @@ void mSIMPLE_SYMBOL(pSmt2Lexer ctx)
 
 
     {
-        //  ../../../../../../src/parser/smt2/Smt2.g:2964:3: ( ( ALPHA | SYMBOL_CHAR ) ( ALPHA | DIGIT | SYMBOL_CHAR )+ | ALPHA | SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE )
+        //  ../../../../src/parser/smt2/Smt2.g:3176:3: ( ( ALPHA | SYMBOL_CHAR ) ( ALPHA | DIGIT | SYMBOL_CHAR )+ | ALPHA | SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE )
 
         ANTLR3_UINT32 alt5;
 
@@ -38175,7 +39786,7 @@ void mSIMPLE_SYMBOL(pSmt2Lexer ctx)
         switch (alt5)
         {
     	case 1:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:2964:5: ( ALPHA | SYMBOL_CHAR ) ( ALPHA | DIGIT | SYMBOL_CHAR )+
+    	    // ../../../../src/parser/smt2/Smt2.g:3176:5: ( ALPHA | SYMBOL_CHAR ) ( ALPHA | DIGIT | SYMBOL_CHAR )+
     	    {
     	        if ( LA(1) == '!' || ((LA(1) >= '$') && (LA(1) <= '&')) || ((LA(1) >= '*') && (LA(1) <= '+')) || ((LA(1) >= '-') && (LA(1) <= '/')) || ((LA(1) >= '<') && (LA(1) <= 'Z')) || ((LA(1) >= '^') && (LA(1) <= '_')) || ((LA(1) >= 'a') && (LA(1) <= 'z')) || LA(1) == '~' )
     	        {
@@ -38192,7 +39803,7 @@ void mSIMPLE_SYMBOL(pSmt2Lexer ctx)
     	        }
 
 
-    	        // ../../../../../../src/parser/smt2/Smt2.g:2964:27: ( ALPHA | DIGIT | SYMBOL_CHAR )+
+    	        // ../../../../src/parser/smt2/Smt2.g:3176:27: ( ALPHA | DIGIT | SYMBOL_CHAR )+
     	        {
     	            int cnt4=0;
 
@@ -38290,7 +39901,7 @@ void mSIMPLE_SYMBOL(pSmt2Lexer ctx)
     	        	switch (alt4)
     	        	{
     	        	    case 1:
-    	        	        // ../../../../../../src/parser/smt2/Smt2.g:
+    	        	        // ../../../../src/parser/smt2/Smt2.g:
     	        	        {
     	        	            if ( LA(1) == '!' || ((LA(1) >= '$') && (LA(1) <= '&')) || ((LA(1) >= '*') && (LA(1) <= '+')) || ((LA(1) >= '-') && (LA(1) <= '9')) || ((LA(1) >= '<') && (LA(1) <= 'Z')) || ((LA(1) >= '^') && (LA(1) <= '_')) || ((LA(1) >= 'a') && (LA(1) <= 'z')) || LA(1) == '~' )
     	        	            {
@@ -38333,9 +39944,9 @@ void mSIMPLE_SYMBOL(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 2:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:2965:5: ALPHA
+    	    // ../../../../src/parser/smt2/Smt2.g:3177:5: ALPHA
     	    {
-    	        /* 2965:5: ALPHA */
+    	        /* 3177:5: ALPHA */
     	        mALPHA(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -38347,9 +39958,9 @@ void mSIMPLE_SYMBOL(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 3:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:2966:5: SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE
+    	    // ../../../../src/parser/smt2/Smt2.g:3178:5: SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE
     	    {
-    	        /* 2966:5: SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE */
+    	        /* 3178:5: SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE */
     	        mSYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -38372,7 +39983,7 @@ void mSIMPLE_SYMBOL(pSmt2Lexer ctx)
 }
 // $ANTLR end SIMPLE_SYMBOL
 
-//   Comes from: 2971:3: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
+//   Comes from: 3183:3: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start WHITESPACE
@@ -38392,10 +40003,10 @@ void mWHITESPACE(pSmt2Lexer ctx)
     _type	    = WHITESPACE;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2971:3: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
-    // ../../../../../../src/parser/smt2/Smt2.g:2971:5: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
+    // ../../../../src/parser/smt2/Smt2.g:3183:3: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
+    // ../../../../src/parser/smt2/Smt2.g:3183:5: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
     {
-        // ../../../../../../src/parser/smt2/Smt2.g:2971:5: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
+        // ../../../../src/parser/smt2/Smt2.g:3183:5: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
         {
             int cnt6=0;
 
@@ -38419,7 +40030,7 @@ void mWHITESPACE(pSmt2Lexer ctx)
         	switch (alt6)
         	{
         	    case 1:
-        	        // ../../../../../../src/parser/smt2/Smt2.g:
+        	        // ../../../../src/parser/smt2/Smt2.g:
         	        {
         	            if ( ((LA(1) >= '\t') && (LA(1) <= '\n')) || ((LA(1) >= '\f') && (LA(1) <= '\r')) || LA(1) == ' ' )
         	            {
@@ -38475,7 +40086,7 @@ void mWHITESPACE(pSmt2Lexer ctx)
 }
 // $ANTLR end WHITESPACE
 
-//   Comes from: 2980:3: ( NUMERAL )
+//   Comes from: 3192:3: ( NUMERAL )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start INTEGER_LITERAL
@@ -38495,10 +40106,10 @@ void mINTEGER_LITERAL(pSmt2Lexer ctx)
     _type	    = INTEGER_LITERAL;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2980:3: ( NUMERAL )
-    // ../../../../../../src/parser/smt2/Smt2.g:2980:5: NUMERAL
+    // ../../../../src/parser/smt2/Smt2.g:3192:3: ( NUMERAL )
+    // ../../../../src/parser/smt2/Smt2.g:3192:5: NUMERAL
     {
-        /* 2980:5: NUMERAL */
+        /* 3192:5: NUMERAL */
         mNUMERAL(ctx );
         if  (HASEXCEPTION())
         {
@@ -38518,7 +40129,7 @@ void mINTEGER_LITERAL(pSmt2Lexer ctx)
 }
 // $ANTLR end INTEGER_LITERAL
 
-//   Comes from: 2993:3: ( ( DIGIT )+ {...}?)
+//   Comes from: 3205:3: ( ( DIGIT )+ {...}?)
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start NUMERAL
@@ -38539,10 +40150,10 @@ void mNUMERAL(pSmt2Lexer ctx)
       char *start = (char*) GETCHARINDEX();
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:2993:3: ( ( DIGIT )+ {...}?)
-    // ../../../../../../src/parser/smt2/Smt2.g:2993:5: ( DIGIT )+ {...}?
+    // ../../../../src/parser/smt2/Smt2.g:3205:3: ( ( DIGIT )+ {...}?)
+    // ../../../../src/parser/smt2/Smt2.g:3205:5: ( DIGIT )+ {...}?
     {
-        // ../../../../../../src/parser/smt2/Smt2.g:2993:5: ( DIGIT )+
+        // ../../../../src/parser/smt2/Smt2.g:3205:5: ( DIGIT )+
         {
             int cnt7=0;
 
@@ -38571,7 +40182,7 @@ void mNUMERAL(pSmt2Lexer ctx)
         	switch (alt7)
         	{
         	    case 1:
-        	        // ../../../../../../src/parser/smt2/Smt2.g:
+        	        // ../../../../src/parser/smt2/Smt2.g:
         	        {
         	            if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
         	            {
@@ -38644,7 +40255,7 @@ void mNUMERAL(pSmt2Lexer ctx)
 }
 // $ANTLR end NUMERAL
 
-//   Comes from: 3007:3: ( NUMERAL '.' ( DIGIT )+ )
+//   Comes from: 3219:3: ( NUMERAL '.' ( DIGIT )+ )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DECIMAL_LITERAL
@@ -38664,10 +40275,10 @@ void mDECIMAL_LITERAL(pSmt2Lexer ctx)
     _type	    = DECIMAL_LITERAL;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:3007:3: ( NUMERAL '.' ( DIGIT )+ )
-    // ../../../../../../src/parser/smt2/Smt2.g:3007:5: NUMERAL '.' ( DIGIT )+
+    // ../../../../src/parser/smt2/Smt2.g:3219:3: ( NUMERAL '.' ( DIGIT )+ )
+    // ../../../../src/parser/smt2/Smt2.g:3219:5: NUMERAL '.' ( DIGIT )+
     {
-        /* 3007:5: NUMERAL '.' ( DIGIT )+ */
+        /* 3219:5: NUMERAL '.' ( DIGIT )+ */
         mNUMERAL(ctx );
         if  (HASEXCEPTION())
         {
@@ -38683,7 +40294,7 @@ void mDECIMAL_LITERAL(pSmt2Lexer ctx)
         }
 
 
-        // ../../../../../../src/parser/smt2/Smt2.g:3007:17: ( DIGIT )+
+        // ../../../../src/parser/smt2/Smt2.g:3219:17: ( DIGIT )+
         {
             int cnt8=0;
 
@@ -38712,7 +40323,7 @@ void mDECIMAL_LITERAL(pSmt2Lexer ctx)
         	switch (alt8)
         	{
         	    case 1:
-        	        // ../../../../../../src/parser/smt2/Smt2.g:
+        	        // ../../../../src/parser/smt2/Smt2.g:
         	        {
         	            if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
         	            {
@@ -38763,7 +40374,7 @@ void mDECIMAL_LITERAL(pSmt2Lexer ctx)
 }
 // $ANTLR end DECIMAL_LITERAL
 
-//   Comes from: 3014:3: ( '#x' ( HEX_DIGIT )+ )
+//   Comes from: 3226:3: ( '#x' ( HEX_DIGIT )+ )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start HEX_LITERAL
@@ -38783,10 +40394,10 @@ void mHEX_LITERAL(pSmt2Lexer ctx)
     _type	    = HEX_LITERAL;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:3014:3: ( '#x' ( HEX_DIGIT )+ )
-    // ../../../../../../src/parser/smt2/Smt2.g:3014:5: '#x' ( HEX_DIGIT )+
+    // ../../../../src/parser/smt2/Smt2.g:3226:3: ( '#x' ( HEX_DIGIT )+ )
+    // ../../../../src/parser/smt2/Smt2.g:3226:5: '#x' ( HEX_DIGIT )+
     {
-        MATCHS(lit_116);
+        MATCHS(lit_121);
         if  (HASEXCEPTION())
         {
             goto ruleHEX_LITERALEx;
@@ -38795,7 +40406,7 @@ void mHEX_LITERAL(pSmt2Lexer ctx)
 
 
 
-        // ../../../../../../src/parser/smt2/Smt2.g:3014:10: ( HEX_DIGIT )+
+        // ../../../../src/parser/smt2/Smt2.g:3226:10: ( HEX_DIGIT )+
         {
             int cnt9=0;
 
@@ -38836,7 +40447,7 @@ void mHEX_LITERAL(pSmt2Lexer ctx)
         	switch (alt9)
         	{
         	    case 1:
-        	        // ../../../../../../src/parser/smt2/Smt2.g:
+        	        // ../../../../src/parser/smt2/Smt2.g:
         	        {
         	            if ( ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'A') && (LA(1) <= 'F')) || ((LA(1) >= 'a') && (LA(1) <= 'f')) )
         	            {
@@ -38887,7 +40498,7 @@ void mHEX_LITERAL(pSmt2Lexer ctx)
 }
 // $ANTLR end HEX_LITERAL
 
-//   Comes from: 3021:3: ( '#b' ( '0' | '1' )+ )
+//   Comes from: 3233:3: ( '#b' ( '0' | '1' )+ )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BINARY_LITERAL
@@ -38907,10 +40518,10 @@ void mBINARY_LITERAL(pSmt2Lexer ctx)
     _type	    = BINARY_LITERAL;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:3021:3: ( '#b' ( '0' | '1' )+ )
-    // ../../../../../../src/parser/smt2/Smt2.g:3021:5: '#b' ( '0' | '1' )+
+    // ../../../../src/parser/smt2/Smt2.g:3233:3: ( '#b' ( '0' | '1' )+ )
+    // ../../../../src/parser/smt2/Smt2.g:3233:5: '#b' ( '0' | '1' )+
     {
-        MATCHS(lit_117);
+        MATCHS(lit_122);
         if  (HASEXCEPTION())
         {
             goto ruleBINARY_LITERALEx;
@@ -38919,7 +40530,7 @@ void mBINARY_LITERAL(pSmt2Lexer ctx)
 
 
 
-        // ../../../../../../src/parser/smt2/Smt2.g:3021:10: ( '0' | '1' )+
+        // ../../../../src/parser/smt2/Smt2.g:3233:10: ( '0' | '1' )+
         {
             int cnt10=0;
 
@@ -38940,7 +40551,7 @@ void mBINARY_LITERAL(pSmt2Lexer ctx)
         	switch (alt10)
         	{
         	    case 1:
-        	        // ../../../../../../src/parser/smt2/Smt2.g:
+        	        // ../../../../src/parser/smt2/Smt2.g:
         	        {
         	            if ( ((LA(1) >= '0') && (LA(1) <= '1')) )
         	            {
@@ -38991,7 +40602,7 @@ void mBINARY_LITERAL(pSmt2Lexer ctx)
 }
 // $ANTLR end BINARY_LITERAL
 
-//   Comes from: 3036:3: ({...}? => '\"' ( '\\\\' . |~ ( '\\\\' | '\"' ) )* '\"' )
+//   Comes from: 3248:3: ({...}? => '\"' ( '\\\\' . |~ ( '\\\\' | '\"' ) )* '\"' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STRING_LITERAL_2_0
@@ -39011,8 +40622,8 @@ void mSTRING_LITERAL_2_0(pSmt2Lexer ctx)
     _type	    = STRING_LITERAL_2_0;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:3036:3: ({...}? => '\"' ( '\\\\' . |~ ( '\\\\' | '\"' ) )* '\"' )
-    // ../../../../../../src/parser/smt2/Smt2.g:3036:5: {...}? => '\"' ( '\\\\' . |~ ( '\\\\' | '\"' ) )* '\"'
+    // ../../../../src/parser/smt2/Smt2.g:3248:3: ({...}? => '\"' ( '\\\\' . |~ ( '\\\\' | '\"' ) )* '\"' )
+    // ../../../../src/parser/smt2/Smt2.g:3248:5: {...}? => '\"' ( '\\\\' . |~ ( '\\\\' | '\"' ) )* '\"'
     {
         if ( !(( PARSER_STATE->v2_0() )) )
         {
@@ -39031,7 +40642,7 @@ void mSTRING_LITERAL_2_0(pSmt2Lexer ctx)
         }
 
 
-        // ../../../../../../src/parser/smt2/Smt2.g:3037:9: ( '\\\\' . |~ ( '\\\\' | '\"' ) )*
+        // ../../../../src/parser/smt2/Smt2.g:3249:9: ( '\\\\' . |~ ( '\\\\' | '\"' ) )*
 
         for (;;)
         {
@@ -39053,7 +40664,7 @@ void mSTRING_LITERAL_2_0(pSmt2Lexer ctx)
             switch (alt11)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:3037:10: '\\\\' .
+        	    // ../../../../src/parser/smt2/Smt2.g:3249:10: '\\\\' .
         	    {
         	        MATCHC('\\');
         	        if  (HASEXCEPTION())
@@ -39072,7 +40683,7 @@ void mSTRING_LITERAL_2_0(pSmt2Lexer ctx)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:3037:19: ~ ( '\\\\' | '\"' )
+        	    // ../../../../src/parser/smt2/Smt2.g:3249:19: ~ ( '\\\\' | '\"' )
         	    {
         	        if ( ((LA(1) >= 0x0000) && (LA(1) <= '!')) || ((LA(1) >= '#') && (LA(1) <= '[')) || ((LA(1) >= ']') && (LA(1) <= 0xFFFF)) )
         	        {
@@ -39118,7 +40729,7 @@ void mSTRING_LITERAL_2_0(pSmt2Lexer ctx)
 }
 // $ANTLR end STRING_LITERAL_2_0
 
-//   Comes from: 3050:3: ({...}? => '\"' (~ ( '\"' ) | '\"\"' )* '\"' )
+//   Comes from: 3262:3: ({...}? => '\"' (~ ( '\"' ) | '\"\"' )* '\"' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start STRING_LITERAL_2_5
@@ -39138,14 +40749,14 @@ void mSTRING_LITERAL_2_5(pSmt2Lexer ctx)
     _type	    = STRING_LITERAL_2_5;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:3050:3: ({...}? => '\"' (~ ( '\"' ) | '\"\"' )* '\"' )
-    // ../../../../../../src/parser/smt2/Smt2.g:3050:5: {...}? => '\"' (~ ( '\"' ) | '\"\"' )* '\"'
+    // ../../../../src/parser/smt2/Smt2.g:3262:3: ({...}? => '\"' (~ ( '\"' ) | '\"\"' )* '\"' )
+    // ../../../../src/parser/smt2/Smt2.g:3262:5: {...}? => '\"' (~ ( '\"' ) | '\"\"' )* '\"'
     {
-        if ( !(( PARSER_STATE->v2_5() || PARSER_STATE->sygus() )) )
+        if ( !(( PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() )) )
         {
                 CONSTRUCTEX();
                 EXCEPTION->type         = ANTLR3_FAILED_PREDICATE_EXCEPTION;
-                EXCEPTION->message      = (void *)" PARSER_STATE->v2_5() || PARSER_STATE->sygus() ";
+                EXCEPTION->message      = (void *)" PARSER_STATE->v2_5(false) || PARSER_STATE->sygus() ";
                 EXCEPTION->ruleName	 = (void *)"STRING_LITERAL_2_5";
 
 
@@ -39158,7 +40769,7 @@ void mSTRING_LITERAL_2_5(pSmt2Lexer ctx)
         }
 
 
-        // ../../../../../../src/parser/smt2/Smt2.g:3051:9: (~ ( '\"' ) | '\"\"' )*
+        // ../../../../src/parser/smt2/Smt2.g:3263:9: (~ ( '\"' ) | '\"\"' )*
 
         for (;;)
         {
@@ -39189,7 +40800,7 @@ void mSTRING_LITERAL_2_5(pSmt2Lexer ctx)
             switch (alt12)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:3051:10: ~ ( '\"' )
+        	    // ../../../../src/parser/smt2/Smt2.g:3263:10: ~ ( '\"' )
         	    {
         	        if ( ((LA(1) >= 0x0000) && (LA(1) <= '!')) || ((LA(1) >= '#') && (LA(1) <= 0xFFFF)) )
         	        {
@@ -39209,9 +40820,9 @@ void mSTRING_LITERAL_2_5(pSmt2Lexer ctx)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:3051:19: '\"\"'
+        	    // ../../../../src/parser/smt2/Smt2.g:3263:19: '\"\"'
         	    {
-        	        MATCHS(lit_118);
+        	        MATCHS(lit_123);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleSTRING_LITERAL_2_5Ex;
@@ -39249,7 +40860,7 @@ void mSTRING_LITERAL_2_5(pSmt2Lexer ctx)
 }
 // $ANTLR end STRING_LITERAL_2_5
 
-//   Comes from: 3053:2: ({...}? => '\"' ( ALPHA | DIGIT )* '\"' )
+//   Comes from: 3265:2: ({...}? => '\"' ( ALPHA | DIGIT )* '\"' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SYGUS_QUOTED_LITERAL
@@ -39269,8 +40880,8 @@ void mSYGUS_QUOTED_LITERAL(pSmt2Lexer ctx)
     _type	    = SYGUS_QUOTED_LITERAL;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:3053:2: ({...}? => '\"' ( ALPHA | DIGIT )* '\"' )
-    // ../../../../../../src/parser/smt2/Smt2.g:3053:4: {...}? => '\"' ( ALPHA | DIGIT )* '\"'
+    // ../../../../src/parser/smt2/Smt2.g:3265:2: ({...}? => '\"' ( ALPHA | DIGIT )* '\"' )
+    // ../../../../src/parser/smt2/Smt2.g:3265:4: {...}? => '\"' ( ALPHA | DIGIT )* '\"'
     {
         if ( !(( PARSER_STATE->sygus() )) )
         {
@@ -39289,7 +40900,7 @@ void mSYGUS_QUOTED_LITERAL(pSmt2Lexer ctx)
         }
 
 
-        // ../../../../../../src/parser/smt2/Smt2.g:3054:8: ( ALPHA | DIGIT )*
+        // ../../../../src/parser/smt2/Smt2.g:3266:8: ( ALPHA | DIGIT )*
 
         for (;;)
         {
@@ -39368,7 +40979,7 @@ void mSYGUS_QUOTED_LITERAL(pSmt2Lexer ctx)
             switch (alt13)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:
+        	    // ../../../../src/parser/smt2/Smt2.g:
         	    {
         	        if ( ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'A') && (LA(1) <= 'Z')) || ((LA(1) >= 'a') && (LA(1) <= 'z')) )
         	        {
@@ -39414,7 +41025,7 @@ void mSYGUS_QUOTED_LITERAL(pSmt2Lexer ctx)
 }
 // $ANTLR end SYGUS_QUOTED_LITERAL
 
-//   Comes from: 3061:3: ( ';' (~ ( '\\n' | '\\r' ) )* )
+//   Comes from: 3273:3: ( ';' (~ ( '\\n' | '\\r' ) )* )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start COMMENT
@@ -39434,8 +41045,8 @@ void mCOMMENT(pSmt2Lexer ctx)
     _type	    = COMMENT;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:3061:3: ( ';' (~ ( '\\n' | '\\r' ) )* )
-    // ../../../../../../src/parser/smt2/Smt2.g:3061:5: ';' (~ ( '\\n' | '\\r' ) )*
+    // ../../../../src/parser/smt2/Smt2.g:3273:3: ( ';' (~ ( '\\n' | '\\r' ) )* )
+    // ../../../../src/parser/smt2/Smt2.g:3273:5: ';' (~ ( '\\n' | '\\r' ) )*
     {
         MATCHC(';');
         if  (HASEXCEPTION())
@@ -39444,7 +41055,7 @@ void mCOMMENT(pSmt2Lexer ctx)
         }
 
 
-        // ../../../../../../src/parser/smt2/Smt2.g:3061:9: (~ ( '\\n' | '\\r' ) )*
+        // ../../../../src/parser/smt2/Smt2.g:3273:9: (~ ( '\\n' | '\\r' ) )*
 
         for (;;)
         {
@@ -39462,7 +41073,7 @@ void mCOMMENT(pSmt2Lexer ctx)
             switch (alt14)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:
+        	    // ../../../../src/parser/smt2/Smt2.g:
         	    {
         	        if ( ((LA(1) >= 0x0000) && (LA(1) <= '\t')) || ((LA(1) >= 0x000B) && (LA(1) <= '\f')) || ((LA(1) >= 0x000E) && (LA(1) <= 0xFFFF)) )
         	        {
@@ -39506,7 +41117,7 @@ void mCOMMENT(pSmt2Lexer ctx)
 }
 // $ANTLR end COMMENT
 
-//   Comes from: 3070:3: ( 'a' .. 'z' | 'A' .. 'Z' )
+//   Comes from: 3282:3: ( 'a' .. 'z' | 'A' .. 'Z' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start ALPHA
@@ -39524,8 +41135,8 @@ void mALPHA(pSmt2Lexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:3070:3: ( 'a' .. 'z' | 'A' .. 'Z' )
-    // ../../../../../../src/parser/smt2/Smt2.g:
+    // ../../../../src/parser/smt2/Smt2.g:3282:3: ( 'a' .. 'z' | 'A' .. 'Z' )
+    // ../../../../src/parser/smt2/Smt2.g:
     {
         if ( ((LA(1) >= 'A') && (LA(1) <= 'Z')) || ((LA(1) >= 'a') && (LA(1) <= 'z')) )
         {
@@ -39553,7 +41164,7 @@ void mALPHA(pSmt2Lexer ctx)
 }
 // $ANTLR end ALPHA
 
-//   Comes from: 3076:16: ( '0' .. '9' )
+//   Comes from: 3288:16: ( '0' .. '9' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DIGIT
@@ -39571,8 +41182,8 @@ void mDIGIT(pSmt2Lexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:3076:16: ( '0' .. '9' )
-    // ../../../../../../src/parser/smt2/Smt2.g:
+    // ../../../../src/parser/smt2/Smt2.g:3288:16: ( '0' .. '9' )
+    // ../../../../src/parser/smt2/Smt2.g:
     {
         if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
         {
@@ -39600,7 +41211,7 @@ void mDIGIT(pSmt2Lexer ctx)
 }
 // $ANTLR end DIGIT
 
-//   Comes from: 3075:20: ( DIGIT | 'a' .. 'f' | 'A' .. 'F' )
+//   Comes from: 3287:20: ( DIGIT | 'a' .. 'f' | 'A' .. 'F' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start HEX_DIGIT
@@ -39618,8 +41229,8 @@ void mHEX_DIGIT(pSmt2Lexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:3075:20: ( DIGIT | 'a' .. 'f' | 'A' .. 'F' )
-    // ../../../../../../src/parser/smt2/Smt2.g:
+    // ../../../../src/parser/smt2/Smt2.g:3287:20: ( DIGIT | 'a' .. 'f' | 'A' .. 'F' )
+    // ../../../../src/parser/smt2/Smt2.g:
     {
         if ( ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'A') && (LA(1) <= 'F')) || ((LA(1) >= 'a') && (LA(1) <= 'f')) )
         {
@@ -39647,7 +41258,7 @@ void mHEX_DIGIT(pSmt2Lexer ctx)
 }
 // $ANTLR end HEX_DIGIT
 
-//   Comes from: 3086:3: ( '+' | '-' | '/' | '*' | '=' | '%' | '?' | '.' | '$' | '~' | '&' | '^' | '<' | '>' | '@' )
+//   Comes from: 3298:3: ( '+' | '-' | '/' | '*' | '=' | '%' | '?' | '.' | '$' | '~' | '&' | '^' | '<' | '>' | '@' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE
@@ -39665,8 +41276,8 @@ void mSYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE(pSmt2Lexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:3086:3: ( '+' | '-' | '/' | '*' | '=' | '%' | '?' | '.' | '$' | '~' | '&' | '^' | '<' | '>' | '@' )
-    // ../../../../../../src/parser/smt2/Smt2.g:
+    // ../../../../src/parser/smt2/Smt2.g:3298:3: ( '+' | '-' | '/' | '*' | '=' | '%' | '?' | '.' | '$' | '~' | '&' | '^' | '<' | '>' | '@' )
+    // ../../../../src/parser/smt2/Smt2.g:
     {
         if ( ((LA(1) >= '$') && (LA(1) <= '&')) || ((LA(1) >= '*') && (LA(1) <= '+')) || ((LA(1) >= '-') && (LA(1) <= '/')) || ((LA(1) >= '<') && (LA(1) <= '@')) || LA(1) == '^' || LA(1) == '~' )
         {
@@ -39694,7 +41305,7 @@ void mSYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE(pSmt2Lexer ctx)
 }
 // $ANTLR end SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE
 
-//   Comes from: 3093:3: ( SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE | '_' | '!' )
+//   Comes from: 3305:3: ( SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE | '_' | '!' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SYMBOL_CHAR
@@ -39712,8 +41323,8 @@ void mSYMBOL_CHAR(pSmt2Lexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/smt2/Smt2.g:3093:3: ( SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE | '_' | '!' )
-    // ../../../../../../src/parser/smt2/Smt2.g:
+    // ../../../../src/parser/smt2/Smt2.g:3305:3: ( SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE | '_' | '!' )
+    // ../../../../src/parser/smt2/Smt2.g:
     {
         if ( LA(1) == '!' || ((LA(1) >= '$') && (LA(1) <= '&')) || ((LA(1) >= '*') && (LA(1) <= '+')) || ((LA(1) >= '-') && (LA(1) <= '/')) || ((LA(1) >= '<') && (LA(1) <= '@')) || ((LA(1) >= '^') && (LA(1) <= '_')) || LA(1) == '~' )
         {
@@ -39748,11 +41359,11 @@ static void
 mTokens(pSmt2Lexer ctx)
 {
     {
-        //  ../../../../../../src/parser/smt2/Smt2.g:1:8: ( T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTIONS_TOK | ITE_TOK | LET_TOK | ATTRIBUTE_TOK | LPAREN_TOK | RPAREN_TOK | INDEX_TOK | SET_LOGIC_T [...]
+        //  ../../../../src/parser/smt2/Smt2.g:1:8: ( T__152 | T__153 | T__154 | T__155 | T__156 | T__157 | T__158 | ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTIONS_TOK | ITE_TOK | LET_TOK | ATTRIBUTE_TOK | LPAREN_TOK | RPAREN_TOK | INDEX_TOK | SET_LOGIC_TOK | S [...]
 
         ANTLR3_UINT32 alt15;
 
-        alt15=142;
+        alt15=149;
 
         alt15 = cdfa15.predict(ctx, RECOGNIZER, ISTREAM, &cdfa15);
         if  (HASEXCEPTION())
@@ -39763,10 +41374,10 @@ mTokens(pSmt2Lexer ctx)
         switch (alt15)
         {
     	case 1:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:10: T__145
+    	    // ../../../../src/parser/smt2/Smt2.g:1:10: T__152
     	    {
-    	        /* 1:10: T__145 */
-    	        mT__145(ctx );
+    	        /* 1:10: T__152 */
+    	        mT__152(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -39777,10 +41388,10 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 2:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:17: T__146
+    	    // ../../../../src/parser/smt2/Smt2.g:1:17: T__153
     	    {
-    	        /* 1:17: T__146 */
-    	        mT__146(ctx );
+    	        /* 1:17: T__153 */
+    	        mT__153(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -39791,10 +41402,10 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 3:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:24: T__147
+    	    // ../../../../src/parser/smt2/Smt2.g:1:24: T__154
     	    {
-    	        /* 1:24: T__147 */
-    	        mT__147(ctx );
+    	        /* 1:24: T__154 */
+    	        mT__154(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -39805,10 +41416,10 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 4:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:31: T__148
+    	    // ../../../../src/parser/smt2/Smt2.g:1:31: T__155
     	    {
-    	        /* 1:31: T__148 */
-    	        mT__148(ctx );
+    	        /* 1:31: T__155 */
+    	        mT__155(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -39819,10 +41430,10 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 5:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:38: T__149
+    	    // ../../../../src/parser/smt2/Smt2.g:1:38: T__156
     	    {
-    	        /* 1:38: T__149 */
-    	        mT__149(ctx );
+    	        /* 1:38: T__156 */
+    	        mT__156(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -39833,10 +41444,10 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 6:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:45: T__150
+    	    // ../../../../src/parser/smt2/Smt2.g:1:45: T__157
     	    {
-    	        /* 1:45: T__150 */
-    	        mT__150(ctx );
+    	        /* 1:45: T__157 */
+    	        mT__157(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -39847,10 +41458,10 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 7:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:52: T__151
+    	    // ../../../../src/parser/smt2/Smt2.g:1:52: T__158
     	    {
-    	        /* 1:52: T__151 */
-    	        mT__151(ctx );
+    	        /* 1:52: T__158 */
+    	        mT__158(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -39861,7 +41472,7 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 8:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:59: ASSERT_TOK
+    	    // ../../../../src/parser/smt2/Smt2.g:1:59: ASSERT_TOK
     	    {
     	        /* 1:59: ASSERT_TOK */
     	        mASSERT_TOK(ctx );
@@ -39875,7 +41486,7 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 9:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:70: CHECKSAT_TOK
+    	    // ../../../../src/parser/smt2/Smt2.g:1:70: CHECKSAT_TOK
     	    {
     	        /* 1:70: CHECKSAT_TOK */
     	        mCHECKSAT_TOK(ctx );
@@ -39889,7 +41500,7 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 10:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:83: DECLARE_FUN_TOK
+    	    // ../../../../src/parser/smt2/Smt2.g:1:83: DECLARE_FUN_TOK
     	    {
     	        /* 1:83: DECLARE_FUN_TOK */
     	        mDECLARE_FUN_TOK(ctx );
@@ -39903,7 +41514,7 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 11:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:99: DECLARE_SORT_TOK
+    	    // ../../../../src/parser/smt2/Smt2.g:1:99: DECLARE_SORT_TOK
     	    {
     	        /* 1:99: DECLARE_SORT_TOK */
     	        mDECLARE_SORT_TOK(ctx );
@@ -39917,7 +41528,7 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 12:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:116: DEFINE_FUN_TOK
+    	    // ../../../../src/parser/smt2/Smt2.g:1:116: DEFINE_FUN_TOK
     	    {
     	        /* 1:116: DEFINE_FUN_TOK */
     	        mDEFINE_FUN_TOK(ctx );
@@ -39931,7 +41542,7 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 13:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:131: DEFINE_FUN_REC_TOK
+    	    // ../../../../src/parser/smt2/Smt2.g:1:131: DEFINE_FUN_REC_TOK
     	    {
     	        /* 1:131: DEFINE_FUN_REC_TOK */
     	        mDEFINE_FUN_REC_TOK(ctx );
@@ -39945,7 +41556,7 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 14:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:150: DEFINE_FUNS_REC_TOK
+    	    // ../../../../src/parser/smt2/Smt2.g:1:150: DEFINE_FUNS_REC_TOK
     	    {
     	        /* 1:150: DEFINE_FUNS_REC_TOK */
     	        mDEFINE_FUNS_REC_TOK(ctx );
@@ -39959,7 +41570,7 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 15:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:170: DEFINE_SORT_TOK
+    	    // ../../../../src/parser/smt2/Smt2.g:1:170: DEFINE_SORT_TOK
     	    {
     	        /* 1:170: DEFINE_SORT_TOK */
     	        mDEFINE_SORT_TOK(ctx );
@@ -39973,7 +41584,7 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 16:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:186: GET_VALUE_TOK
+    	    // ../../../../src/parser/smt2/Smt2.g:1:186: GET_VALUE_TOK
     	    {
     	        /* 1:186: GET_VALUE_TOK */
     	        mGET_VALUE_TOK(ctx );
@@ -39987,7 +41598,7 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 17:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:200: GET_ASSIGNMENT_TOK
+    	    // ../../../../src/parser/smt2/Smt2.g:1:200: GET_ASSIGNMENT_TOK
     	    {
     	        /* 1:200: GET_ASSIGNMENT_TOK */
     	        mGET_ASSIGNMENT_TOK(ctx );
@@ -40001,7 +41612,7 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 18:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:219: GET_ASSERTIONS_TOK
+    	    // ../../../../src/parser/smt2/Smt2.g:1:219: GET_ASSERTIONS_TOK
     	    {
     	        /* 1:219: GET_ASSERTIONS_TOK */
     	        mGET_ASSERTIONS_TOK(ctx );
@@ -40015,7 +41626,7 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 19:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:238: GET_PROOF_TOK
+    	    // ../../../../src/parser/smt2/Smt2.g:1:238: GET_PROOF_TOK
     	    {
     	        /* 1:238: GET_PROOF_TOK */
     	        mGET_PROOF_TOK(ctx );
@@ -40029,7 +41640,7 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 20:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:252: GET_UNSAT_CORE_TOK
+    	    // ../../../../src/parser/smt2/Smt2.g:1:252: GET_UNSAT_CORE_TOK
     	    {
     	        /* 1:252: GET_UNSAT_CORE_TOK */
     	        mGET_UNSAT_CORE_TOK(ctx );
@@ -40043,7 +41654,7 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 21:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:271: EXIT_TOK
+    	    // ../../../../src/parser/smt2/Smt2.g:1:271: EXIT_TOK
     	    {
     	        /* 1:271: EXIT_TOK */
     	        mEXIT_TOK(ctx );
@@ -40057,7 +41668,7 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 22:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:280: RESET_TOK
+    	    // ../../../../src/parser/smt2/Smt2.g:1:280: RESET_TOK
     	    {
     	        /* 1:280: RESET_TOK */
     	        mRESET_TOK(ctx );
@@ -40071,7 +41682,7 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 23:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:290: RESET_ASSERTIONS_TOK
+    	    // ../../../../src/parser/smt2/Smt2.g:1:290: RESET_ASSERTIONS_TOK
     	    {
     	        /* 1:290: RESET_ASSERTIONS_TOK */
     	        mRESET_ASSERTIONS_TOK(ctx );
@@ -40085,7 +41696,7 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 24:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:311: ITE_TOK
+    	    // ../../../../src/parser/smt2/Smt2.g:1:311: ITE_TOK
     	    {
     	        /* 1:311: ITE_TOK */
     	        mITE_TOK(ctx );
@@ -40099,7 +41710,7 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 25:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:319: LET_TOK
+    	    // ../../../../src/parser/smt2/Smt2.g:1:319: LET_TOK
     	    {
     	        /* 1:319: LET_TOK */
     	        mLET_TOK(ctx );
@@ -40113,7 +41724,7 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 26:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:327: ATTRIBUTE_TOK
+    	    // ../../../../src/parser/smt2/Smt2.g:1:327: ATTRIBUTE_TOK
     	    {
     	        /* 1:327: ATTRIBUTE_TOK */
     	        mATTRIBUTE_TOK(ctx );
@@ -40127,7 +41738,7 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 27:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:341: LPAREN_TOK
+    	    // ../../../../src/parser/smt2/Smt2.g:1:341: LPAREN_TOK
     	    {
     	        /* 1:341: LPAREN_TOK */
     	        mLPAREN_TOK(ctx );
@@ -40141,7 +41752,7 @@ mTokens(pSmt2Lexer ctx)
     	    }
     	    break;
     	case 28:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:352: RPAREN_TOK
+    	    // ../../../../src/parser/smt2/Smt2.g:1:352: RPAREN_TOK
     	    {
     	        /* 1:352: RPAREN_TOK */
     	        mRPAREN_TOK(ctx );
@@ -40154,11 +41765,109 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 29:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:363: INDEX_TOK
+    	case 29:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:363: INDEX_TOK
+    	    {
+    	        /* 1:363: INDEX_TOK */
+    	        mINDEX_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 30:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:373: SET_LOGIC_TOK
+    	    {
+    	        /* 1:373: SET_LOGIC_TOK */
+    	        mSET_LOGIC_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 31:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:387: SET_INFO_TOK
+    	    {
+    	        /* 1:387: SET_INFO_TOK */
+    	        mSET_INFO_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 32:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:400: META_INFO_TOK
+    	    {
+    	        /* 1:400: META_INFO_TOK */
+    	        mMETA_INFO_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 33:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:414: GET_INFO_TOK
+    	    {
+    	        /* 1:414: GET_INFO_TOK */
+    	        mGET_INFO_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 34:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:427: SET_OPTION_TOK
+    	    {
+    	        /* 1:427: SET_OPTION_TOK */
+    	        mSET_OPTION_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 35:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:442: GET_OPTION_TOK
+    	    {
+    	        /* 1:442: GET_OPTION_TOK */
+    	        mGET_OPTION_TOK(ctx );
+    	        if  (HASEXCEPTION())
+    	        {
+    	            goto ruleTokensEx;
+    	        }
+
+
+
+    	    }
+    	    break;
+    	case 36:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:457: PUSH_TOK
     	    {
-    	        /* 1:363: INDEX_TOK */
-    	        mINDEX_TOK(ctx );
+    	        /* 1:457: PUSH_TOK */
+    	        mPUSH_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -40168,11 +41877,11 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 30:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:373: SET_LOGIC_TOK
+    	case 37:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:466: POP_TOK
     	    {
-    	        /* 1:373: SET_LOGIC_TOK */
-    	        mSET_LOGIC_TOK(ctx );
+    	        /* 1:466: POP_TOK */
+    	        mPOP_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -40182,11 +41891,11 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 31:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:387: SET_INFO_TOK
+    	case 38:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:474: AS_TOK
     	    {
-    	        /* 1:387: SET_INFO_TOK */
-    	        mSET_INFO_TOK(ctx );
+    	        /* 1:474: AS_TOK */
+    	        mAS_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -40196,11 +41905,11 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 32:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:400: META_INFO_TOK
+    	case 39:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:481: CONST_TOK
     	    {
-    	        /* 1:400: META_INFO_TOK */
-    	        mMETA_INFO_TOK(ctx );
+    	        /* 1:481: CONST_TOK */
+    	        mCONST_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -40210,11 +41919,11 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 33:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:414: GET_INFO_TOK
+    	case 40:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:491: DECLARE_CODATATYPE_TOK
     	    {
-    	        /* 1:414: GET_INFO_TOK */
-    	        mGET_INFO_TOK(ctx );
+    	        /* 1:491: DECLARE_CODATATYPE_TOK */
+    	        mDECLARE_CODATATYPE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -40224,11 +41933,11 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 34:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:427: SET_OPTION_TOK
+    	case 41:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:514: DECLARE_DATATYPE_TOK
     	    {
-    	        /* 1:427: SET_OPTION_TOK */
-    	        mSET_OPTION_TOK(ctx );
+    	        /* 1:514: DECLARE_DATATYPE_TOK */
+    	        mDECLARE_DATATYPE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -40238,11 +41947,11 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 35:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:442: GET_OPTION_TOK
+    	case 42:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:535: DECLARE_DATATYPES_2_5_TOK
     	    {
-    	        /* 1:442: GET_OPTION_TOK */
-    	        mGET_OPTION_TOK(ctx );
+    	        /* 1:535: DECLARE_DATATYPES_2_5_TOK */
+    	        mDECLARE_DATATYPES_2_5_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -40252,11 +41961,11 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 36:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:457: PUSH_TOK
+    	case 43:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:561: DECLARE_DATATYPES_TOK
     	    {
-    	        /* 1:457: PUSH_TOK */
-    	        mPUSH_TOK(ctx );
+    	        /* 1:561: DECLARE_DATATYPES_TOK */
+    	        mDECLARE_DATATYPES_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -40266,11 +41975,11 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 37:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:466: POP_TOK
+    	case 44:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:583: DECLARE_CODATATYPES_2_5_TOK
     	    {
-    	        /* 1:466: POP_TOK */
-    	        mPOP_TOK(ctx );
+    	        /* 1:583: DECLARE_CODATATYPES_2_5_TOK */
+    	        mDECLARE_CODATATYPES_2_5_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -40280,11 +41989,11 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 38:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:474: AS_TOK
+    	case 45:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:611: DECLARE_CODATATYPES_TOK
     	    {
-    	        /* 1:474: AS_TOK */
-    	        mAS_TOK(ctx );
+    	        /* 1:611: DECLARE_CODATATYPES_TOK */
+    	        mDECLARE_CODATATYPES_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -40294,11 +42003,11 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 39:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:481: CONST_TOK
+    	case 46:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:635: PAR_TOK
     	    {
-    	        /* 1:481: CONST_TOK */
-    	        mCONST_TOK(ctx );
+    	        /* 1:635: PAR_TOK */
+    	        mPAR_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -40308,11 +42017,11 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 40:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:491: DECLARE_DATATYPES_TOK
+    	case 47:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:643: TESTER_TOK
     	    {
-    	        /* 1:491: DECLARE_DATATYPES_TOK */
-    	        mDECLARE_DATATYPES_TOK(ctx );
+    	        /* 1:643: TESTER_TOK */
+    	        mTESTER_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -40322,11 +42031,11 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 41:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:513: DECLARE_CODATATYPES_TOK
+    	case 48:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:654: MATCH_TOK
     	    {
-    	        /* 1:513: DECLARE_CODATATYPES_TOK */
-    	        mDECLARE_CODATATYPES_TOK(ctx );
+    	        /* 1:654: MATCH_TOK */
+    	        mMATCH_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
     	            goto ruleTokensEx;
@@ -40336,10 +42045,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 42:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:537: GET_MODEL_TOK
+    	case 49:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:664: GET_MODEL_TOK
     	    {
-    	        /* 1:537: GET_MODEL_TOK */
+    	        /* 1:664: GET_MODEL_TOK */
     	        mGET_MODEL_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40350,10 +42059,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 43:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:551: ECHO_TOK
+    	case 50:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:678: ECHO_TOK
     	    {
-    	        /* 1:551: ECHO_TOK */
+    	        /* 1:678: ECHO_TOK */
     	        mECHO_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40364,10 +42073,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 44:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:560: REWRITE_RULE_TOK
+    	case 51:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:687: REWRITE_RULE_TOK
     	    {
-    	        /* 1:560: REWRITE_RULE_TOK */
+    	        /* 1:687: REWRITE_RULE_TOK */
     	        mREWRITE_RULE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40378,10 +42087,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 45:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:577: REDUCTION_RULE_TOK
+    	case 52:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:704: REDUCTION_RULE_TOK
     	    {
-    	        /* 1:577: REDUCTION_RULE_TOK */
+    	        /* 1:704: REDUCTION_RULE_TOK */
     	        mREDUCTION_RULE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40392,10 +42101,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 46:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:596: PROPAGATION_RULE_TOK
+    	case 53:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:723: PROPAGATION_RULE_TOK
     	    {
-    	        /* 1:596: PROPAGATION_RULE_TOK */
+    	        /* 1:723: PROPAGATION_RULE_TOK */
     	        mPROPAGATION_RULE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40406,10 +42115,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 47:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:617: DECLARE_SORTS_TOK
+    	case 54:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:744: DECLARE_SORTS_TOK
     	    {
-    	        /* 1:617: DECLARE_SORTS_TOK */
+    	        /* 1:744: DECLARE_SORTS_TOK */
     	        mDECLARE_SORTS_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40420,10 +42129,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 48:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:635: DECLARE_FUNS_TOK
+    	case 55:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:762: DECLARE_FUNS_TOK
     	    {
-    	        /* 1:635: DECLARE_FUNS_TOK */
+    	        /* 1:762: DECLARE_FUNS_TOK */
     	        mDECLARE_FUNS_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40434,10 +42143,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 49:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:652: DECLARE_PREDS_TOK
+    	case 56:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:779: DECLARE_PREDS_TOK
     	    {
-    	        /* 1:652: DECLARE_PREDS_TOK */
+    	        /* 1:779: DECLARE_PREDS_TOK */
     	        mDECLARE_PREDS_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40448,10 +42157,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 50:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:670: DEFINE_TOK
+    	case 57:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:797: DEFINE_TOK
     	    {
-    	        /* 1:670: DEFINE_TOK */
+    	        /* 1:797: DEFINE_TOK */
     	        mDEFINE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40462,10 +42171,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 51:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:681: DECLARE_CONST_TOK
+    	case 58:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:808: DECLARE_CONST_TOK
     	    {
-    	        /* 1:681: DECLARE_CONST_TOK */
+    	        /* 1:808: DECLARE_CONST_TOK */
     	        mDECLARE_CONST_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40476,10 +42185,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 52:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:699: DEFINE_CONST_TOK
+    	case 59:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:826: DEFINE_CONST_TOK
     	    {
-    	        /* 1:699: DEFINE_CONST_TOK */
+    	        /* 1:826: DEFINE_CONST_TOK */
     	        mDEFINE_CONST_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40490,10 +42199,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 53:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:716: SIMPLIFY_TOK
+    	case 60:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:843: SIMPLIFY_TOK
     	    {
-    	        /* 1:716: SIMPLIFY_TOK */
+    	        /* 1:843: SIMPLIFY_TOK */
     	        mSIMPLIFY_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40504,10 +42213,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 54:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:729: INCLUDE_TOK
+    	case 61:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:856: INCLUDE_TOK
     	    {
-    	        /* 1:729: INCLUDE_TOK */
+    	        /* 1:856: INCLUDE_TOK */
     	        mINCLUDE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40518,10 +42227,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 55:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:741: GET_QE_TOK
+    	case 62:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:868: GET_QE_TOK
     	    {
-    	        /* 1:741: GET_QE_TOK */
+    	        /* 1:868: GET_QE_TOK */
     	        mGET_QE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40532,10 +42241,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 56:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:752: GET_QE_DISJUNCT_TOK
+    	case 63:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:879: GET_QE_DISJUNCT_TOK
     	    {
-    	        /* 1:752: GET_QE_DISJUNCT_TOK */
+    	        /* 1:879: GET_QE_DISJUNCT_TOK */
     	        mGET_QE_DISJUNCT_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40546,10 +42255,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 57:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:772: SYNTH_FUN_TOK
+    	case 64:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:899: SYNTH_FUN_TOK
     	    {
-    	        /* 1:772: SYNTH_FUN_TOK */
+    	        /* 1:899: SYNTH_FUN_TOK */
     	        mSYNTH_FUN_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40560,10 +42269,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 58:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:786: SYNTH_INV_TOK
+    	case 65:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:913: SYNTH_INV_TOK
     	    {
-    	        /* 1:786: SYNTH_INV_TOK */
+    	        /* 1:913: SYNTH_INV_TOK */
     	        mSYNTH_INV_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40574,10 +42283,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 59:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:800: CHECK_SYNTH_TOK
+    	case 66:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:927: CHECK_SYNTH_TOK
     	    {
-    	        /* 1:800: CHECK_SYNTH_TOK */
+    	        /* 1:927: CHECK_SYNTH_TOK */
     	        mCHECK_SYNTH_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40588,10 +42297,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 60:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:816: DECLARE_VAR_TOK
+    	case 67:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:943: DECLARE_VAR_TOK
     	    {
-    	        /* 1:816: DECLARE_VAR_TOK */
+    	        /* 1:943: DECLARE_VAR_TOK */
     	        mDECLARE_VAR_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40602,10 +42311,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 61:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:832: DECLARE_PRIMED_VAR_TOK
+    	case 68:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:959: DECLARE_PRIMED_VAR_TOK
     	    {
-    	        /* 1:832: DECLARE_PRIMED_VAR_TOK */
+    	        /* 1:959: DECLARE_PRIMED_VAR_TOK */
     	        mDECLARE_PRIMED_VAR_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40616,10 +42325,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 62:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:855: CONSTRAINT_TOK
+    	case 69:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:982: CONSTRAINT_TOK
     	    {
-    	        /* 1:855: CONSTRAINT_TOK */
+    	        /* 1:982: CONSTRAINT_TOK */
     	        mCONSTRAINT_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40630,10 +42339,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 63:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:870: INV_CONSTRAINT_TOK
+    	case 70:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:997: INV_CONSTRAINT_TOK
     	    {
-    	        /* 1:870: INV_CONSTRAINT_TOK */
+    	        /* 1:997: INV_CONSTRAINT_TOK */
     	        mINV_CONSTRAINT_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40644,10 +42353,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 64:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:889: SET_OPTIONS_TOK
+    	case 71:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1016: SET_OPTIONS_TOK
     	    {
-    	        /* 1:889: SET_OPTIONS_TOK */
+    	        /* 1:1016: SET_OPTIONS_TOK */
     	        mSET_OPTIONS_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40658,10 +42367,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 65:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:905: SYGUS_ENUM_TOK
+    	case 72:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1032: SYGUS_ENUM_TOK
     	    {
-    	        /* 1:905: SYGUS_ENUM_TOK */
+    	        /* 1:1032: SYGUS_ENUM_TOK */
     	        mSYGUS_ENUM_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40672,10 +42381,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 66:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:920: SYGUS_ENUM_CONS_TOK
+    	case 73:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1047: SYGUS_ENUM_CONS_TOK
     	    {
-    	        /* 1:920: SYGUS_ENUM_CONS_TOK */
+    	        /* 1:1047: SYGUS_ENUM_CONS_TOK */
     	        mSYGUS_ENUM_CONS_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40686,10 +42395,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 67:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:940: SYGUS_CONSTANT_TOK
+    	case 74:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1067: SYGUS_CONSTANT_TOK
     	    {
-    	        /* 1:940: SYGUS_CONSTANT_TOK */
+    	        /* 1:1067: SYGUS_CONSTANT_TOK */
     	        mSYGUS_CONSTANT_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40700,10 +42409,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 68:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:959: SYGUS_VARIABLE_TOK
+    	case 75:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1086: SYGUS_VARIABLE_TOK
     	    {
-    	        /* 1:959: SYGUS_VARIABLE_TOK */
+    	        /* 1:1086: SYGUS_VARIABLE_TOK */
     	        mSYGUS_VARIABLE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40714,10 +42423,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 69:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:978: SYGUS_INPUT_VARIABLE_TOK
+    	case 76:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1105: SYGUS_INPUT_VARIABLE_TOK
     	    {
-    	        /* 1:978: SYGUS_INPUT_VARIABLE_TOK */
+    	        /* 1:1105: SYGUS_INPUT_VARIABLE_TOK */
     	        mSYGUS_INPUT_VARIABLE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40728,10 +42437,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 70:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1003: SYGUS_LOCAL_VARIABLE_TOK
+    	case 77:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1130: SYGUS_LOCAL_VARIABLE_TOK
     	    {
-    	        /* 1:1003: SYGUS_LOCAL_VARIABLE_TOK */
+    	        /* 1:1130: SYGUS_LOCAL_VARIABLE_TOK */
     	        mSYGUS_LOCAL_VARIABLE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40742,10 +42451,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 71:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1028: ATTRIBUTE_PATTERN_TOK
+    	case 78:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1155: ATTRIBUTE_PATTERN_TOK
     	    {
-    	        /* 1:1028: ATTRIBUTE_PATTERN_TOK */
+    	        /* 1:1155: ATTRIBUTE_PATTERN_TOK */
     	        mATTRIBUTE_PATTERN_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40756,10 +42465,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 72:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1050: ATTRIBUTE_NO_PATTERN_TOK
+    	case 79:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1177: ATTRIBUTE_NO_PATTERN_TOK
     	    {
-    	        /* 1:1050: ATTRIBUTE_NO_PATTERN_TOK */
+    	        /* 1:1177: ATTRIBUTE_NO_PATTERN_TOK */
     	        mATTRIBUTE_NO_PATTERN_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40770,10 +42479,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 73:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1075: ATTRIBUTE_NAMED_TOK
+    	case 80:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1202: ATTRIBUTE_NAMED_TOK
     	    {
-    	        /* 1:1075: ATTRIBUTE_NAMED_TOK */
+    	        /* 1:1202: ATTRIBUTE_NAMED_TOK */
     	        mATTRIBUTE_NAMED_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40784,10 +42493,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 74:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1095: ATTRIBUTE_INST_LEVEL
+    	case 81:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1222: ATTRIBUTE_INST_LEVEL
     	    {
-    	        /* 1:1095: ATTRIBUTE_INST_LEVEL */
+    	        /* 1:1222: ATTRIBUTE_INST_LEVEL */
     	        mATTRIBUTE_INST_LEVEL(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40798,10 +42507,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 75:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1116: ATTRIBUTE_RR_PRIORITY
+    	case 82:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1243: ATTRIBUTE_RR_PRIORITY
     	    {
-    	        /* 1:1116: ATTRIBUTE_RR_PRIORITY */
+    	        /* 1:1243: ATTRIBUTE_RR_PRIORITY */
     	        mATTRIBUTE_RR_PRIORITY(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40812,10 +42521,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 76:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1138: AMPERSAND_TOK
+    	case 83:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1265: AMPERSAND_TOK
     	    {
-    	        /* 1:1138: AMPERSAND_TOK */
+    	        /* 1:1265: AMPERSAND_TOK */
     	        mAMPERSAND_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40826,10 +42535,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 77:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1152: AND_TOK
+    	case 84:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1279: AND_TOK
     	    {
-    	        /* 1:1152: AND_TOK */
+    	        /* 1:1279: AND_TOK */
     	        mAND_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40840,10 +42549,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 78:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1160: AT_TOK
+    	case 85:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1287: AT_TOK
     	    {
-    	        /* 1:1160: AT_TOK */
+    	        /* 1:1287: AT_TOK */
     	        mAT_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40854,10 +42563,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 79:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1167: DISTINCT_TOK
+    	case 86:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1294: DISTINCT_TOK
     	    {
-    	        /* 1:1167: DISTINCT_TOK */
+    	        /* 1:1294: DISTINCT_TOK */
     	        mDISTINCT_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40868,10 +42577,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 80:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1180: DIV_TOK
+    	case 87:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1307: DIV_TOK
     	    {
-    	        /* 1:1180: DIV_TOK */
+    	        /* 1:1307: DIV_TOK */
     	        mDIV_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40882,10 +42591,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 81:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1188: EQUAL_TOK
+    	case 88:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1315: EQUAL_TOK
     	    {
-    	        /* 1:1188: EQUAL_TOK */
+    	        /* 1:1315: EQUAL_TOK */
     	        mEQUAL_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40896,10 +42605,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 82:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1198: EXISTS_TOK
+    	case 89:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1325: EXISTS_TOK
     	    {
-    	        /* 1:1198: EXISTS_TOK */
+    	        /* 1:1325: EXISTS_TOK */
     	        mEXISTS_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40910,10 +42619,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 83:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1209: FORALL_TOK
+    	case 90:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1336: FORALL_TOK
     	    {
-    	        /* 1:1209: FORALL_TOK */
+    	        /* 1:1336: FORALL_TOK */
     	        mFORALL_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40924,10 +42633,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 84:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1220: GREATER_THAN_TOK
+    	case 91:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1347: GREATER_THAN_TOK
     	    {
-    	        /* 1:1220: GREATER_THAN_TOK */
+    	        /* 1:1347: GREATER_THAN_TOK */
     	        mGREATER_THAN_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40938,10 +42647,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 85:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1237: GREATER_THAN_EQUAL_TOK
+    	case 92:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1364: GREATER_THAN_EQUAL_TOK
     	    {
-    	        /* 1:1237: GREATER_THAN_EQUAL_TOK */
+    	        /* 1:1364: GREATER_THAN_EQUAL_TOK */
     	        mGREATER_THAN_EQUAL_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40952,10 +42661,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 86:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1260: IMPLIES_TOK
+    	case 93:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1387: IMPLIES_TOK
     	    {
-    	        /* 1:1260: IMPLIES_TOK */
+    	        /* 1:1387: IMPLIES_TOK */
     	        mIMPLIES_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40966,10 +42675,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 87:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1272: LESS_THAN_TOK
+    	case 94:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1399: LESS_THAN_TOK
     	    {
-    	        /* 1:1272: LESS_THAN_TOK */
+    	        /* 1:1399: LESS_THAN_TOK */
     	        mLESS_THAN_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40980,10 +42689,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 88:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1286: LESS_THAN_EQUAL_TOK
+    	case 95:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1413: LESS_THAN_EQUAL_TOK
     	    {
-    	        /* 1:1286: LESS_THAN_EQUAL_TOK */
+    	        /* 1:1413: LESS_THAN_EQUAL_TOK */
     	        mLESS_THAN_EQUAL_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -40994,10 +42703,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 89:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1306: MINUS_TOK
+    	case 96:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1433: MINUS_TOK
     	    {
-    	        /* 1:1306: MINUS_TOK */
+    	        /* 1:1433: MINUS_TOK */
     	        mMINUS_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41008,10 +42717,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 90:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1316: NOT_TOK
+    	case 97:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1443: NOT_TOK
     	    {
-    	        /* 1:1316: NOT_TOK */
+    	        /* 1:1443: NOT_TOK */
     	        mNOT_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41022,10 +42731,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 91:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1324: OR_TOK
+    	case 98:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1451: OR_TOK
     	    {
-    	        /* 1:1324: OR_TOK */
+    	        /* 1:1451: OR_TOK */
     	        mOR_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41036,10 +42745,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 92:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1331: PLUS_TOK
+    	case 99:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1458: PLUS_TOK
     	    {
-    	        /* 1:1331: PLUS_TOK */
+    	        /* 1:1458: PLUS_TOK */
     	        mPLUS_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41050,10 +42759,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 93:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1340: STAR_TOK
+    	case 100:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1467: STAR_TOK
     	    {
-    	        /* 1:1340: STAR_TOK */
+    	        /* 1:1467: STAR_TOK */
     	        mSTAR_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41064,10 +42773,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 94:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1349: XOR_TOK
+    	case 101:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1476: XOR_TOK
     	    {
-    	        /* 1:1349: XOR_TOK */
+    	        /* 1:1476: XOR_TOK */
     	        mXOR_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41078,10 +42787,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 95:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1357: DIVISIBLE_TOK
+    	case 102:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1484: DIVISIBLE_TOK
     	    {
-    	        /* 1:1357: DIVISIBLE_TOK */
+    	        /* 1:1484: DIVISIBLE_TOK */
     	        mDIVISIBLE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41092,10 +42801,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 96:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1371: BV2NAT_TOK
+    	case 103:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1498: BV2NAT_TOK
     	    {
-    	        /* 1:1371: BV2NAT_TOK */
+    	        /* 1:1498: BV2NAT_TOK */
     	        mBV2NAT_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41106,10 +42815,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 97:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1382: INT2BV_TOK
+    	case 104:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1509: INT2BV_TOK
     	    {
-    	        /* 1:1382: INT2BV_TOK */
+    	        /* 1:1509: INT2BV_TOK */
     	        mINT2BV_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41120,10 +42829,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 98:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1393: RENOSTR_TOK
+    	case 105:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1520: RENOSTR_TOK
     	    {
-    	        /* 1:1393: RENOSTR_TOK */
+    	        /* 1:1520: RENOSTR_TOK */
     	        mRENOSTR_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41134,10 +42843,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 99:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1405: REALLCHAR_TOK
+    	case 106:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1532: REALLCHAR_TOK
     	    {
-    	        /* 1:1405: REALLCHAR_TOK */
+    	        /* 1:1532: REALLCHAR_TOK */
     	        mREALLCHAR_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41148,10 +42857,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 100:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1419: DTSIZE_TOK
+    	case 107:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1546: DTSIZE_TOK
     	    {
-    	        /* 1:1419: DTSIZE_TOK */
+    	        /* 1:1546: DTSIZE_TOK */
     	        mDTSIZE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41162,10 +42871,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 101:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1430: FMFCARD_TOK
+    	case 108:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1557: FMFCARD_TOK
     	    {
-    	        /* 1:1430: FMFCARD_TOK */
+    	        /* 1:1557: FMFCARD_TOK */
     	        mFMFCARD_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41176,10 +42885,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 102:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1442: FMFCARDVAL_TOK
+    	case 109:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1569: FMFCARDVAL_TOK
     	    {
-    	        /* 1:1442: FMFCARDVAL_TOK */
+    	        /* 1:1569: FMFCARDVAL_TOK */
     	        mFMFCARDVAL_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41190,10 +42899,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 103:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1457: INST_CLOSURE_TOK
+    	case 110:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1584: INST_CLOSURE_TOK
     	    {
-    	        /* 1:1457: INST_CLOSURE_TOK */
+    	        /* 1:1584: INST_CLOSURE_TOK */
     	        mINST_CLOSURE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41204,10 +42913,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 104:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1474: EMPTYSET_TOK
+    	case 111:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1601: EMPTYSET_TOK
     	    {
-    	        /* 1:1474: EMPTYSET_TOK */
+    	        /* 1:1601: EMPTYSET_TOK */
     	        mEMPTYSET_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41218,10 +42927,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 105:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1487: UNIVSET_TOK
+    	case 112:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1614: UNIVSET_TOK
     	    {
-    	        /* 1:1487: UNIVSET_TOK */
+    	        /* 1:1614: UNIVSET_TOK */
     	        mUNIVSET_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41232,10 +42941,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 106:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1499: NILREF_TOK
+    	case 113:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1626: NILREF_TOK
     	    {
-    	        /* 1:1499: NILREF_TOK */
+    	        /* 1:1626: NILREF_TOK */
     	        mNILREF_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41246,10 +42955,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 107:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1510: FP_PINF_TOK
+    	case 114:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1637: FP_PINF_TOK
     	    {
-    	        /* 1:1510: FP_PINF_TOK */
+    	        /* 1:1637: FP_PINF_TOK */
     	        mFP_PINF_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41260,10 +42969,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 108:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1522: FP_NINF_TOK
+    	case 115:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1649: FP_NINF_TOK
     	    {
-    	        /* 1:1522: FP_NINF_TOK */
+    	        /* 1:1649: FP_NINF_TOK */
     	        mFP_NINF_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41274,10 +42983,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 109:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1534: FP_PZERO_TOK
+    	case 116:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1661: FP_PZERO_TOK
     	    {
-    	        /* 1:1534: FP_PZERO_TOK */
+    	        /* 1:1661: FP_PZERO_TOK */
     	        mFP_PZERO_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41288,10 +42997,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 110:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1547: FP_NZERO_TOK
+    	case 117:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1674: FP_NZERO_TOK
     	    {
-    	        /* 1:1547: FP_NZERO_TOK */
+    	        /* 1:1674: FP_NZERO_TOK */
     	        mFP_NZERO_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41302,10 +43011,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 111:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1560: FP_NAN_TOK
+    	case 118:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1687: FP_NAN_TOK
     	    {
-    	        /* 1:1560: FP_NAN_TOK */
+    	        /* 1:1687: FP_NAN_TOK */
     	        mFP_NAN_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41316,10 +43025,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 112:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1571: FP_TO_FP_TOK
+    	case 119:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1698: FP_TO_FP_TOK
     	    {
-    	        /* 1:1571: FP_TO_FP_TOK */
+    	        /* 1:1698: FP_TO_FP_TOK */
     	        mFP_TO_FP_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41330,10 +43039,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 113:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1584: FP_TO_FPBV_TOK
+    	case 120:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1711: FP_TO_FPBV_TOK
     	    {
-    	        /* 1:1584: FP_TO_FPBV_TOK */
+    	        /* 1:1711: FP_TO_FPBV_TOK */
     	        mFP_TO_FPBV_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41344,10 +43053,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 114:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1599: FP_TO_FPFP_TOK
+    	case 121:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1726: FP_TO_FPFP_TOK
     	    {
-    	        /* 1:1599: FP_TO_FPFP_TOK */
+    	        /* 1:1726: FP_TO_FPFP_TOK */
     	        mFP_TO_FPFP_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41358,10 +43067,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 115:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1614: FP_TO_FPR_TOK
+    	case 122:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1741: FP_TO_FPR_TOK
     	    {
-    	        /* 1:1614: FP_TO_FPR_TOK */
+    	        /* 1:1741: FP_TO_FPR_TOK */
     	        mFP_TO_FPR_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41372,10 +43081,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 116:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1628: FP_TO_FPS_TOK
+    	case 123:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1755: FP_TO_FPS_TOK
     	    {
-    	        /* 1:1628: FP_TO_FPS_TOK */
+    	        /* 1:1755: FP_TO_FPS_TOK */
     	        mFP_TO_FPS_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41386,10 +43095,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 117:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1642: FP_TO_FPU_TOK
+    	case 124:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1769: FP_TO_FPU_TOK
     	    {
-    	        /* 1:1642: FP_TO_FPU_TOK */
+    	        /* 1:1769: FP_TO_FPU_TOK */
     	        mFP_TO_FPU_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41400,10 +43109,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 118:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1656: FP_TO_UBV_TOK
+    	case 125:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1783: FP_TO_UBV_TOK
     	    {
-    	        /* 1:1656: FP_TO_UBV_TOK */
+    	        /* 1:1783: FP_TO_UBV_TOK */
     	        mFP_TO_UBV_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41414,10 +43123,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 119:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1670: FP_TO_SBV_TOK
+    	case 126:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1797: FP_TO_SBV_TOK
     	    {
-    	        /* 1:1670: FP_TO_SBV_TOK */
+    	        /* 1:1797: FP_TO_SBV_TOK */
     	        mFP_TO_SBV_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41428,10 +43137,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 120:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1684: FP_RNE_TOK
+    	case 127:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1811: FP_RNE_TOK
     	    {
-    	        /* 1:1684: FP_RNE_TOK */
+    	        /* 1:1811: FP_RNE_TOK */
     	        mFP_RNE_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41442,10 +43151,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 121:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1695: FP_RNA_TOK
+    	case 128:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1822: FP_RNA_TOK
     	    {
-    	        /* 1:1695: FP_RNA_TOK */
+    	        /* 1:1822: FP_RNA_TOK */
     	        mFP_RNA_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41456,10 +43165,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 122:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1706: FP_RTP_TOK
+    	case 129:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1833: FP_RTP_TOK
     	    {
-    	        /* 1:1706: FP_RTP_TOK */
+    	        /* 1:1833: FP_RTP_TOK */
     	        mFP_RTP_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41470,10 +43179,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 123:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1717: FP_RTN_TOK
+    	case 130:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1844: FP_RTN_TOK
     	    {
-    	        /* 1:1717: FP_RTN_TOK */
+    	        /* 1:1844: FP_RTN_TOK */
     	        mFP_RTN_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41484,10 +43193,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 124:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1728: FP_RTZ_TOK
+    	case 131:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1855: FP_RTZ_TOK
     	    {
-    	        /* 1:1728: FP_RTZ_TOK */
+    	        /* 1:1855: FP_RTZ_TOK */
     	        mFP_RTZ_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41498,10 +43207,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 125:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1739: FP_RNE_FULL_TOK
+    	case 132:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1866: FP_RNE_FULL_TOK
     	    {
-    	        /* 1:1739: FP_RNE_FULL_TOK */
+    	        /* 1:1866: FP_RNE_FULL_TOK */
     	        mFP_RNE_FULL_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41512,10 +43221,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 126:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1755: FP_RNA_FULL_TOK
+    	case 133:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1882: FP_RNA_FULL_TOK
     	    {
-    	        /* 1:1755: FP_RNA_FULL_TOK */
+    	        /* 1:1882: FP_RNA_FULL_TOK */
     	        mFP_RNA_FULL_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41526,10 +43235,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 127:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1771: FP_RTP_FULL_TOK
+    	case 134:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1898: FP_RTP_FULL_TOK
     	    {
-    	        /* 1:1771: FP_RTP_FULL_TOK */
+    	        /* 1:1898: FP_RTP_FULL_TOK */
     	        mFP_RTP_FULL_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41540,10 +43249,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 128:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1787: FP_RTN_FULL_TOK
+    	case 135:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1914: FP_RTN_FULL_TOK
     	    {
-    	        /* 1:1787: FP_RTN_FULL_TOK */
+    	        /* 1:1914: FP_RTN_FULL_TOK */
     	        mFP_RTN_FULL_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41554,10 +43263,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 129:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1803: FP_RTZ_FULL_TOK
+    	case 136:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1930: FP_RTZ_FULL_TOK
     	    {
-    	        /* 1:1803: FP_RTZ_FULL_TOK */
+    	        /* 1:1930: FP_RTZ_FULL_TOK */
     	        mFP_RTZ_FULL_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41568,10 +43277,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 130:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1819: QUOTED_SYMBOL
+    	case 137:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1946: QUOTED_SYMBOL
     	    {
-    	        /* 1:1819: QUOTED_SYMBOL */
+    	        /* 1:1946: QUOTED_SYMBOL */
     	        mQUOTED_SYMBOL(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41582,10 +43291,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 131:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1833: UNTERMINATED_QUOTED_SYMBOL
+    	case 138:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1960: UNTERMINATED_QUOTED_SYMBOL
     	    {
-    	        /* 1:1833: UNTERMINATED_QUOTED_SYMBOL */
+    	        /* 1:1960: UNTERMINATED_QUOTED_SYMBOL */
     	        mUNTERMINATED_QUOTED_SYMBOL(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41596,10 +43305,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 132:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1860: KEYWORD
+    	case 139:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1987: KEYWORD
     	    {
-    	        /* 1:1860: KEYWORD */
+    	        /* 1:1987: KEYWORD */
     	        mKEYWORD(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41610,10 +43319,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 133:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1868: SIMPLE_SYMBOL
+    	case 140:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:1995: SIMPLE_SYMBOL
     	    {
-    	        /* 1:1868: SIMPLE_SYMBOL */
+    	        /* 1:1995: SIMPLE_SYMBOL */
     	        mSIMPLE_SYMBOL(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41624,10 +43333,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 134:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1882: WHITESPACE
+    	case 141:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:2009: WHITESPACE
     	    {
-    	        /* 1:1882: WHITESPACE */
+    	        /* 1:2009: WHITESPACE */
     	        mWHITESPACE(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41638,10 +43347,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 135:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1893: INTEGER_LITERAL
+    	case 142:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:2020: INTEGER_LITERAL
     	    {
-    	        /* 1:1893: INTEGER_LITERAL */
+    	        /* 1:2020: INTEGER_LITERAL */
     	        mINTEGER_LITERAL(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41652,10 +43361,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 136:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1909: DECIMAL_LITERAL
+    	case 143:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:2036: DECIMAL_LITERAL
     	    {
-    	        /* 1:1909: DECIMAL_LITERAL */
+    	        /* 1:2036: DECIMAL_LITERAL */
     	        mDECIMAL_LITERAL(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41666,10 +43375,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 137:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1925: HEX_LITERAL
+    	case 144:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:2052: HEX_LITERAL
     	    {
-    	        /* 1:1925: HEX_LITERAL */
+    	        /* 1:2052: HEX_LITERAL */
     	        mHEX_LITERAL(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41680,10 +43389,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 138:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1937: BINARY_LITERAL
+    	case 145:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:2064: BINARY_LITERAL
     	    {
-    	        /* 1:1937: BINARY_LITERAL */
+    	        /* 1:2064: BINARY_LITERAL */
     	        mBINARY_LITERAL(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41694,10 +43403,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 139:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1952: STRING_LITERAL_2_0
+    	case 146:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:2079: STRING_LITERAL_2_0
     	    {
-    	        /* 1:1952: STRING_LITERAL_2_0 */
+    	        /* 1:2079: STRING_LITERAL_2_0 */
     	        mSTRING_LITERAL_2_0(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41708,10 +43417,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 140:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1971: STRING_LITERAL_2_5
+    	case 147:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:2098: STRING_LITERAL_2_5
     	    {
-    	        /* 1:1971: STRING_LITERAL_2_5 */
+    	        /* 1:2098: STRING_LITERAL_2_5 */
     	        mSTRING_LITERAL_2_5(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41722,10 +43431,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 141:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:1990: SYGUS_QUOTED_LITERAL
+    	case 148:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:2117: SYGUS_QUOTED_LITERAL
     	    {
-    	        /* 1:1990: SYGUS_QUOTED_LITERAL */
+    	        /* 1:2117: SYGUS_QUOTED_LITERAL */
     	        mSYGUS_QUOTED_LITERAL(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -41736,10 +43445,10 @@ mTokens(pSmt2Lexer ctx)
 
     	    }
     	    break;
-    	case 142:
-    	    // ../../../../../../src/parser/smt2/Smt2.g:1:2011: COMMENT
+    	case 149:
+    	    // ../../../../src/parser/smt2/Smt2.g:1:2138: COMMENT
     	    {
-    	        /* 1:2011: COMMENT */
+    	        /* 1:2138: COMMENT */
     	        mCOMMENT(ctx );
     	        if  (HASEXCEPTION())
     	        {
diff --git a/src/parser/smt2/Smt2Lexer.h b/src/parser/smt2/Smt2Lexer.h
index 7b2505d..8c37f3c 100644
--- a/src/parser/smt2/Smt2Lexer.h
+++ b/src/parser/smt2/Smt2Lexer.h
@@ -1,8 +1,8 @@
 /** \file
  *  This C header file was generated by $ANTLR version 3.4
  *
- *     -  From the grammar source file : ../../../../../../src/parser/smt2/Smt2.g
- *     -                            On : 2017-03-16 01:03:02
+ *     -  From the grammar source file : ../../../../src/parser/smt2/Smt2.g
+ *     -                            On : 2017-07-10 10:01:29
  *     -                 for the lexer : Smt2LexerLexer
  *
  * Editing it, at least manually, is not wise.
@@ -33,25 +33,25 @@ has the callable functions (rules) shown below,
  *
  *  - 
  void
-      pSmt2Lexer->T__145(pSmt2Lexer)
+      pSmt2Lexer->T__152(pSmt2Lexer)
  *  - 
  void
-      pSmt2Lexer->T__146(pSmt2Lexer)
+      pSmt2Lexer->T__153(pSmt2Lexer)
  *  - 
  void
-      pSmt2Lexer->T__147(pSmt2Lexer)
+      pSmt2Lexer->T__154(pSmt2Lexer)
  *  - 
  void
-      pSmt2Lexer->T__148(pSmt2Lexer)
+      pSmt2Lexer->T__155(pSmt2Lexer)
  *  - 
  void
-      pSmt2Lexer->T__149(pSmt2Lexer)
+      pSmt2Lexer->T__156(pSmt2Lexer)
  *  - 
  void
-      pSmt2Lexer->T__150(pSmt2Lexer)
+      pSmt2Lexer->T__157(pSmt2Lexer)
  *  - 
  void
-      pSmt2Lexer->T__151(pSmt2Lexer)
+      pSmt2Lexer->T__158(pSmt2Lexer)
  *  - 
  void
       pSmt2Lexer->ASSERT_TOK(pSmt2Lexer)
@@ -150,12 +150,33 @@ has the callable functions (rules) shown below,
       pSmt2Lexer->CONST_TOK(pSmt2Lexer)
  *  - 
  void
+      pSmt2Lexer->DECLARE_CODATATYPE_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DECLARE_DATATYPE_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->DECLARE_DATATYPES_2_5_TOK(pSmt2Lexer)
+ *  - 
+ void
       pSmt2Lexer->DECLARE_DATATYPES_TOK(pSmt2Lexer)
  *  - 
  void
+      pSmt2Lexer->DECLARE_CODATATYPES_2_5_TOK(pSmt2Lexer)
+ *  - 
+ void
       pSmt2Lexer->DECLARE_CODATATYPES_TOK(pSmt2Lexer)
  *  - 
  void
+      pSmt2Lexer->PAR_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->TESTER_TOK(pSmt2Lexer)
+ *  - 
+ void
+      pSmt2Lexer->MATCH_TOK(pSmt2Lexer)
+ *  - 
+ void
       pSmt2Lexer->GET_MODEL_TOK(pSmt2Lexer)
  *  - 
  void
@@ -594,25 +615,25 @@ struct Smt2Lexer_Ctx_struct
     pANTLR3_LEXER    pLexer;
 
      void
-     (*mT__145)	(struct Smt2Lexer_Ctx_struct * ctx);
+     (*mT__152)	(struct Smt2Lexer_Ctx_struct * ctx);
 
      void
-     (*mT__146)	(struct Smt2Lexer_Ctx_struct * ctx);
+     (*mT__153)	(struct Smt2Lexer_Ctx_struct * ctx);
 
      void
-     (*mT__147)	(struct Smt2Lexer_Ctx_struct * ctx);
+     (*mT__154)	(struct Smt2Lexer_Ctx_struct * ctx);
 
      void
-     (*mT__148)	(struct Smt2Lexer_Ctx_struct * ctx);
+     (*mT__155)	(struct Smt2Lexer_Ctx_struct * ctx);
 
      void
-     (*mT__149)	(struct Smt2Lexer_Ctx_struct * ctx);
+     (*mT__156)	(struct Smt2Lexer_Ctx_struct * ctx);
 
      void
-     (*mT__150)	(struct Smt2Lexer_Ctx_struct * ctx);
+     (*mT__157)	(struct Smt2Lexer_Ctx_struct * ctx);
 
      void
-     (*mT__151)	(struct Smt2Lexer_Ctx_struct * ctx);
+     (*mT__158)	(struct Smt2Lexer_Ctx_struct * ctx);
 
      void
      (*mASSERT_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
@@ -711,12 +732,33 @@ struct Smt2Lexer_Ctx_struct
      (*mCONST_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
 
      void
+     (*mDECLARE_CODATATYPE_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDECLARE_DATATYPE_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mDECLARE_DATATYPES_2_5_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
      (*mDECLARE_DATATYPES_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
 
      void
+     (*mDECLARE_CODATATYPES_2_5_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
      (*mDECLARE_CODATATYPES_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
 
      void
+     (*mPAR_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mTESTER_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
+     (*mMATCH_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
+
+     void
      (*mGET_MODEL_TOK)	(struct Smt2Lexer_Ctx_struct * ctx);
 
      void
@@ -1071,13 +1113,13 @@ lexer
 #undef	Tokens
 #endif
 #define EOF      -1
-#define T__145      145
-#define T__146      146
-#define T__147      147
-#define T__148      148
-#define T__149      149
-#define T__150      150
-#define T__151      151
+#define T__152      152
+#define T__153      153
+#define T__154      154
+#define T__155      155
+#define T__156      156
+#define T__157      157
+#define T__158      158
 #define ALPHA      4
 #define AMPERSAND_TOK      5
 #define AND_TOK      6
@@ -1098,127 +1140,134 @@ lexer
 #define CONSTRAINT_TOK      21
 #define CONST_TOK      22
 #define DECIMAL_LITERAL      23
-#define DECLARE_CODATATYPES_TOK      24
-#define DECLARE_CONST_TOK      25
-#define DECLARE_DATATYPES_TOK      26
-#define DECLARE_FUNS_TOK      27
-#define DECLARE_FUN_TOK      28
-#define DECLARE_PREDS_TOK      29
-#define DECLARE_PRIMED_VAR_TOK      30
-#define DECLARE_SORTS_TOK      31
-#define DECLARE_SORT_TOK      32
-#define DECLARE_VAR_TOK      33
-#define DEFINE_CONST_TOK      34
-#define DEFINE_FUNS_REC_TOK      35
-#define DEFINE_FUN_REC_TOK      36
-#define DEFINE_FUN_TOK      37
-#define DEFINE_SORT_TOK      38
-#define DEFINE_TOK      39
-#define DIGIT      40
-#define DISTINCT_TOK      41
-#define DIVISIBLE_TOK      42
-#define DIV_TOK      43
-#define DTSIZE_TOK      44
-#define ECHO_TOK      45
-#define EMPTYSET_TOK      46
-#define EQUAL_TOK      47
-#define EXISTS_TOK      48
-#define EXIT_TOK      49
-#define FMFCARDVAL_TOK      50
-#define FMFCARD_TOK      51
-#define FORALL_TOK      52
-#define FP_NAN_TOK      53
-#define FP_NINF_TOK      54
-#define FP_NZERO_TOK      55
-#define FP_PINF_TOK      56
-#define FP_PZERO_TOK      57
-#define FP_RNA_FULL_TOK      58
-#define FP_RNA_TOK      59
-#define FP_RNE_FULL_TOK      60
-#define FP_RNE_TOK      61
-#define FP_RTN_FULL_TOK      62
-#define FP_RTN_TOK      63
-#define FP_RTP_FULL_TOK      64
-#define FP_RTP_TOK      65
-#define FP_RTZ_FULL_TOK      66
-#define FP_RTZ_TOK      67
-#define FP_TO_FPBV_TOK      68
-#define FP_TO_FPFP_TOK      69
-#define FP_TO_FPR_TOK      70
-#define FP_TO_FPS_TOK      71
-#define FP_TO_FPU_TOK      72
-#define FP_TO_FP_TOK      73
-#define FP_TO_SBV_TOK      74
-#define FP_TO_UBV_TOK      75
-#define GET_ASSERTIONS_TOK      76
-#define GET_ASSIGNMENT_TOK      77
-#define GET_INFO_TOK      78
-#define GET_MODEL_TOK      79
-#define GET_OPTION_TOK      80
-#define GET_PROOF_TOK      81
-#define GET_QE_DISJUNCT_TOK      82
-#define GET_QE_TOK      83
-#define GET_UNSAT_CORE_TOK      84
-#define GET_VALUE_TOK      85
-#define GREATER_THAN_EQUAL_TOK      86
-#define GREATER_THAN_TOK      87
-#define HEX_DIGIT      88
-#define HEX_LITERAL      89
-#define IMPLIES_TOK      90
-#define INCLUDE_TOK      91
-#define INDEX_TOK      92
-#define INST_CLOSURE_TOK      93
-#define INT2BV_TOK      94
-#define INTEGER_LITERAL      95
-#define INV_CONSTRAINT_TOK      96
-#define ITE_TOK      97
-#define KEYWORD      98
-#define LESS_THAN_EQUAL_TOK      99
-#define LESS_THAN_TOK      100
-#define LET_TOK      101
-#define LPAREN_TOK      102
-#define META_INFO_TOK      103
-#define MINUS_TOK      104
-#define NILREF_TOK      105
-#define NOT_TOK      106
-#define NUMERAL      107
-#define OR_TOK      108
-#define PLUS_TOK      109
-#define POP_TOK      110
-#define PROPAGATION_RULE_TOK      111
-#define PUSH_TOK      112
-#define QUOTED_SYMBOL      113
-#define REALLCHAR_TOK      114
-#define REDUCTION_RULE_TOK      115
-#define RENOSTR_TOK      116
-#define RESET_ASSERTIONS_TOK      117
-#define RESET_TOK      118
-#define REWRITE_RULE_TOK      119
-#define RPAREN_TOK      120
-#define SET_INFO_TOK      121
-#define SET_LOGIC_TOK      122
-#define SET_OPTIONS_TOK      123
-#define SET_OPTION_TOK      124
-#define SIMPLE_SYMBOL      125
-#define SIMPLIFY_TOK      126
-#define STAR_TOK      127
-#define STRING_LITERAL_2_0      128
-#define STRING_LITERAL_2_5      129
-#define SYGUS_CONSTANT_TOK      130
-#define SYGUS_ENUM_CONS_TOK      131
-#define SYGUS_ENUM_TOK      132
-#define SYGUS_INPUT_VARIABLE_TOK      133
-#define SYGUS_LOCAL_VARIABLE_TOK      134
-#define SYGUS_QUOTED_LITERAL      135
-#define SYGUS_VARIABLE_TOK      136
-#define SYMBOL_CHAR      137
-#define SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE      138
-#define SYNTH_FUN_TOK      139
-#define SYNTH_INV_TOK      140
-#define UNIVSET_TOK      141
-#define UNTERMINATED_QUOTED_SYMBOL      142
-#define WHITESPACE      143
-#define XOR_TOK      144
+#define DECLARE_CODATATYPES_2_5_TOK      24
+#define DECLARE_CODATATYPES_TOK      25
+#define DECLARE_CODATATYPE_TOK      26
+#define DECLARE_CONST_TOK      27
+#define DECLARE_DATATYPES_2_5_TOK      28
+#define DECLARE_DATATYPES_TOK      29
+#define DECLARE_DATATYPE_TOK      30
+#define DECLARE_FUNS_TOK      31
+#define DECLARE_FUN_TOK      32
+#define DECLARE_PREDS_TOK      33
+#define DECLARE_PRIMED_VAR_TOK      34
+#define DECLARE_SORTS_TOK      35
+#define DECLARE_SORT_TOK      36
+#define DECLARE_VAR_TOK      37
+#define DEFINE_CONST_TOK      38
+#define DEFINE_FUNS_REC_TOK      39
+#define DEFINE_FUN_REC_TOK      40
+#define DEFINE_FUN_TOK      41
+#define DEFINE_SORT_TOK      42
+#define DEFINE_TOK      43
+#define DIGIT      44
+#define DISTINCT_TOK      45
+#define DIVISIBLE_TOK      46
+#define DIV_TOK      47
+#define DTSIZE_TOK      48
+#define ECHO_TOK      49
+#define EMPTYSET_TOK      50
+#define EQUAL_TOK      51
+#define EXISTS_TOK      52
+#define EXIT_TOK      53
+#define FMFCARDVAL_TOK      54
+#define FMFCARD_TOK      55
+#define FORALL_TOK      56
+#define FP_NAN_TOK      57
+#define FP_NINF_TOK      58
+#define FP_NZERO_TOK      59
+#define FP_PINF_TOK      60
+#define FP_PZERO_TOK      61
+#define FP_RNA_FULL_TOK      62
+#define FP_RNA_TOK      63
+#define FP_RNE_FULL_TOK      64
+#define FP_RNE_TOK      65
+#define FP_RTN_FULL_TOK      66
+#define FP_RTN_TOK      67
+#define FP_RTP_FULL_TOK      68
+#define FP_RTP_TOK      69
+#define FP_RTZ_FULL_TOK      70
+#define FP_RTZ_TOK      71
+#define FP_TO_FPBV_TOK      72
+#define FP_TO_FPFP_TOK      73
+#define FP_TO_FPR_TOK      74
+#define FP_TO_FPS_TOK      75
+#define FP_TO_FPU_TOK      76
+#define FP_TO_FP_TOK      77
+#define FP_TO_SBV_TOK      78
+#define FP_TO_UBV_TOK      79
+#define GET_ASSERTIONS_TOK      80
+#define GET_ASSIGNMENT_TOK      81
+#define GET_INFO_TOK      82
+#define GET_MODEL_TOK      83
+#define GET_OPTION_TOK      84
+#define GET_PROOF_TOK      85
+#define GET_QE_DISJUNCT_TOK      86
+#define GET_QE_TOK      87
+#define GET_UNSAT_CORE_TOK      88
+#define GET_VALUE_TOK      89
+#define GREATER_THAN_EQUAL_TOK      90
+#define GREATER_THAN_TOK      91
+#define HEX_DIGIT      92
+#define HEX_LITERAL      93
+#define IMPLIES_TOK      94
+#define INCLUDE_TOK      95
+#define INDEX_TOK      96
+#define INST_CLOSURE_TOK      97
+#define INT2BV_TOK      98
+#define INTEGER_LITERAL      99
+#define INV_CONSTRAINT_TOK      100
+#define ITE_TOK      101
+#define KEYWORD      102
+#define LESS_THAN_EQUAL_TOK      103
+#define LESS_THAN_TOK      104
+#define LET_TOK      105
+#define LPAREN_TOK      106
+#define MATCH_TOK      107
+#define META_INFO_TOK      108
+#define MINUS_TOK      109
+#define NILREF_TOK      110
+#define NOT_TOK      111
+#define NUMERAL      112
+#define OR_TOK      113
+#define PAR_TOK      114
+#define PLUS_TOK      115
+#define POP_TOK      116
+#define PROPAGATION_RULE_TOK      117
+#define PUSH_TOK      118
+#define QUOTED_SYMBOL      119
+#define REALLCHAR_TOK      120
+#define REDUCTION_RULE_TOK      121
+#define RENOSTR_TOK      122
+#define RESET_ASSERTIONS_TOK      123
+#define RESET_TOK      124
+#define REWRITE_RULE_TOK      125
+#define RPAREN_TOK      126
+#define SET_INFO_TOK      127
+#define SET_LOGIC_TOK      128
+#define SET_OPTIONS_TOK      129
+#define SET_OPTION_TOK      130
+#define SIMPLE_SYMBOL      131
+#define SIMPLIFY_TOK      132
+#define STAR_TOK      133
+#define STRING_LITERAL_2_0      134
+#define STRING_LITERAL_2_5      135
+#define SYGUS_CONSTANT_TOK      136
+#define SYGUS_ENUM_CONS_TOK      137
+#define SYGUS_ENUM_TOK      138
+#define SYGUS_INPUT_VARIABLE_TOK      139
+#define SYGUS_LOCAL_VARIABLE_TOK      140
+#define SYGUS_QUOTED_LITERAL      141
+#define SYGUS_VARIABLE_TOK      142
+#define SYMBOL_CHAR      143
+#define SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE      144
+#define SYNTH_FUN_TOK      145
+#define SYNTH_INV_TOK      146
+#define TESTER_TOK      147
+#define UNIVSET_TOK      148
+#define UNTERMINATED_QUOTED_SYMBOL      149
+#define WHITESPACE      150
+#define XOR_TOK      151
 #ifdef	EOF
 #undef	EOF
 #define	EOF	ANTLR3_TOKEN_EOF
diff --git a/src/parser/smt2/Smt2Parser.c b/src/parser/smt2/Smt2Parser.c
index ca08923..e44e788 100644
--- a/src/parser/smt2/Smt2Parser.c
+++ b/src/parser/smt2/Smt2Parser.c
@@ -1,8 +1,8 @@
 /** \file
  *  This C source file was generated by $ANTLR version 3.4
  *
- *     -  From the grammar source file : ../../../../../../src/parser/smt2/Smt2.g
- *     -                            On : 2017-03-16 01:03:01
+ *     -  From the grammar source file : ../../../../src/parser/smt2/Smt2.g
+ *     -                            On : 2017-07-10 10:01:29
  *     -                for the parser : Smt2ParserParser
  *
  * Editing it, at least manually, is not wise.
@@ -46,10 +46,11 @@
  */
 
 /**
- ** This file is part of CVC4.
- ** Copyright (c) 2009-2014  New York University and The University of Iowa
- ** See the file COPYING in the top-level source directory for licensing
- ** information.
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.
  **/
 
 /* End of Header action.
@@ -275,7 +276,7 @@ static inline bool isClosed(const Expr& e, std::set<Expr>& free) {
 /** \brief Table of all token names in symbolic order, mainly used for
  *         error reporting.
  */
-pANTLR3_UINT8   Smt2ParserTokenNames[148+4]
+pANTLR3_UINT8   Smt2ParserTokenNames[155+4]
      = {
         (pANTLR3_UINT8) "<invalid>",       /* String to print to indicate an invalid token */
         (pANTLR3_UINT8) "<EOR>",
@@ -301,9 +302,13 @@ pANTLR3_UINT8   Smt2ParserTokenNames[148+4]
         (pANTLR3_UINT8) "CONSTRAINT_TOK",
         (pANTLR3_UINT8) "CONST_TOK",
         (pANTLR3_UINT8) "DECIMAL_LITERAL",
+        (pANTLR3_UINT8) "DECLARE_CODATATYPES_2_5_TOK",
         (pANTLR3_UINT8) "DECLARE_CODATATYPES_TOK",
+        (pANTLR3_UINT8) "DECLARE_CODATATYPE_TOK",
         (pANTLR3_UINT8) "DECLARE_CONST_TOK",
+        (pANTLR3_UINT8) "DECLARE_DATATYPES_2_5_TOK",
         (pANTLR3_UINT8) "DECLARE_DATATYPES_TOK",
+        (pANTLR3_UINT8) "DECLARE_DATATYPE_TOK",
         (pANTLR3_UINT8) "DECLARE_FUNS_TOK",
         (pANTLR3_UINT8) "DECLARE_FUN_TOK",
         (pANTLR3_UINT8) "DECLARE_PREDS_TOK",
@@ -380,12 +385,14 @@ pANTLR3_UINT8   Smt2ParserTokenNames[148+4]
         (pANTLR3_UINT8) "LESS_THAN_TOK",
         (pANTLR3_UINT8) "LET_TOK",
         (pANTLR3_UINT8) "LPAREN_TOK",
+        (pANTLR3_UINT8) "MATCH_TOK",
         (pANTLR3_UINT8) "META_INFO_TOK",
         (pANTLR3_UINT8) "MINUS_TOK",
         (pANTLR3_UINT8) "NILREF_TOK",
         (pANTLR3_UINT8) "NOT_TOK",
         (pANTLR3_UINT8) "NUMERAL",
         (pANTLR3_UINT8) "OR_TOK",
+        (pANTLR3_UINT8) "PAR_TOK",
         (pANTLR3_UINT8) "PLUS_TOK",
         (pANTLR3_UINT8) "POP_TOK",
         (pANTLR3_UINT8) "PROPAGATION_RULE_TOK",
@@ -418,6 +425,7 @@ pANTLR3_UINT8   Smt2ParserTokenNames[148+4]
         (pANTLR3_UINT8) "SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE",
         (pANTLR3_UINT8) "SYNTH_FUN_TOK",
         (pANTLR3_UINT8) "SYNTH_INV_TOK",
+        (pANTLR3_UINT8) "TESTER_TOK",
         (pANTLR3_UINT8) "UNIVSET_TOK",
         (pANTLR3_UINT8) "UNTERMINATED_QUOTED_SYMBOL",
         (pANTLR3_UINT8) "WHITESPACE",
@@ -467,6 +475,12 @@ static
 	extendedCommand    (pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
 static 
  void
+	datatypes_2_5_DefCommand    (pSmt2Parser ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd);
+static 
+ void
+	datatypeDefCommand    (pSmt2Parser ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd);
+static 
+ void
 	datatypesDefCommand    (pSmt2Parser ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd);
 static 
  void
@@ -497,7 +511,7 @@ static
 	attribute    (pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& attr);
 static 
  void
-	indexedFunctionName    (pSmt2Parser ctx, CVC4::Expr& op);
+	indexedFunctionName    (pSmt2Parser ctx, CVC4::Expr& op, CVC4::Kind& kind);
 static 
  void
 	badIndexedFunctionName    (pSmt2Parser ctx);
@@ -563,7 +577,7 @@ static	void ANTLR3_CDECL freeScope(void * scope)
 
 /** \brief Name of the grammar file that generated this code
  */
-static const char fileName[] = "../../../../../../src/parser/smt2/Smt2.g";
+static const char fileName[] = "../../../../src/parser/smt2/Smt2.g";
 
 /** \brief Return the name of the grammar file that generated this code.
  */
@@ -631,6 +645,8 @@ Smt2ParserNewSSD   (pANTLR3_COMMON_TOKEN_STREAM instream, pANTLR3_RECOGNIZER_SHA
     ctx->setOptionInternal	= setOptionInternal;
     ctx->smt25Command	= smt25Command;
     ctx->extendedCommand	= extendedCommand;
+    ctx->datatypes_2_5_DefCommand	= datatypes_2_5_DefCommand;
+    ctx->datatypeDefCommand	= datatypeDefCommand;
     ctx->datatypesDefCommand	= datatypesDefCommand;
     ctx->rewriterulesCommand	= rewriterulesCommand;
     ctx->rewritePropaKind	= rewritePropaKind;
@@ -726,22 +742,22 @@ static  ANTLR3_BITSET_LIST FOLLOW_term_in_parseExpr119	= { FOLLOW_term_in_parseE
 static	ANTLR3_BITWORD FOLLOW_EOF_in_parseExpr126_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_parseExpr126	= { FOLLOW_EOF_in_parseExpr126_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_parseCommand155  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_parseCommand155_bits[]	= { ANTLR3_UINT64_LIT(0x000220FDBF040080), ANTLR3_UINT64_LIT(0x76E9C080003FF000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_parseCommand155	= { FOLLOW_LPAREN_TOK_in_parseCommand155_bits, 2	};
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_parseCommand155_bits[]	= { ANTLR3_UINT64_LIT(0x00220FDBFF040080), ANTLR3_UINT64_LIT(0xBA70100003FF0000), ANTLR3_UINT64_LIT(0x000000000000001D) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_parseCommand155	= { FOLLOW_LPAREN_TOK_in_parseCommand155_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_command_in_parseCommand157  */
-static	ANTLR3_BITWORD FOLLOW_command_in_parseCommand157_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static	ANTLR3_BITWORD FOLLOW_command_in_parseCommand157_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_command_in_parseCommand157	= { FOLLOW_command_in_parseCommand157_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_parseCommand160  */
 static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_parseCommand160_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_parseCommand160	= { FOLLOW_RPAREN_TOK_in_parseCommand160_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_parseCommand173  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_parseCommand173_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000008000000) };
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_parseCommand173_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_parseCommand173	= { FOLLOW_LPAREN_TOK_in_parseCommand173_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_INCLUDE_TOK_in_parseCommand175  */
-static	ANTLR3_BITWORD FOLLOW_INCLUDE_TOK_in_parseCommand175_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000003) };
+static	ANTLR3_BITWORD FOLLOW_INCLUDE_TOK_in_parseCommand175_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x00000000000000C0) };
 static  ANTLR3_BITSET_LIST FOLLOW_INCLUDE_TOK_in_parseCommand175	= { FOLLOW_INCLUDE_TOK_in_parseCommand175_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_parseCommand177  */
-static	ANTLR3_BITWORD FOLLOW_str_in_parseCommand177_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static	ANTLR3_BITWORD FOLLOW_str_in_parseCommand177_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_str_in_parseCommand177	= { FOLLOW_str_in_parseCommand177_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_parseCommand180  */
 static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_parseCommand180_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
@@ -750,10 +766,10 @@ static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_parseCommand180	= { FOLLOW_RPARE
 static	ANTLR3_BITWORD FOLLOW_EOF_in_parseCommand193_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_parseCommand193	= { FOLLOW_EOF_in_parseCommand193_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_parseSygus222  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_parseSygus222_bits[]	= { ANTLR3_UINT64_LIT(0x000220FFFF2C0080), ANTLR3_UINT64_LIT(0x76E9C081003FF000), ANTLR3_UINT64_LIT(0x0000000000001800) };
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_parseSygus222_bits[]	= { ANTLR3_UINT64_LIT(0x00220FFFFF2C0080), ANTLR3_UINT64_LIT(0xBA70101003FF0000), ANTLR3_UINT64_LIT(0x000000000006001D) };
 static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_parseSygus222	= { FOLLOW_LPAREN_TOK_in_parseSygus222_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sygusCommand_in_parseSygus224  */
-static	ANTLR3_BITWORD FOLLOW_sygusCommand_in_parseSygus224_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static	ANTLR3_BITWORD FOLLOW_sygusCommand_in_parseSygus224_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_sygusCommand_in_parseSygus224	= { FOLLOW_sygusCommand_in_parseSygus224_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_parseSygus227  */
 static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_parseSygus227_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
@@ -762,109 +778,109 @@ static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_parseSygus227	= { FOLLOW_RPAREN_
 static	ANTLR3_BITWORD FOLLOW_EOF_in_parseSygus233_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_parseSygus233	= { FOLLOW_EOF_in_parseSygus233_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_SET_LOGIC_TOK_in_command261  */
-static	ANTLR3_BITWORD FOLLOW_SET_LOGIC_TOK_in_command261_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_SET_LOGIC_TOK_in_command261_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_SET_LOGIC_TOK_in_command261	= { FOLLOW_SET_LOGIC_TOK_in_command261_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_command263  */
 static	ANTLR3_BITWORD FOLLOW_symbol_in_command263_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_command263	= { FOLLOW_symbol_in_command263_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_SET_INFO_TOK_in_command282  */
-static	ANTLR3_BITWORD FOLLOW_SET_INFO_TOK_in_command282_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000400000000) };
+static	ANTLR3_BITWORD FOLLOW_SET_INFO_TOK_in_command282_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_SET_INFO_TOK_in_command282	= { FOLLOW_SET_INFO_TOK_in_command282_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_metaInfoInternal_in_command284  */
 static	ANTLR3_BITWORD FOLLOW_metaInfoInternal_in_command284_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_metaInfoInternal_in_command284	= { FOLLOW_metaInfoInternal_in_command284_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_INFO_TOK_in_command297  */
-static	ANTLR3_BITWORD FOLLOW_GET_INFO_TOK_in_command297_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000400000000) };
+static	ANTLR3_BITWORD FOLLOW_GET_INFO_TOK_in_command297_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_GET_INFO_TOK_in_command297	= { FOLLOW_GET_INFO_TOK_in_command297_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_KEYWORD_in_command299  */
 static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_command299_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_KEYWORD_in_command299	= { FOLLOW_KEYWORD_in_command299_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_SET_OPTION_TOK_in_command317  */
-static	ANTLR3_BITWORD FOLLOW_SET_OPTION_TOK_in_command317_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000400000000) };
+static	ANTLR3_BITWORD FOLLOW_SET_OPTION_TOK_in_command317_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_SET_OPTION_TOK_in_command317	= { FOLLOW_SET_OPTION_TOK_in_command317_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_setOptionInternal_in_command319  */
 static	ANTLR3_BITWORD FOLLOW_setOptionInternal_in_command319_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_setOptionInternal_in_command319	= { FOLLOW_setOptionInternal_in_command319_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_OPTION_TOK_in_command332  */
-static	ANTLR3_BITWORD FOLLOW_GET_OPTION_TOK_in_command332_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000400000000) };
+static	ANTLR3_BITWORD FOLLOW_GET_OPTION_TOK_in_command332_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_GET_OPTION_TOK_in_command332	= { FOLLOW_GET_OPTION_TOK_in_command332_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_KEYWORD_in_command334  */
 static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_command334_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_KEYWORD_in_command334	= { FOLLOW_KEYWORD_in_command334_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_SORT_TOK_in_command352  */
-static	ANTLR3_BITWORD FOLLOW_DECLARE_SORT_TOK_in_command352_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_DECLARE_SORT_TOK_in_command352_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_SORT_TOK_in_command352	= { FOLLOW_DECLARE_SORT_TOK_in_command352_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_command366  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_command366_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static	ANTLR3_BITWORD FOLLOW_symbol_in_command366_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_command366	= { FOLLOW_symbol_in_command366_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_command381  */
 static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_command381_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_command381	= { FOLLOW_INTEGER_LITERAL_in_command381_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINE_SORT_TOK_in_command399  */
-static	ANTLR3_BITWORD FOLLOW_DEFINE_SORT_TOK_in_command399_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_DEFINE_SORT_TOK_in_command399_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_DEFINE_SORT_TOK_in_command399	= { FOLLOW_DEFINE_SORT_TOK_in_command399_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_command407  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_command407_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static	ANTLR3_BITWORD FOLLOW_symbol_in_command407_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_command407	= { FOLLOW_symbol_in_command407_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_command420  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_command420_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2902000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_command420_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x4080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_command420	= { FOLLOW_LPAREN_TOK_in_command420_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolList_in_command422  */
-static	ANTLR3_BITWORD FOLLOW_symbolList_in_command422_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static	ANTLR3_BITWORD FOLLOW_symbolList_in_command422_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_symbolList_in_command422	= { FOLLOW_symbolList_in_command422_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_command425  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_command425_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_command425_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_command425	= { FOLLOW_RPAREN_TOK_in_command425_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_command437  */
 static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_command437_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_command437	= { FOLLOW_sortSymbol_in_command437_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_FUN_TOK_in_command456  */
-static	ANTLR3_BITWORD FOLLOW_DECLARE_FUN_TOK_in_command456_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_DECLARE_FUN_TOK_in_command456_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_FUN_TOK_in_command456	= { FOLLOW_DECLARE_FUN_TOK_in_command456_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_command464  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_command464_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static	ANTLR3_BITWORD FOLLOW_symbol_in_command464_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_command464	= { FOLLOW_symbol_in_command464_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_command477  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_command477_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2902004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_command477_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x4080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_command477	= { FOLLOW_LPAREN_TOK_in_command477_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sortList_in_command479  */
-static	ANTLR3_BITWORD FOLLOW_sortList_in_command479_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static	ANTLR3_BITWORD FOLLOW_sortList_in_command479_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_sortList_in_command479	= { FOLLOW_sortList_in_command479_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_command482  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_command482_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_command482_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_command482	= { FOLLOW_RPAREN_TOK_in_command482_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_command488  */
 static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_command488_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_command488	= { FOLLOW_sortSymbol_in_command488_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINE_FUN_TOK_in_command507  */
-static	ANTLR3_BITWORD FOLLOW_DEFINE_FUN_TOK_in_command507_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_DEFINE_FUN_TOK_in_command507_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_DEFINE_FUN_TOK_in_command507	= { FOLLOW_DEFINE_FUN_TOK_in_command507_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_command515  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_command515_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static	ANTLR3_BITWORD FOLLOW_symbol_in_command515_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_command515	= { FOLLOW_symbol_in_command515_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_command528  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_command528_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_command528_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_command528	= { FOLLOW_LPAREN_TOK_in_command528_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_command530  */
-static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_command530_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_command530_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_command530	= { FOLLOW_sortedVarList_in_command530_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_command533  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_command533_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_command533_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_command533	= { FOLLOW_RPAREN_TOK_in_command533_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_command539  */
-static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_command539_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_command539_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
 static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_command539	= { FOLLOW_sortSymbol_in_command539_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_command552  */
 static	ANTLR3_BITWORD FOLLOW_term_in_command552_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_term_in_command552	= { FOLLOW_term_in_command552_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_VALUE_TOK_in_command571  */
-static	ANTLR3_BITWORD FOLLOW_GET_VALUE_TOK_in_command571_bits[]	= { ANTLR3_UINT64_LIT(0xFFFFFFFFFFFFFFF0), ANTLR3_UINT64_LIT(0xFFFFFFFFFFFFFFFF), ANTLR3_UINT64_LIT(0x0000000000FFFFFF) };
+static	ANTLR3_BITWORD FOLLOW_GET_VALUE_TOK_in_command571_bits[]	= { ANTLR3_UINT64_LIT(0xFFFFFFFFFFFFFFF0), ANTLR3_UINT64_LIT(0xFFFFFFFFFFFFFFFF), ANTLR3_UINT64_LIT(0x000000007FFFFFFF) };
 static  ANTLR3_BITSET_LIST FOLLOW_GET_VALUE_TOK_in_command571	= { FOLLOW_GET_VALUE_TOK_in_command571_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_command581  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_command581_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_command581_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
 static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_command581	= { FOLLOW_LPAREN_TOK_in_command581_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_command583  */
-static	ANTLR3_BITWORD FOLLOW_termList_in_command583_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static	ANTLR3_BITWORD FOLLOW_termList_in_command583_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_termList_in_command583	= { FOLLOW_termList_in_command583_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_command586  */
 static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_command586_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
@@ -876,13 +892,13 @@ static  ANTLR3_BITSET_LIST FOLLOW_set_in_command602	= { FOLLOW_set_in_command602
 static	ANTLR3_BITWORD FOLLOW_GET_ASSIGNMENT_TOK_in_command629_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_GET_ASSIGNMENT_TOK_in_command629	= { FOLLOW_GET_ASSIGNMENT_TOK_in_command629_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSERT_TOK_in_command649  */
-static	ANTLR3_BITWORD FOLLOW_ASSERT_TOK_in_command649_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static	ANTLR3_BITWORD FOLLOW_ASSERT_TOK_in_command649_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
 static  ANTLR3_BITSET_LIST FOLLOW_ASSERT_TOK_in_command649	= { FOLLOW_ASSERT_TOK_in_command649_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_command669  */
 static	ANTLR3_BITWORD FOLLOW_term_in_command669_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_term_in_command669	= { FOLLOW_term_in_command669_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_CHECKSAT_TOK_in_command688  */
-static	ANTLR3_BITWORD FOLLOW_CHECKSAT_TOK_in_command688_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90002), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static	ANTLR3_BITWORD FOLLOW_CHECKSAT_TOK_in_command688_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90002), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
 static  ANTLR3_BITSET_LIST FOLLOW_CHECKSAT_TOK_in_command688	= { FOLLOW_CHECKSAT_TOK_in_command688_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_command704  */
 static	ANTLR3_BITWORD FOLLOW_term_in_command704_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
@@ -897,13 +913,13 @@ static  ANTLR3_BITSET_LIST FOLLOW_GET_PROOF_TOK_in_command765	= { FOLLOW_GET_PRO
 static	ANTLR3_BITWORD FOLLOW_GET_UNSAT_CORE_TOK_in_command785_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_GET_UNSAT_CORE_TOK_in_command785	= { FOLLOW_GET_UNSAT_CORE_TOK_in_command785_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_PUSH_TOK_in_command805  */
-static	ANTLR3_BITWORD FOLLOW_PUSH_TOK_in_command805_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static	ANTLR3_BITWORD FOLLOW_PUSH_TOK_in_command805_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000800000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_PUSH_TOK_in_command805	= { FOLLOW_PUSH_TOK_in_command805_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_command823  */
 static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_command823_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_command823	= { FOLLOW_INTEGER_LITERAL_in_command823_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_POP_TOK_in_command847  */
-static	ANTLR3_BITWORD FOLLOW_POP_TOK_in_command847_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000080000000) };
+static	ANTLR3_BITWORD FOLLOW_POP_TOK_in_command847_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000800000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_POP_TOK_in_command847	= { FOLLOW_POP_TOK_in_command847_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_command865  */
 static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_command865_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
@@ -921,82 +937,82 @@ static  ANTLR3_BITSET_LIST FOLLOW_extendedCommand_in_command938	= { FOLLOW_exten
 static	ANTLR3_BITWORD FOLLOW_SIMPLE_SYMBOL_in_command958_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_SIMPLE_SYMBOL_in_command958	= { FOLLOW_SIMPLE_SYMBOL_in_command958_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_VAR_TOK_in_sygusCommand990  */
-static	ANTLR3_BITWORD FOLLOW_DECLARE_VAR_TOK_in_sygusCommand990_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_DECLARE_VAR_TOK_in_sygusCommand990_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_VAR_TOK_in_sygusCommand990	= { FOLLOW_DECLARE_VAR_TOK_in_sygusCommand990_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusCommand998  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusCommand998_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusCommand998_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusCommand998	= { FOLLOW_symbol_in_sygusCommand998_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusCommand1011  */
 static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusCommand1011_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusCommand1011	= { FOLLOW_sortSymbol_in_sygusCommand1011_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_PRIMED_VAR_TOK_in_sygusCommand1030  */
-static	ANTLR3_BITWORD FOLLOW_DECLARE_PRIMED_VAR_TOK_in_sygusCommand1030_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_DECLARE_PRIMED_VAR_TOK_in_sygusCommand1030_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_PRIMED_VAR_TOK_in_sygusCommand1030	= { FOLLOW_DECLARE_PRIMED_VAR_TOK_in_sygusCommand1030_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusCommand1038  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusCommand1038_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusCommand1038_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusCommand1038	= { FOLLOW_symbol_in_sygusCommand1038_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusCommand1051  */
 static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusCommand1051_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusCommand1051	= { FOLLOW_sortSymbol_in_sygusCommand1051_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_SYNTH_FUN_TOK_in_sygusCommand1073  */
-static	ANTLR3_BITWORD FOLLOW_SYNTH_FUN_TOK_in_sygusCommand1073_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_SYNTH_FUN_TOK_in_sygusCommand1073_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_SYNTH_FUN_TOK_in_sygusCommand1073	= { FOLLOW_SYNTH_FUN_TOK_in_sygusCommand1073_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_SYNTH_INV_TOK_in_sygusCommand1077  */
-static	ANTLR3_BITWORD FOLLOW_SYNTH_INV_TOK_in_sygusCommand1077_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_SYNTH_INV_TOK_in_sygusCommand1077_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_SYNTH_INV_TOK_in_sygusCommand1077	= { FOLLOW_SYNTH_INV_TOK_in_sygusCommand1077_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusCommand1093  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusCommand1093_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusCommand1093_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusCommand1093	= { FOLLOW_symbol_in_sygusCommand1093_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusCommand1100  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusCommand1100_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusCommand1100_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusCommand1100	= { FOLLOW_LPAREN_TOK_in_sygusCommand1100_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_sygusCommand1102  */
-static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_sygusCommand1102_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_sygusCommand1102_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_sygusCommand1102	= { FOLLOW_sortedVarList_in_sygusCommand1102_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusCommand1105  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusCommand1105_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280002), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusCommand1105_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280002), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sygusCommand1105	= { FOLLOW_RPAREN_TOK_in_sygusCommand1105_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusCommand1119  */
-static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusCommand1119_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusCommand1119_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000040000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusCommand1119	= { FOLLOW_sortSymbol_in_sygusCommand1119_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusCommand1133  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusCommand1133_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusCommand1133_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusCommand1133	= { FOLLOW_LPAREN_TOK_in_sygusCommand1133_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusCommand1141  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusCommand1141_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusCommand1141_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusCommand1141	= { FOLLOW_LPAREN_TOK_in_sygusCommand1141_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusCommand1149  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusCommand1149_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusCommand1149_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusCommand1149	= { FOLLOW_symbol_in_sygusCommand1149_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusCommand1159  */
-static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusCommand1159_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusCommand1159_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusCommand1159	= { FOLLOW_sortSymbol_in_sygusCommand1159_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusCommand1190  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusCommand1190_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2802004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusCommand1190_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400290000), ANTLR3_UINT64_LIT(0x0080041820000000), ANTLR3_UINT64_LIT(0x00000000042600CA) };
 static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusCommand1190	= { FOLLOW_LPAREN_TOK_in_sygusCommand1190_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sygusGTerm_in_sygusCommand1194  */
-static	ANTLR3_BITWORD FOLLOW_sygusGTerm_in_sygusCommand1194_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2902004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static	ANTLR3_BITWORD FOLLOW_sygusGTerm_in_sygusCommand1194_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400290000), ANTLR3_UINT64_LIT(0x4080041820000000), ANTLR3_UINT64_LIT(0x00000000042600CA) };
 static  ANTLR3_BITSET_LIST FOLLOW_sygusGTerm_in_sygusCommand1194	= { FOLLOW_sygusGTerm_in_sygusCommand1194_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusCommand1215  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusCommand1215_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusCommand1215_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sygusCommand1215	= { FOLLOW_RPAREN_TOK_in_sygusCommand1215_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusCommand1225  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusCommand1225_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusCommand1225_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sygusCommand1225	= { FOLLOW_RPAREN_TOK_in_sygusCommand1225_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusCommand1239  */
 static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusCommand1239_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sygusCommand1239	= { FOLLOW_RPAREN_TOK_in_sygusCommand1239_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_CONSTRAINT_TOK_in_sygusCommand1266  */
-static	ANTLR3_BITWORD FOLLOW_CONSTRAINT_TOK_in_sygusCommand1266_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static	ANTLR3_BITWORD FOLLOW_CONSTRAINT_TOK_in_sygusCommand1266_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
 static  ANTLR3_BITSET_LIST FOLLOW_CONSTRAINT_TOK_in_sygusCommand1266	= { FOLLOW_CONSTRAINT_TOK_in_sygusCommand1266_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_sygusCommand1274  */
 static	ANTLR3_BITWORD FOLLOW_term_in_sygusCommand1274_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_term_in_sygusCommand1274	= { FOLLOW_term_in_sygusCommand1274_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_INV_CONSTRAINT_TOK_in_sygusCommand1287  */
-static	ANTLR3_BITWORD FOLLOW_INV_CONSTRAINT_TOK_in_sygusCommand1287_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_INV_CONSTRAINT_TOK_in_sygusCommand1287_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_INV_CONSTRAINT_TOK_in_sygusCommand1287	= { FOLLOW_INV_CONSTRAINT_TOK_in_sygusCommand1287_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusCommand1297  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusCommand1297_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280002), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusCommand1297_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280002), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusCommand1297	= { FOLLOW_symbol_in_sygusCommand1297_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_CHECK_SYNTH_TOK_in_sygusCommand1321  */
 static	ANTLR3_BITWORD FOLLOW_CHECK_SYNTH_TOK_in_sygusCommand1321_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
@@ -1005,64 +1021,64 @@ static  ANTLR3_BITSET_LIST FOLLOW_CHECK_SYNTH_TOK_in_sygusCommand1321	= { FOLLOW
 static	ANTLR3_BITWORD FOLLOW_command_in_sygusCommand1339_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_command_in_sygusCommand1339	= { FOLLOW_command_in_sygusCommand1339_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusGTerm1380  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusGTerm1380_bits[]	= { ANTLR3_UINT64_LIT(0x000C9A02402A0040), ANTLR3_UINT64_LIT(0xA802353B24C00000), ANTLR3_UINT64_LIT(0x0000000000095964) };
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusGTerm1380_bits[]	= { ANTLR3_UINT64_LIT(0x00C9A024002A0040), ANTLR3_UINT64_LIT(0x008AA3B24C000000), ANTLR3_UINT64_LIT(0x0000000004A6592A) };
 static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusGTerm1380	= { FOLLOW_LPAREN_TOK_in_sygusGTerm1380_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_builtinOp_in_sygusGTerm1393  */
-static	ANTLR3_BITWORD FOLLOW_builtinOp_in_sygusGTerm1393_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2902004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static	ANTLR3_BITWORD FOLLOW_builtinOp_in_sygusGTerm1393_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400290000), ANTLR3_UINT64_LIT(0x4080041820000000), ANTLR3_UINT64_LIT(0x00000000042600CA) };
 static  ANTLR3_BITSET_LIST FOLLOW_builtinOp_in_sygusGTerm1393	= { FOLLOW_builtinOp_in_sygusGTerm1393_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_LET_TOK_in_sygusGTerm1404  */
-static	ANTLR3_BITWORD FOLLOW_LET_TOK_in_sygusGTerm1404_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static	ANTLR3_BITWORD FOLLOW_LET_TOK_in_sygusGTerm1404_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_LET_TOK_in_sygusGTerm1404	= { FOLLOW_LET_TOK_in_sygusGTerm1404_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusGTerm1406  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusGTerm1406_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusGTerm1406_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusGTerm1406	= { FOLLOW_LPAREN_TOK_in_sygusGTerm1406_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusGTerm1419  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusGTerm1419_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusGTerm1419_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusGTerm1419	= { FOLLOW_LPAREN_TOK_in_sygusGTerm1419_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusGTerm1430  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusGTerm1430_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusGTerm1430_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusGTerm1430	= { FOLLOW_symbol_in_sygusGTerm1430_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusGTerm1442  */
-static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusGTerm1442_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2802004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusGTerm1442_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400290000), ANTLR3_UINT64_LIT(0x0080041820000000), ANTLR3_UINT64_LIT(0x00000000042600CA) };
 static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusGTerm1442	= { FOLLOW_sortSymbol_in_sygusGTerm1442_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sygusGTerm_in_sygusGTerm1456  */
-static	ANTLR3_BITWORD FOLLOW_sygusGTerm_in_sygusGTerm1456_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static	ANTLR3_BITWORD FOLLOW_sygusGTerm_in_sygusGTerm1456_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_sygusGTerm_in_sygusGTerm1456	= { FOLLOW_sygusGTerm_in_sygusGTerm1456_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusGTerm1467  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusGTerm1467_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusGTerm1467_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sygusGTerm1467	= { FOLLOW_RPAREN_TOK_in_sygusGTerm1467_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusGTerm1472  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusGTerm1472_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2902004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusGTerm1472_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400290000), ANTLR3_UINT64_LIT(0x4080041820000000), ANTLR3_UINT64_LIT(0x00000000042600CA) };
 static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sygusGTerm1472	= { FOLLOW_RPAREN_TOK_in_sygusGTerm1472_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_SYGUS_CONSTANT_TOK_in_sygusGTerm1480  */
-static	ANTLR3_BITWORD FOLLOW_SYGUS_CONSTANT_TOK_in_sygusGTerm1480_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_SYGUS_CONSTANT_TOK_in_sygusGTerm1480_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_SYGUS_CONSTANT_TOK_in_sygusGTerm1480	= { FOLLOW_SYGUS_CONSTANT_TOK_in_sygusGTerm1480_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusGTerm1482  */
-static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusGTerm1482_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2902004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusGTerm1482_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400290000), ANTLR3_UINT64_LIT(0x4080041820000000), ANTLR3_UINT64_LIT(0x00000000042600CA) };
 static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusGTerm1482	= { FOLLOW_sortSymbol_in_sygusGTerm1482_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_SYGUS_VARIABLE_TOK_in_sygusGTerm1500  */
-static	ANTLR3_BITWORD FOLLOW_SYGUS_VARIABLE_TOK_in_sygusGTerm1500_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_SYGUS_VARIABLE_TOK_in_sygusGTerm1500_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_SYGUS_VARIABLE_TOK_in_sygusGTerm1500	= { FOLLOW_SYGUS_VARIABLE_TOK_in_sygusGTerm1500_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusGTerm1502  */
-static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusGTerm1502_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2902004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusGTerm1502_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400290000), ANTLR3_UINT64_LIT(0x4080041820000000), ANTLR3_UINT64_LIT(0x00000000042600CA) };
 static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusGTerm1502	= { FOLLOW_sortSymbol_in_sygusGTerm1502_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_SYGUS_LOCAL_VARIABLE_TOK_in_sygusGTerm1519  */
-static	ANTLR3_BITWORD FOLLOW_SYGUS_LOCAL_VARIABLE_TOK_in_sygusGTerm1519_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_SYGUS_LOCAL_VARIABLE_TOK_in_sygusGTerm1519_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_SYGUS_LOCAL_VARIABLE_TOK_in_sygusGTerm1519	= { FOLLOW_SYGUS_LOCAL_VARIABLE_TOK_in_sygusGTerm1519_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusGTerm1521  */
-static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusGTerm1521_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2902004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusGTerm1521_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400290000), ANTLR3_UINT64_LIT(0x4080041820000000), ANTLR3_UINT64_LIT(0x00000000042600CA) };
 static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusGTerm1521	= { FOLLOW_sortSymbol_in_sygusGTerm1521_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_SYGUS_INPUT_VARIABLE_TOK_in_sygusGTerm1538  */
-static	ANTLR3_BITWORD FOLLOW_SYGUS_INPUT_VARIABLE_TOK_in_sygusGTerm1538_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_SYGUS_INPUT_VARIABLE_TOK_in_sygusGTerm1538_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_SYGUS_INPUT_VARIABLE_TOK_in_sygusGTerm1538	= { FOLLOW_SYGUS_INPUT_VARIABLE_TOK_in_sygusGTerm1538_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusGTerm1540  */
-static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusGTerm1540_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2902004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusGTerm1540_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400290000), ANTLR3_UINT64_LIT(0x4080041820000000), ANTLR3_UINT64_LIT(0x00000000042600CA) };
 static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusGTerm1540	= { FOLLOW_sortSymbol_in_sygusGTerm1540_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusGTerm1557  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusGTerm1557_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2902004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusGTerm1557_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400290000), ANTLR3_UINT64_LIT(0x4080041820000000), ANTLR3_UINT64_LIT(0x00000000042600CA) };
 static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusGTerm1557	= { FOLLOW_symbol_in_sygusGTerm1557_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sygusGTerm_in_sygusGTerm1585  */
-static	ANTLR3_BITWORD FOLLOW_sygusGTerm_in_sygusGTerm1585_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240290000), ANTLR3_UINT64_LIT(0x2902004182000000), ANTLR3_UINT64_LIT(0x0000000000085803) };
+static	ANTLR3_BITWORD FOLLOW_sygusGTerm_in_sygusGTerm1585_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400290000), ANTLR3_UINT64_LIT(0x4080041820000000), ANTLR3_UINT64_LIT(0x00000000042600CA) };
 static  ANTLR3_BITSET_LIST FOLLOW_sygusGTerm_in_sygusGTerm1585	= { FOLLOW_sygusGTerm_in_sygusGTerm1585_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusGTerm1608  */
 static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusGTerm1608_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
@@ -1080,37 +1096,37 @@ static  ANTLR3_BITSET_LIST FOLLOW_BINARY_LITERAL_in_sygusGTerm1640	= { FOLLOW_BI
 static	ANTLR3_BITWORD FOLLOW_str_in_sygusGTerm1652_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_str_in_sygusGTerm1652	= { FOLLOW_str_in_sygusGTerm1652_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusGTerm1665  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusGTerm1665_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000008) };
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusGTerm1665_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000200) };
 static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusGTerm1665	= { FOLLOW_symbol_in_sygusGTerm1665_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_SYGUS_ENUM_CONS_TOK_in_sygusGTerm1674  */
-static	ANTLR3_BITWORD FOLLOW_SYGUS_ENUM_CONS_TOK_in_sygusGTerm1674_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_SYGUS_ENUM_CONS_TOK_in_sygusGTerm1674_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_SYGUS_ENUM_CONS_TOK_in_sygusGTerm1674	= { FOLLOW_SYGUS_ENUM_CONS_TOK_in_sygusGTerm1674_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusGTerm1676  */
 static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusGTerm1676_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusGTerm1676	= { FOLLOW_symbol_in_sygusGTerm1676_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_KEYWORD_in_metaInfoInternal1718  */
-static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_metaInfoInternal1718_bits[]	= { ANTLR3_UINT64_LIT(0x000EBA7B54AF00C0), ANTLR3_UINT64_LIT(0xFEEBF55FA6F3F000), ANTLR3_UINT64_LIT(0x0000000000095803) };
+static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_metaInfoInternal1718_bits[]	= { ANTLR3_UINT64_LIT(0x00EBA7B520AF00C0), ANTLR3_UINT64_LIT(0xBAFAA5FA6F3F0000), ANTLR3_UINT64_LIT(0x0000000004A600FF) };
 static  ANTLR3_BITSET_LIST FOLLOW_KEYWORD_in_metaInfoInternal1718	= { FOLLOW_KEYWORD_in_metaInfoInternal1718_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolicExpr_in_metaInfoInternal1720  */
 static	ANTLR3_BITWORD FOLLOW_symbolicExpr_in_metaInfoInternal1720_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_symbolicExpr_in_metaInfoInternal1720	= { FOLLOW_symbolicExpr_in_metaInfoInternal1720_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_keyword_in_setOptionInternal1746  */
-static	ANTLR3_BITWORD FOLLOW_keyword_in_setOptionInternal1746_bits[]	= { ANTLR3_UINT64_LIT(0x000EBA7B54AF00C0), ANTLR3_UINT64_LIT(0xFEEBF55FA6F3F000), ANTLR3_UINT64_LIT(0x0000000000095803) };
+static	ANTLR3_BITWORD FOLLOW_keyword_in_setOptionInternal1746_bits[]	= { ANTLR3_UINT64_LIT(0x00EBA7B520AF00C0), ANTLR3_UINT64_LIT(0xBAFAA5FA6F3F0000), ANTLR3_UINT64_LIT(0x0000000004A600FF) };
 static  ANTLR3_BITSET_LIST FOLLOW_keyword_in_setOptionInternal1746	= { FOLLOW_keyword_in_setOptionInternal1746_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolicExpr_in_setOptionInternal1749  */
 static	ANTLR3_BITWORD FOLLOW_symbolicExpr_in_setOptionInternal1749_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_symbolicExpr_in_setOptionInternal1749	= { FOLLOW_symbolicExpr_in_setOptionInternal1749_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_META_INFO_TOK_in_smt25Command1781  */
-static	ANTLR3_BITWORD FOLLOW_META_INFO_TOK_in_smt25Command1781_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000400000000) };
+static	ANTLR3_BITWORD FOLLOW_META_INFO_TOK_in_smt25Command1781_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_META_INFO_TOK_in_smt25Command1781	= { FOLLOW_META_INFO_TOK_in_smt25Command1781_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_metaInfoInternal_in_smt25Command1783  */
 static	ANTLR3_BITWORD FOLLOW_metaInfoInternal_in_smt25Command1783_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_metaInfoInternal_in_smt25Command1783	= { FOLLOW_metaInfoInternal_in_smt25Command1783_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_CONST_TOK_in_smt25Command1797  */
-static	ANTLR3_BITWORD FOLLOW_DECLARE_CONST_TOK_in_smt25Command1797_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_DECLARE_CONST_TOK_in_smt25Command1797_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_CONST_TOK_in_smt25Command1797	= { FOLLOW_DECLARE_CONST_TOK_in_smt25Command1797_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_smt25Command1805  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_smt25Command1805_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_symbol_in_smt25Command1805_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_smt25Command1805	= { FOLLOW_symbol_in_smt25Command1805_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_smt25Command1818  */
 static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_smt25Command1818_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
@@ -1119,7 +1135,7 @@ static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_smt25Command1818	= { FOLLOW_sort
 static	ANTLR3_BITWORD FOLLOW_GET_MODEL_TOK_in_smt25Command1838_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_GET_MODEL_TOK_in_smt25Command1838	= { FOLLOW_GET_MODEL_TOK_in_smt25Command1838_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_ECHO_TOK_in_smt25Command1859  */
-static	ANTLR3_BITWORD FOLLOW_ECHO_TOK_in_smt25Command1859_bits[]	= { ANTLR3_UINT64_LIT(0x000EBA7B54AF00C2), ANTLR3_UINT64_LIT(0xFEEBF51FA6F3F000), ANTLR3_UINT64_LIT(0x0000000000095803) };
+static	ANTLR3_BITWORD FOLLOW_ECHO_TOK_in_smt25Command1859_bits[]	= { ANTLR3_UINT64_LIT(0x00EBA7B520AF00C2), ANTLR3_UINT64_LIT(0xBAFAA1FA6F3F0000), ANTLR3_UINT64_LIT(0x0000000004A600FF) };
 static  ANTLR3_BITSET_LIST FOLLOW_ECHO_TOK_in_smt25Command1859	= { FOLLOW_ECHO_TOK_in_smt25Command1859_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleSymbolicExpr_in_smt25Command1867  */
 static	ANTLR3_BITWORD FOLLOW_simpleSymbolicExpr_in_smt25Command1867_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
@@ -1131,1022 +1147,1199 @@ static  ANTLR3_BITSET_LIST FOLLOW_RESET_TOK_in_smt25Command1903	= { FOLLOW_RESET
 static	ANTLR3_BITWORD FOLLOW_RESET_ASSERTIONS_TOK_in_smt25Command1921_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_RESET_ASSERTIONS_TOK_in_smt25Command1921	= { FOLLOW_RESET_ASSERTIONS_TOK_in_smt25Command1921_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINE_FUN_REC_TOK_in_smt25Command1933  */
-static	ANTLR3_BITWORD FOLLOW_DEFINE_FUN_REC_TOK_in_smt25Command1933_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_DEFINE_FUN_REC_TOK_in_smt25Command1933_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_DEFINE_FUN_REC_TOK_in_smt25Command1933	= { FOLLOW_DEFINE_FUN_REC_TOK_in_smt25Command1933_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_smt25Command1945  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_smt25Command1945_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static	ANTLR3_BITWORD FOLLOW_symbol_in_smt25Command1945_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_smt25Command1945	= { FOLLOW_symbol_in_smt25Command1945_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_smt25Command1958  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_smt25Command1958_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_smt25Command1958_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_smt25Command1958	= { FOLLOW_LPAREN_TOK_in_smt25Command1958_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_smt25Command1960  */
-static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_smt25Command1960_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_smt25Command1960_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_smt25Command1960	= { FOLLOW_sortedVarList_in_smt25Command1960_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_smt25Command1963  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_smt25Command1963_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_smt25Command1963_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_smt25Command1963	= { FOLLOW_RPAREN_TOK_in_smt25Command1963_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_smt25Command1969  */
-static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_smt25Command1969_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_smt25Command1969_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
 static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_smt25Command1969	= { FOLLOW_sortSymbol_in_smt25Command1969_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_smt25Command1982  */
 static	ANTLR3_BITWORD FOLLOW_term_in_smt25Command1982_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_term_in_smt25Command1982	= { FOLLOW_term_in_smt25Command1982_bits, 1	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINE_FUNS_REC_TOK_in_smt25Command1995  */
-static	ANTLR3_BITWORD FOLLOW_DEFINE_FUNS_REC_TOK_in_smt25Command1995_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static	ANTLR3_BITWORD FOLLOW_DEFINE_FUNS_REC_TOK_in_smt25Command1995_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_DEFINE_FUNS_REC_TOK_in_smt25Command1995	= { FOLLOW_DEFINE_FUNS_REC_TOK_in_smt25Command1995_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_smt25Command2007  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_smt25Command2007_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_smt25Command2007_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_smt25Command2007	= { FOLLOW_LPAREN_TOK_in_smt25Command2007_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_smt25Command2015  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_smt25Command2015_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_smt25Command2015_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_smt25Command2015	= { FOLLOW_LPAREN_TOK_in_smt25Command2015_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_smt25Command2023  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_smt25Command2023_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static	ANTLR3_BITWORD FOLLOW_symbol_in_smt25Command2023_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_smt25Command2023	= { FOLLOW_symbol_in_smt25Command2023_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_smt25Command2040  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_smt25Command2040_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_smt25Command2040_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_smt25Command2040	= { FOLLOW_LPAREN_TOK_in_smt25Command2040_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_smt25Command2042  */
-static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_smt25Command2042_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_smt25Command2042_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_smt25Command2042	= { FOLLOW_sortedVarList_in_smt25Command2042_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_smt25Command2045  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_smt25Command2045_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_smt25Command2045_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
 static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_smt25Command2045	= { FOLLOW_RPAREN_TOK_in_smt25Command2045_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_smt25Command2053  */
-static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_smt25Command2053_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_smt25Command2053_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_smt25Command2053	= { FOLLOW_sortSymbol_in_smt25Command2053_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_smt25Command2070  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_smt25Command2070_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_smt25Command2070_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_smt25Command2070	= { FOLLOW_RPAREN_TOK_in_smt25Command2070_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_smt25Command2083  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_smt25Command2083_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_smt25Command2083_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
 static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_smt25Command2083	= { FOLLOW_RPAREN_TOK_in_smt25Command2083_bits, 2	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_smt25Command2089  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_smt25Command2089_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_smt25Command2089_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
 static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_smt25Command2089	= { FOLLOW_LPAREN_TOK_in_smt25Command2089_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_smt25Command2107  */
-static	ANTLR3_BITWORD FOLLOW_term_in_smt25Command2107_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x291602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
+static	ANTLR3_BITWORD FOLLOW_term_in_smt25Command2107_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x45804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
 static  ANTLR3_BITSET_LIST FOLLOW_term_in_smt25Command2107	= { FOLLOW_term_in_smt25Command2107_bits, 3	};
 /** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_smt25Command2127  */
 static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_smt25Command2127_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
 static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_smt25Command2127	= { FOLLOW_RPAREN_TOK_in_smt25Command2127_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_DATATYPES_TOK_in_extendedCommand2164  */
-static	ANTLR3_BITWORD FOLLOW_DECLARE_DATATYPES_TOK_in_extendedCommand2164_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_DATATYPES_TOK_in_extendedCommand2164	= { FOLLOW_DECLARE_DATATYPES_TOK_in_extendedCommand2164_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypesDefCommand_in_extendedCommand2166  */
-static	ANTLR3_BITWORD FOLLOW_datatypesDefCommand_in_extendedCommand2166_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_datatypesDefCommand_in_extendedCommand2166	= { FOLLOW_datatypesDefCommand_in_extendedCommand2166_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_CODATATYPES_TOK_in_extendedCommand2173  */
-static	ANTLR3_BITWORD FOLLOW_DECLARE_CODATATYPES_TOK_in_extendedCommand2173_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_CODATATYPES_TOK_in_extendedCommand2173	= { FOLLOW_DECLARE_CODATATYPES_TOK_in_extendedCommand2173_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypesDefCommand_in_extendedCommand2175  */
-static	ANTLR3_BITWORD FOLLOW_datatypesDefCommand_in_extendedCommand2175_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_datatypesDefCommand_in_extendedCommand2175	= { FOLLOW_datatypesDefCommand_in_extendedCommand2175_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_rewriterulesCommand_in_extendedCommand2182  */
-static	ANTLR3_BITWORD FOLLOW_rewriterulesCommand_in_extendedCommand2182_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_rewriterulesCommand_in_extendedCommand2182	= { FOLLOW_rewriterulesCommand_in_extendedCommand2182_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_SORTS_TOK_in_extendedCommand2197  */
-static	ANTLR3_BITWORD FOLLOW_DECLARE_SORTS_TOK_in_extendedCommand2197_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_SORTS_TOK_in_extendedCommand2197	= { FOLLOW_DECLARE_SORTS_TOK_in_extendedCommand2197_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2217  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2217_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2217	= { FOLLOW_LPAREN_TOK_in_extendedCommand2217_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2225  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2225_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2902000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2225	= { FOLLOW_symbol_in_extendedCommand2225_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2247  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2247_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2247	= { FOLLOW_RPAREN_TOK_in_extendedCommand2247_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_FUNS_TOK_in_extendedCommand2260  */
-static	ANTLR3_BITWORD FOLLOW_DECLARE_FUNS_TOK_in_extendedCommand2260_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_FUNS_TOK_in_extendedCommand2260	= { FOLLOW_DECLARE_FUNS_TOK_in_extendedCommand2260_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2274  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2274_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2274	= { FOLLOW_LPAREN_TOK_in_extendedCommand2274_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2282  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2282_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2282	= { FOLLOW_LPAREN_TOK_in_extendedCommand2282_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2284  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2284_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2284	= { FOLLOW_symbol_in_extendedCommand2284_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_nonemptySortList_in_extendedCommand2301  */
-static	ANTLR3_BITWORD FOLLOW_nonemptySortList_in_extendedCommand2301_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_nonemptySortList_in_extendedCommand2301	= { FOLLOW_nonemptySortList_in_extendedCommand2301_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2304  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2304_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2304	= { FOLLOW_RPAREN_TOK_in_extendedCommand2304_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2325  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2325_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2325	= { FOLLOW_RPAREN_TOK_in_extendedCommand2325_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_PREDS_TOK_in_extendedCommand2338  */
-static	ANTLR3_BITWORD FOLLOW_DECLARE_PREDS_TOK_in_extendedCommand2338_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_PREDS_TOK_in_extendedCommand2338	= { FOLLOW_DECLARE_PREDS_TOK_in_extendedCommand2338_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2352  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2352_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2352	= { FOLLOW_LPAREN_TOK_in_extendedCommand2352_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2360  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2360_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2360	= { FOLLOW_LPAREN_TOK_in_extendedCommand2360_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2362  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2362_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2902004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2362	= { FOLLOW_symbol_in_extendedCommand2362_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortList_in_extendedCommand2379  */
-static	ANTLR3_BITWORD FOLLOW_sortList_in_extendedCommand2379_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_sortList_in_extendedCommand2379	= { FOLLOW_sortList_in_extendedCommand2379_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2382  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2382_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2382	= { FOLLOW_RPAREN_TOK_in_extendedCommand2382_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2403  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2403_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2403	= { FOLLOW_RPAREN_TOK_in_extendedCommand2403_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINE_TOK_in_extendedCommand2416  */
-static	ANTLR3_BITWORD FOLLOW_DEFINE_TOK_in_extendedCommand2416_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_DEFINE_TOK_in_extendedCommand2416	= { FOLLOW_DEFINE_TOK_in_extendedCommand2416_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2426  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2426_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2426	= { FOLLOW_symbol_in_extendedCommand2426_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2443  */
-static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2443_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2443	= { FOLLOW_term_in_extendedCommand2443_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2460  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2460_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2460	= { FOLLOW_LPAREN_TOK_in_extendedCommand2460_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2468  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2468_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2468	= { FOLLOW_symbol_in_extendedCommand2468_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_extendedCommand2485  */
-static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_extendedCommand2485_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_extendedCommand2485	= { FOLLOW_sortedVarList_in_extendedCommand2485_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2488  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2488_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2488	= { FOLLOW_RPAREN_TOK_in_extendedCommand2488_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2504  */
-static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2504_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2504	= { FOLLOW_term_in_extendedCommand2504_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINE_CONST_TOK_in_extendedCommand2525  */
-static	ANTLR3_BITWORD FOLLOW_DEFINE_CONST_TOK_in_extendedCommand2525_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_DEFINE_CONST_TOK_in_extendedCommand2525	= { FOLLOW_DEFINE_CONST_TOK_in_extendedCommand2525_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2533  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2533_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2533	= { FOLLOW_symbol_in_extendedCommand2533_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_extendedCommand2546  */
-static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_extendedCommand2546_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_extendedCommand2546	= { FOLLOW_sortSymbol_in_extendedCommand2546_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2559  */
-static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2559_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2559	= { FOLLOW_term_in_extendedCommand2559_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_SIMPLIFY_TOK_in_extendedCommand2573  */
-static	ANTLR3_BITWORD FOLLOW_SIMPLIFY_TOK_in_extendedCommand2573_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_SIMPLIFY_TOK_in_extendedCommand2573	= { FOLLOW_SIMPLIFY_TOK_in_extendedCommand2573_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2581  */
-static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2581_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2581	= { FOLLOW_term_in_extendedCommand2581_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_QE_TOK_in_extendedCommand2594  */
-static	ANTLR3_BITWORD FOLLOW_GET_QE_TOK_in_extendedCommand2594_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_GET_QE_TOK_in_extendedCommand2594	= { FOLLOW_GET_QE_TOK_in_extendedCommand2594_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2602  */
-static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2602_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2602	= { FOLLOW_term_in_extendedCommand2602_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_QE_DISJUNCT_TOK_in_extendedCommand2615  */
-static	ANTLR3_BITWORD FOLLOW_GET_QE_DISJUNCT_TOK_in_extendedCommand2615_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_GET_QE_DISJUNCT_TOK_in_extendedCommand2615	= { FOLLOW_GET_QE_DISJUNCT_TOK_in_extendedCommand2615_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2623  */
-static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2623_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2623	= { FOLLOW_term_in_extendedCommand2623_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDefCommand2654  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDefCommand2654_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2902000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDefCommand2654	= { FOLLOW_LPAREN_TOK_in_datatypesDefCommand2654_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_datatypesDefCommand2662  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_datatypesDefCommand2662_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2902000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_datatypesDefCommand2662	= { FOLLOW_symbol_in_datatypesDefCommand2662_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDefCommand2678  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDefCommand2678_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDefCommand2678	= { FOLLOW_RPAREN_TOK_in_datatypesDefCommand2678_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDefCommand2682  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDefCommand2682_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDefCommand2682	= { FOLLOW_LPAREN_TOK_in_datatypesDefCommand2682_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDefCommand2686  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDefCommand2686_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDefCommand2686	= { FOLLOW_LPAREN_TOK_in_datatypesDefCommand2686_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypeDef_in_datatypesDefCommand2688  */
-static	ANTLR3_BITWORD FOLLOW_datatypeDef_in_datatypesDefCommand2688_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_datatypeDef_in_datatypesDefCommand2688	= { FOLLOW_datatypeDef_in_datatypesDefCommand2688_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDefCommand2691  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDefCommand2691_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDefCommand2691	= { FOLLOW_RPAREN_TOK_in_datatypesDefCommand2691_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDefCommand2696  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDefCommand2696_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDefCommand2696	= { FOLLOW_RPAREN_TOK_in_datatypesDefCommand2696_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_REWRITE_RULE_TOK_in_rewriterulesCommand2725  */
-static	ANTLR3_BITWORD FOLLOW_REWRITE_RULE_TOK_in_rewriterulesCommand2725_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_REWRITE_RULE_TOK_in_rewriterulesCommand2725	= { FOLLOW_REWRITE_RULE_TOK_in_rewriterulesCommand2725_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_rewriterulesCommand2731  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_rewriterulesCommand2731_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_rewriterulesCommand2731	= { FOLLOW_LPAREN_TOK_in_rewriterulesCommand2731_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_rewriterulesCommand2733  */
-static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_rewriterulesCommand2733_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_rewriterulesCommand2733	= { FOLLOW_sortedVarList_in_rewriterulesCommand2733_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_rewriterulesCommand2736  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_rewriterulesCommand2736_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_rewriterulesCommand2736	= { FOLLOW_RPAREN_TOK_in_rewriterulesCommand2736_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_rewriterulesCommand2748  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_rewriterulesCommand2748_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_rewriterulesCommand2748	= { FOLLOW_LPAREN_TOK_in_rewriterulesCommand2748_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_pattern_in_rewriterulesCommand2752  */
-static	ANTLR3_BITWORD FOLLOW_pattern_in_rewriterulesCommand2752_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_pattern_in_rewriterulesCommand2752	= { FOLLOW_pattern_in_rewriterulesCommand2752_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_rewriterulesCommand2760  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_rewriterulesCommand2760_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_rewriterulesCommand2760	= { FOLLOW_RPAREN_TOK_in_rewriterulesCommand2760_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_rewriterulesCommand2766  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_rewriterulesCommand2766_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x291602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_rewriterulesCommand2766	= { FOLLOW_LPAREN_TOK_in_rewriterulesCommand2766_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_rewriterulesCommand2769  */
-static	ANTLR3_BITWORD FOLLOW_termList_in_rewriterulesCommand2769_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_termList_in_rewriterulesCommand2769	= { FOLLOW_termList_in_rewriterulesCommand2769_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_rewriterulesCommand2774  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_rewriterulesCommand2774_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_rewriterulesCommand2774	= { FOLLOW_RPAREN_TOK_in_rewriterulesCommand2774_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_rewriterulesCommand2780  */
-static	ANTLR3_BITWORD FOLLOW_term_in_rewriterulesCommand2780_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_rewriterulesCommand2780	= { FOLLOW_term_in_rewriterulesCommand2780_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_rewriterulesCommand2783  */
-static	ANTLR3_BITWORD FOLLOW_term_in_rewriterulesCommand2783_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_rewriterulesCommand2783	= { FOLLOW_term_in_rewriterulesCommand2783_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_rewritePropaKind_in_rewriterulesCommand2802  */
-static	ANTLR3_BITWORD FOLLOW_rewritePropaKind_in_rewriterulesCommand2802_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_rewritePropaKind_in_rewriterulesCommand2802	= { FOLLOW_rewritePropaKind_in_rewriterulesCommand2802_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_rewriterulesCommand2809  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_rewriterulesCommand2809_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_rewriterulesCommand2809	= { FOLLOW_LPAREN_TOK_in_rewriterulesCommand2809_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_rewriterulesCommand2811  */
-static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_rewriterulesCommand2811_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_rewriterulesCommand2811	= { FOLLOW_sortedVarList_in_rewriterulesCommand2811_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_rewriterulesCommand2814  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_rewriterulesCommand2814_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_rewriterulesCommand2814	= { FOLLOW_RPAREN_TOK_in_rewriterulesCommand2814_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_rewriterulesCommand2826  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_rewriterulesCommand2826_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_rewriterulesCommand2826	= { FOLLOW_LPAREN_TOK_in_rewriterulesCommand2826_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_pattern_in_rewriterulesCommand2830  */
-static	ANTLR3_BITWORD FOLLOW_pattern_in_rewriterulesCommand2830_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_pattern_in_rewriterulesCommand2830	= { FOLLOW_pattern_in_rewriterulesCommand2830_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_rewriterulesCommand2838  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_rewriterulesCommand2838_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_rewriterulesCommand2838	= { FOLLOW_RPAREN_TOK_in_rewriterulesCommand2838_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_rewriterulesCommand2844  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_rewriterulesCommand2844_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x291602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_rewriterulesCommand2844	= { FOLLOW_LPAREN_TOK_in_rewriterulesCommand2844_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_rewriterulesCommand2847  */
-static	ANTLR3_BITWORD FOLLOW_termList_in_rewriterulesCommand2847_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_termList_in_rewriterulesCommand2847	= { FOLLOW_termList_in_rewriterulesCommand2847_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_rewriterulesCommand2852  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_rewriterulesCommand2852_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_rewriterulesCommand2852	= { FOLLOW_RPAREN_TOK_in_rewriterulesCommand2852_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_rewriterulesCommand2858  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_rewriterulesCommand2858_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x291602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_rewriterulesCommand2858	= { FOLLOW_LPAREN_TOK_in_rewriterulesCommand2858_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_rewriterulesCommand2861  */
-static	ANTLR3_BITWORD FOLLOW_termList_in_rewriterulesCommand2861_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_termList_in_rewriterulesCommand2861	= { FOLLOW_termList_in_rewriterulesCommand2861_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_rewriterulesCommand2866  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_rewriterulesCommand2866_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_rewriterulesCommand2866	= { FOLLOW_RPAREN_TOK_in_rewriterulesCommand2866_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_rewriterulesCommand2872  */
-static	ANTLR3_BITWORD FOLLOW_term_in_rewriterulesCommand2872_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_rewriterulesCommand2872	= { FOLLOW_term_in_rewriterulesCommand2872_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_REDUCTION_RULE_TOK_in_rewritePropaKind2893  */
-static	ANTLR3_BITWORD FOLLOW_REDUCTION_RULE_TOK_in_rewritePropaKind2893_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_REDUCTION_RULE_TOK_in_rewritePropaKind2893	= { FOLLOW_REDUCTION_RULE_TOK_in_rewritePropaKind2893_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_PROPAGATION_RULE_TOK_in_rewritePropaKind2904  */
-static	ANTLR3_BITWORD FOLLOW_PROPAGATION_RULE_TOK_in_rewritePropaKind2904_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_PROPAGATION_RULE_TOK_in_rewritePropaKind2904	= { FOLLOW_PROPAGATION_RULE_TOK_in_rewritePropaKind2904_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_pattern2926  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_pattern2926_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_pattern2926	= { FOLLOW_LPAREN_TOK_in_pattern2926_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_pattern2928  */
-static	ANTLR3_BITWORD FOLLOW_termList_in_pattern2928_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_termList_in_pattern2928	= { FOLLOW_termList_in_pattern2928_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_pattern2931  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_pattern2931_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_pattern2931	= { FOLLOW_RPAREN_TOK_in_pattern2931_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExprNoKeyword2956  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExprNoKeyword2956_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExprNoKeyword2956	= { FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExprNoKeyword2956_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExprNoKeyword2968  */
-static	ANTLR3_BITWORD FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExprNoKeyword2968_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExprNoKeyword2968	= { FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExprNoKeyword2968_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_HEX_LITERAL_in_simpleSymbolicExprNoKeyword2980  */
-static	ANTLR3_BITWORD FOLLOW_HEX_LITERAL_in_simpleSymbolicExprNoKeyword2980_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_HEX_LITERAL_in_simpleSymbolicExprNoKeyword2980	= { FOLLOW_HEX_LITERAL_in_simpleSymbolicExprNoKeyword2980_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BINARY_LITERAL_in_simpleSymbolicExprNoKeyword2992  */
-static	ANTLR3_BITWORD FOLLOW_BINARY_LITERAL_in_simpleSymbolicExprNoKeyword2992_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_BINARY_LITERAL_in_simpleSymbolicExprNoKeyword2992	= { FOLLOW_BINARY_LITERAL_in_simpleSymbolicExprNoKeyword2992_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_simpleSymbolicExprNoKeyword3004  */
-static	ANTLR3_BITWORD FOLLOW_str_in_simpleSymbolicExprNoKeyword3004_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_str_in_simpleSymbolicExprNoKeyword3004	= { FOLLOW_str_in_simpleSymbolicExprNoKeyword3004_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_simpleSymbolicExprNoKeyword3024  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_simpleSymbolicExprNoKeyword3024_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_simpleSymbolicExprNoKeyword3024	= { FOLLOW_symbol_in_simpleSymbolicExprNoKeyword3024_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_simpleSymbolicExprNoKeyword3039  */
-static	ANTLR3_BITWORD FOLLOW_set_in_simpleSymbolicExprNoKeyword3039_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_set_in_simpleSymbolicExprNoKeyword3039	= { FOLLOW_set_in_simpleSymbolicExprNoKeyword3039_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_builtinOp_in_simpleSymbolicExprNoKeyword3225  */
-static	ANTLR3_BITWORD FOLLOW_builtinOp_in_simpleSymbolicExprNoKeyword3225_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_builtinOp_in_simpleSymbolicExprNoKeyword3225	= { FOLLOW_builtinOp_in_simpleSymbolicExprNoKeyword3225_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_KEYWORD_in_keyword3246  */
-static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_keyword3246_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_KEYWORD_in_keyword3246	= { FOLLOW_KEYWORD_in_keyword3246_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleSymbolicExprNoKeyword_in_simpleSymbolicExpr3266  */
-static	ANTLR3_BITWORD FOLLOW_simpleSymbolicExprNoKeyword_in_simpleSymbolicExpr3266_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_simpleSymbolicExprNoKeyword_in_simpleSymbolicExpr3266	= { FOLLOW_simpleSymbolicExprNoKeyword_in_simpleSymbolicExpr3266_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_KEYWORD_in_simpleSymbolicExpr3273  */
-static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_simpleSymbolicExpr3273_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_KEYWORD_in_simpleSymbolicExpr3273	= { FOLLOW_KEYWORD_in_simpleSymbolicExpr3273_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleSymbolicExpr_in_symbolicExpr3298  */
-static	ANTLR3_BITWORD FOLLOW_simpleSymbolicExpr_in_symbolicExpr3298_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_simpleSymbolicExpr_in_symbolicExpr3298	= { FOLLOW_simpleSymbolicExpr_in_symbolicExpr3298_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_symbolicExpr3305  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_symbolicExpr3305_bits[]	= { ANTLR3_UINT64_LIT(0x000EBA7B54AF00C0), ANTLR3_UINT64_LIT(0xFFEBF55FA6F3F000), ANTLR3_UINT64_LIT(0x0000000000095803) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_symbolicExpr3305	= { FOLLOW_LPAREN_TOK_in_symbolicExpr3305_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolicExpr_in_symbolicExpr3313  */
-static	ANTLR3_BITWORD FOLLOW_symbolicExpr_in_symbolicExpr3313_bits[]	= { ANTLR3_UINT64_LIT(0x000EBA7B54AF00C0), ANTLR3_UINT64_LIT(0xFFEBF55FA6F3F000), ANTLR3_UINT64_LIT(0x0000000000095803) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbolicExpr_in_symbolicExpr3313	= { FOLLOW_symbolicExpr_in_symbolicExpr3313_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_symbolicExpr3321  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_symbolicExpr3321_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_symbolicExpr3321	= { FOLLOW_RPAREN_TOK_in_symbolicExpr3321_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3354  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3354_bits[]	= { ANTLR3_UINT64_LIT(0x000C9A0000020040), ANTLR3_UINT64_LIT(0x8000351A24C00000), ANTLR3_UINT64_LIT(0x0000000000010000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3354	= { FOLLOW_LPAREN_TOK_in_term3354_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_builtinOp_in_term3356  */
-static	ANTLR3_BITWORD FOLLOW_builtinOp_in_term3356_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_builtinOp_in_term3356	= { FOLLOW_builtinOp_in_term3356_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_term3359  */
-static	ANTLR3_BITWORD FOLLOW_termList_in_term3359_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_termList_in_term3359	= { FOLLOW_termList_in_term3359_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3362  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3362_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3362	= { FOLLOW_RPAREN_TOK_in_term3362_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3374  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3374_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000100) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3374	= { FOLLOW_LPAREN_TOK_in_term3374_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_AS_TOK_in_term3376  */
-static	ANTLR3_BITWORD FOLLOW_AS_TOK_in_term3376_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_AS_TOK_in_term3376	= { FOLLOW_AS_TOK_in_term3376_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term3378  */
-static	ANTLR3_BITWORD FOLLOW_term_in_term3378_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_term3378	= { FOLLOW_term_in_term3378_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_term3381  */
-static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_term3381_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_term3381	= { FOLLOW_sortSymbol_in_term3381_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3384  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3384_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3384	= { FOLLOW_RPAREN_TOK_in_term3384_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3396  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3396_bits[]	= { ANTLR3_UINT64_LIT(0x0011000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3396	= { FOLLOW_LPAREN_TOK_in_term3396_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_quantOp_in_term3398  */
-static	ANTLR3_BITWORD FOLLOW_quantOp_in_term3398_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_quantOp_in_term3398	= { FOLLOW_quantOp_in_term3398_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3405  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3405_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3405	= { FOLLOW_LPAREN_TOK_in_term3405_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_term3407  */
-static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_term3407_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_term3407	= { FOLLOW_sortedVarList_in_term3407_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3410  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3410_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3410	= { FOLLOW_RPAREN_TOK_in_term3410_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term3422  */
-static	ANTLR3_BITWORD FOLLOW_term_in_term3422_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_term3422	= { FOLLOW_term_in_term3422_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3425  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3425_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3425	= { FOLLOW_RPAREN_TOK_in_term3425_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3437  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3437_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3437	= { FOLLOW_LPAREN_TOK_in_term3437_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_functionName_in_term3439  */
-static	ANTLR3_BITWORD FOLLOW_functionName_in_term3439_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_functionName_in_term3439	= { FOLLOW_functionName_in_term3439_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_term3457  */
-static	ANTLR3_BITWORD FOLLOW_termList_in_term3457_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_termList_in_term3457	= { FOLLOW_termList_in_term3457_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3460  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3460_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3460	= { FOLLOW_RPAREN_TOK_in_term3460_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3473  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3473_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3473	= { FOLLOW_LPAREN_TOK_in_term3473_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_indexedFunctionName_in_term3489  */
-static	ANTLR3_BITWORD FOLLOW_indexedFunctionName_in_term3489_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_indexedFunctionName_in_term3489	= { FOLLOW_indexedFunctionName_in_term3489_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_term3492  */
-static	ANTLR3_BITWORD FOLLOW_termList_in_term3492_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_termList_in_term3492	= { FOLLOW_termList_in_term3492_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3495  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3495_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3495	= { FOLLOW_RPAREN_TOK_in_term3495_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3519  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3519_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000100) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3519	= { FOLLOW_LPAREN_TOK_in_term3519_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_AS_TOK_in_term3521  */
-static	ANTLR3_BITWORD FOLLOW_AS_TOK_in_term3521_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000400000) };
-static  ANTLR3_BITSET_LIST FOLLOW_AS_TOK_in_term3521	= { FOLLOW_AS_TOK_in_term3521_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_CONST_TOK_in_term3523  */
-static	ANTLR3_BITWORD FOLLOW_CONST_TOK_in_term3523_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_CONST_TOK_in_term3523	= { FOLLOW_CONST_TOK_in_term3523_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_term3525  */
-static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_term3525_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_term3525	= { FOLLOW_sortSymbol_in_term3525_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3534  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3534_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3534	= { FOLLOW_RPAREN_TOK_in_term3534_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term3536  */
-static	ANTLR3_BITWORD FOLLOW_term_in_term3536_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_term3536	= { FOLLOW_term_in_term3536_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3539  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3539_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3539	= { FOLLOW_RPAREN_TOK_in_term3539_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3565  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3565_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000002000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3565	= { FOLLOW_LPAREN_TOK_in_term3565_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LET_TOK_in_term3567  */
-static	ANTLR3_BITWORD FOLLOW_LET_TOK_in_term3567_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LET_TOK_in_term3567	= { FOLLOW_LET_TOK_in_term3567_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3569  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3569_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3569	= { FOLLOW_LPAREN_TOK_in_term3569_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3583  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3583_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3583	= { FOLLOW_LPAREN_TOK_in_term3583_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_term3585  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_term3585_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_term3585	= { FOLLOW_symbol_in_term3585_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term3595  */
-static	ANTLR3_BITWORD FOLLOW_term_in_term3595_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_term3595	= { FOLLOW_term_in_term3595_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_term3600  */
-static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_term3600_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_term3600	= { FOLLOW_sortSymbol_in_term3600_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term3612  */
-static	ANTLR3_BITWORD FOLLOW_term_in_term3612_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_term3612	= { FOLLOW_term_in_term3612_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3629  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3629_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3629	= { FOLLOW_RPAREN_TOK_in_term3629_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3666  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3666_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3666	= { FOLLOW_RPAREN_TOK_in_term3666_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term3672  */
-static	ANTLR3_BITWORD FOLLOW_term_in_term3672_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_term3672	= { FOLLOW_term_in_term3672_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3679  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3679_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3679	= { FOLLOW_RPAREN_TOK_in_term3679_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_term3691  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_term3691_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000008) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_term3691	= { FOLLOW_symbol_in_term3691_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_SYGUS_ENUM_CONS_TOK_in_term3694  */
-static	ANTLR3_BITWORD FOLLOW_SYGUS_ENUM_CONS_TOK_in_term3694_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_SYGUS_ENUM_CONS_TOK_in_term3694	= { FOLLOW_SYGUS_ENUM_CONS_TOK_in_term3694_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_term3700  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_term3700_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_term3700	= { FOLLOW_symbol_in_term3700_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_term3719  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_term3719_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_term3719	= { FOLLOW_symbol_in_term3719_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3739  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3739_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000004000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3739	= { FOLLOW_LPAREN_TOK_in_term3739_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTRIBUTE_TOK_in_term3741  */
-static	ANTLR3_BITWORD FOLLOW_ATTRIBUTE_TOK_in_term3741_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_ATTRIBUTE_TOK_in_term3741	= { FOLLOW_ATTRIBUTE_TOK_in_term3741_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term3743  */
-static	ANTLR3_BITWORD FOLLOW_term_in_term3743_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000003E00), ANTLR3_UINT64_LIT(0x0000000400000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_term3743	= { FOLLOW_term_in_term3743_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_attribute_in_term3752  */
-static	ANTLR3_BITWORD FOLLOW_attribute_in_term3752_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000003E00), ANTLR3_UINT64_LIT(0x0100000400000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_attribute_in_term3752	= { FOLLOW_attribute_in_term3752_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3770  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3770_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3770	= { FOLLOW_RPAREN_TOK_in_term3770_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term3788  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term3788_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term3788	= { FOLLOW_INTEGER_LITERAL_in_term3788_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECIMAL_LITERAL_in_term3801  */
-static	ANTLR3_BITWORD FOLLOW_DECIMAL_LITERAL_in_term3801_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_DECIMAL_LITERAL_in_term3801	= { FOLLOW_DECIMAL_LITERAL_in_term3801_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3814  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3814_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000010000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3814	= { FOLLOW_LPAREN_TOK_in_term3814_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INDEX_TOK_in_term3816  */
-static	ANTLR3_BITWORD FOLLOW_INDEX_TOK_in_term3816_bits[]	= { ANTLR3_UINT64_LIT(0x0160000000000000), ANTLR3_UINT64_LIT(0x2000000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INDEX_TOK_in_term3816	= { FOLLOW_INDEX_TOK_in_term3816_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_SIMPLE_SYMBOL_in_term3827  */
-static	ANTLR3_BITWORD FOLLOW_SIMPLE_SYMBOL_in_term3827_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_SIMPLE_SYMBOL_in_term3827	= { FOLLOW_SIMPLE_SYMBOL_in_term3827_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term3831  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term3831_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term3831	= { FOLLOW_INTEGER_LITERAL_in_term3831_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_PINF_TOK_in_term3848  */
-static	ANTLR3_BITWORD FOLLOW_FP_PINF_TOK_in_term3848_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_PINF_TOK_in_term3848	= { FOLLOW_FP_PINF_TOK_in_term3848_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term3852  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term3852_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term3852	= { FOLLOW_INTEGER_LITERAL_in_term3852_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term3856  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term3856_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term3856	= { FOLLOW_INTEGER_LITERAL_in_term3856_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_NINF_TOK_in_term3872  */
-static	ANTLR3_BITWORD FOLLOW_FP_NINF_TOK_in_term3872_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_NINF_TOK_in_term3872	= { FOLLOW_FP_NINF_TOK_in_term3872_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term3876  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term3876_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term3876	= { FOLLOW_INTEGER_LITERAL_in_term3876_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term3880  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term3880_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term3880	= { FOLLOW_INTEGER_LITERAL_in_term3880_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_NAN_TOK_in_term3896  */
-static	ANTLR3_BITWORD FOLLOW_FP_NAN_TOK_in_term3896_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_NAN_TOK_in_term3896	= { FOLLOW_FP_NAN_TOK_in_term3896_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term3900  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term3900_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term3900	= { FOLLOW_INTEGER_LITERAL_in_term3900_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term3904  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term3904_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term3904	= { FOLLOW_INTEGER_LITERAL_in_term3904_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3930  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3930_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3930	= { FOLLOW_RPAREN_TOK_in_term3930_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_HEX_LITERAL_in_term3937  */
-static	ANTLR3_BITWORD FOLLOW_HEX_LITERAL_in_term3937_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_HEX_LITERAL_in_term3937	= { FOLLOW_HEX_LITERAL_in_term3937_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BINARY_LITERAL_in_term3950  */
-static	ANTLR3_BITWORD FOLLOW_BINARY_LITERAL_in_term3950_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_BINARY_LITERAL_in_term3950	= { FOLLOW_BINARY_LITERAL_in_term3950_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_term3963  */
-static	ANTLR3_BITWORD FOLLOW_str_in_term3963_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_str_in_term3963	= { FOLLOW_str_in_term3963_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RNE_TOK_in_term3976  */
-static	ANTLR3_BITWORD FOLLOW_FP_RNE_TOK_in_term3976_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_RNE_TOK_in_term3976	= { FOLLOW_FP_RNE_TOK_in_term3976_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RNA_TOK_in_term3989  */
-static	ANTLR3_BITWORD FOLLOW_FP_RNA_TOK_in_term3989_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_RNA_TOK_in_term3989	= { FOLLOW_FP_RNA_TOK_in_term3989_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RTP_TOK_in_term4002  */
-static	ANTLR3_BITWORD FOLLOW_FP_RTP_TOK_in_term4002_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_RTP_TOK_in_term4002	= { FOLLOW_FP_RTP_TOK_in_term4002_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RTN_TOK_in_term4015  */
-static	ANTLR3_BITWORD FOLLOW_FP_RTN_TOK_in_term4015_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_RTN_TOK_in_term4015	= { FOLLOW_FP_RTN_TOK_in_term4015_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RTZ_TOK_in_term4028  */
-static	ANTLR3_BITWORD FOLLOW_FP_RTZ_TOK_in_term4028_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_RTZ_TOK_in_term4028	= { FOLLOW_FP_RTZ_TOK_in_term4028_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RNE_FULL_TOK_in_term4041  */
-static	ANTLR3_BITWORD FOLLOW_FP_RNE_FULL_TOK_in_term4041_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_RNE_FULL_TOK_in_term4041	= { FOLLOW_FP_RNE_FULL_TOK_in_term4041_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RNA_FULL_TOK_in_term4049  */
-static	ANTLR3_BITWORD FOLLOW_FP_RNA_FULL_TOK_in_term4049_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_RNA_FULL_TOK_in_term4049	= { FOLLOW_FP_RNA_FULL_TOK_in_term4049_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RTP_FULL_TOK_in_term4057  */
-static	ANTLR3_BITWORD FOLLOW_FP_RTP_FULL_TOK_in_term4057_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_RTP_FULL_TOK_in_term4057	= { FOLLOW_FP_RTP_FULL_TOK_in_term4057_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RTN_FULL_TOK_in_term4065  */
-static	ANTLR3_BITWORD FOLLOW_FP_RTN_FULL_TOK_in_term4065_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_RTN_FULL_TOK_in_term4065	= { FOLLOW_FP_RTN_FULL_TOK_in_term4065_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RTZ_FULL_TOK_in_term4073  */
-static	ANTLR3_BITWORD FOLLOW_FP_RTZ_FULL_TOK_in_term4073_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_RTZ_FULL_TOK_in_term4073	= { FOLLOW_FP_RTZ_FULL_TOK_in_term4073_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RENOSTR_TOK_in_term4082  */
-static	ANTLR3_BITWORD FOLLOW_RENOSTR_TOK_in_term4082_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RENOSTR_TOK_in_term4082	= { FOLLOW_RENOSTR_TOK_in_term4082_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_REALLCHAR_TOK_in_term4095  */
-static	ANTLR3_BITWORD FOLLOW_REALLCHAR_TOK_in_term4095_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_REALLCHAR_TOK_in_term4095	= { FOLLOW_REALLCHAR_TOK_in_term4095_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_EMPTYSET_TOK_in_term4108  */
-static	ANTLR3_BITWORD FOLLOW_EMPTYSET_TOK_in_term4108_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_EMPTYSET_TOK_in_term4108	= { FOLLOW_EMPTYSET_TOK_in_term4108_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_UNIVSET_TOK_in_term4121  */
-static	ANTLR3_BITWORD FOLLOW_UNIVSET_TOK_in_term4121_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_UNIVSET_TOK_in_term4121	= { FOLLOW_UNIVSET_TOK_in_term4121_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_NILREF_TOK_in_term4134  */
-static	ANTLR3_BITWORD FOLLOW_NILREF_TOK_in_term4134_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_NILREF_TOK_in_term4134	= { FOLLOW_NILREF_TOK_in_term4134_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_KEYWORD_in_attribute4166  */
-static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_attribute4166_bits[]	= { ANTLR3_UINT64_LIT(0x000EBA7B54AF00C2), ANTLR3_UINT64_LIT(0xFEEBF51BA6F3F000), ANTLR3_UINT64_LIT(0x0000000000095803) };
-static  ANTLR3_BITSET_LIST FOLLOW_KEYWORD_in_attribute4166	= { FOLLOW_KEYWORD_in_attribute4166_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleSymbolicExprNoKeyword_in_attribute4170  */
-static	ANTLR3_BITWORD FOLLOW_simpleSymbolicExprNoKeyword_in_attribute4170_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_simpleSymbolicExprNoKeyword_in_attribute4170	= { FOLLOW_simpleSymbolicExprNoKeyword_in_attribute4170_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTRIBUTE_PATTERN_TOK_in_attribute4186  */
-static	ANTLR3_BITWORD FOLLOW_ATTRIBUTE_PATTERN_TOK_in_attribute4186_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_ATTRIBUTE_PATTERN_TOK_in_attribute4186	= { FOLLOW_ATTRIBUTE_PATTERN_TOK_in_attribute4186_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_attribute4188  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_attribute4188_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_attribute4188	= { FOLLOW_LPAREN_TOK_in_attribute4188_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_attribute4196  */
-static	ANTLR3_BITWORD FOLLOW_term_in_attribute4196_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x291602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_attribute4196	= { FOLLOW_term_in_attribute4196_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_attribute4214  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_attribute4214_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_attribute4214	= { FOLLOW_RPAREN_TOK_in_attribute4214_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTRIBUTE_NO_PATTERN_TOK_in_attribute4226  */
-static	ANTLR3_BITWORD FOLLOW_ATTRIBUTE_NO_PATTERN_TOK_in_attribute4226_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90000), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_ATTRIBUTE_NO_PATTERN_TOK_in_attribute4226	= { FOLLOW_ATTRIBUTE_NO_PATTERN_TOK_in_attribute4226_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_attribute4228  */
-static	ANTLR3_BITWORD FOLLOW_term_in_attribute4228_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_attribute4228	= { FOLLOW_term_in_attribute4228_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_attribute4243  */
-static	ANTLR3_BITWORD FOLLOW_set_in_attribute4243_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_set_in_attribute4243	= { FOLLOW_set_in_attribute4243_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_attribute4253  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_attribute4253_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_attribute4253	= { FOLLOW_INTEGER_LITERAL_in_attribute4253_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTRIBUTE_NAMED_TOK_in_attribute4265  */
-static	ANTLR3_BITWORD FOLLOW_ATTRIBUTE_NAMED_TOK_in_attribute4265_bits[]	= { ANTLR3_UINT64_LIT(0x000EBA7B54AF00C0), ANTLR3_UINT64_LIT(0xFEEBF55FA6F3F000), ANTLR3_UINT64_LIT(0x0000000000095803) };
-static  ANTLR3_BITSET_LIST FOLLOW_ATTRIBUTE_NAMED_TOK_in_attribute4265	= { FOLLOW_ATTRIBUTE_NAMED_TOK_in_attribute4265_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolicExpr_in_attribute4267  */
-static	ANTLR3_BITWORD FOLLOW_symbolicExpr_in_attribute4267_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbolicExpr_in_attribute4267	= { FOLLOW_symbolicExpr_in_attribute4267_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_indexedFunctionName4290  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_indexedFunctionName4290_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000010000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_indexedFunctionName4290	= { FOLLOW_LPAREN_TOK_in_indexedFunctionName4290_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INDEX_TOK_in_indexedFunctionName4292  */
-static	ANTLR3_BITWORD FOLLOW_INDEX_TOK_in_indexedFunctionName4292_bits[]	= { ANTLR3_UINT64_LIT(0x03E0040000000000), ANTLR3_UINT64_LIT(0x2002000040000FF0), ANTLR3_UINT64_LIT(0x0000000000FC4000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INDEX_TOK_in_indexedFunctionName4292	= { FOLLOW_INDEX_TOK_in_indexedFunctionName4292_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_146_in_indexedFunctionName4300  */
-static	ANTLR3_BITWORD FOLLOW_146_in_indexedFunctionName4300_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_146_in_indexedFunctionName4300	= { FOLLOW_146_in_indexedFunctionName4300_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4304  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4304_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4304	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4304_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4308  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4308_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4308	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4308_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_147_in_indexedFunctionName4324  */
-static	ANTLR3_BITWORD FOLLOW_147_in_indexedFunctionName4324_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_147_in_indexedFunctionName4324	= { FOLLOW_147_in_indexedFunctionName4324_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4328  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4328_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4328	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4328_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_151_in_indexedFunctionName4344  */
-static	ANTLR3_BITWORD FOLLOW_151_in_indexedFunctionName4344_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_151_in_indexedFunctionName4344	= { FOLLOW_151_in_indexedFunctionName4344_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4348  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4348_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4348	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4348_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_150_in_indexedFunctionName4364  */
-static	ANTLR3_BITWORD FOLLOW_150_in_indexedFunctionName4364_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_150_in_indexedFunctionName4364	= { FOLLOW_150_in_indexedFunctionName4364_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4368  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4368_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4368	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4368_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_148_in_indexedFunctionName4384  */
-static	ANTLR3_BITWORD FOLLOW_148_in_indexedFunctionName4384_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_148_in_indexedFunctionName4384	= { FOLLOW_148_in_indexedFunctionName4384_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4388  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4388_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4388	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4388_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_149_in_indexedFunctionName4404  */
-static	ANTLR3_BITWORD FOLLOW_149_in_indexedFunctionName4404_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_149_in_indexedFunctionName4404	= { FOLLOW_149_in_indexedFunctionName4404_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4408  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4408_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4408	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4408_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DIVISIBLE_TOK_in_indexedFunctionName4424  */
-static	ANTLR3_BITWORD FOLLOW_DIVISIBLE_TOK_in_indexedFunctionName4424_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_DIVISIBLE_TOK_in_indexedFunctionName4424	= { FOLLOW_DIVISIBLE_TOK_in_indexedFunctionName4424_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4428  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4428_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4428	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4428_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INT2BV_TOK_in_indexedFunctionName4444  */
-static	ANTLR3_BITWORD FOLLOW_INT2BV_TOK_in_indexedFunctionName4444_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INT2BV_TOK_in_indexedFunctionName4444	= { FOLLOW_INT2BV_TOK_in_indexedFunctionName4444_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4448  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4448_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4448	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4448_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_PINF_TOK_in_indexedFunctionName4464  */
-static	ANTLR3_BITWORD FOLLOW_FP_PINF_TOK_in_indexedFunctionName4464_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_PINF_TOK_in_indexedFunctionName4464	= { FOLLOW_FP_PINF_TOK_in_indexedFunctionName4464_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4468  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4468_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4468	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4468_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4472  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4472_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4472	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4472_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_NINF_TOK_in_indexedFunctionName4488  */
-static	ANTLR3_BITWORD FOLLOW_FP_NINF_TOK_in_indexedFunctionName4488_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_NINF_TOK_in_indexedFunctionName4488	= { FOLLOW_FP_NINF_TOK_in_indexedFunctionName4488_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4492  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4492_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4492	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4492_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4496  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4496_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4496	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4496_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_NAN_TOK_in_indexedFunctionName4512  */
-static	ANTLR3_BITWORD FOLLOW_FP_NAN_TOK_in_indexedFunctionName4512_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_NAN_TOK_in_indexedFunctionName4512	= { FOLLOW_FP_NAN_TOK_in_indexedFunctionName4512_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4516  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4516_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4516	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4516_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4520  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4520_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4520	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4520_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_PZERO_TOK_in_indexedFunctionName4536  */
-static	ANTLR3_BITWORD FOLLOW_FP_PZERO_TOK_in_indexedFunctionName4536_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_PZERO_TOK_in_indexedFunctionName4536	= { FOLLOW_FP_PZERO_TOK_in_indexedFunctionName4536_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4540  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4540_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4540	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4540_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4544  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4544_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4544	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4544_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_NZERO_TOK_in_indexedFunctionName4560  */
-static	ANTLR3_BITWORD FOLLOW_FP_NZERO_TOK_in_indexedFunctionName4560_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_NZERO_TOK_in_indexedFunctionName4560	= { FOLLOW_FP_NZERO_TOK_in_indexedFunctionName4560_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4564  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4564_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4564	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4564_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4568  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4568_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4568	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4568_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_FP_TOK_in_indexedFunctionName4584  */
-static	ANTLR3_BITWORD FOLLOW_FP_TO_FP_TOK_in_indexedFunctionName4584_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_FP_TOK_in_indexedFunctionName4584	= { FOLLOW_FP_TO_FP_TOK_in_indexedFunctionName4584_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4588  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4588_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4588	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4588_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4592  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4592_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4592	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4592_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_FPBV_TOK_in_indexedFunctionName4608  */
-static	ANTLR3_BITWORD FOLLOW_FP_TO_FPBV_TOK_in_indexedFunctionName4608_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_FPBV_TOK_in_indexedFunctionName4608	= { FOLLOW_FP_TO_FPBV_TOK_in_indexedFunctionName4608_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4612  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4612_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4612	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4612_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4616  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4616_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4616	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4616_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_FPFP_TOK_in_indexedFunctionName4632  */
-static	ANTLR3_BITWORD FOLLOW_FP_TO_FPFP_TOK_in_indexedFunctionName4632_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_FPFP_TOK_in_indexedFunctionName4632	= { FOLLOW_FP_TO_FPFP_TOK_in_indexedFunctionName4632_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4636  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4636_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4636	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4636_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4640  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4640_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4640	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4640_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_FPR_TOK_in_indexedFunctionName4656  */
-static	ANTLR3_BITWORD FOLLOW_FP_TO_FPR_TOK_in_indexedFunctionName4656_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_FPR_TOK_in_indexedFunctionName4656	= { FOLLOW_FP_TO_FPR_TOK_in_indexedFunctionName4656_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4660  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4660_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4660	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4660_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4664  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4664_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4664	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4664_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_FPS_TOK_in_indexedFunctionName4680  */
-static	ANTLR3_BITWORD FOLLOW_FP_TO_FPS_TOK_in_indexedFunctionName4680_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_FPS_TOK_in_indexedFunctionName4680	= { FOLLOW_FP_TO_FPS_TOK_in_indexedFunctionName4680_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4684  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4684_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4684	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4684_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4688  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4688_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4688	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4688_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_FPU_TOK_in_indexedFunctionName4704  */
-static	ANTLR3_BITWORD FOLLOW_FP_TO_FPU_TOK_in_indexedFunctionName4704_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_FPU_TOK_in_indexedFunctionName4704	= { FOLLOW_FP_TO_FPU_TOK_in_indexedFunctionName4704_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4708  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4708_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4708	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4708_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4712  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4712_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4712	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4712_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_UBV_TOK_in_indexedFunctionName4728  */
-static	ANTLR3_BITWORD FOLLOW_FP_TO_UBV_TOK_in_indexedFunctionName4728_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_UBV_TOK_in_indexedFunctionName4728	= { FOLLOW_FP_TO_UBV_TOK_in_indexedFunctionName4728_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4732  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4732_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4732	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4732_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_SBV_TOK_in_indexedFunctionName4748  */
-static	ANTLR3_BITWORD FOLLOW_FP_TO_SBV_TOK_in_indexedFunctionName4748_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_SBV_TOK_in_indexedFunctionName4748	= { FOLLOW_FP_TO_SBV_TOK_in_indexedFunctionName4748_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4752  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4752_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4752	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4752_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_badIndexedFunctionName_in_indexedFunctionName4768  */
-static	ANTLR3_BITWORD FOLLOW_badIndexedFunctionName_in_indexedFunctionName4768_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_badIndexedFunctionName_in_indexedFunctionName4768	= { FOLLOW_badIndexedFunctionName_in_indexedFunctionName4768_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_indexedFunctionName4780  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_indexedFunctionName4780_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_indexedFunctionName4780	= { FOLLOW_RPAREN_TOK_in_indexedFunctionName4780_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_badIndexedFunctionName4802  */
-static	ANTLR3_BITWORD FOLLOW_set_in_badIndexedFunctionName4802_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_set_in_badIndexedFunctionName4802	= { FOLLOW_set_in_badIndexedFunctionName4802_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_termList4843  */
-static	ANTLR3_BITWORD FOLLOW_term_in_termList4843_bits[]	= { ANTLR3_UINT64_LIT(0xFC00400240A90002), ANTLR3_UINT64_LIT(0x281602418200000F), ANTLR3_UINT64_LIT(0x0000000000087803) };
-static  ANTLR3_BITSET_LIST FOLLOW_term_in_termList4843	= { FOLLOW_term_in_termList4843_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_LITERAL_2_0_in_str4865  */
-static	ANTLR3_BITWORD FOLLOW_STRING_LITERAL_2_0_in_str4865_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_STRING_LITERAL_2_0_in_str4865	= { FOLLOW_STRING_LITERAL_2_0_in_str4865_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_LITERAL_2_5_in_str4877  */
-static	ANTLR3_BITWORD FOLLOW_STRING_LITERAL_2_5_in_str4877_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_STRING_LITERAL_2_5_in_str4877	= { FOLLOW_STRING_LITERAL_2_5_in_str4877_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_NOT_TOK_in_builtinOp4904  */
-static	ANTLR3_BITWORD FOLLOW_NOT_TOK_in_builtinOp4904_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_NOT_TOK_in_builtinOp4904	= { FOLLOW_NOT_TOK_in_builtinOp4904_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_IMPLIES_TOK_in_builtinOp4917  */
-static	ANTLR3_BITWORD FOLLOW_IMPLIES_TOK_in_builtinOp4917_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_IMPLIES_TOK_in_builtinOp4917	= { FOLLOW_IMPLIES_TOK_in_builtinOp4917_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_AND_TOK_in_builtinOp4926  */
-static	ANTLR3_BITWORD FOLLOW_AND_TOK_in_builtinOp4926_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_AND_TOK_in_builtinOp4926	= { FOLLOW_AND_TOK_in_builtinOp4926_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_OR_TOK_in_builtinOp4939  */
-static	ANTLR3_BITWORD FOLLOW_OR_TOK_in_builtinOp4939_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_OR_TOK_in_builtinOp4939	= { FOLLOW_OR_TOK_in_builtinOp4939_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_XOR_TOK_in_builtinOp4953  */
-static	ANTLR3_BITWORD FOLLOW_XOR_TOK_in_builtinOp4953_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_XOR_TOK_in_builtinOp4953	= { FOLLOW_XOR_TOK_in_builtinOp4953_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_builtinOp4966  */
-static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_builtinOp4966_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_builtinOp4966	= { FOLLOW_EQUAL_TOK_in_builtinOp4966_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DISTINCT_TOK_in_builtinOp4977  */
-static	ANTLR3_BITWORD FOLLOW_DISTINCT_TOK_in_builtinOp4977_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_DISTINCT_TOK_in_builtinOp4977	= { FOLLOW_DISTINCT_TOK_in_builtinOp4977_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_ITE_TOK_in_builtinOp4985  */
-static	ANTLR3_BITWORD FOLLOW_ITE_TOK_in_builtinOp4985_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_ITE_TOK_in_builtinOp4985	= { FOLLOW_ITE_TOK_in_builtinOp4985_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_GREATER_THAN_TOK_in_builtinOp4998  */
-static	ANTLR3_BITWORD FOLLOW_GREATER_THAN_TOK_in_builtinOp4998_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_GREATER_THAN_TOK_in_builtinOp4998	= { FOLLOW_GREATER_THAN_TOK_in_builtinOp4998_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_GREATER_THAN_EQUAL_TOK_in_builtinOp5023  */
-static	ANTLR3_BITWORD FOLLOW_GREATER_THAN_EQUAL_TOK_in_builtinOp5023_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_GREATER_THAN_EQUAL_TOK_in_builtinOp5023	= { FOLLOW_GREATER_THAN_EQUAL_TOK_in_builtinOp5023_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LESS_THAN_EQUAL_TOK_in_builtinOp5048  */
-static	ANTLR3_BITWORD FOLLOW_LESS_THAN_EQUAL_TOK_in_builtinOp5048_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_LESS_THAN_EQUAL_TOK_in_builtinOp5048	= { FOLLOW_LESS_THAN_EQUAL_TOK_in_builtinOp5048_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LESS_THAN_TOK_in_builtinOp5073  */
-static	ANTLR3_BITWORD FOLLOW_LESS_THAN_TOK_in_builtinOp5073_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_LESS_THAN_TOK_in_builtinOp5073	= { FOLLOW_LESS_THAN_TOK_in_builtinOp5073_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_PLUS_TOK_in_builtinOp5098  */
-static	ANTLR3_BITWORD FOLLOW_PLUS_TOK_in_builtinOp5098_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_PLUS_TOK_in_builtinOp5098	= { FOLLOW_PLUS_TOK_in_builtinOp5098_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_MINUS_TOK_in_builtinOp5110  */
-static	ANTLR3_BITWORD FOLLOW_MINUS_TOK_in_builtinOp5110_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_MINUS_TOK_in_builtinOp5110	= { FOLLOW_MINUS_TOK_in_builtinOp5110_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_STAR_TOK_in_builtinOp5121  */
-static	ANTLR3_BITWORD FOLLOW_STAR_TOK_in_builtinOp5121_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_STAR_TOK_in_builtinOp5121	= { FOLLOW_STAR_TOK_in_builtinOp5121_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DIV_TOK_in_builtinOp5133  */
-static	ANTLR3_BITWORD FOLLOW_DIV_TOK_in_builtinOp5133_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_DIV_TOK_in_builtinOp5133	= { FOLLOW_DIV_TOK_in_builtinOp5133_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_BV2NAT_TOK_in_builtinOp5147  */
-static	ANTLR3_BITWORD FOLLOW_BV2NAT_TOK_in_builtinOp5147_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_BV2NAT_TOK_in_builtinOp5147	= { FOLLOW_BV2NAT_TOK_in_builtinOp5147_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DTSIZE_TOK_in_builtinOp5160  */
-static	ANTLR3_BITWORD FOLLOW_DTSIZE_TOK_in_builtinOp5160_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_DTSIZE_TOK_in_builtinOp5160	= { FOLLOW_DTSIZE_TOK_in_builtinOp5160_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FMFCARD_TOK_in_builtinOp5174  */
-static	ANTLR3_BITWORD FOLLOW_FMFCARD_TOK_in_builtinOp5174_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_FMFCARD_TOK_in_builtinOp5174	= { FOLLOW_FMFCARD_TOK_in_builtinOp5174_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FMFCARDVAL_TOK_in_builtinOp5187  */
-static	ANTLR3_BITWORD FOLLOW_FMFCARDVAL_TOK_in_builtinOp5187_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_FMFCARDVAL_TOK_in_builtinOp5187	= { FOLLOW_FMFCARDVAL_TOK_in_builtinOp5187_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INST_CLOSURE_TOK_in_builtinOp5197  */
-static	ANTLR3_BITWORD FOLLOW_INST_CLOSURE_TOK_in_builtinOp5197_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_INST_CLOSURE_TOK_in_builtinOp5197	= { FOLLOW_INST_CLOSURE_TOK_in_builtinOp5197_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_EXISTS_TOK_in_quantOp5239  */
-static	ANTLR3_BITWORD FOLLOW_EXISTS_TOK_in_quantOp5239_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_EXISTS_TOK_in_quantOp5239	= { FOLLOW_EXISTS_TOK_in_quantOp5239_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_FORALL_TOK_in_quantOp5250  */
-static	ANTLR3_BITWORD FOLLOW_FORALL_TOK_in_quantOp5250_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_FORALL_TOK_in_quantOp5250	= { FOLLOW_FORALL_TOK_in_quantOp5250_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_functionName5271  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_functionName5271_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_functionName5271	= { FOLLOW_symbol_in_functionName5271_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sortList5295  */
-static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sortList5295_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280002), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sortList5295	= { FOLLOW_sortSymbol_in_sortList5295_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_nonemptySortList5322  */
-static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_nonemptySortList5322_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280002), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_nonemptySortList5322	= { FOLLOW_sortSymbol_in_nonemptySortList5322_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sortedVarList5351  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sortedVarList5351_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sortedVarList5351	= { FOLLOW_LPAREN_TOK_in_sortedVarList5351_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sortedVarList5353  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_sortedVarList5353_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sortedVarList5353	= { FOLLOW_symbol_in_sortedVarList5353_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sortedVarList5362  */
-static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sortedVarList5362_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sortedVarList5362	= { FOLLOW_sortSymbol_in_sortedVarList5362_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sortedVarList5365  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sortedVarList5365_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sortedVarList5365	= { FOLLOW_RPAREN_TOK_in_sortedVarList5365_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sortName5396  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_sortName5396_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sortName5396	= { FOLLOW_symbol_in_sortName5396_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortName_in_sortSymbol5416  */
-static	ANTLR3_BITWORD FOLLOW_sortName_in_sortSymbol5416_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_sortName_in_sortSymbol5416	= { FOLLOW_sortName_in_sortSymbol5416_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sortSymbol5429  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sortSymbol5429_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000110000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sortSymbol5429	= { FOLLOW_LPAREN_TOK_in_sortSymbol5429_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INDEX_TOK_in_sortSymbol5432  */
-static	ANTLR3_BITWORD FOLLOW_INDEX_TOK_in_sortSymbol5432_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_INDEX_TOK_in_sortSymbol5432	= { FOLLOW_INDEX_TOK_in_sortSymbol5432_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sortSymbol5445  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_sortSymbol5445_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2902004180000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sortSymbol5445	= { FOLLOW_symbol_in_sortSymbol5445_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_nonemptyNumeralList_in_sortSymbol5454  */
-static	ANTLR3_BITWORD FOLLOW_nonemptyNumeralList_in_sortSymbol5454_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_nonemptyNumeralList_in_sortSymbol5454	= { FOLLOW_nonemptyNumeralList_in_sortSymbol5454_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortList_in_sortSymbol5471  */
-static	ANTLR3_BITWORD FOLLOW_sortList_in_sortSymbol5471_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_sortList_in_sortSymbol5471	= { FOLLOW_sortList_in_sortSymbol5471_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sortSymbol5488  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sortSymbol5488_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sortSymbol5488	= { FOLLOW_RPAREN_TOK_in_sortSymbol5488_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_symbolList5511  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_symbolList5511_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280002), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_symbolList5511	= { FOLLOW_symbol_in_symbolList5511_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_SIMPLE_SYMBOL_in_symbol5533  */
-static	ANTLR3_BITWORD FOLLOW_SIMPLE_SYMBOL_in_symbol5533_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_SIMPLE_SYMBOL_in_symbol5533	= { FOLLOW_SIMPLE_SYMBOL_in_symbol5533_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_147_in_symbol5547  */
-static	ANTLR3_BITWORD FOLLOW_147_in_symbol5547_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_147_in_symbol5547	= { FOLLOW_147_in_symbol5547_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_SET_OPTIONS_TOK_in_symbol5563  */
-static	ANTLR3_BITWORD FOLLOW_SET_OPTIONS_TOK_in_symbol5563_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_SET_OPTIONS_TOK_in_symbol5563	= { FOLLOW_SET_OPTIONS_TOK_in_symbol5563_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_VAR_TOK_in_symbol5573  */
-static	ANTLR3_BITWORD FOLLOW_DECLARE_VAR_TOK_in_symbol5573_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_VAR_TOK_in_symbol5573	= { FOLLOW_DECLARE_VAR_TOK_in_symbol5573_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_PRIMED_VAR_TOK_in_symbol5583  */
-static	ANTLR3_BITWORD FOLLOW_DECLARE_PRIMED_VAR_TOK_in_symbol5583_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_PRIMED_VAR_TOK_in_symbol5583	= { FOLLOW_DECLARE_PRIMED_VAR_TOK_in_symbol5583_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_SYNTH_FUN_TOK_in_symbol5593  */
-static	ANTLR3_BITWORD FOLLOW_SYNTH_FUN_TOK_in_symbol5593_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_SYNTH_FUN_TOK_in_symbol5593	= { FOLLOW_SYNTH_FUN_TOK_in_symbol5593_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_SYNTH_INV_TOK_in_symbol5603  */
-static	ANTLR3_BITWORD FOLLOW_SYNTH_INV_TOK_in_symbol5603_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_SYNTH_INV_TOK_in_symbol5603	= { FOLLOW_SYNTH_INV_TOK_in_symbol5603_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_CONSTRAINT_TOK_in_symbol5613  */
-static	ANTLR3_BITWORD FOLLOW_CONSTRAINT_TOK_in_symbol5613_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_CONSTRAINT_TOK_in_symbol5613	= { FOLLOW_CONSTRAINT_TOK_in_symbol5613_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INV_CONSTRAINT_TOK_in_symbol5623  */
-static	ANTLR3_BITWORD FOLLOW_INV_CONSTRAINT_TOK_in_symbol5623_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_INV_CONSTRAINT_TOK_in_symbol5623	= { FOLLOW_INV_CONSTRAINT_TOK_in_symbol5623_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_CHECK_SYNTH_TOK_in_symbol5633  */
-static	ANTLR3_BITWORD FOLLOW_CHECK_SYNTH_TOK_in_symbol5633_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_CHECK_SYNTH_TOK_in_symbol5633	= { FOLLOW_CHECK_SYNTH_TOK_in_symbol5633_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_QUOTED_SYMBOL_in_symbol5653  */
-static	ANTLR3_BITWORD FOLLOW_QUOTED_SYMBOL_in_symbol5653_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_QUOTED_SYMBOL_in_symbol5653	= { FOLLOW_QUOTED_SYMBOL_in_symbol5653_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_UNTERMINATED_QUOTED_SYMBOL_in_symbol5665  */
-static	ANTLR3_BITWORD FOLLOW_UNTERMINATED_QUOTED_SYMBOL_in_symbol5665_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000020000) };
-static  ANTLR3_BITSET_LIST FOLLOW_UNTERMINATED_QUOTED_SYMBOL_in_symbol5665	= { FOLLOW_UNTERMINATED_QUOTED_SYMBOL_in_symbol5665_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_EOF_in_symbol5673  */
-static	ANTLR3_BITWORD FOLLOW_EOF_in_symbol5673_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_symbol5673	= { FOLLOW_EOF_in_symbol5673_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_145_in_symbol5689  */
-static	ANTLR3_BITWORD FOLLOW_145_in_symbol5689_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_145_in_symbol5689	= { FOLLOW_145_in_symbol5689_bits, 1	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_nonemptyNumeralList5721  */
-static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_nonemptyNumeralList5721_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000080000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_nonemptyNumeralList5721	= { FOLLOW_INTEGER_LITERAL_in_nonemptyNumeralList5721_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_datatypeDef5763  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_datatypeDef5763_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_datatypeDef5763	= { FOLLOW_symbol_in_datatypeDef5763_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypeDef5786  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypeDef5786_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypeDef5786	= { FOLLOW_LPAREN_TOK_in_datatypeDef5786_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_constructorDef_in_datatypeDef5788  */
-static	ANTLR3_BITWORD FOLLOW_constructorDef_in_datatypeDef5788_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_constructorDef_in_datatypeDef5788	= { FOLLOW_constructorDef_in_datatypeDef5788_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypeDef5791  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypeDef5791_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypeDef5791	= { FOLLOW_RPAREN_TOK_in_datatypeDef5791_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_constructorDef5821  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_constructorDef5821_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_constructorDef5821	= { FOLLOW_symbol_in_constructorDef5821_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_constructorDef5836  */
-static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_constructorDef5836_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802000100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_constructorDef5836	= { FOLLOW_LPAREN_TOK_in_constructorDef5836_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_selector_in_constructorDef5838  */
-static	ANTLR3_BITWORD FOLLOW_selector_in_constructorDef5838_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0100000000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_selector_in_constructorDef5838	= { FOLLOW_selector_in_constructorDef5838_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_constructorDef5841  */
-static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_constructorDef5841_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000004000000000) };
-static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_constructorDef5841	= { FOLLOW_RPAREN_TOK_in_constructorDef5841_bits, 2	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_selector5869  */
-static	ANTLR3_BITWORD FOLLOW_symbol_in_selector5869_bits[]	= { ANTLR3_UINT64_LIT(0x0000000240280000), ANTLR3_UINT64_LIT(0x2802004100000000), ANTLR3_UINT64_LIT(0x0000000000085800) };
-static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_selector5869	= { FOLLOW_symbol_in_selector5869_bits, 3	};
-/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_selector5872  */
-static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_selector5872_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
-static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_selector5872	= { FOLLOW_sortSymbol_in_selector5872_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_DATATYPES_2_5_TOK_in_extendedCommand2164  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_DATATYPES_2_5_TOK_in_extendedCommand2164_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_DATATYPES_2_5_TOK_in_extendedCommand2164	= { FOLLOW_DECLARE_DATATYPES_2_5_TOK_in_extendedCommand2164_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypes_2_5_DefCommand_in_extendedCommand2166  */
+static	ANTLR3_BITWORD FOLLOW_datatypes_2_5_DefCommand_in_extendedCommand2166_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_datatypes_2_5_DefCommand_in_extendedCommand2166	= { FOLLOW_datatypes_2_5_DefCommand_in_extendedCommand2166_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_CODATATYPES_2_5_TOK_in_extendedCommand2173  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_CODATATYPES_2_5_TOK_in_extendedCommand2173_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_CODATATYPES_2_5_TOK_in_extendedCommand2173	= { FOLLOW_DECLARE_CODATATYPES_2_5_TOK_in_extendedCommand2173_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypes_2_5_DefCommand_in_extendedCommand2175  */
+static	ANTLR3_BITWORD FOLLOW_datatypes_2_5_DefCommand_in_extendedCommand2175_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_datatypes_2_5_DefCommand_in_extendedCommand2175	= { FOLLOW_datatypes_2_5_DefCommand_in_extendedCommand2175_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_DATATYPE_TOK_in_extendedCommand2182  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_DATATYPE_TOK_in_extendedCommand2182_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_DATATYPE_TOK_in_extendedCommand2182	= { FOLLOW_DECLARE_DATATYPE_TOK_in_extendedCommand2182_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypeDefCommand_in_extendedCommand2184  */
+static	ANTLR3_BITWORD FOLLOW_datatypeDefCommand_in_extendedCommand2184_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_datatypeDefCommand_in_extendedCommand2184	= { FOLLOW_datatypeDefCommand_in_extendedCommand2184_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_CODATATYPE_TOK_in_extendedCommand2191  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_CODATATYPE_TOK_in_extendedCommand2191_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_CODATATYPE_TOK_in_extendedCommand2191	= { FOLLOW_DECLARE_CODATATYPE_TOK_in_extendedCommand2191_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypeDefCommand_in_extendedCommand2193  */
+static	ANTLR3_BITWORD FOLLOW_datatypeDefCommand_in_extendedCommand2193_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_datatypeDefCommand_in_extendedCommand2193	= { FOLLOW_datatypeDefCommand_in_extendedCommand2193_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_DATATYPES_TOK_in_extendedCommand2200  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_DATATYPES_TOK_in_extendedCommand2200_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_DATATYPES_TOK_in_extendedCommand2200	= { FOLLOW_DECLARE_DATATYPES_TOK_in_extendedCommand2200_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypesDefCommand_in_extendedCommand2202  */
+static	ANTLR3_BITWORD FOLLOW_datatypesDefCommand_in_extendedCommand2202_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_datatypesDefCommand_in_extendedCommand2202	= { FOLLOW_datatypesDefCommand_in_extendedCommand2202_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_CODATATYPES_TOK_in_extendedCommand2209  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_CODATATYPES_TOK_in_extendedCommand2209_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_CODATATYPES_TOK_in_extendedCommand2209	= { FOLLOW_DECLARE_CODATATYPES_TOK_in_extendedCommand2209_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypesDefCommand_in_extendedCommand2211  */
+static	ANTLR3_BITWORD FOLLOW_datatypesDefCommand_in_extendedCommand2211_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_datatypesDefCommand_in_extendedCommand2211	= { FOLLOW_datatypesDefCommand_in_extendedCommand2211_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_rewriterulesCommand_in_extendedCommand2218  */
+static	ANTLR3_BITWORD FOLLOW_rewriterulesCommand_in_extendedCommand2218_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_rewriterulesCommand_in_extendedCommand2218	= { FOLLOW_rewriterulesCommand_in_extendedCommand2218_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_SORTS_TOK_in_extendedCommand2233  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_SORTS_TOK_in_extendedCommand2233_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_SORTS_TOK_in_extendedCommand2233	= { FOLLOW_DECLARE_SORTS_TOK_in_extendedCommand2233_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2253  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2253_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2253	= { FOLLOW_LPAREN_TOK_in_extendedCommand2253_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2261  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2261_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x4080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2261	= { FOLLOW_symbol_in_extendedCommand2261_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2283  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2283_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2283	= { FOLLOW_RPAREN_TOK_in_extendedCommand2283_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_FUNS_TOK_in_extendedCommand2296  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_FUNS_TOK_in_extendedCommand2296_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_FUNS_TOK_in_extendedCommand2296	= { FOLLOW_DECLARE_FUNS_TOK_in_extendedCommand2296_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2310  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2310_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2310	= { FOLLOW_LPAREN_TOK_in_extendedCommand2310_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2318  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2318_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2318	= { FOLLOW_LPAREN_TOK_in_extendedCommand2318_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2320  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2320_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2320	= { FOLLOW_symbol_in_extendedCommand2320_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_nonemptySortList_in_extendedCommand2337  */
+static	ANTLR3_BITWORD FOLLOW_nonemptySortList_in_extendedCommand2337_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_nonemptySortList_in_extendedCommand2337	= { FOLLOW_nonemptySortList_in_extendedCommand2337_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2340  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2340_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2340	= { FOLLOW_RPAREN_TOK_in_extendedCommand2340_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2361  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2361_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2361	= { FOLLOW_RPAREN_TOK_in_extendedCommand2361_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_PREDS_TOK_in_extendedCommand2374  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_PREDS_TOK_in_extendedCommand2374_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_PREDS_TOK_in_extendedCommand2374	= { FOLLOW_DECLARE_PREDS_TOK_in_extendedCommand2374_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2388  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2388_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2388	= { FOLLOW_LPAREN_TOK_in_extendedCommand2388_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2396  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2396_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2396	= { FOLLOW_LPAREN_TOK_in_extendedCommand2396_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2398  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2398_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x4080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2398	= { FOLLOW_symbol_in_extendedCommand2398_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortList_in_extendedCommand2415  */
+static	ANTLR3_BITWORD FOLLOW_sortList_in_extendedCommand2415_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortList_in_extendedCommand2415	= { FOLLOW_sortList_in_extendedCommand2415_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2418  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2418_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2418	= { FOLLOW_RPAREN_TOK_in_extendedCommand2418_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2439  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2439_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2439	= { FOLLOW_RPAREN_TOK_in_extendedCommand2439_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINE_TOK_in_extendedCommand2452  */
+static	ANTLR3_BITWORD FOLLOW_DEFINE_TOK_in_extendedCommand2452_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_DEFINE_TOK_in_extendedCommand2452	= { FOLLOW_DEFINE_TOK_in_extendedCommand2452_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2462  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2462_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2462	= { FOLLOW_symbol_in_extendedCommand2462_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2479  */
+static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2479_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2479	= { FOLLOW_term_in_extendedCommand2479_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2496  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2496_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2496	= { FOLLOW_LPAREN_TOK_in_extendedCommand2496_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2504  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2504_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2504	= { FOLLOW_symbol_in_extendedCommand2504_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_extendedCommand2521  */
+static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_extendedCommand2521_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_extendedCommand2521	= { FOLLOW_sortedVarList_in_extendedCommand2521_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2524  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2524_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2524	= { FOLLOW_RPAREN_TOK_in_extendedCommand2524_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2540  */
+static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2540_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2540	= { FOLLOW_term_in_extendedCommand2540_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINE_CONST_TOK_in_extendedCommand2561  */
+static	ANTLR3_BITWORD FOLLOW_DEFINE_CONST_TOK_in_extendedCommand2561_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_DEFINE_CONST_TOK_in_extendedCommand2561	= { FOLLOW_DEFINE_CONST_TOK_in_extendedCommand2561_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2569  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2569_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2569	= { FOLLOW_symbol_in_extendedCommand2569_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_extendedCommand2582  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_extendedCommand2582_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_extendedCommand2582	= { FOLLOW_sortSymbol_in_extendedCommand2582_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2595  */
+static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2595_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2595	= { FOLLOW_term_in_extendedCommand2595_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SIMPLIFY_TOK_in_extendedCommand2609  */
+static	ANTLR3_BITWORD FOLLOW_SIMPLIFY_TOK_in_extendedCommand2609_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_SIMPLIFY_TOK_in_extendedCommand2609	= { FOLLOW_SIMPLIFY_TOK_in_extendedCommand2609_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2617  */
+static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2617_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2617	= { FOLLOW_term_in_extendedCommand2617_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_QE_TOK_in_extendedCommand2630  */
+static	ANTLR3_BITWORD FOLLOW_GET_QE_TOK_in_extendedCommand2630_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_GET_QE_TOK_in_extendedCommand2630	= { FOLLOW_GET_QE_TOK_in_extendedCommand2630_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2638  */
+static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2638_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2638	= { FOLLOW_term_in_extendedCommand2638_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_QE_DISJUNCT_TOK_in_extendedCommand2651  */
+static	ANTLR3_BITWORD FOLLOW_GET_QE_DISJUNCT_TOK_in_extendedCommand2651_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_GET_QE_DISJUNCT_TOK_in_extendedCommand2651	= { FOLLOW_GET_QE_DISJUNCT_TOK_in_extendedCommand2651_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2659  */
+static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2659_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2659	= { FOLLOW_term_in_extendedCommand2659_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypes_2_5_DefCommand2690  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypes_2_5_DefCommand2690_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x4080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypes_2_5_DefCommand2690	= { FOLLOW_LPAREN_TOK_in_datatypes_2_5_DefCommand2690_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_datatypes_2_5_DefCommand2698  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_datatypes_2_5_DefCommand2698_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x4080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_datatypes_2_5_DefCommand2698	= { FOLLOW_symbol_in_datatypes_2_5_DefCommand2698_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypes_2_5_DefCommand2714  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypes_2_5_DefCommand2714_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypes_2_5_DefCommand2714	= { FOLLOW_RPAREN_TOK_in_datatypes_2_5_DefCommand2714_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypes_2_5_DefCommand2718  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypes_2_5_DefCommand2718_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypes_2_5_DefCommand2718	= { FOLLOW_LPAREN_TOK_in_datatypes_2_5_DefCommand2718_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypes_2_5_DefCommand2722  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypes_2_5_DefCommand2722_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypes_2_5_DefCommand2722	= { FOLLOW_LPAREN_TOK_in_datatypes_2_5_DefCommand2722_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypeDef_in_datatypes_2_5_DefCommand2724  */
+static	ANTLR3_BITWORD FOLLOW_datatypeDef_in_datatypes_2_5_DefCommand2724_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_datatypeDef_in_datatypes_2_5_DefCommand2724	= { FOLLOW_datatypeDef_in_datatypes_2_5_DefCommand2724_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypes_2_5_DefCommand2727  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypes_2_5_DefCommand2727_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypes_2_5_DefCommand2727	= { FOLLOW_RPAREN_TOK_in_datatypes_2_5_DefCommand2727_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypes_2_5_DefCommand2732  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypes_2_5_DefCommand2732_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypes_2_5_DefCommand2732	= { FOLLOW_RPAREN_TOK_in_datatypes_2_5_DefCommand2732_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_datatypeDefCommand2761  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_datatypeDefCommand2761_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_datatypeDefCommand2761	= { FOLLOW_symbol_in_datatypeDefCommand2761_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypeDefCommand2764  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypeDefCommand2764_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypeDefCommand2764	= { FOLLOW_LPAREN_TOK_in_datatypeDefCommand2764_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypeDefCommand2772  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypeDefCommand2772_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypeDefCommand2772	= { FOLLOW_LPAREN_TOK_in_datatypeDefCommand2772_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_constructorDef_in_datatypeDefCommand2774  */
+static	ANTLR3_BITWORD FOLLOW_constructorDef_in_datatypeDefCommand2774_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_constructorDef_in_datatypeDefCommand2774	= { FOLLOW_constructorDef_in_datatypeDefCommand2774_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypeDefCommand2777  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypeDefCommand2777_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypeDefCommand2777	= { FOLLOW_RPAREN_TOK_in_datatypeDefCommand2777_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypeDefCommand2783  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypeDefCommand2783_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypeDefCommand2783	= { FOLLOW_RPAREN_TOK_in_datatypeDefCommand2783_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDefCommand2810  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDefCommand2810_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDefCommand2810	= { FOLLOW_LPAREN_TOK_in_datatypesDefCommand2810_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDefCommand2818  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDefCommand2818_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDefCommand2818	= { FOLLOW_LPAREN_TOK_in_datatypesDefCommand2818_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_datatypesDefCommand2820  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_datatypesDefCommand2820_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_datatypesDefCommand2820	= { FOLLOW_symbol_in_datatypesDefCommand2820_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_datatypesDefCommand2825  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_datatypesDefCommand2825_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_datatypesDefCommand2825	= { FOLLOW_INTEGER_LITERAL_in_datatypesDefCommand2825_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDefCommand2827  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDefCommand2827_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDefCommand2827	= { FOLLOW_RPAREN_TOK_in_datatypesDefCommand2827_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDefCommand2842  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDefCommand2842_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDefCommand2842	= { FOLLOW_RPAREN_TOK_in_datatypesDefCommand2842_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDefCommand2847  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDefCommand2847_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDefCommand2847	= { FOLLOW_LPAREN_TOK_in_datatypesDefCommand2847_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDefCommand2854  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDefCommand2854_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0004040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDefCommand2854	= { FOLLOW_LPAREN_TOK_in_datatypesDefCommand2854_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PAR_TOK_in_datatypesDefCommand2864  */
+static	ANTLR3_BITWORD FOLLOW_PAR_TOK_in_datatypesDefCommand2864_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_PAR_TOK_in_datatypesDefCommand2864	= { FOLLOW_PAR_TOK_in_datatypesDefCommand2864_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDefCommand2868  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDefCommand2868_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x4080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDefCommand2868	= { FOLLOW_LPAREN_TOK_in_datatypesDefCommand2868_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_datatypesDefCommand2878  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_datatypesDefCommand2878_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x4080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_datatypesDefCommand2878	= { FOLLOW_symbol_in_datatypesDefCommand2878_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDefCommand2906  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDefCommand2906_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDefCommand2906	= { FOLLOW_RPAREN_TOK_in_datatypesDefCommand2906_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDefCommand2916  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDefCommand2916_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDefCommand2916	= { FOLLOW_LPAREN_TOK_in_datatypesDefCommand2916_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDefCommand2926  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDefCommand2926_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDefCommand2926	= { FOLLOW_LPAREN_TOK_in_datatypesDefCommand2926_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_constructorDef_in_datatypesDefCommand2928  */
+static	ANTLR3_BITWORD FOLLOW_constructorDef_in_datatypesDefCommand2928_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_constructorDef_in_datatypesDefCommand2928	= { FOLLOW_constructorDef_in_datatypesDefCommand2928_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDefCommand2931  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDefCommand2931_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDefCommand2931	= { FOLLOW_RPAREN_TOK_in_datatypesDefCommand2931_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDefCommand2942  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDefCommand2942_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDefCommand2942	= { FOLLOW_RPAREN_TOK_in_datatypesDefCommand2942_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDefCommand2963  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDefCommand2963_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDefCommand2963	= { FOLLOW_LPAREN_TOK_in_datatypesDefCommand2963_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_constructorDef_in_datatypesDefCommand2965  */
+static	ANTLR3_BITWORD FOLLOW_constructorDef_in_datatypesDefCommand2965_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_constructorDef_in_datatypesDefCommand2965	= { FOLLOW_constructorDef_in_datatypesDefCommand2965_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDefCommand2968  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDefCommand2968_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDefCommand2968	= { FOLLOW_RPAREN_TOK_in_datatypesDefCommand2968_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDefCommand2983  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDefCommand2983_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDefCommand2983	= { FOLLOW_RPAREN_TOK_in_datatypesDefCommand2983_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDefCommand2994  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDefCommand2994_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDefCommand2994	= { FOLLOW_RPAREN_TOK_in_datatypesDefCommand2994_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_REWRITE_RULE_TOK_in_rewriterulesCommand3023  */
+static	ANTLR3_BITWORD FOLLOW_REWRITE_RULE_TOK_in_rewriterulesCommand3023_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_REWRITE_RULE_TOK_in_rewriterulesCommand3023	= { FOLLOW_REWRITE_RULE_TOK_in_rewriterulesCommand3023_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_rewriterulesCommand3029  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_rewriterulesCommand3029_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_rewriterulesCommand3029	= { FOLLOW_LPAREN_TOK_in_rewriterulesCommand3029_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_rewriterulesCommand3031  */
+static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_rewriterulesCommand3031_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_rewriterulesCommand3031	= { FOLLOW_sortedVarList_in_rewriterulesCommand3031_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_rewriterulesCommand3034  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_rewriterulesCommand3034_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_rewriterulesCommand3034	= { FOLLOW_RPAREN_TOK_in_rewriterulesCommand3034_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_rewriterulesCommand3046  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_rewriterulesCommand3046_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_rewriterulesCommand3046	= { FOLLOW_LPAREN_TOK_in_rewriterulesCommand3046_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_pattern_in_rewriterulesCommand3050  */
+static	ANTLR3_BITWORD FOLLOW_pattern_in_rewriterulesCommand3050_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_pattern_in_rewriterulesCommand3050	= { FOLLOW_pattern_in_rewriterulesCommand3050_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_rewriterulesCommand3058  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_rewriterulesCommand3058_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_rewriterulesCommand3058	= { FOLLOW_RPAREN_TOK_in_rewriterulesCommand3058_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_rewriterulesCommand3064  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_rewriterulesCommand3064_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x45804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_rewriterulesCommand3064	= { FOLLOW_LPAREN_TOK_in_rewriterulesCommand3064_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_rewriterulesCommand3067  */
+static	ANTLR3_BITWORD FOLLOW_termList_in_rewriterulesCommand3067_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_termList_in_rewriterulesCommand3067	= { FOLLOW_termList_in_rewriterulesCommand3067_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_rewriterulesCommand3072  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_rewriterulesCommand3072_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_rewriterulesCommand3072	= { FOLLOW_RPAREN_TOK_in_rewriterulesCommand3072_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_rewriterulesCommand3078  */
+static	ANTLR3_BITWORD FOLLOW_term_in_rewriterulesCommand3078_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_rewriterulesCommand3078	= { FOLLOW_term_in_rewriterulesCommand3078_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_rewriterulesCommand3081  */
+static	ANTLR3_BITWORD FOLLOW_term_in_rewriterulesCommand3081_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_rewriterulesCommand3081	= { FOLLOW_term_in_rewriterulesCommand3081_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_rewritePropaKind_in_rewriterulesCommand3100  */
+static	ANTLR3_BITWORD FOLLOW_rewritePropaKind_in_rewriterulesCommand3100_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_rewritePropaKind_in_rewriterulesCommand3100	= { FOLLOW_rewritePropaKind_in_rewriterulesCommand3100_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_rewriterulesCommand3107  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_rewriterulesCommand3107_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_rewriterulesCommand3107	= { FOLLOW_LPAREN_TOK_in_rewriterulesCommand3107_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_rewriterulesCommand3109  */
+static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_rewriterulesCommand3109_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_rewriterulesCommand3109	= { FOLLOW_sortedVarList_in_rewriterulesCommand3109_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_rewriterulesCommand3112  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_rewriterulesCommand3112_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_rewriterulesCommand3112	= { FOLLOW_RPAREN_TOK_in_rewriterulesCommand3112_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_rewriterulesCommand3124  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_rewriterulesCommand3124_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_rewriterulesCommand3124	= { FOLLOW_LPAREN_TOK_in_rewriterulesCommand3124_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_pattern_in_rewriterulesCommand3128  */
+static	ANTLR3_BITWORD FOLLOW_pattern_in_rewriterulesCommand3128_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_pattern_in_rewriterulesCommand3128	= { FOLLOW_pattern_in_rewriterulesCommand3128_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_rewriterulesCommand3136  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_rewriterulesCommand3136_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_rewriterulesCommand3136	= { FOLLOW_RPAREN_TOK_in_rewriterulesCommand3136_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_rewriterulesCommand3142  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_rewriterulesCommand3142_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x45804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_rewriterulesCommand3142	= { FOLLOW_LPAREN_TOK_in_rewriterulesCommand3142_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_rewriterulesCommand3145  */
+static	ANTLR3_BITWORD FOLLOW_termList_in_rewriterulesCommand3145_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_termList_in_rewriterulesCommand3145	= { FOLLOW_termList_in_rewriterulesCommand3145_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_rewriterulesCommand3150  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_rewriterulesCommand3150_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_rewriterulesCommand3150	= { FOLLOW_RPAREN_TOK_in_rewriterulesCommand3150_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_rewriterulesCommand3156  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_rewriterulesCommand3156_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x45804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_rewriterulesCommand3156	= { FOLLOW_LPAREN_TOK_in_rewriterulesCommand3156_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_rewriterulesCommand3159  */
+static	ANTLR3_BITWORD FOLLOW_termList_in_rewriterulesCommand3159_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_termList_in_rewriterulesCommand3159	= { FOLLOW_termList_in_rewriterulesCommand3159_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_rewriterulesCommand3164  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_rewriterulesCommand3164_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_rewriterulesCommand3164	= { FOLLOW_RPAREN_TOK_in_rewriterulesCommand3164_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_rewriterulesCommand3170  */
+static	ANTLR3_BITWORD FOLLOW_term_in_rewriterulesCommand3170_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_rewriterulesCommand3170	= { FOLLOW_term_in_rewriterulesCommand3170_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_REDUCTION_RULE_TOK_in_rewritePropaKind3191  */
+static	ANTLR3_BITWORD FOLLOW_REDUCTION_RULE_TOK_in_rewritePropaKind3191_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_REDUCTION_RULE_TOK_in_rewritePropaKind3191	= { FOLLOW_REDUCTION_RULE_TOK_in_rewritePropaKind3191_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PROPAGATION_RULE_TOK_in_rewritePropaKind3202  */
+static	ANTLR3_BITWORD FOLLOW_PROPAGATION_RULE_TOK_in_rewritePropaKind3202_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_PROPAGATION_RULE_TOK_in_rewritePropaKind3202	= { FOLLOW_PROPAGATION_RULE_TOK_in_rewritePropaKind3202_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_pattern3224  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_pattern3224_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_pattern3224	= { FOLLOW_LPAREN_TOK_in_pattern3224_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_pattern3226  */
+static	ANTLR3_BITWORD FOLLOW_termList_in_pattern3226_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_termList_in_pattern3226	= { FOLLOW_termList_in_pattern3226_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_pattern3229  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_pattern3229_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_pattern3229	= { FOLLOW_RPAREN_TOK_in_pattern3229_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExprNoKeyword3254  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExprNoKeyword3254_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExprNoKeyword3254	= { FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExprNoKeyword3254_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExprNoKeyword3266  */
+static	ANTLR3_BITWORD FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExprNoKeyword3266_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExprNoKeyword3266	= { FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExprNoKeyword3266_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_HEX_LITERAL_in_simpleSymbolicExprNoKeyword3278  */
+static	ANTLR3_BITWORD FOLLOW_HEX_LITERAL_in_simpleSymbolicExprNoKeyword3278_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_HEX_LITERAL_in_simpleSymbolicExprNoKeyword3278	= { FOLLOW_HEX_LITERAL_in_simpleSymbolicExprNoKeyword3278_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BINARY_LITERAL_in_simpleSymbolicExprNoKeyword3290  */
+static	ANTLR3_BITWORD FOLLOW_BINARY_LITERAL_in_simpleSymbolicExprNoKeyword3290_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BINARY_LITERAL_in_simpleSymbolicExprNoKeyword3290	= { FOLLOW_BINARY_LITERAL_in_simpleSymbolicExprNoKeyword3290_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_simpleSymbolicExprNoKeyword3302  */
+static	ANTLR3_BITWORD FOLLOW_str_in_simpleSymbolicExprNoKeyword3302_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_simpleSymbolicExprNoKeyword3302	= { FOLLOW_str_in_simpleSymbolicExprNoKeyword3302_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_simpleSymbolicExprNoKeyword3322  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_simpleSymbolicExprNoKeyword3322_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_simpleSymbolicExprNoKeyword3322	= { FOLLOW_symbol_in_simpleSymbolicExprNoKeyword3322_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_simpleSymbolicExprNoKeyword3337  */
+static	ANTLR3_BITWORD FOLLOW_set_in_simpleSymbolicExprNoKeyword3337_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_set_in_simpleSymbolicExprNoKeyword3337	= { FOLLOW_set_in_simpleSymbolicExprNoKeyword3337_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_builtinOp_in_simpleSymbolicExprNoKeyword3523  */
+static	ANTLR3_BITWORD FOLLOW_builtinOp_in_simpleSymbolicExprNoKeyword3523_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_builtinOp_in_simpleSymbolicExprNoKeyword3523	= { FOLLOW_builtinOp_in_simpleSymbolicExprNoKeyword3523_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_KEYWORD_in_keyword3544  */
+static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_keyword3544_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_KEYWORD_in_keyword3544	= { FOLLOW_KEYWORD_in_keyword3544_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleSymbolicExprNoKeyword_in_simpleSymbolicExpr3564  */
+static	ANTLR3_BITWORD FOLLOW_simpleSymbolicExprNoKeyword_in_simpleSymbolicExpr3564_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleSymbolicExprNoKeyword_in_simpleSymbolicExpr3564	= { FOLLOW_simpleSymbolicExprNoKeyword_in_simpleSymbolicExpr3564_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_KEYWORD_in_simpleSymbolicExpr3571  */
+static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_simpleSymbolicExpr3571_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_KEYWORD_in_simpleSymbolicExpr3571	= { FOLLOW_KEYWORD_in_simpleSymbolicExpr3571_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleSymbolicExpr_in_symbolicExpr3596  */
+static	ANTLR3_BITWORD FOLLOW_simpleSymbolicExpr_in_symbolicExpr3596_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleSymbolicExpr_in_symbolicExpr3596	= { FOLLOW_simpleSymbolicExpr_in_symbolicExpr3596_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_symbolicExpr3603  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_symbolicExpr3603_bits[]	= { ANTLR3_UINT64_LIT(0x00EBA7B520AF00C0), ANTLR3_UINT64_LIT(0xFAFAA5FA6F3F0000), ANTLR3_UINT64_LIT(0x0000000004A600FF) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_symbolicExpr3603	= { FOLLOW_LPAREN_TOK_in_symbolicExpr3603_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolicExpr_in_symbolicExpr3611  */
+static	ANTLR3_BITWORD FOLLOW_symbolicExpr_in_symbolicExpr3611_bits[]	= { ANTLR3_UINT64_LIT(0x00EBA7B520AF00C0), ANTLR3_UINT64_LIT(0xFAFAA5FA6F3F0000), ANTLR3_UINT64_LIT(0x0000000004A600FF) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbolicExpr_in_symbolicExpr3611	= { FOLLOW_symbolicExpr_in_symbolicExpr3611_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_symbolicExpr3619  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_symbolicExpr3619_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_symbolicExpr3619	= { FOLLOW_RPAREN_TOK_in_symbolicExpr3619_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3652  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3652_bits[]	= { ANTLR3_UINT64_LIT(0x00C9A00000020040), ANTLR3_UINT64_LIT(0x000AA1A24C000000), ANTLR3_UINT64_LIT(0x0000000000800020) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3652	= { FOLLOW_LPAREN_TOK_in_term3652_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_builtinOp_in_term3654  */
+static	ANTLR3_BITWORD FOLLOW_builtinOp_in_term3654_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_builtinOp_in_term3654	= { FOLLOW_builtinOp_in_term3654_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_term3657  */
+static	ANTLR3_BITWORD FOLLOW_termList_in_term3657_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_termList_in_term3657	= { FOLLOW_termList_in_term3657_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3660  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3660_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3660	= { FOLLOW_RPAREN_TOK_in_term3660_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3672  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3672_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000100) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3672	= { FOLLOW_LPAREN_TOK_in_term3672_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_AS_TOK_in_term3674  */
+static	ANTLR3_BITWORD FOLLOW_AS_TOK_in_term3674_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_AS_TOK_in_term3674	= { FOLLOW_AS_TOK_in_term3674_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term3676  */
+static	ANTLR3_BITWORD FOLLOW_term_in_term3676_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_term3676	= { FOLLOW_term_in_term3676_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_term3679  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_term3679_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_term3679	= { FOLLOW_sortSymbol_in_term3679_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3682  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3682_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3682	= { FOLLOW_RPAREN_TOK_in_term3682_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3694  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3694_bits[]	= { ANTLR3_UINT64_LIT(0x0110000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3694	= { FOLLOW_LPAREN_TOK_in_term3694_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_quantOp_in_term3696  */
+static	ANTLR3_BITWORD FOLLOW_quantOp_in_term3696_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_quantOp_in_term3696	= { FOLLOW_quantOp_in_term3696_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3703  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3703_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3703	= { FOLLOW_LPAREN_TOK_in_term3703_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_term3705  */
+static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_term3705_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_term3705	= { FOLLOW_sortedVarList_in_term3705_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3708  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3708_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3708	= { FOLLOW_RPAREN_TOK_in_term3708_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term3720  */
+static	ANTLR3_BITWORD FOLLOW_term_in_term3720_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_term3720	= { FOLLOW_term_in_term3720_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3723  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3723_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3723	= { FOLLOW_RPAREN_TOK_in_term3723_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3735  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3735_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3735	= { FOLLOW_LPAREN_TOK_in_term3735_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_functionName_in_term3737  */
+static	ANTLR3_BITWORD FOLLOW_functionName_in_term3737_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_functionName_in_term3737	= { FOLLOW_functionName_in_term3737_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_term3755  */
+static	ANTLR3_BITWORD FOLLOW_termList_in_term3755_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_termList_in_term3755	= { FOLLOW_termList_in_term3755_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3758  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3758_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3758	= { FOLLOW_RPAREN_TOK_in_term3758_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3771  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3771_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3771	= { FOLLOW_LPAREN_TOK_in_term3771_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_indexedFunctionName_in_term3787  */
+static	ANTLR3_BITWORD FOLLOW_indexedFunctionName_in_term3787_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_indexedFunctionName_in_term3787	= { FOLLOW_indexedFunctionName_in_term3787_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_term3790  */
+static	ANTLR3_BITWORD FOLLOW_termList_in_term3790_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_termList_in_term3790	= { FOLLOW_termList_in_term3790_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3793  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3793_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3793	= { FOLLOW_RPAREN_TOK_in_term3793_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3817  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3817_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000100) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3817	= { FOLLOW_LPAREN_TOK_in_term3817_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_AS_TOK_in_term3819  */
+static	ANTLR3_BITWORD FOLLOW_AS_TOK_in_term3819_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000400000) };
+static  ANTLR3_BITSET_LIST FOLLOW_AS_TOK_in_term3819	= { FOLLOW_AS_TOK_in_term3819_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CONST_TOK_in_term3821  */
+static	ANTLR3_BITWORD FOLLOW_CONST_TOK_in_term3821_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_CONST_TOK_in_term3821	= { FOLLOW_CONST_TOK_in_term3821_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_term3823  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_term3823_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_term3823	= { FOLLOW_sortSymbol_in_term3823_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3832  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3832_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3832	= { FOLLOW_RPAREN_TOK_in_term3832_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term3834  */
+static	ANTLR3_BITWORD FOLLOW_term_in_term3834_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_term3834	= { FOLLOW_term_in_term3834_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3837  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3837_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3837	= { FOLLOW_RPAREN_TOK_in_term3837_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3863  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3863_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3863	= { FOLLOW_LPAREN_TOK_in_term3863_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LET_TOK_in_term3865  */
+static	ANTLR3_BITWORD FOLLOW_LET_TOK_in_term3865_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LET_TOK_in_term3865	= { FOLLOW_LET_TOK_in_term3865_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3867  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3867_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3867	= { FOLLOW_LPAREN_TOK_in_term3867_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3881  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3881_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3881	= { FOLLOW_LPAREN_TOK_in_term3881_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_term3883  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_term3883_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_term3883	= { FOLLOW_symbol_in_term3883_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term3893  */
+static	ANTLR3_BITWORD FOLLOW_term_in_term3893_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_term3893	= { FOLLOW_term_in_term3893_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_term3898  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_term3898_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_term3898	= { FOLLOW_sortSymbol_in_term3898_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term3910  */
+static	ANTLR3_BITWORD FOLLOW_term_in_term3910_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_term3910	= { FOLLOW_term_in_term3910_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3927  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3927_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3927	= { FOLLOW_RPAREN_TOK_in_term3927_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3964  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3964_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3964	= { FOLLOW_RPAREN_TOK_in_term3964_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term3970  */
+static	ANTLR3_BITWORD FOLLOW_term_in_term3970_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_term3970	= { FOLLOW_term_in_term3970_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term3977  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term3977_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term3977	= { FOLLOW_RPAREN_TOK_in_term3977_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term3995  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term3995_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000080000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term3995	= { FOLLOW_LPAREN_TOK_in_term3995_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_MATCH_TOK_in_term3997  */
+static	ANTLR3_BITWORD FOLLOW_MATCH_TOK_in_term3997_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_MATCH_TOK_in_term3997	= { FOLLOW_MATCH_TOK_in_term3997_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term3999  */
+static	ANTLR3_BITWORD FOLLOW_term_in_term3999_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_term3999	= { FOLLOW_term_in_term3999_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term4008  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term4008_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term4008	= { FOLLOW_LPAREN_TOK_in_term4008_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term4032  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term4032_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000100000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term4032	= { FOLLOW_LPAREN_TOK_in_term4032_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INDEX_TOK_in_term4034  */
+static	ANTLR3_BITWORD FOLLOW_INDEX_TOK_in_term4034_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_INDEX_TOK_in_term4034	= { FOLLOW_INDEX_TOK_in_term4034_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term4036  */
+static	ANTLR3_BITWORD FOLLOW_term_in_term4036_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_term4036	= { FOLLOW_term_in_term4036_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term4049  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term4049_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term4049	= { FOLLOW_RPAREN_TOK_in_term4049_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term4059  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term4059_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term4059	= { FOLLOW_LPAREN_TOK_in_term4059_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term4061  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term4061_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term4061	= { FOLLOW_LPAREN_TOK_in_term4061_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term4063  */
+static	ANTLR3_BITWORD FOLLOW_term_in_term4063_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x4080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_term4063	= { FOLLOW_term_in_term4063_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_term4089  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_term4089_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x4080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_term4089	= { FOLLOW_symbol_in_term4089_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term4115  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term4115_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term4115	= { FOLLOW_RPAREN_TOK_in_term4115_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term4126  */
+static	ANTLR3_BITWORD FOLLOW_term_in_term4126_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_term4126	= { FOLLOW_term_in_term4126_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term4140  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term4140_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term4140	= { FOLLOW_RPAREN_TOK_in_term4140_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term4163  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term4163_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term4163	= { FOLLOW_LPAREN_TOK_in_term4163_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_term4165  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_term4165_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_term4165	= { FOLLOW_symbol_in_term4165_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term4179  */
+static	ANTLR3_BITWORD FOLLOW_term_in_term4179_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_term4179	= { FOLLOW_term_in_term4179_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term4193  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term4193_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term4193	= { FOLLOW_RPAREN_TOK_in_term4193_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term4206  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term4206_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term4206	= { FOLLOW_RPAREN_TOK_in_term4206_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term4208  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term4208_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term4208	= { FOLLOW_RPAREN_TOK_in_term4208_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_term4217  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_term4217_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000200) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_term4217	= { FOLLOW_symbol_in_term4217_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SYGUS_ENUM_CONS_TOK_in_term4220  */
+static	ANTLR3_BITWORD FOLLOW_SYGUS_ENUM_CONS_TOK_in_term4220_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_SYGUS_ENUM_CONS_TOK_in_term4220	= { FOLLOW_SYGUS_ENUM_CONS_TOK_in_term4220_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_term4226  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_term4226_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_term4226	= { FOLLOW_symbol_in_term4226_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_term4245  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_term4245_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_term4245	= { FOLLOW_symbol_in_term4245_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term4265  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term4265_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000004000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term4265	= { FOLLOW_LPAREN_TOK_in_term4265_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTRIBUTE_TOK_in_term4267  */
+static	ANTLR3_BITWORD FOLLOW_ATTRIBUTE_TOK_in_term4267_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_ATTRIBUTE_TOK_in_term4267	= { FOLLOW_ATTRIBUTE_TOK_in_term4267_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term4269  */
+static	ANTLR3_BITWORD FOLLOW_term_in_term4269_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000003E00), ANTLR3_UINT64_LIT(0x0000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_term4269	= { FOLLOW_term_in_term4269_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_attribute_in_term4278  */
+static	ANTLR3_BITWORD FOLLOW_attribute_in_term4278_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000003E00), ANTLR3_UINT64_LIT(0x4000004000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_attribute_in_term4278	= { FOLLOW_attribute_in_term4278_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term4296  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term4296_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term4296	= { FOLLOW_RPAREN_TOK_in_term4296_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term4314  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term4314_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term4314	= { FOLLOW_INTEGER_LITERAL_in_term4314_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECIMAL_LITERAL_in_term4327  */
+static	ANTLR3_BITWORD FOLLOW_DECIMAL_LITERAL_in_term4327_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECIMAL_LITERAL_in_term4327	= { FOLLOW_DECIMAL_LITERAL_in_term4327_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_term4340  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_term4340_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000100000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_term4340	= { FOLLOW_LPAREN_TOK_in_term4340_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INDEX_TOK_in_term4342  */
+static	ANTLR3_BITWORD FOLLOW_INDEX_TOK_in_term4342_bits[]	= { ANTLR3_UINT64_LIT(0x1600000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000008) };
+static  ANTLR3_BITSET_LIST FOLLOW_INDEX_TOK_in_term4342	= { FOLLOW_INDEX_TOK_in_term4342_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SIMPLE_SYMBOL_in_term4353  */
+static	ANTLR3_BITWORD FOLLOW_SIMPLE_SYMBOL_in_term4353_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_SIMPLE_SYMBOL_in_term4353	= { FOLLOW_SIMPLE_SYMBOL_in_term4353_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term4357  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term4357_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term4357	= { FOLLOW_INTEGER_LITERAL_in_term4357_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_PINF_TOK_in_term4374  */
+static	ANTLR3_BITWORD FOLLOW_FP_PINF_TOK_in_term4374_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_PINF_TOK_in_term4374	= { FOLLOW_FP_PINF_TOK_in_term4374_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term4378  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term4378_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term4378	= { FOLLOW_INTEGER_LITERAL_in_term4378_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term4382  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term4382_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term4382	= { FOLLOW_INTEGER_LITERAL_in_term4382_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_NINF_TOK_in_term4398  */
+static	ANTLR3_BITWORD FOLLOW_FP_NINF_TOK_in_term4398_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_NINF_TOK_in_term4398	= { FOLLOW_FP_NINF_TOK_in_term4398_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term4402  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term4402_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term4402	= { FOLLOW_INTEGER_LITERAL_in_term4402_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term4406  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term4406_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term4406	= { FOLLOW_INTEGER_LITERAL_in_term4406_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_NAN_TOK_in_term4422  */
+static	ANTLR3_BITWORD FOLLOW_FP_NAN_TOK_in_term4422_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_NAN_TOK_in_term4422	= { FOLLOW_FP_NAN_TOK_in_term4422_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term4426  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term4426_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term4426	= { FOLLOW_INTEGER_LITERAL_in_term4426_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_term4430  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_term4430_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_term4430	= { FOLLOW_INTEGER_LITERAL_in_term4430_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_term4456  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_term4456_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_term4456	= { FOLLOW_RPAREN_TOK_in_term4456_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_HEX_LITERAL_in_term4463  */
+static	ANTLR3_BITWORD FOLLOW_HEX_LITERAL_in_term4463_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_HEX_LITERAL_in_term4463	= { FOLLOW_HEX_LITERAL_in_term4463_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BINARY_LITERAL_in_term4476  */
+static	ANTLR3_BITWORD FOLLOW_BINARY_LITERAL_in_term4476_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BINARY_LITERAL_in_term4476	= { FOLLOW_BINARY_LITERAL_in_term4476_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_term4489  */
+static	ANTLR3_BITWORD FOLLOW_str_in_term4489_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_str_in_term4489	= { FOLLOW_str_in_term4489_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RNE_TOK_in_term4502  */
+static	ANTLR3_BITWORD FOLLOW_FP_RNE_TOK_in_term4502_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_RNE_TOK_in_term4502	= { FOLLOW_FP_RNE_TOK_in_term4502_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RNA_TOK_in_term4515  */
+static	ANTLR3_BITWORD FOLLOW_FP_RNA_TOK_in_term4515_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_RNA_TOK_in_term4515	= { FOLLOW_FP_RNA_TOK_in_term4515_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RTP_TOK_in_term4528  */
+static	ANTLR3_BITWORD FOLLOW_FP_RTP_TOK_in_term4528_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_RTP_TOK_in_term4528	= { FOLLOW_FP_RTP_TOK_in_term4528_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RTN_TOK_in_term4541  */
+static	ANTLR3_BITWORD FOLLOW_FP_RTN_TOK_in_term4541_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_RTN_TOK_in_term4541	= { FOLLOW_FP_RTN_TOK_in_term4541_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RTZ_TOK_in_term4554  */
+static	ANTLR3_BITWORD FOLLOW_FP_RTZ_TOK_in_term4554_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_RTZ_TOK_in_term4554	= { FOLLOW_FP_RTZ_TOK_in_term4554_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RNE_FULL_TOK_in_term4567  */
+static	ANTLR3_BITWORD FOLLOW_FP_RNE_FULL_TOK_in_term4567_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_RNE_FULL_TOK_in_term4567	= { FOLLOW_FP_RNE_FULL_TOK_in_term4567_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RNA_FULL_TOK_in_term4575  */
+static	ANTLR3_BITWORD FOLLOW_FP_RNA_FULL_TOK_in_term4575_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_RNA_FULL_TOK_in_term4575	= { FOLLOW_FP_RNA_FULL_TOK_in_term4575_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RTP_FULL_TOK_in_term4583  */
+static	ANTLR3_BITWORD FOLLOW_FP_RTP_FULL_TOK_in_term4583_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_RTP_FULL_TOK_in_term4583	= { FOLLOW_FP_RTP_FULL_TOK_in_term4583_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RTN_FULL_TOK_in_term4591  */
+static	ANTLR3_BITWORD FOLLOW_FP_RTN_FULL_TOK_in_term4591_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_RTN_FULL_TOK_in_term4591	= { FOLLOW_FP_RTN_FULL_TOK_in_term4591_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_RTZ_FULL_TOK_in_term4599  */
+static	ANTLR3_BITWORD FOLLOW_FP_RTZ_FULL_TOK_in_term4599_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_RTZ_FULL_TOK_in_term4599	= { FOLLOW_FP_RTZ_FULL_TOK_in_term4599_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RENOSTR_TOK_in_term4608  */
+static	ANTLR3_BITWORD FOLLOW_RENOSTR_TOK_in_term4608_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RENOSTR_TOK_in_term4608	= { FOLLOW_RENOSTR_TOK_in_term4608_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_REALLCHAR_TOK_in_term4621  */
+static	ANTLR3_BITWORD FOLLOW_REALLCHAR_TOK_in_term4621_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_REALLCHAR_TOK_in_term4621	= { FOLLOW_REALLCHAR_TOK_in_term4621_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EMPTYSET_TOK_in_term4634  */
+static	ANTLR3_BITWORD FOLLOW_EMPTYSET_TOK_in_term4634_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EMPTYSET_TOK_in_term4634	= { FOLLOW_EMPTYSET_TOK_in_term4634_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_UNIVSET_TOK_in_term4647  */
+static	ANTLR3_BITWORD FOLLOW_UNIVSET_TOK_in_term4647_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_UNIVSET_TOK_in_term4647	= { FOLLOW_UNIVSET_TOK_in_term4647_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NILREF_TOK_in_term4660  */
+static	ANTLR3_BITWORD FOLLOW_NILREF_TOK_in_term4660_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_NILREF_TOK_in_term4660	= { FOLLOW_NILREF_TOK_in_term4660_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_KEYWORD_in_attribute4692  */
+static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_attribute4692_bits[]	= { ANTLR3_UINT64_LIT(0x00EBA7B520AF00C2), ANTLR3_UINT64_LIT(0xBAFAA1BA6F3F0000), ANTLR3_UINT64_LIT(0x0000000004A600FF) };
+static  ANTLR3_BITSET_LIST FOLLOW_KEYWORD_in_attribute4692	= { FOLLOW_KEYWORD_in_attribute4692_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleSymbolicExprNoKeyword_in_attribute4696  */
+static	ANTLR3_BITWORD FOLLOW_simpleSymbolicExprNoKeyword_in_attribute4696_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_simpleSymbolicExprNoKeyword_in_attribute4696	= { FOLLOW_simpleSymbolicExprNoKeyword_in_attribute4696_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTRIBUTE_PATTERN_TOK_in_attribute4712  */
+static	ANTLR3_BITWORD FOLLOW_ATTRIBUTE_PATTERN_TOK_in_attribute4712_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_ATTRIBUTE_PATTERN_TOK_in_attribute4712	= { FOLLOW_ATTRIBUTE_PATTERN_TOK_in_attribute4712_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_attribute4714  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_attribute4714_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_attribute4714	= { FOLLOW_LPAREN_TOK_in_attribute4714_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_attribute4722  */
+static	ANTLR3_BITWORD FOLLOW_term_in_attribute4722_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x45804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_attribute4722	= { FOLLOW_term_in_attribute4722_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_attribute4740  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_attribute4740_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_attribute4740	= { FOLLOW_RPAREN_TOK_in_attribute4740_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTRIBUTE_NO_PATTERN_TOK_in_attribute4752  */
+static	ANTLR3_BITWORD FOLLOW_ATTRIBUTE_NO_PATTERN_TOK_in_attribute4752_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_ATTRIBUTE_NO_PATTERN_TOK_in_attribute4752	= { FOLLOW_ATTRIBUTE_NO_PATTERN_TOK_in_attribute4752_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_attribute4754  */
+static	ANTLR3_BITWORD FOLLOW_term_in_attribute4754_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_attribute4754	= { FOLLOW_term_in_attribute4754_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_attribute4769  */
+static	ANTLR3_BITWORD FOLLOW_set_in_attribute4769_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_set_in_attribute4769	= { FOLLOW_set_in_attribute4769_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_attribute4779  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_attribute4779_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_attribute4779	= { FOLLOW_INTEGER_LITERAL_in_attribute4779_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTRIBUTE_NAMED_TOK_in_attribute4791  */
+static	ANTLR3_BITWORD FOLLOW_ATTRIBUTE_NAMED_TOK_in_attribute4791_bits[]	= { ANTLR3_UINT64_LIT(0x00EBA7B520AF00C0), ANTLR3_UINT64_LIT(0xBAFAA5FA6F3F0000), ANTLR3_UINT64_LIT(0x0000000004A600FF) };
+static  ANTLR3_BITSET_LIST FOLLOW_ATTRIBUTE_NAMED_TOK_in_attribute4791	= { FOLLOW_ATTRIBUTE_NAMED_TOK_in_attribute4791_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolicExpr_in_attribute4793  */
+static	ANTLR3_BITWORD FOLLOW_symbolicExpr_in_attribute4793_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbolicExpr_in_attribute4793	= { FOLLOW_symbolicExpr_in_attribute4793_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_indexedFunctionName4821  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_indexedFunctionName4821_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000100000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_indexedFunctionName4821	= { FOLLOW_LPAREN_TOK_in_indexedFunctionName4821_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INDEX_TOK_in_indexedFunctionName4823  */
+static	ANTLR3_BITWORD FOLLOW_INDEX_TOK_in_indexedFunctionName4823_bits[]	= { ANTLR3_UINT64_LIT(0x3E00400000000000), ANTLR3_UINT64_LIT(0x008000040000FF00), ANTLR3_UINT64_LIT(0x000000007E280008) };
+static  ANTLR3_BITSET_LIST FOLLOW_INDEX_TOK_in_indexedFunctionName4823	= { FOLLOW_INDEX_TOK_in_indexedFunctionName4823_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_153_in_indexedFunctionName4831  */
+static	ANTLR3_BITWORD FOLLOW_153_in_indexedFunctionName4831_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_153_in_indexedFunctionName4831	= { FOLLOW_153_in_indexedFunctionName4831_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4835  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4835_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4835	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4835_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4839  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4839_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4839	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4839_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_154_in_indexedFunctionName4855  */
+static	ANTLR3_BITWORD FOLLOW_154_in_indexedFunctionName4855_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_154_in_indexedFunctionName4855	= { FOLLOW_154_in_indexedFunctionName4855_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4859  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4859_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4859	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4859_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_158_in_indexedFunctionName4875  */
+static	ANTLR3_BITWORD FOLLOW_158_in_indexedFunctionName4875_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_158_in_indexedFunctionName4875	= { FOLLOW_158_in_indexedFunctionName4875_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4879  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4879_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4879	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4879_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_157_in_indexedFunctionName4895  */
+static	ANTLR3_BITWORD FOLLOW_157_in_indexedFunctionName4895_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_157_in_indexedFunctionName4895	= { FOLLOW_157_in_indexedFunctionName4895_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4899  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4899_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4899	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4899_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_155_in_indexedFunctionName4915  */
+static	ANTLR3_BITWORD FOLLOW_155_in_indexedFunctionName4915_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_155_in_indexedFunctionName4915	= { FOLLOW_155_in_indexedFunctionName4915_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4919  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4919_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4919	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4919_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_156_in_indexedFunctionName4935  */
+static	ANTLR3_BITWORD FOLLOW_156_in_indexedFunctionName4935_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_156_in_indexedFunctionName4935	= { FOLLOW_156_in_indexedFunctionName4935_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4939  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4939_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4939	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4939_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DIVISIBLE_TOK_in_indexedFunctionName4955  */
+static	ANTLR3_BITWORD FOLLOW_DIVISIBLE_TOK_in_indexedFunctionName4955_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_DIVISIBLE_TOK_in_indexedFunctionName4955	= { FOLLOW_DIVISIBLE_TOK_in_indexedFunctionName4955_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4959  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4959_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4959	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4959_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INT2BV_TOK_in_indexedFunctionName4975  */
+static	ANTLR3_BITWORD FOLLOW_INT2BV_TOK_in_indexedFunctionName4975_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INT2BV_TOK_in_indexedFunctionName4975	= { FOLLOW_INT2BV_TOK_in_indexedFunctionName4975_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4979  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4979_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4979	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4979_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_PINF_TOK_in_indexedFunctionName4995  */
+static	ANTLR3_BITWORD FOLLOW_FP_PINF_TOK_in_indexedFunctionName4995_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_PINF_TOK_in_indexedFunctionName4995	= { FOLLOW_FP_PINF_TOK_in_indexedFunctionName4995_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4999  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4999_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4999	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4999_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5003  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5003_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5003	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5003_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_NINF_TOK_in_indexedFunctionName5019  */
+static	ANTLR3_BITWORD FOLLOW_FP_NINF_TOK_in_indexedFunctionName5019_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_NINF_TOK_in_indexedFunctionName5019	= { FOLLOW_FP_NINF_TOK_in_indexedFunctionName5019_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5023  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5023_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5023	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5023_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5027  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5027_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5027	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5027_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_NAN_TOK_in_indexedFunctionName5043  */
+static	ANTLR3_BITWORD FOLLOW_FP_NAN_TOK_in_indexedFunctionName5043_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_NAN_TOK_in_indexedFunctionName5043	= { FOLLOW_FP_NAN_TOK_in_indexedFunctionName5043_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5047  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5047_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5047	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5047_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5051  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5051_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5051	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5051_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_PZERO_TOK_in_indexedFunctionName5067  */
+static	ANTLR3_BITWORD FOLLOW_FP_PZERO_TOK_in_indexedFunctionName5067_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_PZERO_TOK_in_indexedFunctionName5067	= { FOLLOW_FP_PZERO_TOK_in_indexedFunctionName5067_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5071  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5071_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5071	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5071_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5075  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5075_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5075	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5075_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_NZERO_TOK_in_indexedFunctionName5091  */
+static	ANTLR3_BITWORD FOLLOW_FP_NZERO_TOK_in_indexedFunctionName5091_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_NZERO_TOK_in_indexedFunctionName5091	= { FOLLOW_FP_NZERO_TOK_in_indexedFunctionName5091_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5095  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5095_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5095	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5095_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5099  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5099_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5099	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5099_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_FP_TOK_in_indexedFunctionName5115  */
+static	ANTLR3_BITWORD FOLLOW_FP_TO_FP_TOK_in_indexedFunctionName5115_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_FP_TOK_in_indexedFunctionName5115	= { FOLLOW_FP_TO_FP_TOK_in_indexedFunctionName5115_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5119  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5119_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5119	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5119_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5123  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5123_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5123	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5123_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_FPBV_TOK_in_indexedFunctionName5139  */
+static	ANTLR3_BITWORD FOLLOW_FP_TO_FPBV_TOK_in_indexedFunctionName5139_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_FPBV_TOK_in_indexedFunctionName5139	= { FOLLOW_FP_TO_FPBV_TOK_in_indexedFunctionName5139_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5143  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5143_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5143	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5143_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5147  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5147_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5147	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5147_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_FPFP_TOK_in_indexedFunctionName5163  */
+static	ANTLR3_BITWORD FOLLOW_FP_TO_FPFP_TOK_in_indexedFunctionName5163_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_FPFP_TOK_in_indexedFunctionName5163	= { FOLLOW_FP_TO_FPFP_TOK_in_indexedFunctionName5163_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5167  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5167_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5167	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5167_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5171  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5171_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5171	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5171_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_FPR_TOK_in_indexedFunctionName5187  */
+static	ANTLR3_BITWORD FOLLOW_FP_TO_FPR_TOK_in_indexedFunctionName5187_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_FPR_TOK_in_indexedFunctionName5187	= { FOLLOW_FP_TO_FPR_TOK_in_indexedFunctionName5187_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5191  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5191_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5191	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5191_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5195  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5195_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5195	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5195_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_FPS_TOK_in_indexedFunctionName5211  */
+static	ANTLR3_BITWORD FOLLOW_FP_TO_FPS_TOK_in_indexedFunctionName5211_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_FPS_TOK_in_indexedFunctionName5211	= { FOLLOW_FP_TO_FPS_TOK_in_indexedFunctionName5211_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5215  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5215_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5215	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5215_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5219  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5219_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5219	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5219_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_FPU_TOK_in_indexedFunctionName5235  */
+static	ANTLR3_BITWORD FOLLOW_FP_TO_FPU_TOK_in_indexedFunctionName5235_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_FPU_TOK_in_indexedFunctionName5235	= { FOLLOW_FP_TO_FPU_TOK_in_indexedFunctionName5235_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5239  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5239_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5239	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5239_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5243  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5243_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5243	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5243_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_UBV_TOK_in_indexedFunctionName5259  */
+static	ANTLR3_BITWORD FOLLOW_FP_TO_UBV_TOK_in_indexedFunctionName5259_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_UBV_TOK_in_indexedFunctionName5259	= { FOLLOW_FP_TO_UBV_TOK_in_indexedFunctionName5259_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5263  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5263_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5263	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5263_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FP_TO_SBV_TOK_in_indexedFunctionName5279  */
+static	ANTLR3_BITWORD FOLLOW_FP_TO_SBV_TOK_in_indexedFunctionName5279_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_FP_TO_SBV_TOK_in_indexedFunctionName5279	= { FOLLOW_FP_TO_SBV_TOK_in_indexedFunctionName5279_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5283  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5283_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5283	= { FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5283_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_TESTER_TOK_in_indexedFunctionName5299  */
+static	ANTLR3_BITWORD FOLLOW_TESTER_TOK_in_indexedFunctionName5299_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90000), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_TESTER_TOK_in_indexedFunctionName5299	= { FOLLOW_TESTER_TOK_in_indexedFunctionName5299_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_indexedFunctionName5301  */
+static	ANTLR3_BITWORD FOLLOW_term_in_indexedFunctionName5301_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_indexedFunctionName5301	= { FOLLOW_term_in_indexedFunctionName5301_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_badIndexedFunctionName_in_indexedFunctionName5312  */
+static	ANTLR3_BITWORD FOLLOW_badIndexedFunctionName_in_indexedFunctionName5312_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_badIndexedFunctionName_in_indexedFunctionName5312	= { FOLLOW_badIndexedFunctionName_in_indexedFunctionName5312_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_indexedFunctionName5324  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_indexedFunctionName5324_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_indexedFunctionName5324	= { FOLLOW_RPAREN_TOK_in_indexedFunctionName5324_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_badIndexedFunctionName5346  */
+static	ANTLR3_BITWORD FOLLOW_set_in_badIndexedFunctionName5346_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_set_in_badIndexedFunctionName5346	= { FOLLOW_set_in_badIndexedFunctionName5346_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_termList5387  */
+static	ANTLR3_BITWORD FOLLOW_term_in_termList5387_bits[]	= { ANTLR3_UINT64_LIT(0xC004002400A90002), ANTLR3_UINT64_LIT(0x05804418200000FF), ANTLR3_UINT64_LIT(0x00000000043600CA) };
+static  ANTLR3_BITSET_LIST FOLLOW_term_in_termList5387	= { FOLLOW_term_in_termList5387_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_LITERAL_2_0_in_str5409  */
+static	ANTLR3_BITWORD FOLLOW_STRING_LITERAL_2_0_in_str5409_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_LITERAL_2_0_in_str5409	= { FOLLOW_STRING_LITERAL_2_0_in_str5409_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_LITERAL_2_5_in_str5421  */
+static	ANTLR3_BITWORD FOLLOW_STRING_LITERAL_2_5_in_str5421_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_STRING_LITERAL_2_5_in_str5421	= { FOLLOW_STRING_LITERAL_2_5_in_str5421_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_NOT_TOK_in_builtinOp5448  */
+static	ANTLR3_BITWORD FOLLOW_NOT_TOK_in_builtinOp5448_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_NOT_TOK_in_builtinOp5448	= { FOLLOW_NOT_TOK_in_builtinOp5448_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_IMPLIES_TOK_in_builtinOp5461  */
+static	ANTLR3_BITWORD FOLLOW_IMPLIES_TOK_in_builtinOp5461_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_IMPLIES_TOK_in_builtinOp5461	= { FOLLOW_IMPLIES_TOK_in_builtinOp5461_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_AND_TOK_in_builtinOp5470  */
+static	ANTLR3_BITWORD FOLLOW_AND_TOK_in_builtinOp5470_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_AND_TOK_in_builtinOp5470	= { FOLLOW_AND_TOK_in_builtinOp5470_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_OR_TOK_in_builtinOp5483  */
+static	ANTLR3_BITWORD FOLLOW_OR_TOK_in_builtinOp5483_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_OR_TOK_in_builtinOp5483	= { FOLLOW_OR_TOK_in_builtinOp5483_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_XOR_TOK_in_builtinOp5497  */
+static	ANTLR3_BITWORD FOLLOW_XOR_TOK_in_builtinOp5497_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_XOR_TOK_in_builtinOp5497	= { FOLLOW_XOR_TOK_in_builtinOp5497_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_TOK_in_builtinOp5510  */
+static	ANTLR3_BITWORD FOLLOW_EQUAL_TOK_in_builtinOp5510_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EQUAL_TOK_in_builtinOp5510	= { FOLLOW_EQUAL_TOK_in_builtinOp5510_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DISTINCT_TOK_in_builtinOp5521  */
+static	ANTLR3_BITWORD FOLLOW_DISTINCT_TOK_in_builtinOp5521_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DISTINCT_TOK_in_builtinOp5521	= { FOLLOW_DISTINCT_TOK_in_builtinOp5521_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_ITE_TOK_in_builtinOp5529  */
+static	ANTLR3_BITWORD FOLLOW_ITE_TOK_in_builtinOp5529_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_ITE_TOK_in_builtinOp5529	= { FOLLOW_ITE_TOK_in_builtinOp5529_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GREATER_THAN_TOK_in_builtinOp5542  */
+static	ANTLR3_BITWORD FOLLOW_GREATER_THAN_TOK_in_builtinOp5542_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_GREATER_THAN_TOK_in_builtinOp5542	= { FOLLOW_GREATER_THAN_TOK_in_builtinOp5542_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_GREATER_THAN_EQUAL_TOK_in_builtinOp5567  */
+static	ANTLR3_BITWORD FOLLOW_GREATER_THAN_EQUAL_TOK_in_builtinOp5567_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_GREATER_THAN_EQUAL_TOK_in_builtinOp5567	= { FOLLOW_GREATER_THAN_EQUAL_TOK_in_builtinOp5567_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LESS_THAN_EQUAL_TOK_in_builtinOp5592  */
+static	ANTLR3_BITWORD FOLLOW_LESS_THAN_EQUAL_TOK_in_builtinOp5592_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_LESS_THAN_EQUAL_TOK_in_builtinOp5592	= { FOLLOW_LESS_THAN_EQUAL_TOK_in_builtinOp5592_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LESS_THAN_TOK_in_builtinOp5617  */
+static	ANTLR3_BITWORD FOLLOW_LESS_THAN_TOK_in_builtinOp5617_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_LESS_THAN_TOK_in_builtinOp5617	= { FOLLOW_LESS_THAN_TOK_in_builtinOp5617_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_PLUS_TOK_in_builtinOp5642  */
+static	ANTLR3_BITWORD FOLLOW_PLUS_TOK_in_builtinOp5642_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_PLUS_TOK_in_builtinOp5642	= { FOLLOW_PLUS_TOK_in_builtinOp5642_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_MINUS_TOK_in_builtinOp5654  */
+static	ANTLR3_BITWORD FOLLOW_MINUS_TOK_in_builtinOp5654_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_MINUS_TOK_in_builtinOp5654	= { FOLLOW_MINUS_TOK_in_builtinOp5654_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_STAR_TOK_in_builtinOp5665  */
+static	ANTLR3_BITWORD FOLLOW_STAR_TOK_in_builtinOp5665_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_STAR_TOK_in_builtinOp5665	= { FOLLOW_STAR_TOK_in_builtinOp5665_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DIV_TOK_in_builtinOp5677  */
+static	ANTLR3_BITWORD FOLLOW_DIV_TOK_in_builtinOp5677_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DIV_TOK_in_builtinOp5677	= { FOLLOW_DIV_TOK_in_builtinOp5677_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_BV2NAT_TOK_in_builtinOp5691  */
+static	ANTLR3_BITWORD FOLLOW_BV2NAT_TOK_in_builtinOp5691_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_BV2NAT_TOK_in_builtinOp5691	= { FOLLOW_BV2NAT_TOK_in_builtinOp5691_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DTSIZE_TOK_in_builtinOp5704  */
+static	ANTLR3_BITWORD FOLLOW_DTSIZE_TOK_in_builtinOp5704_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DTSIZE_TOK_in_builtinOp5704	= { FOLLOW_DTSIZE_TOK_in_builtinOp5704_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FMFCARD_TOK_in_builtinOp5718  */
+static	ANTLR3_BITWORD FOLLOW_FMFCARD_TOK_in_builtinOp5718_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FMFCARD_TOK_in_builtinOp5718	= { FOLLOW_FMFCARD_TOK_in_builtinOp5718_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FMFCARDVAL_TOK_in_builtinOp5731  */
+static	ANTLR3_BITWORD FOLLOW_FMFCARDVAL_TOK_in_builtinOp5731_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FMFCARDVAL_TOK_in_builtinOp5731	= { FOLLOW_FMFCARDVAL_TOK_in_builtinOp5731_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INST_CLOSURE_TOK_in_builtinOp5741  */
+static	ANTLR3_BITWORD FOLLOW_INST_CLOSURE_TOK_in_builtinOp5741_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INST_CLOSURE_TOK_in_builtinOp5741	= { FOLLOW_INST_CLOSURE_TOK_in_builtinOp5741_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EXISTS_TOK_in_quantOp5783  */
+static	ANTLR3_BITWORD FOLLOW_EXISTS_TOK_in_quantOp5783_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EXISTS_TOK_in_quantOp5783	= { FOLLOW_EXISTS_TOK_in_quantOp5783_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_FORALL_TOK_in_quantOp5794  */
+static	ANTLR3_BITWORD FOLLOW_FORALL_TOK_in_quantOp5794_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_FORALL_TOK_in_quantOp5794	= { FOLLOW_FORALL_TOK_in_quantOp5794_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_functionName5815  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_functionName5815_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_functionName5815	= { FOLLOW_symbol_in_functionName5815_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sortList5839  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sortList5839_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280002), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sortList5839	= { FOLLOW_sortSymbol_in_sortList5839_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_nonemptySortList5866  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_nonemptySortList5866_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280002), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_nonemptySortList5866	= { FOLLOW_sortSymbol_in_nonemptySortList5866_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sortedVarList5895  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sortedVarList5895_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sortedVarList5895	= { FOLLOW_LPAREN_TOK_in_sortedVarList5895_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sortedVarList5897  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sortedVarList5897_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sortedVarList5897	= { FOLLOW_symbol_in_sortedVarList5897_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sortedVarList5906  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sortedVarList5906_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sortedVarList5906	= { FOLLOW_sortSymbol_in_sortedVarList5906_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sortedVarList5909  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sortedVarList5909_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sortedVarList5909	= { FOLLOW_RPAREN_TOK_in_sortedVarList5909_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sortName5940  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sortName5940_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sortName5940	= { FOLLOW_symbol_in_sortName5940_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortName_in_sortSymbol5960  */
+static	ANTLR3_BITWORD FOLLOW_sortName_in_sortSymbol5960_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortName_in_sortSymbol5960	= { FOLLOW_sortName_in_sortSymbol5960_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sortSymbol5973  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sortSymbol5973_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001100000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sortSymbol5973	= { FOLLOW_LPAREN_TOK_in_sortSymbol5973_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INDEX_TOK_in_sortSymbol5976  */
+static	ANTLR3_BITWORD FOLLOW_INDEX_TOK_in_sortSymbol5976_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_INDEX_TOK_in_sortSymbol5976	= { FOLLOW_INDEX_TOK_in_sortSymbol5976_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sortSymbol5989  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_sortSymbol5989_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x4080041800000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sortSymbol5989	= { FOLLOW_symbol_in_sortSymbol5989_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_nonemptyNumeralList_in_sortSymbol5998  */
+static	ANTLR3_BITWORD FOLLOW_nonemptyNumeralList_in_sortSymbol5998_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_nonemptyNumeralList_in_sortSymbol5998	= { FOLLOW_nonemptyNumeralList_in_sortSymbol5998_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortList_in_sortSymbol6015  */
+static	ANTLR3_BITWORD FOLLOW_sortList_in_sortSymbol6015_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortList_in_sortSymbol6015	= { FOLLOW_sortList_in_sortSymbol6015_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sortSymbol6032  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sortSymbol6032_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sortSymbol6032	= { FOLLOW_RPAREN_TOK_in_sortSymbol6032_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_symbolList6055  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_symbolList6055_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280002), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_symbolList6055	= { FOLLOW_symbol_in_symbolList6055_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SIMPLE_SYMBOL_in_symbol6077  */
+static	ANTLR3_BITWORD FOLLOW_SIMPLE_SYMBOL_in_symbol6077_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_SIMPLE_SYMBOL_in_symbol6077	= { FOLLOW_SIMPLE_SYMBOL_in_symbol6077_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_154_in_symbol6091  */
+static	ANTLR3_BITWORD FOLLOW_154_in_symbol6091_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_154_in_symbol6091	= { FOLLOW_154_in_symbol6091_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SET_OPTIONS_TOK_in_symbol6107  */
+static	ANTLR3_BITWORD FOLLOW_SET_OPTIONS_TOK_in_symbol6107_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_SET_OPTIONS_TOK_in_symbol6107	= { FOLLOW_SET_OPTIONS_TOK_in_symbol6107_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_VAR_TOK_in_symbol6117  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_VAR_TOK_in_symbol6117_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_VAR_TOK_in_symbol6117	= { FOLLOW_DECLARE_VAR_TOK_in_symbol6117_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_PRIMED_VAR_TOK_in_symbol6127  */
+static	ANTLR3_BITWORD FOLLOW_DECLARE_PRIMED_VAR_TOK_in_symbol6127_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_PRIMED_VAR_TOK_in_symbol6127	= { FOLLOW_DECLARE_PRIMED_VAR_TOK_in_symbol6127_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SYNTH_FUN_TOK_in_symbol6137  */
+static	ANTLR3_BITWORD FOLLOW_SYNTH_FUN_TOK_in_symbol6137_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_SYNTH_FUN_TOK_in_symbol6137	= { FOLLOW_SYNTH_FUN_TOK_in_symbol6137_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_SYNTH_INV_TOK_in_symbol6147  */
+static	ANTLR3_BITWORD FOLLOW_SYNTH_INV_TOK_in_symbol6147_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_SYNTH_INV_TOK_in_symbol6147	= { FOLLOW_SYNTH_INV_TOK_in_symbol6147_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CONSTRAINT_TOK_in_symbol6157  */
+static	ANTLR3_BITWORD FOLLOW_CONSTRAINT_TOK_in_symbol6157_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_CONSTRAINT_TOK_in_symbol6157	= { FOLLOW_CONSTRAINT_TOK_in_symbol6157_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INV_CONSTRAINT_TOK_in_symbol6167  */
+static	ANTLR3_BITWORD FOLLOW_INV_CONSTRAINT_TOK_in_symbol6167_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_INV_CONSTRAINT_TOK_in_symbol6167	= { FOLLOW_INV_CONSTRAINT_TOK_in_symbol6167_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_CHECK_SYNTH_TOK_in_symbol6177  */
+static	ANTLR3_BITWORD FOLLOW_CHECK_SYNTH_TOK_in_symbol6177_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_CHECK_SYNTH_TOK_in_symbol6177	= { FOLLOW_CHECK_SYNTH_TOK_in_symbol6177_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_QUOTED_SYMBOL_in_symbol6197  */
+static	ANTLR3_BITWORD FOLLOW_QUOTED_SYMBOL_in_symbol6197_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_QUOTED_SYMBOL_in_symbol6197	= { FOLLOW_QUOTED_SYMBOL_in_symbol6197_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_UNTERMINATED_QUOTED_SYMBOL_in_symbol6209  */
+static	ANTLR3_BITWORD FOLLOW_UNTERMINATED_QUOTED_SYMBOL_in_symbol6209_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000001000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_UNTERMINATED_QUOTED_SYMBOL_in_symbol6209	= { FOLLOW_UNTERMINATED_QUOTED_SYMBOL_in_symbol6209_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_EOF_in_symbol6217  */
+static	ANTLR3_BITWORD FOLLOW_EOF_in_symbol6217_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_symbol6217	= { FOLLOW_EOF_in_symbol6217_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_152_in_symbol6233  */
+static	ANTLR3_BITWORD FOLLOW_152_in_symbol6233_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_152_in_symbol6233	= { FOLLOW_152_in_symbol6233_bits, 1	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_nonemptyNumeralList6265  */
+static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_nonemptyNumeralList6265_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000800000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_nonemptyNumeralList6265	= { FOLLOW_INTEGER_LITERAL_in_nonemptyNumeralList6265_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_datatypeDef6307  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_datatypeDef6307_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_datatypeDef6307	= { FOLLOW_symbol_in_datatypeDef6307_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypeDef6330  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypeDef6330_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypeDef6330	= { FOLLOW_LPAREN_TOK_in_datatypeDef6330_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_constructorDef_in_datatypeDef6332  */
+static	ANTLR3_BITWORD FOLLOW_constructorDef_in_datatypeDef6332_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_constructorDef_in_datatypeDef6332	= { FOLLOW_constructorDef_in_datatypeDef6332_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypeDef6335  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypeDef6335_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypeDef6335	= { FOLLOW_RPAREN_TOK_in_datatypeDef6335_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_constructorDef6365  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_constructorDef6365_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_constructorDef6365	= { FOLLOW_symbol_in_constructorDef6365_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_constructorDef6380  */
+static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_constructorDef6380_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080001000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_constructorDef6380	= { FOLLOW_LPAREN_TOK_in_constructorDef6380_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_selector_in_constructorDef6382  */
+static	ANTLR3_BITWORD FOLLOW_selector_in_constructorDef6382_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x4000000000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_selector_in_constructorDef6382	= { FOLLOW_selector_in_constructorDef6382_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_constructorDef6385  */
+static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_constructorDef6385_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000040000000000) };
+static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_constructorDef6385	= { FOLLOW_RPAREN_TOK_in_constructorDef6385_bits, 2	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_selector6413  */
+static	ANTLR3_BITWORD FOLLOW_symbol_in_selector6413_bits[]	= { ANTLR3_UINT64_LIT(0x0000002400280000), ANTLR3_UINT64_LIT(0x0080041000000000), ANTLR3_UINT64_LIT(0x000000000426000A) };
+static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_selector6413	= { FOLLOW_symbol_in_selector6413_bits, 3	};
+/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_selector6416  */
+static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_selector6416_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
+static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_selector6416	= { FOLLOW_sortSymbol_in_selector6416_bits, 1	};
 
 
 /* ==============================================
@@ -2154,7 +2347,7 @@ static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_selector5872	= { FOLLOW_sortSymb
  */
 /**
  * $ANTLR start parseExpr
- * ../../../../../../src/parser/smt2/Smt2.g:193:1: parseExpr returns [CVC4::parser::smt2::myExpr expr] : ( term[expr, expr2] | EOF );
+ * ../../../../src/parser/smt2/Smt2.g:194:1: parseExpr returns [CVC4::parser::smt2::myExpr expr] : ( term[expr, expr2] | EOF );
  */
 static CVC4::parser::smt2::myExpr
 parseExpr(pSmt2Parser ctx)
@@ -2170,7 +2363,7 @@ parseExpr(pSmt2Parser ctx)
 
     {
         {
-            //  ../../../../../../src/parser/smt2/Smt2.g:197:3: ( term[expr, expr2] | EOF )
+            //  ../../../../src/parser/smt2/Smt2.g:198:3: ( term[expr, expr2] | EOF )
 
             ANTLR3_UINT32 alt1;
 
@@ -2211,7 +2404,7 @@ parseExpr(pSmt2Parser ctx)
             case SYNTH_INV_TOK:
             case UNIVSET_TOK:
             case UNTERMINATED_QUOTED_SYMBOL:
-            case 147:
+            case 154:
             	{
             		alt1=1;
             	}
@@ -2237,7 +2430,7 @@ parseExpr(pSmt2Parser ctx)
             switch (alt1)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:197:5: term[expr, expr2]
+        	    // ../../../../src/parser/smt2/Smt2.g:198:5: term[expr, expr2]
         	    {
         	        FOLLOWPUSH(FOLLOW_term_in_parseExpr119);
         	        term(ctx, expr, expr2);
@@ -2252,7 +2445,7 @@ parseExpr(pSmt2Parser ctx)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:198:5: EOF
+        	    // ../../../../src/parser/smt2/Smt2.g:199:5: EOF
         	    {
         	         MATCHT(EOF, &FOLLOW_EOF_in_parseExpr126);
         	        if  (HASEXCEPTION())
@@ -2284,7 +2477,7 @@ parseExpr(pSmt2Parser ctx)
 
 /**
  * $ANTLR start parseCommand
- * ../../../../../../src/parser/smt2/Smt2.g:205:1: parseCommand returns [CVC4::Command* cmd_return = NULL] : ( LPAREN_TOK command[&cmd] RPAREN_TOK | LPAREN_TOK INCLUDE_TOK str[name,true] RPAREN_TOK | EOF );
+ * ../../../../src/parser/smt2/Smt2.g:206:1: parseCommand returns [CVC4::Command* cmd_return = NULL] : ( LPAREN_TOK command[&cmd] RPAREN_TOK | LPAREN_TOK INCLUDE_TOK str[name,true] RPAREN_TOK | EOF );
  */
 static CVC4::Command*
 parseCommand(pSmt2Parser ctx)
@@ -2303,7 +2496,7 @@ parseCommand(pSmt2Parser ctx)
 
     {
         {
-            //  ../../../../../../src/parser/smt2/Smt2.g:213:3: ( LPAREN_TOK command[&cmd] RPAREN_TOK | LPAREN_TOK INCLUDE_TOK str[name,true] RPAREN_TOK | EOF )
+            //  ../../../../src/parser/smt2/Smt2.g:214:3: ( LPAREN_TOK command[&cmd] RPAREN_TOK | LPAREN_TOK INCLUDE_TOK str[name,true] RPAREN_TOK | EOF )
 
             ANTLR3_UINT32 alt2;
 
@@ -2322,9 +2515,13 @@ parseCommand(pSmt2Parser ctx)
             		    break;
             		case ASSERT_TOK:
             		case CHECKSAT_TOK:
+            		case DECLARE_CODATATYPES_2_5_TOK:
             		case DECLARE_CODATATYPES_TOK:
+            		case DECLARE_CODATATYPE_TOK:
             		case DECLARE_CONST_TOK:
+            		case DECLARE_DATATYPES_2_5_TOK:
             		case DECLARE_DATATYPES_TOK:
+            		case DECLARE_DATATYPE_TOK:
             		case DECLARE_FUNS_TOK:
             		case DECLARE_FUN_TOK:
             		case DECLARE_PREDS_TOK:
@@ -2401,7 +2598,7 @@ parseCommand(pSmt2Parser ctx)
             switch (alt2)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:213:5: LPAREN_TOK command[&cmd] RPAREN_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:214:5: LPAREN_TOK command[&cmd] RPAREN_TOK
         	    {
         	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_parseCommand155);
         	        if  (HASEXCEPTION())
@@ -2430,7 +2627,7 @@ parseCommand(pSmt2Parser ctx)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:218:5: LPAREN_TOK INCLUDE_TOK str[name,true] RPAREN_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:219:5: LPAREN_TOK INCLUDE_TOK str[name,true] RPAREN_TOK
         	    {
         	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_parseCommand173);
         	        if  (HASEXCEPTION())
@@ -2483,7 +2680,7 @@ parseCommand(pSmt2Parser ctx)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:233:5: EOF
+        	    // ../../../../src/parser/smt2/Smt2.g:234:5: EOF
         	    {
         	         MATCHT(EOF, &FOLLOW_EOF_in_parseCommand193);
         	        if  (HASEXCEPTION())
@@ -2525,7 +2722,7 @@ parseCommand(pSmt2Parser ctx)
 
 /**
  * $ANTLR start parseSygus
- * ../../../../../../src/parser/smt2/Smt2.g:241:1: parseSygus returns [CVC4::Command* cmd_return = NULL] : ( LPAREN_TOK sygusCommand[&cmd] RPAREN_TOK | EOF );
+ * ../../../../src/parser/smt2/Smt2.g:242:1: parseSygus returns [CVC4::Command* cmd_return = NULL] : ( LPAREN_TOK sygusCommand[&cmd] RPAREN_TOK | EOF );
  */
 static CVC4::Command*
 parseSygus(pSmt2Parser ctx)
@@ -2544,7 +2741,7 @@ parseSygus(pSmt2Parser ctx)
 
     {
         {
-            //  ../../../../../../src/parser/smt2/Smt2.g:249:3: ( LPAREN_TOK sygusCommand[&cmd] RPAREN_TOK | EOF )
+            //  ../../../../src/parser/smt2/Smt2.g:250:3: ( LPAREN_TOK sygusCommand[&cmd] RPAREN_TOK | EOF )
 
             ANTLR3_UINT32 alt3;
 
@@ -2578,7 +2775,7 @@ parseSygus(pSmt2Parser ctx)
             switch (alt3)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:249:5: LPAREN_TOK sygusCommand[&cmd] RPAREN_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:250:5: LPAREN_TOK sygusCommand[&cmd] RPAREN_TOK
         	    {
         	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_parseSygus222);
         	        if  (HASEXCEPTION())
@@ -2607,7 +2804,7 @@ parseSygus(pSmt2Parser ctx)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:250:5: EOF
+        	    // ../../../../src/parser/smt2/Smt2.g:251:5: EOF
         	    {
         	         MATCHT(EOF, &FOLLOW_EOF_in_parseSygus233);
         	        if  (HASEXCEPTION())
@@ -2649,7 +2846,7 @@ parseSygus(pSmt2Parser ctx)
 
 /**
  * $ANTLR start command
- * ../../../../../../src/parser/smt2/Smt2.g:257:1: command[CVC4::PtrCloser<CVC4::Command>* cmd] : ( SET_LOGIC_TOK symbol[name,CHECK_NONE,SYM_SORT] | SET_INFO_TOK metaInfoInternal[cmd] | GET_INFO_TOK KEYWORD | SET_OPTION_TOK setOptionInternal[cmd] | GET_OPTION_TOK KEYWORD | DECLARE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL | DEFINE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] LPAREN_TOK symbolList[names,CHECK_NONE,SYM_SORT] RPAREN_TOK sortSymbol[t,CHECK_DECLARE [...]
+ * ../../../../src/parser/smt2/Smt2.g:258:1: command[CVC4::PtrCloser<CVC4::Command>* cmd] : ( SET_LOGIC_TOK symbol[name,CHECK_NONE,SYM_SORT] | SET_INFO_TOK metaInfoInternal[cmd] | GET_INFO_TOK KEYWORD | SET_OPTION_TOK setOptionInternal[cmd] | GET_OPTION_TOK KEYWORD | DECLARE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL | DEFINE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] LPAREN_TOK symbolList[names,CHECK_NONE,SYM_SORT] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] | D [...]
  */
 static void
 command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
@@ -2680,7 +2877,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
     {
         {
-            //  ../../../../../../src/parser/smt2/Smt2.g:267:3: ( SET_LOGIC_TOK symbol[name,CHECK_NONE,SYM_SORT] | SET_INFO_TOK metaInfoInternal[cmd] | GET_INFO_TOK KEYWORD | SET_OPTION_TOK setOptionInternal[cmd] | GET_OPTION_TOK KEYWORD | DECLARE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL | DEFINE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] LPAREN_TOK symbolList[names,CHECK_NONE,SYM_SORT] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] | DECLARE_FUN_TOK symbol[name,C [...]
+            //  ../../../../src/parser/smt2/Smt2.g:268:3: ( SET_LOGIC_TOK symbol[name,CHECK_NONE,SYM_SORT] | SET_INFO_TOK metaInfoInternal[cmd] | GET_INFO_TOK KEYWORD | SET_OPTION_TOK setOptionInternal[cmd] | GET_OPTION_TOK KEYWORD | DECLARE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL | DEFINE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] LPAREN_TOK symbolList[names,CHECK_NONE,SYM_SORT] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] | DECLARE_FUN_TOK symbol[name,CHECK_U [...]
 
             ANTLR3_UINT32 alt8;
 
@@ -2795,8 +2992,12 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
             		alt8=20;
             	}
                 break;
+            case DECLARE_CODATATYPES_2_5_TOK:
             case DECLARE_CODATATYPES_TOK:
+            case DECLARE_CODATATYPE_TOK:
+            case DECLARE_DATATYPES_2_5_TOK:
             case DECLARE_DATATYPES_TOK:
+            case DECLARE_DATATYPE_TOK:
             case DECLARE_FUNS_TOK:
             case DECLARE_PREDS_TOK:
             case DECLARE_SORTS_TOK:
@@ -2833,7 +3034,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
             switch (alt8)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:268:5: SET_LOGIC_TOK symbol[name,CHECK_NONE,SYM_SORT]
+        	    // ../../../../src/parser/smt2/Smt2.g:269:5: SET_LOGIC_TOK symbol[name,CHECK_NONE,SYM_SORT]
         	    {
         	         MATCHT(SET_LOGIC_TOK, &FOLLOW_SET_LOGIC_TOK_in_command261);
         	        if  (HASEXCEPTION())
@@ -2859,7 +3060,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	                  }
         	                  PARSER_STATE->setLogic(name);
         	                  if( PARSER_STATE->sygus() ){
-        	                    cmd->reset(new SetBenchmarkLogicCommand("ALL"));
+        	                    cmd->reset(new SetBenchmarkLogicCommand(PARSER_STATE->getLogic().getLogicString()));
         	                  }else{
         	                    cmd->reset(new SetBenchmarkLogicCommand(name));
         	                  }
@@ -2870,7 +3071,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:281:5: SET_INFO_TOK metaInfoInternal[cmd]
+        	    // ../../../../src/parser/smt2/Smt2.g:282:5: SET_INFO_TOK metaInfoInternal[cmd]
         	    {
         	         MATCHT(SET_INFO_TOK, &FOLLOW_SET_INFO_TOK_in_command282);
         	        if  (HASEXCEPTION())
@@ -2892,7 +3093,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:283:5: GET_INFO_TOK KEYWORD
+        	    // ../../../../src/parser/smt2/Smt2.g:284:5: GET_INFO_TOK KEYWORD
         	    {
         	         MATCHT(GET_INFO_TOK, &FOLLOW_GET_INFO_TOK_in_command297);
         	        if  (HASEXCEPTION())
@@ -2918,7 +3119,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:288:5: SET_OPTION_TOK setOptionInternal[cmd]
+        	    // ../../../../src/parser/smt2/Smt2.g:289:5: SET_OPTION_TOK setOptionInternal[cmd]
         	    {
         	         MATCHT(SET_OPTION_TOK, &FOLLOW_SET_OPTION_TOK_in_command317);
         	        if  (HASEXCEPTION())
@@ -2940,7 +3141,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:290:5: GET_OPTION_TOK KEYWORD
+        	    // ../../../../src/parser/smt2/Smt2.g:291:5: GET_OPTION_TOK KEYWORD
         	    {
         	         MATCHT(GET_OPTION_TOK, &FOLLOW_GET_OPTION_TOK_in_command332);
         	        if  (HASEXCEPTION())
@@ -2966,7 +3167,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:295:5: DECLARE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL
+        	    // ../../../../src/parser/smt2/Smt2.g:296:5: DECLARE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL
         	    {
         	         MATCHT(DECLARE_SORT_TOK, &FOLLOW_DECLARE_SORT_TOK_in_command352);
         	        if  (HASEXCEPTION())
@@ -3031,7 +3232,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 7:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:318:5: DEFINE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] LPAREN_TOK symbolList[names,CHECK_NONE,SYM_SORT] RPAREN_TOK sortSymbol[t,CHECK_DECLARED]
+        	    // ../../../../src/parser/smt2/Smt2.g:319:5: DEFINE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] LPAREN_TOK symbolList[names,CHECK_NONE,SYM_SORT] RPAREN_TOK sortSymbol[t,CHECK_DECLARED]
         	    {
         	         MATCHT(DEFINE_SORT_TOK, &FOLLOW_DEFINE_SORT_TOK_in_command399);
         	        if  (HASEXCEPTION())
@@ -3119,7 +3320,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 8:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:338:5: DECLARE_FUN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortList[sorts] RPAREN_TOK sortSymbol[t,CHECK_DECLARED]
+        	    // ../../../../src/parser/smt2/Smt2.g:339:5: DECLARE_FUN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortList[sorts] RPAREN_TOK sortSymbol[t,CHECK_DECLARED]
         	    {
         	         MATCHT(DECLARE_FUN_TOK, &FOLLOW_DECLARE_FUN_TOK_in_command456);
         	        if  (HASEXCEPTION())
@@ -3200,7 +3401,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 9:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:355:5: DEFINE_FUN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] term[expr, expr2]
+        	    // ../../../../src/parser/smt2/Smt2.g:356:5: DEFINE_FUN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] term[expr, expr2]
         	    {
         	         MATCHT(DEFINE_FUN_TOK, &FOLLOW_DEFINE_FUN_TOK_in_command507);
         	        if  (HASEXCEPTION())
@@ -3313,7 +3514,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 10:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:391:5: GET_VALUE_TOK ( LPAREN_TOK termList[terms,expr] RPAREN_TOK |~ LPAREN_TOK )
+        	    // ../../../../src/parser/smt2/Smt2.g:392:5: GET_VALUE_TOK ( LPAREN_TOK termList[terms,expr] RPAREN_TOK |~ LPAREN_TOK )
         	    {
         	         MATCHT(GET_VALUE_TOK, &FOLLOW_GET_VALUE_TOK_in_command571);
         	        if  (HASEXCEPTION())
@@ -3327,7 +3528,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:392:5: ( LPAREN_TOK termList[terms,expr] RPAREN_TOK |~ LPAREN_TOK )
+        	        // ../../../../src/parser/smt2/Smt2.g:393:5: ( LPAREN_TOK termList[terms,expr] RPAREN_TOK |~ LPAREN_TOK )
         	        {
         	            int alt4=2;
         	            switch ( LA(1) )
@@ -3357,9 +3558,13 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            case CONSTRAINT_TOK:
         	            case CONST_TOK:
         	            case DECIMAL_LITERAL:
+        	            case DECLARE_CODATATYPES_2_5_TOK:
         	            case DECLARE_CODATATYPES_TOK:
+        	            case DECLARE_CODATATYPE_TOK:
         	            case DECLARE_CONST_TOK:
+        	            case DECLARE_DATATYPES_2_5_TOK:
         	            case DECLARE_DATATYPES_TOK:
+        	            case DECLARE_DATATYPE_TOK:
         	            case DECLARE_FUNS_TOK:
         	            case DECLARE_FUN_TOK:
         	            case DECLARE_PREDS_TOK:
@@ -3435,12 +3640,14 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            case LESS_THAN_EQUAL_TOK:
         	            case LESS_THAN_TOK:
         	            case LET_TOK:
+        	            case MATCH_TOK:
         	            case META_INFO_TOK:
         	            case MINUS_TOK:
         	            case NILREF_TOK:
         	            case NOT_TOK:
         	            case NUMERAL:
         	            case OR_TOK:
+        	            case PAR_TOK:
         	            case PLUS_TOK:
         	            case POP_TOK:
         	            case PROPAGATION_RULE_TOK:
@@ -3473,17 +3680,18 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            case SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE:
         	            case SYNTH_FUN_TOK:
         	            case SYNTH_INV_TOK:
+        	            case TESTER_TOK:
         	            case UNIVSET_TOK:
         	            case UNTERMINATED_QUOTED_SYMBOL:
         	            case WHITESPACE:
         	            case XOR_TOK:
-        	            case 145:
-        	            case 146:
-        	            case 147:
-        	            case 148:
-        	            case 149:
-        	            case 150:
-        	            case 151:
+        	            case 152:
+        	            case 153:
+        	            case 154:
+        	            case 155:
+        	            case 156:
+        	            case 157:
+        	            case 158:
         	            	{
         	            		alt4=2;
         	            	}
@@ -3504,7 +3712,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt4)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:392:7: LPAREN_TOK termList[terms,expr] RPAREN_TOK
+        	        	    // ../../../../src/parser/smt2/Smt2.g:393:7: LPAREN_TOK termList[terms,expr] RPAREN_TOK
         	        	    {
         	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_command581);
         	        	        if  (HASEXCEPTION())
@@ -3538,9 +3746,9 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:394:7: ~ LPAREN_TOK
+        	        	    // ../../../../src/parser/smt2/Smt2.g:395:7: ~ LPAREN_TOK
         	        	    {
-        	        	        if ( ((LA(1) >= ALPHA) && (LA(1) <= LET_TOK)) || ((LA(1) >= META_INFO_TOK) && (LA(1) <= 151)) )
+        	        	        if ( ((LA(1) >= ALPHA) && (LA(1) <= LET_TOK)) || ((LA(1) >= MATCH_TOK) && (LA(1) <= 158)) )
         	        	        {
         	        	            CONSUME();
         	        	            PERRORRECOVERY=ANTLR3_FALSE;
@@ -3573,7 +3781,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 11:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:401:5: GET_ASSIGNMENT_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:402:5: GET_ASSIGNMENT_TOK
         	    {
         	         MATCHT(GET_ASSIGNMENT_TOK, &FOLLOW_GET_ASSIGNMENT_TOK_in_command629);
         	        if  (HASEXCEPTION())
@@ -3595,7 +3803,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 12:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:404:5: ASSERT_TOK term[expr, expr2]
+        	    // ../../../../src/parser/smt2/Smt2.g:405:5: ASSERT_TOK term[expr, expr2]
         	    {
         	         MATCHT(ASSERT_TOK, &FOLLOW_ASSERT_TOK_in_command649);
         	        if  (HASEXCEPTION())
@@ -3637,7 +3845,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 13:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:418:5: CHECKSAT_TOK ( term[expr, expr2] |)
+        	    // ../../../../src/parser/smt2/Smt2.g:419:5: CHECKSAT_TOK ( term[expr, expr2] |)
         	    {
         	         MATCHT(CHECKSAT_TOK, &FOLLOW_CHECKSAT_TOK_in_command688);
         	        if  (HASEXCEPTION())
@@ -3659,7 +3867,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:423:5: ( term[expr, expr2] |)
+        	        // ../../../../src/parser/smt2/Smt2.g:424:5: ( term[expr, expr2] |)
         	        {
         	            int alt5=2;
         	            switch ( LA(1) )
@@ -3697,7 +3905,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            case SYNTH_INV_TOK:
         	            case UNIVSET_TOK:
         	            case UNTERMINATED_QUOTED_SYMBOL:
-        	            case 147:
+        	            case 154:
         	            	{
         	            		alt5=1;
         	            	}
@@ -3723,7 +3931,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt5)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:423:7: term[expr, expr2]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:424:7: term[expr, expr2]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_term_in_command704);
         	        	        term(ctx, expr, expr2);
@@ -3748,7 +3956,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:430:7: 
+        	        	    // ../../../../src/parser/smt2/Smt2.g:431:7: 
         	        	    {
         	        	        {
         	        	             expr = MK_CONST(bool(true)); 
@@ -3769,7 +3977,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 14:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:434:5: GET_ASSERTIONS_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:435:5: GET_ASSERTIONS_TOK
         	    {
         	         MATCHT(GET_ASSERTIONS_TOK, &FOLLOW_GET_ASSERTIONS_TOK_in_command745);
         	        if  (HASEXCEPTION())
@@ -3791,7 +3999,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 15:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:437:5: GET_PROOF_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:438:5: GET_PROOF_TOK
         	    {
         	         MATCHT(GET_PROOF_TOK, &FOLLOW_GET_PROOF_TOK_in_command765);
         	        if  (HASEXCEPTION())
@@ -3813,7 +4021,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 16:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:440:5: GET_UNSAT_CORE_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:441:5: GET_UNSAT_CORE_TOK
         	    {
         	         MATCHT(GET_UNSAT_CORE_TOK, &FOLLOW_GET_UNSAT_CORE_TOK_in_command785);
         	        if  (HASEXCEPTION())
@@ -3835,7 +4043,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 17:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:443:5: PUSH_TOK (k= INTEGER_LITERAL |)
+        	    // ../../../../src/parser/smt2/Smt2.g:444:5: PUSH_TOK (k= INTEGER_LITERAL |)
         	    {
         	         MATCHT(PUSH_TOK, &FOLLOW_PUSH_TOK_in_command805);
         	        if  (HASEXCEPTION())
@@ -3857,7 +4065,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:448:5: (k= INTEGER_LITERAL |)
+        	        // ../../../../src/parser/smt2/Smt2.g:449:5: (k= INTEGER_LITERAL |)
         	        {
         	            int alt6=2;
         	            switch ( LA(1) )
@@ -3888,7 +4096,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt6)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:448:7: k= INTEGER_LITERAL
+        	        	    // ../../../../src/parser/smt2/Smt2.g:449:7: k= INTEGER_LITERAL
         	        	    {
         	        	        k = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_command823);
         	        	        if  (HASEXCEPTION())
@@ -3924,7 +4132,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:469:7: 
+        	        	    // ../../../../src/parser/smt2/Smt2.g:470:7: 
         	        	    {
         	        	        {
         	        	             if(PARSER_STATE->strictModeEnabled()) {
@@ -3949,7 +4157,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 18:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:479:5: POP_TOK (k= INTEGER_LITERAL |)
+        	    // ../../../../src/parser/smt2/Smt2.g:480:5: POP_TOK (k= INTEGER_LITERAL |)
         	    {
         	         MATCHT(POP_TOK, &FOLLOW_POP_TOK_in_command847);
         	        if  (HASEXCEPTION())
@@ -3971,7 +4179,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:484:5: (k= INTEGER_LITERAL |)
+        	        // ../../../../src/parser/smt2/Smt2.g:485:5: (k= INTEGER_LITERAL |)
         	        {
         	            int alt7=2;
         	            switch ( LA(1) )
@@ -4002,7 +4210,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt7)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:484:7: k= INTEGER_LITERAL
+        	        	    // ../../../../src/parser/smt2/Smt2.g:485:7: k= INTEGER_LITERAL
         	        	    {
         	        	        k = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_command865);
         	        	        if  (HASEXCEPTION())
@@ -4042,7 +4250,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:509:7: 
+        	        	    // ../../../../src/parser/smt2/Smt2.g:510:7: 
         	        	    {
         	        	        {
         	        	             if(PARSER_STATE->strictModeEnabled()) {
@@ -4067,7 +4275,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 19:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:521:5: EXIT_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:522:5: EXIT_TOK
         	    {
         	         MATCHT(EXIT_TOK, &FOLLOW_EXIT_TOK_in_command899);
         	        if  (HASEXCEPTION())
@@ -4084,7 +4292,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 20:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:525:5: smt25Command[cmd]
+        	    // ../../../../src/parser/smt2/Smt2.g:526:5: smt25Command[cmd]
         	    {
         	        FOLLOWPUSH(FOLLOW_smt25Command_in_command918);
         	        smt25Command(ctx, cmd);
@@ -4109,7 +4317,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 21:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:534:5: extendedCommand[cmd]
+        	    // ../../../../src/parser/smt2/Smt2.g:535:5: extendedCommand[cmd]
         	    {
         	        FOLLOWPUSH(FOLLOW_extendedCommand_in_command938);
         	        extendedCommand(ctx, cmd);
@@ -4134,7 +4342,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 22:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:543:5: SIMPLE_SYMBOL
+        	    // ../../../../src/parser/smt2/Smt2.g:544:5: SIMPLE_SYMBOL
         	    {
         	        SIMPLE_SYMBOL3 = (pANTLR3_COMMON_TOKEN) MATCHT(SIMPLE_SYMBOL, &FOLLOW_SIMPLE_SYMBOL_in_command958);
         	        if  (HASEXCEPTION())
@@ -4180,7 +4388,7 @@ command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
 /**
  * $ANTLR start sygusCommand
- * ../../../../../../src/parser/smt2/Smt2.g:556:1: sygusCommand[CVC4::PtrCloser<CVC4::Command>* cmd] : ( DECLARE_VAR_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | DECLARE_PRIMED_VAR_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | ( SYNTH_FUN_TOK | SYNTH_INV_TOK ) symbol[fun,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK ( sortSymbol[range,CHECK_DECLARED] )? ( LPAREN_TOK ( LPAREN_TOK symbol[n [...]
+ * ../../../../src/parser/smt2/Smt2.g:557:1: sygusCommand[CVC4::PtrCloser<CVC4::Command>* cmd] : ( DECLARE_VAR_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | DECLARE_PRIMED_VAR_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | ( SYNTH_FUN_TOK | SYNTH_INV_TOK ) symbol[fun,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK ( sortSymbol[range,CHECK_DECLARED] )? ( LPAREN_TOK ( LPAREN_TOK symbol[name,CH [...]
  */
 static void
 sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
@@ -4214,7 +4422,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
     {
         {
-            //  ../../../../../../src/parser/smt2/Smt2.g:581:3: ( DECLARE_VAR_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | DECLARE_PRIMED_VAR_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | ( SYNTH_FUN_TOK | SYNTH_INV_TOK ) symbol[fun,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK ( sortSymbol[range,CHECK_DECLARED] )? ( LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol [...]
+            //  ../../../../src/parser/smt2/Smt2.g:582:3: ( DECLARE_VAR_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | DECLARE_PRIMED_VAR_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | ( SYNTH_FUN_TOK | SYNTH_INV_TOK ) symbol[fun,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK ( sortSymbol[range,CHECK_DECLARED] )? ( LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHE [...]
 
             ANTLR3_UINT32 alt15;
 
@@ -4255,9 +4463,13 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
                 break;
             case ASSERT_TOK:
             case CHECKSAT_TOK:
+            case DECLARE_CODATATYPES_2_5_TOK:
             case DECLARE_CODATATYPES_TOK:
+            case DECLARE_CODATATYPE_TOK:
             case DECLARE_CONST_TOK:
+            case DECLARE_DATATYPES_2_5_TOK:
             case DECLARE_DATATYPES_TOK:
+            case DECLARE_DATATYPE_TOK:
             case DECLARE_FUNS_TOK:
             case DECLARE_FUN_TOK:
             case DECLARE_PREDS_TOK:
@@ -4314,7 +4526,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
             switch (alt15)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:582:5: DECLARE_VAR_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED]
+        	    // ../../../../src/parser/smt2/Smt2.g:583:5: DECLARE_VAR_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED]
         	    {
         	         MATCHT(DECLARE_VAR_TOK, &FOLLOW_DECLARE_VAR_TOK_in_sygusCommand990);
         	        if  (HASEXCEPTION())
@@ -4363,7 +4575,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:590:5: DECLARE_PRIMED_VAR_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED]
+        	    // ../../../../src/parser/smt2/Smt2.g:591:5: DECLARE_PRIMED_VAR_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED]
         	    {
         	         MATCHT(DECLARE_PRIMED_VAR_TOK, &FOLLOW_DECLARE_PRIMED_VAR_TOK_in_sygusCommand1030);
         	        if  (HASEXCEPTION())
@@ -4412,9 +4624,9 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:599:5: ( SYNTH_FUN_TOK | SYNTH_INV_TOK ) symbol[fun,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK ( sortSymbol[range,CHECK_DECLARED] )? ( LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] LPAREN_TOK ( sygusGTerm[ sgts.back().back(), fun] )+ RPAREN_TOK RPAREN_TOK )+ RPAREN_TOK )?
+        	    // ../../../../src/parser/smt2/Smt2.g:600:5: ( SYNTH_FUN_TOK | SYNTH_INV_TOK ) symbol[fun,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK ( sortSymbol[range,CHECK_DECLARED] )? ( LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] LPAREN_TOK ( sygusGTerm[ sgts.back().back(), fun] )+ RPAREN_TOK RPAREN_TOK )+ RPAREN_TOK )?
         	    {
-        	        // ../../../../../../src/parser/smt2/Smt2.g:599:5: ( SYNTH_FUN_TOK | SYNTH_INV_TOK )
+        	        // ../../../../src/parser/smt2/Smt2.g:600:5: ( SYNTH_FUN_TOK | SYNTH_INV_TOK )
         	        {
         	            int alt9=2;
         	            switch ( LA(1) )
@@ -4445,7 +4657,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt9)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:599:7: SYNTH_FUN_TOK
+        	        	    // ../../../../src/parser/smt2/Smt2.g:600:7: SYNTH_FUN_TOK
         	        	    {
         	        	         MATCHT(SYNTH_FUN_TOK, &FOLLOW_SYNTH_FUN_TOK_in_sygusCommand1073);
         	        	        if  (HASEXCEPTION())
@@ -4457,7 +4669,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:599:23: SYNTH_INV_TOK
+        	        	    // ../../../../src/parser/smt2/Smt2.g:600:23: SYNTH_INV_TOK
         	        	    {
         	        	         MATCHT(SYNTH_INV_TOK, &FOLLOW_SYNTH_INV_TOK_in_sygusCommand1077);
         	        	        if  (HASEXCEPTION())
@@ -4536,7 +4748,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:619:5: ( sortSymbol[range,CHECK_DECLARED] )?
+        	        // ../../../../src/parser/smt2/Smt2.g:620:5: ( sortSymbol[range,CHECK_DECLARED] )?
         	        {
         	            int alt10=2;
         	            switch ( LA(1) )
@@ -4552,7 +4764,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	                case SYNTH_FUN_TOK:
         	                case SYNTH_INV_TOK:
         	                case UNTERMINATED_QUOTED_SYMBOL:
-        	                case 147:
+        	                case 154:
         	                	{
         	                		alt10=1;
         	                	}
@@ -4573,7 +4785,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	                		    case SYNTH_FUN_TOK:
         	                		    case SYNTH_INV_TOK:
         	                		    case UNTERMINATED_QUOTED_SYMBOL:
-        	                		    case 147:
+        	                		    case 154:
         	                		    	{
         	                		    		alt10=1;
         	                		    	}
@@ -4587,7 +4799,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt10)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:619:7: sortSymbol[range,CHECK_DECLARED]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:620:7: sortSymbol[range,CHECK_DECLARED]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_sygusCommand1119);
         	        	        sortSymbol(ctx, range, CHECK_DECLARED);
@@ -4614,7 +4826,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:624:5: ( LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] LPAREN_TOK ( sygusGTerm[ sgts.back().back(), fun] )+ RPAREN_TOK RPAREN_TOK )+ RPAREN_TOK )?
+        	        // ../../../../src/parser/smt2/Smt2.g:625:5: ( LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] LPAREN_TOK ( sygusGTerm[ sgts.back().back(), fun] )+ RPAREN_TOK RPAREN_TOK )+ RPAREN_TOK )?
         	        {
         	            int alt13=2;
         	            switch ( LA(1) )
@@ -4629,7 +4841,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt13)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:624:7: LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] LPAREN_TOK ( sygusGTerm[ sgts.back().back(), fun] )+ RPAREN_TOK RPAREN_TOK )+ RPAREN_TOK
+        	        	    // ../../../../src/parser/smt2/Smt2.g:625:7: LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] LPAREN_TOK ( sygusGTerm[ sgts.back().back(), fun] )+ RPAREN_TOK RPAREN_TOK )+ RPAREN_TOK
         	        	    {
         	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sygusCommand1133);
         	        	        if  (HASEXCEPTION())
@@ -4638,7 +4850,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        }
 
 
-        	        	        // ../../../../../../src/parser/smt2/Smt2.g:625:5: ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] LPAREN_TOK ( sygusGTerm[ sgts.back().back(), fun] )+ RPAREN_TOK RPAREN_TOK )+
+        	        	        // ../../../../src/parser/smt2/Smt2.g:626:5: ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] LPAREN_TOK ( sygusGTerm[ sgts.back().back(), fun] )+ RPAREN_TOK RPAREN_TOK )+
         	        	        {
         	        	            int cnt12=0;
 
@@ -4658,7 +4870,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        	switch (alt12)
         	        	        	{
         	        	        	    case 1:
-        	        	        	        // ../../../../../../src/parser/smt2/Smt2.g:625:7: LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] LPAREN_TOK ( sygusGTerm[ sgts.back().back(), fun] )+ RPAREN_TOK RPAREN_TOK
+        	        	        	        // ../../../../src/parser/smt2/Smt2.g:626:7: LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] LPAREN_TOK ( sygusGTerm[ sgts.back().back(), fun] )+ RPAREN_TOK RPAREN_TOK
         	        	        	        {
         	        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sygusCommand1141);
         	        	        	            if  (HASEXCEPTION())
@@ -4727,7 +4939,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        	            }
 
 
-        	        	        	            // ../../../../../../src/parser/smt2/Smt2.g:659:18: ( sygusGTerm[ sgts.back().back(), fun] )+
+        	        	        	            // ../../../../src/parser/smt2/Smt2.g:660:18: ( sygusGTerm[ sgts.back().back(), fun] )+
         	        	        	            {
         	        	        	                int cnt11=0;
 
@@ -4753,7 +4965,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        	            	case SYNTH_FUN_TOK:
         	        	        	            	case SYNTH_INV_TOK:
         	        	        	            	case UNTERMINATED_QUOTED_SYMBOL:
-        	        	        	            	case 147:
+        	        	        	            	case 154:
         	        	        	            		{
         	        	        	            			alt11=1;
         	        	        	            		}
@@ -4764,7 +4976,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        	            	switch (alt11)
         	        	        	            	{
         	        	        	            	    case 1:
-        	        	        	            	        // ../../../../../../src/parser/smt2/Smt2.g:659:20: sygusGTerm[ sgts.back().back(), fun]
+        	        	        	            	        // ../../../../src/parser/smt2/Smt2.g:660:20: sygusGTerm[ sgts.back().back(), fun]
         	        	        	            	        {
         	        	        	            	            FOLLOWPUSH(FOLLOW_sygusGTerm_in_sygusCommand1194);
         	        	        	            	            sygusGTerm(ctx, sgts.back().back(), fun);
@@ -4932,19 +5144,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	                  for(size_t i = 0; i < datatypeTypes.size(); ++i) {
         	                    DatatypeType dtt = datatypeTypes[i];
         	                    const Datatype& dt = dtt.getDatatype();
-        	                    name = "eval_" + dt.getName();
-        	                    PARSER_STATE->checkDeclaration(name, CHECK_UNDECLARED, SYM_VARIABLE);
-        	                    std::vector<Type> evalType;
-        	                    evalType.push_back(dtt);
-        	                    if( !terms[0].isNull() ){
-        	                      for(size_t j = 0; j < terms[0].getNumChildren(); ++j) {
-        	                        evalType.push_back(terms[0][j].getType());
-        	                      }
-        	                    }
-        	                    evalType.push_back(sorts[i]);
-        	                    const FunctionType eval_func_type =
-        	                        EXPR_MANAGER->mkFunctionType(evalType);
-        	                    Expr eval = PARSER_STATE->mkVar(name, eval_func_type);
+        	                    Expr eval = dt.getSygusEvaluationFunc();
         	                    Debug("parser-sygus") << "Make eval " << eval << " for " << dt.getName()
         	                                          << std::endl;
         	                    evals.insert(std::make_pair(dtt, eval));
@@ -4973,7 +5173,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:769:5: CONSTRAINT_TOK term[expr, expr2]
+        	    // ../../../../src/parser/smt2/Smt2.g:758:5: CONSTRAINT_TOK term[expr, expr2]
         	    {
         	         MATCHT(CONSTRAINT_TOK, &FOLLOW_CONSTRAINT_TOK_in_sygusCommand1266);
         	        if  (HASEXCEPTION())
@@ -5013,7 +5213,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:780:5: INV_CONSTRAINT_TOK ( symbol[name,CHECK_NONE,SYM_VARIABLE] )+
+        	    // ../../../../src/parser/smt2/Smt2.g:769:5: INV_CONSTRAINT_TOK ( symbol[name,CHECK_NONE,SYM_VARIABLE] )+
         	    {
         	         MATCHT(INV_CONSTRAINT_TOK, &FOLLOW_INV_CONSTRAINT_TOK_in_sygusCommand1287);
         	        if  (HASEXCEPTION())
@@ -5032,7 +5232,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:786:5: ( symbol[name,CHECK_NONE,SYM_VARIABLE] )+
+        	        // ../../../../src/parser/smt2/Smt2.g:775:5: ( symbol[name,CHECK_NONE,SYM_VARIABLE] )+
         	        {
         	            int cnt14=0;
 
@@ -5052,7 +5252,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	case SYNTH_FUN_TOK:
         	        	case SYNTH_INV_TOK:
         	        	case UNTERMINATED_QUOTED_SYMBOL:
-        	        	case 147:
+        	        	case 154:
         	        		{
         	        			alt14=1;
         	        		}
@@ -5063,7 +5263,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	switch (alt14)
         	        	{
         	        	    case 1:
-        	        	        // ../../../../../../src/parser/smt2/Smt2.g:786:7: symbol[name,CHECK_NONE,SYM_VARIABLE]
+        	        	        // ../../../../src/parser/smt2/Smt2.g:775:7: symbol[name,CHECK_NONE,SYM_VARIABLE]
         	        	        {
         	        	            FOLLOWPUSH(FOLLOW_symbol_in_sygusCommand1297);
         	        	            symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
@@ -5167,7 +5367,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:845:5: CHECK_SYNTH_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:834:5: CHECK_SYNTH_TOK
         	    {
         	         MATCHT(CHECK_SYNTH_TOK, &FOLLOW_CHECK_SYNTH_TOK_in_sygusCommand1321);
         	        if  (HASEXCEPTION())
@@ -5215,7 +5415,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 7:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:874:5: command[cmd]
+        	    // ../../../../src/parser/smt2/Smt2.g:863:5: command[cmd]
         	    {
         	        FOLLOWPUSH(FOLLOW_command_in_sygusCommand1339);
         	        command(ctx, cmd);
@@ -5250,7 +5450,7 @@ sygusCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
 /**
  * $ANTLR start sygusGTerm
- * ../../../../../../src/parser/smt2/Smt2.g:891:1: sygusGTerm[CVC4::SygusGTerm& sgt, std::string& fun] : ( LPAREN_TOK ( builtinOp[k] | LET_TOK LPAREN_TOK ( LPAREN_TOK symbol[sname,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] sygusGTerm[sgt.d_children.back(), fun] RPAREN_TOK )+ RPAREN_TOK | SYGUS_CONSTANT_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_LOCAL_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_INPUT_VARIABLE_TOK sortSymbol[ [...]
+ * ../../../../src/parser/smt2/Smt2.g:880:1: sygusGTerm[CVC4::SygusGTerm& sgt, std::string& fun] : ( LPAREN_TOK ( builtinOp[k] | LET_TOK LPAREN_TOK ( LPAREN_TOK symbol[sname,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] sygusGTerm[sgt.d_children.back(), fun] RPAREN_TOK )+ RPAREN_TOK | SYGUS_CONSTANT_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_LOCAL_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_INPUT_VARIABLE_TOK sortSymbol[t,CHEC [...]
  */
 static void
 sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
@@ -5279,7 +5479,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
 
     {
         {
-            //  ../../../../../../src/parser/smt2/Smt2.g:903:3: ( LPAREN_TOK ( builtinOp[k] | LET_TOK LPAREN_TOK ( LPAREN_TOK symbol[sname,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] sygusGTerm[sgt.d_children.back(), fun] RPAREN_TOK )+ RPAREN_TOK | SYGUS_CONSTANT_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_LOCAL_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_INPUT_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | symbol[name,CHECK_NON [...]
+            //  ../../../../src/parser/smt2/Smt2.g:892:3: ( LPAREN_TOK ( builtinOp[k] | LET_TOK LPAREN_TOK ( LPAREN_TOK symbol[sname,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] sygusGTerm[sgt.d_children.back(), fun] RPAREN_TOK )+ RPAREN_TOK | SYGUS_CONSTANT_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_LOCAL_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_INPUT_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | symbol[name,CHECK_NONE,SYM_ [...]
 
             ANTLR3_UINT32 alt20;
 
@@ -5324,7 +5524,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
             case SYNTH_FUN_TOK:
             case SYNTH_INV_TOK:
             case UNTERMINATED_QUOTED_SYMBOL:
-            case 147:
+            case 154:
             	{
             		alt20=6;
             	}
@@ -5345,7 +5545,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
             switch (alt20)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:903:5: LPAREN_TOK ( builtinOp[k] | LET_TOK LPAREN_TOK ( LPAREN_TOK symbol[sname,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] sygusGTerm[sgt.d_children.back(), fun] RPAREN_TOK )+ RPAREN_TOK | SYGUS_CONSTANT_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_LOCAL_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_INPUT_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | symbol[name,CHECK_NONE, [...]
+        	    // ../../../../src/parser/smt2/Smt2.g:892:5: LPAREN_TOK ( builtinOp[k] | LET_TOK LPAREN_TOK ( LPAREN_TOK symbol[sname,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] sygusGTerm[sgt.d_children.back(), fun] RPAREN_TOK )+ RPAREN_TOK | SYGUS_CONSTANT_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_LOCAL_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_INPUT_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | symbol[name,CHECK_NONE,SYM_VA [...]
         	    {
         	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sygusGTerm1380);
         	        if  (HASEXCEPTION())
@@ -5354,7 +5554,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:905:5: ( builtinOp[k] | LET_TOK LPAREN_TOK ( LPAREN_TOK symbol[sname,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] sygusGTerm[sgt.d_children.back(), fun] RPAREN_TOK )+ RPAREN_TOK | SYGUS_CONSTANT_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_LOCAL_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_INPUT_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | symbol[name,CHECK_NONE,SYM_VAR [...]
+        	        // ../../../../src/parser/smt2/Smt2.g:894:5: ( builtinOp[k] | LET_TOK LPAREN_TOK ( LPAREN_TOK symbol[sname,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] sygusGTerm[sgt.d_children.back(), fun] RPAREN_TOK )+ RPAREN_TOK | SYGUS_CONSTANT_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_LOCAL_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | SYGUS_INPUT_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED] | symbol[name,CHECK_NONE,SYM_VARIABLE] )
         	        {
         	            int alt17=7;
         	            switch ( LA(1) )
@@ -5420,7 +5620,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
         	            case SYNTH_FUN_TOK:
         	            case SYNTH_INV_TOK:
         	            case UNTERMINATED_QUOTED_SYMBOL:
-        	            case 147:
+        	            case 154:
         	            	{
         	            		alt17=7;
         	            	}
@@ -5441,7 +5641,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
         	            switch (alt17)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:905:7: builtinOp[k]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:894:7: builtinOp[k]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_builtinOp_in_sygusGTerm1393);
         	        	        builtinOp(ctx, k);
@@ -5474,7 +5674,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:919:8: LET_TOK LPAREN_TOK ( LPAREN_TOK symbol[sname,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] sygusGTerm[sgt.d_children.back(), fun] RPAREN_TOK )+ RPAREN_TOK
+        	        	    // ../../../../src/parser/smt2/Smt2.g:908:8: LET_TOK LPAREN_TOK ( LPAREN_TOK symbol[sname,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] sygusGTerm[sgt.d_children.back(), fun] RPAREN_TOK )+ RPAREN_TOK
         	        	    {
         	        	         MATCHT(LET_TOK, &FOLLOW_LET_TOK_in_sygusGTerm1404);
         	        	        if  (HASEXCEPTION())
@@ -5500,7 +5700,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
         	        	        }
 
 
-        	        	        // ../../../../../../src/parser/smt2/Smt2.g:925:8: ( LPAREN_TOK symbol[sname,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] sygusGTerm[sgt.d_children.back(), fun] RPAREN_TOK )+
+        	        	        // ../../../../src/parser/smt2/Smt2.g:914:8: ( LPAREN_TOK symbol[sname,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] sygusGTerm[sgt.d_children.back(), fun] RPAREN_TOK )+
         	        	        {
         	        	            int cnt16=0;
 
@@ -5520,7 +5720,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
         	        	        	switch (alt16)
         	        	        	{
         	        	        	    case 1:
-        	        	        	        // ../../../../../../src/parser/smt2/Smt2.g:925:10: LPAREN_TOK symbol[sname,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] sygusGTerm[sgt.d_children.back(), fun] RPAREN_TOK
+        	        	        	        // ../../../../src/parser/smt2/Smt2.g:914:10: LPAREN_TOK symbol[sname,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] sygusGTerm[sgt.d_children.back(), fun] RPAREN_TOK
         	        	        	        {
         	        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sygusGTerm1419);
         	        	        	            if  (HASEXCEPTION())
@@ -5608,7 +5808,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
         	        	    }
         	        	    break;
         	        	case 3:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:934:7: SYGUS_CONSTANT_TOK sortSymbol[t,CHECK_DECLARED]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:923:7: SYGUS_CONSTANT_TOK sortSymbol[t,CHECK_DECLARED]
         	        	    {
         	        	         MATCHT(SYGUS_CONSTANT_TOK, &FOLLOW_SYGUS_CONSTANT_TOK_in_sygusGTerm1480);
         	        	        if  (HASEXCEPTION())
@@ -5638,7 +5838,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
         	        	    }
         	        	    break;
         	        	case 4:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:939:7: SYGUS_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:928:7: SYGUS_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED]
         	        	    {
         	        	         MATCHT(SYGUS_VARIABLE_TOK, &FOLLOW_SYGUS_VARIABLE_TOK_in_sygusGTerm1500);
         	        	        if  (HASEXCEPTION())
@@ -5668,7 +5868,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
         	        	    }
         	        	    break;
         	        	case 5:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:944:7: SYGUS_LOCAL_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:933:7: SYGUS_LOCAL_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED]
         	        	    {
         	        	         MATCHT(SYGUS_LOCAL_VARIABLE_TOK, &FOLLOW_SYGUS_LOCAL_VARIABLE_TOK_in_sygusGTerm1519);
         	        	        if  (HASEXCEPTION())
@@ -5699,7 +5899,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
         	        	    }
         	        	    break;
         	        	case 6:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:950:7: SYGUS_INPUT_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:939:7: SYGUS_INPUT_VARIABLE_TOK sortSymbol[t,CHECK_DECLARED]
         	        	    {
         	        	         MATCHT(SYGUS_INPUT_VARIABLE_TOK, &FOLLOW_SYGUS_INPUT_VARIABLE_TOK_in_sygusGTerm1538);
         	        	        if  (HASEXCEPTION())
@@ -5730,7 +5930,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
         	        	    }
         	        	    break;
         	        	case 7:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:956:7: symbol[name,CHECK_NONE,SYM_VARIABLE]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:945:7: symbol[name,CHECK_NONE,SYM_VARIABLE]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_symbol_in_sygusGTerm1557);
         	        	        symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
@@ -5793,7 +5993,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:995:5: ( sygusGTerm[sgt.d_children.back(), fun] )*
+        	        // ../../../../src/parser/smt2/Smt2.g:984:5: ( sygusGTerm[sgt.d_children.back(), fun] )*
 
         	        for (;;)
         	        {
@@ -5817,7 +6017,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
         	            case SYNTH_FUN_TOK:
         	            case SYNTH_INV_TOK:
         	            case UNTERMINATED_QUOTED_SYMBOL:
-        	            case 147:
+        	            case 154:
         	            	{
         	            		alt18=1;
         	            	}
@@ -5828,7 +6028,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
         	            switch (alt18)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:995:7: sygusGTerm[sgt.d_children.back(), fun]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:984:7: sygusGTerm[sgt.d_children.back(), fun]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_sygusGTerm_in_sygusGTerm1585);
         	        	        sygusGTerm(ctx, sgt.d_children.back(), fun);
@@ -5880,7 +6080,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1008:5: INTEGER_LITERAL
+        	    // ../../../../src/parser/smt2/Smt2.g:997:5: INTEGER_LITERAL
         	    {
         	        INTEGER_LITERAL4 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_sygusGTerm1616);
         	        if  (HASEXCEPTION())
@@ -5903,7 +6103,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1016:5: HEX_LITERAL
+        	    // ../../../../src/parser/smt2/Smt2.g:1005:5: HEX_LITERAL
         	    {
         	        HEX_LITERAL5 = (pANTLR3_COMMON_TOKEN) MATCHT(HEX_LITERAL, &FOLLOW_HEX_LITERAL_in_sygusGTerm1628);
         	        if  (HASEXCEPTION())
@@ -5927,7 +6127,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1025:5: BINARY_LITERAL
+        	    // ../../../../src/parser/smt2/Smt2.g:1014:5: BINARY_LITERAL
         	    {
         	        BINARY_LITERAL6 = (pANTLR3_COMMON_TOKEN) MATCHT(BINARY_LITERAL, &FOLLOW_BINARY_LITERAL_in_sygusGTerm1640);
         	        if  (HASEXCEPTION())
@@ -5952,7 +6152,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1035:5: str[s,false]
+        	    // ../../../../src/parser/smt2/Smt2.g:1024:5: str[s,false]
         	    {
         	        FOLLOWPUSH(FOLLOW_str_in_sygusGTerm1652);
         	        str(ctx, s, false);
@@ -5977,7 +6177,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1042:5: symbol[name,CHECK_NONE,SYM_VARIABLE] ( SYGUS_ENUM_CONS_TOK symbol[name2,CHECK_NONE,SYM_VARIABLE] )?
+        	    // ../../../../src/parser/smt2/Smt2.g:1031:5: symbol[name,CHECK_NONE,SYM_VARIABLE] ( SYGUS_ENUM_CONS_TOK symbol[name2,CHECK_NONE,SYM_VARIABLE] )?
         	    {
         	        FOLLOWPUSH(FOLLOW_symbol_in_sygusGTerm1665);
         	        symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
@@ -5989,7 +6189,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:1043:5: ( SYGUS_ENUM_CONS_TOK symbol[name2,CHECK_NONE,SYM_VARIABLE] )?
+        	        // ../../../../src/parser/smt2/Smt2.g:1032:5: ( SYGUS_ENUM_CONS_TOK symbol[name2,CHECK_NONE,SYM_VARIABLE] )?
         	        {
         	            int alt19=2;
         	            switch ( LA(1) )
@@ -6004,7 +6204,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
         	            switch (alt19)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1043:7: SYGUS_ENUM_CONS_TOK symbol[name2,CHECK_NONE,SYM_VARIABLE]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:1032:7: SYGUS_ENUM_CONS_TOK symbol[name2,CHECK_NONE,SYM_VARIABLE]
         	        	    {
         	        	         MATCHT(SYGUS_ENUM_CONS_TOK, &FOLLOW_SYGUS_ENUM_CONS_TOK_in_sygusGTerm1674);
         	        	        if  (HASEXCEPTION())
@@ -6103,7 +6303,7 @@ sygusGTerm(pSmt2Parser ctx, CVC4::SygusGTerm& sgt, std::string& fun)
 
 /**
  * $ANTLR start metaInfoInternal
- * ../../../../../../src/parser/smt2/Smt2.g:1091:1: metaInfoInternal[CVC4::PtrCloser<CVC4::Command>* cmd] : KEYWORD symbolicExpr[sexpr] ;
+ * ../../../../src/parser/smt2/Smt2.g:1080:1: metaInfoInternal[CVC4::PtrCloser<CVC4::Command>* cmd] : KEYWORD symbolicExpr[sexpr] ;
  */
 static void
 metaInfoInternal(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
@@ -6120,8 +6320,8 @@ metaInfoInternal(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
     KEYWORD7       = NULL;
 
     {
-        // ../../../../../../src/parser/smt2/Smt2.g:1096:3: ( KEYWORD symbolicExpr[sexpr] )
-        // ../../../../../../src/parser/smt2/Smt2.g:1096:5: KEYWORD symbolicExpr[sexpr]
+        // ../../../../src/parser/smt2/Smt2.g:1085:3: ( KEYWORD symbolicExpr[sexpr] )
+        // ../../../../src/parser/smt2/Smt2.g:1085:5: KEYWORD symbolicExpr[sexpr]
         {
             KEYWORD7 = (pANTLR3_COMMON_TOKEN) MATCHT(KEYWORD, &FOLLOW_KEYWORD_in_metaInfoInternal1718);
             if  (HASEXCEPTION())
@@ -6154,6 +6354,10 @@ metaInfoInternal(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
                                     sexpr.getRationalValue() == Rational(5, 2)) ||
                                   sexpr.getValue() == "2.5" ) {
                           PARSER_STATE->setLanguage(language::input::LANG_SMTLIB_V2_5);
+                        } else if( (sexpr.isRational() &&
+                                    sexpr.getRationalValue() == Rational(13, 5)) ||
+                                  sexpr.getValue() == "2.6" ) {
+                          PARSER_STATE->setLanguage(language::input::LANG_SMTLIB_V2_6);
                         }
                       }
                       PARSER_STATE->setInfo(name.c_str() + 1, sexpr);
@@ -6182,7 +6386,7 @@ metaInfoInternal(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
 /**
  * $ANTLR start setOptionInternal
- * ../../../../../../src/parser/smt2/Smt2.g:1117:1: setOptionInternal[CVC4::PtrCloser<CVC4::Command>* cmd] : keyword[name] symbolicExpr[sexpr] ;
+ * ../../../../src/parser/smt2/Smt2.g:1110:1: setOptionInternal[CVC4::PtrCloser<CVC4::Command>* cmd] : keyword[name] symbolicExpr[sexpr] ;
  */
 static void
 setOptionInternal(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
@@ -6195,8 +6399,8 @@ setOptionInternal(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
       SExpr sexpr;
 
     {
-        // ../../../../../../src/parser/smt2/Smt2.g:1122:3: ( keyword[name] symbolicExpr[sexpr] )
-        // ../../../../../../src/parser/smt2/Smt2.g:1122:5: keyword[name] symbolicExpr[sexpr]
+        // ../../../../src/parser/smt2/Smt2.g:1115:3: ( keyword[name] symbolicExpr[sexpr] )
+        // ../../../../src/parser/smt2/Smt2.g:1115:5: keyword[name] symbolicExpr[sexpr]
         {
             FOLLOWPUSH(FOLLOW_keyword_in_setOptionInternal1746);
             keyword(ctx, name);
@@ -6251,7 +6455,7 @@ setOptionInternal(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
 /**
  * $ANTLR start smt25Command
- * ../../../../../../src/parser/smt2/Smt2.g:1134:1: smt25Command[CVC4::PtrCloser<CVC4::Command>* cmd] : ( META_INFO_TOK metaInfoInternal[cmd] | DECLARE_CONST_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | GET_MODEL_TOK | ECHO_TOK ( simpleSymbolicExpr[sexpr] |) | RESET_TOK | RESET_ASSERTIONS_TOK | DEFINE_FUN_REC_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] term[expr, expr2] | [...]
+ * ../../../../src/parser/smt2/Smt2.g:1127:1: smt25Command[CVC4::PtrCloser<CVC4::Command>* cmd] : ( META_INFO_TOK metaInfoInternal[cmd] | DECLARE_CONST_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | GET_MODEL_TOK | ECHO_TOK ( simpleSymbolicExpr[sexpr] |) | RESET_TOK | RESET_ASSERTIONS_TOK | DEFINE_FUN_REC_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] term[expr, expr2] | DEFIN [...]
  */
 static void
 smt25Command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
@@ -6276,7 +6480,7 @@ smt25Command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
     {
         {
-            //  ../../../../../../src/parser/smt2/Smt2.g:1151:3: ( META_INFO_TOK metaInfoInternal[cmd] | DECLARE_CONST_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | GET_MODEL_TOK | ECHO_TOK ( simpleSymbolicExpr[sexpr] |) | RESET_TOK | RESET_ASSERTIONS_TOK | DEFINE_FUN_REC_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] term[expr, expr2] | DEFINE_FUNS_REC_TOK LPAREN_TOK ( LPARE [...]
+            //  ../../../../src/parser/smt2/Smt2.g:1144:3: ( META_INFO_TOK metaInfoInternal[cmd] | DECLARE_CONST_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | GET_MODEL_TOK | ECHO_TOK ( simpleSymbolicExpr[sexpr] |) | RESET_TOK | RESET_ASSERTIONS_TOK | DEFINE_FUN_REC_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] term[expr, expr2] | DEFINE_FUNS_REC_TOK LPAREN_TOK ( LPAREN_TOK  [...]
 
             ANTLR3_UINT32 alt24;
 
@@ -6340,7 +6544,7 @@ smt25Command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
             switch (alt24)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1151:5: META_INFO_TOK metaInfoInternal[cmd]
+        	    // ../../../../src/parser/smt2/Smt2.g:1144:5: META_INFO_TOK metaInfoInternal[cmd]
         	    {
         	         MATCHT(META_INFO_TOK, &FOLLOW_META_INFO_TOK_in_smt25Command1781);
         	        if  (HASEXCEPTION())
@@ -6362,7 +6566,7 @@ smt25Command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1154:5: DECLARE_CONST_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED]
+        	    // ../../../../src/parser/smt2/Smt2.g:1147:5: DECLARE_CONST_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED]
         	    {
         	         MATCHT(DECLARE_CONST_TOK, &FOLLOW_DECLARE_CONST_TOK_in_smt25Command1797);
         	        if  (HASEXCEPTION())
@@ -6410,7 +6614,7 @@ smt25Command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1162:5: GET_MODEL_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:1155:5: GET_MODEL_TOK
         	    {
         	         MATCHT(GET_MODEL_TOK, &FOLLOW_GET_MODEL_TOK_in_smt25Command1838);
         	        if  (HASEXCEPTION())
@@ -6432,7 +6636,7 @@ smt25Command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1166:5: ECHO_TOK ( simpleSymbolicExpr[sexpr] |)
+        	    // ../../../../src/parser/smt2/Smt2.g:1159:5: ECHO_TOK ( simpleSymbolicExpr[sexpr] |)
         	    {
         	         MATCHT(ECHO_TOK, &FOLLOW_ECHO_TOK_in_smt25Command1859);
         	        if  (HASEXCEPTION())
@@ -6441,7 +6645,7 @@ smt25Command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:1167:5: ( simpleSymbolicExpr[sexpr] |)
+        	        // ../../../../src/parser/smt2/Smt2.g:1160:5: ( simpleSymbolicExpr[sexpr] |)
         	        {
         	            int alt21=2;
         	            switch ( LA(1) )
@@ -6515,7 +6719,7 @@ smt25Command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            case SYNTH_INV_TOK:
         	            case UNTERMINATED_QUOTED_SYMBOL:
         	            case XOR_TOK:
-        	            case 147:
+        	            case 154:
         	            	{
         	            		alt21=1;
         	            	}
@@ -6541,7 +6745,7 @@ smt25Command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt21)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1167:7: simpleSymbolicExpr[sexpr]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:1160:7: simpleSymbolicExpr[sexpr]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_simpleSymbolicExpr_in_smt25Command1867);
         	        	        simpleSymbolicExpr(ctx, sexpr);
@@ -6561,7 +6765,7 @@ smt25Command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1169:7: 
+        	        	    // ../../../../src/parser/smt2/Smt2.g:1162:7: 
         	        	    {
         	        	        {
         	        	             cmd->reset(new EchoCommand()); 
@@ -6577,7 +6781,7 @@ smt25Command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1174:5: RESET_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:1167:5: RESET_TOK
         	    {
         	         MATCHT(RESET_TOK, &FOLLOW_RESET_TOK_in_smt25Command1903);
         	        if  (HASEXCEPTION())
@@ -6596,7 +6800,7 @@ smt25Command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1180:5: RESET_ASSERTIONS_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:1173:5: RESET_ASSERTIONS_TOK
         	    {
         	         MATCHT(RESET_ASSERTIONS_TOK, &FOLLOW_RESET_ASSERTIONS_TOK_in_smt25Command1921);
         	        if  (HASEXCEPTION())
@@ -6615,7 +6819,7 @@ smt25Command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 7:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1184:5: DEFINE_FUN_REC_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] term[expr, expr2]
+        	    // ../../../../src/parser/smt2/Smt2.g:1177:5: DEFINE_FUN_REC_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] term[expr, expr2]
         	    {
         	         MATCHT(DEFINE_FUN_REC_TOK, &FOLLOW_DEFINE_FUN_REC_TOK_in_smt25Command1933);
         	        if  (HASEXCEPTION())
@@ -6744,7 +6948,7 @@ smt25Command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 8:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1236:5: DEFINE_FUNS_REC_TOK LPAREN_TOK ( LPAREN_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )+ RPAREN_TOK LPAREN_TOK ( term[expr,expr2] )+ RPAREN_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:1229:5: DEFINE_FUNS_REC_TOK LPAREN_TOK ( LPAREN_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )+ RPAREN_TOK LPAREN_TOK ( term[expr,expr2] )+ RPAREN_TOK
         	    {
         	         MATCHT(DEFINE_FUNS_REC_TOK, &FOLLOW_DEFINE_FUNS_REC_TOK_in_smt25Command1995);
         	        if  (HASEXCEPTION())
@@ -6767,7 +6971,7 @@ smt25Command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:1241:5: ( LPAREN_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )+
+        	        // ../../../../src/parser/smt2/Smt2.g:1234:5: ( LPAREN_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )+
         	        {
         	            int cnt22=0;
 
@@ -6787,7 +6991,7 @@ smt25Command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	switch (alt22)
         	        	{
         	        	    case 1:
-        	        	        // ../../../../../../src/parser/smt2/Smt2.g:1241:7: LPAREN_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] RPAREN_TOK
+        	        	        // ../../../../src/parser/smt2/Smt2.g:1234:7: LPAREN_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] RPAREN_TOK
         	        	        {
         	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_smt25Command2015);
         	        	            if  (HASEXCEPTION())
@@ -6937,7 +7141,7 @@ smt25Command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:1290:5: ( term[expr,expr2] )+
+        	        // ../../../../src/parser/smt2/Smt2.g:1283:5: ( term[expr,expr2] )+
         	        {
         	            int cnt23=0;
 
@@ -6979,7 +7183,7 @@ smt25Command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	case SYNTH_INV_TOK:
         	        	case UNIVSET_TOK:
         	        	case UNTERMINATED_QUOTED_SYMBOL:
-        	        	case 147:
+        	        	case 154:
         	        		{
         	        			alt23=1;
         	        		}
@@ -6990,7 +7194,7 @@ smt25Command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	switch (alt23)
         	        	{
         	        	    case 1:
-        	        	        // ../../../../../../src/parser/smt2/Smt2.g:1291:5: term[expr,expr2]
+        	        	        // ../../../../src/parser/smt2/Smt2.g:1284:5: term[expr,expr2]
         	        	        {
         	        	            FOLLOWPUSH(FOLLOW_term_in_smt25Command2107);
         	        	            term(ctx, expr, expr2);
@@ -7107,7 +7311,7 @@ smt25Command(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
 /**
  * $ANTLR start extendedCommand
- * ../../../../../../src/parser/smt2/Smt2.g:1342:1: extendedCommand[CVC4::PtrCloser<CVC4::Command>* cmd] : ( DECLARE_DATATYPES_TOK datatypesDefCommand[false, cmd] | DECLARE_CODATATYPES_TOK datatypesDefCommand[true, cmd] | rewriterulesCommand[cmd] | DECLARE_SORTS_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )+ RPAREN_TOK | DECLARE_FUNS_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] nonemptySortList[sorts] RPAREN_TOK )+ RPAREN_TOK | DECLARE_PREDS_TOK LPAR [...]
+ * ../../../../src/parser/smt2/Smt2.g:1335:1: extendedCommand[CVC4::PtrCloser<CVC4::Command>* cmd] : ( DECLARE_DATATYPES_2_5_TOK datatypes_2_5_DefCommand[false, cmd] | DECLARE_CODATATYPES_2_5_TOK datatypes_2_5_DefCommand[true, cmd] | DECLARE_DATATYPE_TOK datatypeDefCommand[false, cmd] | DECLARE_CODATATYPE_TOK datatypeDefCommand[true, cmd] | DECLARE_DATATYPES_TOK datatypesDefCommand[false, cmd] | DECLARE_CODATATYPES_TOK datatypesDefCommand[true, cmd] | rewriterulesCommand[cmd] | DECLARE_S [...]
  */
 static void
 extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
@@ -7128,69 +7332,89 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
     {
         {
-            //  ../../../../../../src/parser/smt2/Smt2.g:1356:3: ( DECLARE_DATATYPES_TOK datatypesDefCommand[false, cmd] | DECLARE_CODATATYPES_TOK datatypesDefCommand[true, cmd] | rewriterulesCommand[cmd] | DECLARE_SORTS_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )+ RPAREN_TOK | DECLARE_FUNS_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] nonemptySortList[sorts] RPAREN_TOK )+ RPAREN_TOK | DECLARE_PREDS_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDE [...]
+            //  ../../../../src/parser/smt2/Smt2.g:1349:3: ( DECLARE_DATATYPES_2_5_TOK datatypes_2_5_DefCommand[false, cmd] | DECLARE_CODATATYPES_2_5_TOK datatypes_2_5_DefCommand[true, cmd] | DECLARE_DATATYPE_TOK datatypeDefCommand[false, cmd] | DECLARE_CODATATYPE_TOK datatypeDefCommand[true, cmd] | DECLARE_DATATYPES_TOK datatypesDefCommand[false, cmd] | DECLARE_CODATATYPES_TOK datatypesDefCommand[true, cmd] | rewriterulesCommand[cmd] | DECLARE_SORTS_TOK LPAREN_TOK ( symbol[name,CHECK_UN [...]
 
             ANTLR3_UINT32 alt29;
 
-            alt29=11;
+            alt29=15;
 
             switch ( LA(1) )
             {
-            case DECLARE_DATATYPES_TOK:
+            case DECLARE_DATATYPES_2_5_TOK:
             	{
             		alt29=1;
             	}
                 break;
-            case DECLARE_CODATATYPES_TOK:
+            case DECLARE_CODATATYPES_2_5_TOK:
             	{
             		alt29=2;
             	}
                 break;
+            case DECLARE_DATATYPE_TOK:
+            	{
+            		alt29=3;
+            	}
+                break;
+            case DECLARE_CODATATYPE_TOK:
+            	{
+            		alt29=4;
+            	}
+                break;
+            case DECLARE_DATATYPES_TOK:
+            	{
+            		alt29=5;
+            	}
+                break;
+            case DECLARE_CODATATYPES_TOK:
+            	{
+            		alt29=6;
+            	}
+                break;
             case PROPAGATION_RULE_TOK:
             case REDUCTION_RULE_TOK:
             case REWRITE_RULE_TOK:
             	{
-            		alt29=3;
+            		alt29=7;
             	}
                 break;
             case DECLARE_SORTS_TOK:
             	{
-            		alt29=4;
+            		alt29=8;
             	}
                 break;
             case DECLARE_FUNS_TOK:
             	{
-            		alt29=5;
+            		alt29=9;
             	}
                 break;
             case DECLARE_PREDS_TOK:
             	{
-            		alt29=6;
+            		alt29=10;
             	}
                 break;
             case DEFINE_TOK:
             	{
-            		alt29=7;
+            		alt29=11;
             	}
                 break;
             case DEFINE_CONST_TOK:
             	{
-            		alt29=8;
+            		alt29=12;
             	}
                 break;
             case SIMPLIFY_TOK:
             	{
-            		alt29=9;
+            		alt29=13;
             	}
                 break;
             case GET_QE_TOK:
             	{
-            		alt29=10;
+            		alt29=14;
             	}
                 break;
             case GET_QE_DISJUNCT_TOK:
             	{
-            		alt29=11;
+            		alt29=15;
             	}
                 break;
 
@@ -7209,17 +7433,17 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
             switch (alt29)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1356:5: DECLARE_DATATYPES_TOK datatypesDefCommand[false, cmd]
+        	    // ../../../../src/parser/smt2/Smt2.g:1349:5: DECLARE_DATATYPES_2_5_TOK datatypes_2_5_DefCommand[false, cmd]
         	    {
-        	         MATCHT(DECLARE_DATATYPES_TOK, &FOLLOW_DECLARE_DATATYPES_TOK_in_extendedCommand2164);
+        	         MATCHT(DECLARE_DATATYPES_2_5_TOK, &FOLLOW_DECLARE_DATATYPES_2_5_TOK_in_extendedCommand2164);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleextendedCommandEx;
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_datatypesDefCommand_in_extendedCommand2166);
-        	        datatypesDefCommand(ctx, false, cmd);
+        	        FOLLOWPUSH(FOLLOW_datatypes_2_5_DefCommand_in_extendedCommand2166);
+        	        datatypes_2_5_DefCommand(ctx, false, cmd);
 
         	        FOLLOWPOP();
         	        if  (HASEXCEPTION())
@@ -7231,17 +7455,17 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1357:5: DECLARE_CODATATYPES_TOK datatypesDefCommand[true, cmd]
+        	    // ../../../../src/parser/smt2/Smt2.g:1350:5: DECLARE_CODATATYPES_2_5_TOK datatypes_2_5_DefCommand[true, cmd]
         	    {
-        	         MATCHT(DECLARE_CODATATYPES_TOK, &FOLLOW_DECLARE_CODATATYPES_TOK_in_extendedCommand2173);
+        	         MATCHT(DECLARE_CODATATYPES_2_5_TOK, &FOLLOW_DECLARE_CODATATYPES_2_5_TOK_in_extendedCommand2173);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleextendedCommandEx;
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_datatypesDefCommand_in_extendedCommand2175);
-        	        datatypesDefCommand(ctx, true, cmd);
+        	        FOLLOWPUSH(FOLLOW_datatypes_2_5_DefCommand_in_extendedCommand2175);
+        	        datatypes_2_5_DefCommand(ctx, true, cmd);
 
         	        FOLLOWPOP();
         	        if  (HASEXCEPTION())
@@ -7253,10 +7477,17 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1358:5: rewriterulesCommand[cmd]
+        	    // ../../../../src/parser/smt2/Smt2.g:1351:5: DECLARE_DATATYPE_TOK datatypeDefCommand[false, cmd]
         	    {
-        	        FOLLOWPUSH(FOLLOW_rewriterulesCommand_in_extendedCommand2182);
-        	        rewriterulesCommand(ctx, cmd);
+        	         MATCHT(DECLARE_DATATYPE_TOK, &FOLLOW_DECLARE_DATATYPE_TOK_in_extendedCommand2182);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_datatypeDefCommand_in_extendedCommand2184);
+        	        datatypeDefCommand(ctx, false, cmd);
 
         	        FOLLOWPOP();
         	        if  (HASEXCEPTION())
@@ -7268,9 +7499,90 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1362:5: DECLARE_SORTS_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )+ RPAREN_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:1352:5: DECLARE_CODATATYPE_TOK datatypeDefCommand[true, cmd]
+        	    {
+        	         MATCHT(DECLARE_CODATATYPE_TOK, &FOLLOW_DECLARE_CODATATYPE_TOK_in_extendedCommand2191);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_datatypeDefCommand_in_extendedCommand2193);
+        	        datatypeDefCommand(ctx, true, cmd);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 5:
+        	    // ../../../../src/parser/smt2/Smt2.g:1353:5: DECLARE_DATATYPES_TOK datatypesDefCommand[false, cmd]
+        	    {
+        	         MATCHT(DECLARE_DATATYPES_TOK, &FOLLOW_DECLARE_DATATYPES_TOK_in_extendedCommand2200);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_datatypesDefCommand_in_extendedCommand2202);
+        	        datatypesDefCommand(ctx, false, cmd);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 6:
+        	    // ../../../../src/parser/smt2/Smt2.g:1354:5: DECLARE_CODATATYPES_TOK datatypesDefCommand[true, cmd]
+        	    {
+        	         MATCHT(DECLARE_CODATATYPES_TOK, &FOLLOW_DECLARE_CODATATYPES_TOK_in_extendedCommand2209);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_datatypesDefCommand_in_extendedCommand2211);
+        	        datatypesDefCommand(ctx, true, cmd);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../src/parser/smt2/Smt2.g:1355:5: rewriterulesCommand[cmd]
+        	    {
+        	        FOLLOWPUSH(FOLLOW_rewriterulesCommand_in_extendedCommand2218);
+        	        rewriterulesCommand(ctx, cmd);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruleextendedCommandEx;
+        	        }
+
+
+        	    }
+        	    break;
+        	case 8:
+        	    // ../../../../src/parser/smt2/Smt2.g:1359:5: DECLARE_SORTS_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )+ RPAREN_TOK
         	    {
-        	         MATCHT(DECLARE_SORTS_TOK, &FOLLOW_DECLARE_SORTS_TOK_in_extendedCommand2197);
+        	         MATCHT(DECLARE_SORTS_TOK, &FOLLOW_DECLARE_SORTS_TOK_in_extendedCommand2233);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleextendedCommandEx;
@@ -7298,14 +7610,14 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2217);
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2253);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleextendedCommandEx;
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:1372:5: ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )+
+        	        // ../../../../src/parser/smt2/Smt2.g:1369:5: ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )+
         	        {
         	            int cnt25=0;
 
@@ -7325,7 +7637,7 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	case SYNTH_FUN_TOK:
         	        	case SYNTH_INV_TOK:
         	        	case UNTERMINATED_QUOTED_SYMBOL:
-        	        	case 147:
+        	        	case 154:
         	        		{
         	        			alt25=1;
         	        		}
@@ -7336,9 +7648,9 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	switch (alt25)
         	        	{
         	        	    case 1:
-        	        	        // ../../../../../../src/parser/smt2/Smt2.g:1372:7: symbol[name,CHECK_UNDECLARED,SYM_SORT]
+        	        	        // ../../../../src/parser/smt2/Smt2.g:1369:7: symbol[name,CHECK_UNDECLARED,SYM_SORT]
         	        	        {
-        	        	            FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2225);
+        	        	            FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2261);
         	        	            symbol(ctx, name, CHECK_UNDECLARED, SYM_SORT);
 
         	        	            FOLLOWPOP();
@@ -7379,7 +7691,7 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            loop25: ;	/* Jump to here if this rule does not match */
         	        }
 
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2247);
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2283);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleextendedCommandEx;
@@ -7393,10 +7705,10 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
         	    }
         	    break;
-        	case 5:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1381:5: DECLARE_FUNS_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] nonemptySortList[sorts] RPAREN_TOK )+ RPAREN_TOK
+        	case 9:
+        	    // ../../../../src/parser/smt2/Smt2.g:1378:5: DECLARE_FUNS_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] nonemptySortList[sorts] RPAREN_TOK )+ RPAREN_TOK
         	    {
-        	         MATCHT(DECLARE_FUNS_TOK, &FOLLOW_DECLARE_FUNS_TOK_in_extendedCommand2260);
+        	         MATCHT(DECLARE_FUNS_TOK, &FOLLOW_DECLARE_FUNS_TOK_in_extendedCommand2296);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleextendedCommandEx;
@@ -7413,14 +7725,14 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2274);
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2310);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleextendedCommandEx;
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:1384:5: ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] nonemptySortList[sorts] RPAREN_TOK )+
+        	        // ../../../../src/parser/smt2/Smt2.g:1381:5: ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] nonemptySortList[sorts] RPAREN_TOK )+
         	        {
         	            int cnt26=0;
 
@@ -7440,16 +7752,16 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	switch (alt26)
         	        	{
         	        	    case 1:
-        	        	        // ../../../../../../src/parser/smt2/Smt2.g:1384:7: LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] nonemptySortList[sorts] RPAREN_TOK
+        	        	        // ../../../../src/parser/smt2/Smt2.g:1381:7: LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] nonemptySortList[sorts] RPAREN_TOK
         	        	        {
-        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2282);
+        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2318);
         	        	            if  (HASEXCEPTION())
         	        	            {
         	        	                goto ruleextendedCommandEx;
         	        	            }
 
 
-        	        	            FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2284);
+        	        	            FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2320);
         	        	            symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
 
         	        	            FOLLOWPOP();
@@ -7464,7 +7776,7 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	            }
 
 
-        	        	            FOLLOWPUSH(FOLLOW_nonemptySortList_in_extendedCommand2301);
+        	        	            FOLLOWPUSH(FOLLOW_nonemptySortList_in_extendedCommand2337);
         	        	            nonemptySortList(ctx, sorts);
 
         	        	            FOLLOWPOP();
@@ -7474,7 +7786,7 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	            }
 
 
-        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2304);
+        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2340);
         	        	            if  (HASEXCEPTION())
         	        	            {
         	        	                goto ruleextendedCommandEx;
@@ -7522,7 +7834,7 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            loop26: ;	/* Jump to here if this rule does not match */
         	        }
 
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2325);
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2361);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleextendedCommandEx;
@@ -7536,10 +7848,10 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
         	    }
         	    break;
-        	case 6:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1404:5: DECLARE_PREDS_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortList[sorts] RPAREN_TOK )+ RPAREN_TOK
+        	case 10:
+        	    // ../../../../src/parser/smt2/Smt2.g:1401:5: DECLARE_PREDS_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortList[sorts] RPAREN_TOK )+ RPAREN_TOK
         	    {
-        	         MATCHT(DECLARE_PREDS_TOK, &FOLLOW_DECLARE_PREDS_TOK_in_extendedCommand2338);
+        	         MATCHT(DECLARE_PREDS_TOK, &FOLLOW_DECLARE_PREDS_TOK_in_extendedCommand2374);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleextendedCommandEx;
@@ -7556,14 +7868,14 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2352);
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2388);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleextendedCommandEx;
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:1407:5: ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortList[sorts] RPAREN_TOK )+
+        	        // ../../../../src/parser/smt2/Smt2.g:1404:5: ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortList[sorts] RPAREN_TOK )+
         	        {
         	            int cnt27=0;
 
@@ -7583,16 +7895,16 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	switch (alt27)
         	        	{
         	        	    case 1:
-        	        	        // ../../../../../../src/parser/smt2/Smt2.g:1407:7: LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortList[sorts] RPAREN_TOK
+        	        	        // ../../../../src/parser/smt2/Smt2.g:1404:7: LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortList[sorts] RPAREN_TOK
         	        	        {
-        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2360);
+        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2396);
         	        	            if  (HASEXCEPTION())
         	        	            {
         	        	                goto ruleextendedCommandEx;
         	        	            }
 
 
-        	        	            FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2362);
+        	        	            FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2398);
         	        	            symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
 
         	        	            FOLLOWPOP();
@@ -7607,7 +7919,7 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	            }
 
 
-        	        	            FOLLOWPUSH(FOLLOW_sortList_in_extendedCommand2379);
+        	        	            FOLLOWPUSH(FOLLOW_sortList_in_extendedCommand2415);
         	        	            sortList(ctx, sorts);
 
         	        	            FOLLOWPOP();
@@ -7617,7 +7929,7 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	            }
 
 
-        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2382);
+        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2418);
         	        	            if  (HASEXCEPTION())
         	        	            {
         	        	                goto ruleextendedCommandEx;
@@ -7663,7 +7975,7 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            loop27: ;	/* Jump to here if this rule does not match */
         	        }
 
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2403);
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2439);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleextendedCommandEx;
@@ -7677,10 +7989,10 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
         	    }
         	    break;
-        	case 7:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1426:5: DEFINE_TOK ( symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] term[e,e2] | LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortedVarList[sortedVarNames] RPAREN_TOK term[e,e2] )
+        	case 11:
+        	    // ../../../../src/parser/smt2/Smt2.g:1423:5: DEFINE_TOK ( symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] term[e,e2] | LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortedVarList[sortedVarNames] RPAREN_TOK term[e,e2] )
         	    {
-        	         MATCHT(DEFINE_TOK, &FOLLOW_DEFINE_TOK_in_extendedCommand2416);
+        	         MATCHT(DEFINE_TOK, &FOLLOW_DEFINE_TOK_in_extendedCommand2452);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleextendedCommandEx;
@@ -7692,7 +8004,7 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:1427:5: ( symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] term[e,e2] | LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortedVarList[sortedVarNames] RPAREN_TOK term[e,e2] )
+        	        // ../../../../src/parser/smt2/Smt2.g:1424:5: ( symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] term[e,e2] | LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortedVarList[sortedVarNames] RPAREN_TOK term[e,e2] )
         	        {
         	            int alt28=2;
         	            switch ( LA(1) )
@@ -7708,7 +8020,7 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            case SYNTH_FUN_TOK:
         	            case SYNTH_INV_TOK:
         	            case UNTERMINATED_QUOTED_SYMBOL:
-        	            case 147:
+        	            case 154:
         	            	{
         	            		alt28=1;
         	            	}
@@ -7734,9 +8046,9 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            switch (alt28)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1427:7: symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] term[e,e2]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:1424:7: symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] term[e,e2]
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2426);
+        	        	        FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2462);
         	        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
 
         	        	        FOLLOWPOP();
@@ -7751,7 +8063,7 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        }
 
 
-        	        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2443);
+        	        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2479);
         	        	        term(ctx, e, e2);
 
         	        	        FOLLOWPOP();
@@ -7772,16 +8084,16 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1434:7: LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortedVarList[sortedVarNames] RPAREN_TOK term[e,e2]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:1431:7: LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortedVarList[sortedVarNames] RPAREN_TOK term[e,e2]
         	        	    {
-        	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2460);
+        	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2496);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruleextendedCommandEx;
         	        	        }
 
 
-        	        	        FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2468);
+        	        	        FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2504);
         	        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
 
         	        	        FOLLOWPOP();
@@ -7796,7 +8108,7 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        }
 
 
-        	        	        FOLLOWPUSH(FOLLOW_sortedVarList_in_extendedCommand2485);
+        	        	        FOLLOWPUSH(FOLLOW_sortedVarList_in_extendedCommand2521);
         	        	        sortedVarList(ctx, sortedVarNames);
 
         	        	        FOLLOWPOP();
@@ -7806,7 +8118,7 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        }
 
 
-        	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2488);
+        	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2524);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruleextendedCommandEx;
@@ -7826,7 +8138,7 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	        }
 
 
-        	        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2504);
+        	        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2540);
         	        	        term(ctx, e, e2);
 
         	        	        FOLLOWPOP();
@@ -7867,10 +8179,10 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
         	    }
         	    break;
-        	case 8:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1468:5: DEFINE_CONST_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] term[e, e2]
+        	case 12:
+        	    // ../../../../src/parser/smt2/Smt2.g:1465:5: DEFINE_CONST_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] term[e, e2]
         	    {
-        	         MATCHT(DEFINE_CONST_TOK, &FOLLOW_DEFINE_CONST_TOK_in_extendedCommand2525);
+        	         MATCHT(DEFINE_CONST_TOK, &FOLLOW_DEFINE_CONST_TOK_in_extendedCommand2561);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleextendedCommandEx;
@@ -7882,7 +8194,7 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2533);
+        	        FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2569);
         	        symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
 
         	        FOLLOWPOP();
@@ -7897,7 +8209,7 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_extendedCommand2546);
+        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_extendedCommand2582);
         	        sortSymbol(ctx, t, CHECK_DECLARED);
 
         	        FOLLOWPOP();
@@ -7920,7 +8232,7 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2559);
+        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2595);
         	        term(ctx, e, e2);
 
         	        FOLLOWPOP();
@@ -7944,10 +8256,10 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
         	    }
         	    break;
-        	case 9:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1491:5: SIMPLIFY_TOK term[e,e2]
+        	case 13:
+        	    // ../../../../src/parser/smt2/Smt2.g:1488:5: SIMPLIFY_TOK term[e,e2]
         	    {
-        	         MATCHT(SIMPLIFY_TOK, &FOLLOW_SIMPLIFY_TOK_in_extendedCommand2573);
+        	         MATCHT(SIMPLIFY_TOK, &FOLLOW_SIMPLIFY_TOK_in_extendedCommand2609);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleextendedCommandEx;
@@ -7959,7 +8271,7 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2581);
+        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2617);
         	        term(ctx, e, e2);
 
         	        FOLLOWPOP();
@@ -7976,10 +8288,10 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
         	    }
         	    break;
-        	case 10:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1494:5: GET_QE_TOK term[e,e2]
+        	case 14:
+        	    // ../../../../src/parser/smt2/Smt2.g:1491:5: GET_QE_TOK term[e,e2]
         	    {
-        	         MATCHT(GET_QE_TOK, &FOLLOW_GET_QE_TOK_in_extendedCommand2594);
+        	         MATCHT(GET_QE_TOK, &FOLLOW_GET_QE_TOK_in_extendedCommand2630);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleextendedCommandEx;
@@ -7991,7 +8303,7 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2602);
+        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2638);
         	        term(ctx, e, e2);
 
         	        FOLLOWPOP();
@@ -8008,10 +8320,10 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
         	    }
         	    break;
-        	case 11:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1497:5: GET_QE_DISJUNCT_TOK term[e,e2]
+        	case 15:
+        	    // ../../../../src/parser/smt2/Smt2.g:1494:5: GET_QE_DISJUNCT_TOK term[e,e2]
         	    {
-        	         MATCHT(GET_QE_DISJUNCT_TOK, &FOLLOW_GET_QE_DISJUNCT_TOK_in_extendedCommand2615);
+        	         MATCHT(GET_QE_DISJUNCT_TOK, &FOLLOW_GET_QE_DISJUNCT_TOK_in_extendedCommand2651);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleextendedCommandEx;
@@ -8023,7 +8335,7 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2623);
+        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2659);
         	        term(ctx, e, e2);
 
         	        FOLLOWPOP();
@@ -8060,11 +8372,11 @@ extendedCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 /* $ANTLR end extendedCommand */
 
 /**
- * $ANTLR start datatypesDefCommand
- * ../../../../../../src/parser/smt2/Smt2.g:1503:1: datatypesDefCommand[bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd] : LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK datatypeDef[isCo, dts, sorts] RPAREN_TOK )+ RPAREN_TOK ;
+ * $ANTLR start datatypes_2_5_DefCommand
+ * ../../../../src/parser/smt2/Smt2.g:1500:1: datatypes_2_5_DefCommand[bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd] : LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK datatypeDef[isCo, dts, sorts] RPAREN_TOK )+ RPAREN_TOK ;
  */
 static void
-datatypesDefCommand(pSmt2Parser ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd)
+datatypes_2_5_DefCommand(pSmt2Parser ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd)
 {
 
       std::vector<CVC4::Datatype> dts;
@@ -8075,8 +8387,8 @@ datatypesDefCommand(pSmt2Parser ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>*
      */
 
     {
-        // ../../../../../../src/parser/smt2/Smt2.g:1509:3: ( LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK datatypeDef[isCo, dts, sorts] RPAREN_TOK )+ RPAREN_TOK )
-        // ../../../../../../src/parser/smt2/Smt2.g:1509:5: LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK datatypeDef[isCo, dts, sorts] RPAREN_TOK )+ RPAREN_TOK
+        // ../../../../src/parser/smt2/Smt2.g:1506:3: ( LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK datatypeDef[isCo, dts, sorts] RPAREN_TOK )+ RPAREN_TOK )
+        // ../../../../src/parser/smt2/Smt2.g:1506:5: LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK datatypeDef[isCo, dts, sorts] RPAREN_TOK )+ RPAREN_TOK
         {
             {
                  PARSER_STATE->checkThatLogicIsSet();
@@ -8085,14 +8397,14 @@ datatypesDefCommand(pSmt2Parser ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>*
             }
 
 
-             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDefCommand2654);
+             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypes_2_5_DefCommand2690);
             if  (HASEXCEPTION())
             {
-                goto ruledatatypesDefCommandEx;
+                goto ruledatatypes_2_5_DefCommandEx;
             }
 
 
-            // ../../../../../../src/parser/smt2/Smt2.g:1513:3: ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )*
+            // ../../../../src/parser/smt2/Smt2.g:1510:3: ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )*
 
             for (;;)
             {
@@ -8110,7 +8422,7 @@ datatypesDefCommand(pSmt2Parser ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>*
                 case SYNTH_FUN_TOK:
                 case SYNTH_INV_TOK:
                 case UNTERMINATED_QUOTED_SYMBOL:
-                case 147:
+                case 154:
                 	{
                 		alt30=1;
                 	}
@@ -8121,15 +8433,15 @@ datatypesDefCommand(pSmt2Parser ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>*
                 switch (alt30)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:1513:5: symbol[name,CHECK_UNDECLARED,SYM_SORT]
+            	    // ../../../../src/parser/smt2/Smt2.g:1510:5: symbol[name,CHECK_UNDECLARED,SYM_SORT]
             	    {
-            	        FOLLOWPUSH(FOLLOW_symbol_in_datatypesDefCommand2662);
+            	        FOLLOWPUSH(FOLLOW_symbol_in_datatypes_2_5_DefCommand2698);
             	        symbol(ctx, name, CHECK_UNDECLARED, SYM_SORT);
 
             	        FOLLOWPOP();
             	        if  (HASEXCEPTION())
             	        {
-            	            goto ruledatatypesDefCommandEx;
+            	            goto ruledatatypes_2_5_DefCommandEx;
             	        }
 
 
@@ -8149,21 +8461,21 @@ datatypesDefCommand(pSmt2Parser ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>*
             loop30: ; /* Jump out to here if this rule does not match */
 
 
-             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDefCommand2678);
+             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypes_2_5_DefCommand2714);
             if  (HASEXCEPTION())
             {
-                goto ruledatatypesDefCommandEx;
+                goto ruledatatypes_2_5_DefCommandEx;
             }
 
 
-             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDefCommand2682);
+             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypes_2_5_DefCommand2718);
             if  (HASEXCEPTION())
             {
-                goto ruledatatypesDefCommandEx;
+                goto ruledatatypes_2_5_DefCommandEx;
             }
 
 
-            // ../../../../../../src/parser/smt2/Smt2.g:1517:14: ( LPAREN_TOK datatypeDef[isCo, dts, sorts] RPAREN_TOK )+
+            // ../../../../src/parser/smt2/Smt2.g:1514:14: ( LPAREN_TOK datatypeDef[isCo, dts, sorts] RPAREN_TOK )+
             {
                 int cnt31=0;
 
@@ -8183,29 +8495,29 @@ datatypesDefCommand(pSmt2Parser ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>*
             	switch (alt31)
             	{
             	    case 1:
-            	        // ../../../../../../src/parser/smt2/Smt2.g:1517:16: LPAREN_TOK datatypeDef[isCo, dts, sorts] RPAREN_TOK
+            	        // ../../../../src/parser/smt2/Smt2.g:1514:16: LPAREN_TOK datatypeDef[isCo, dts, sorts] RPAREN_TOK
             	        {
-            	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDefCommand2686);
+            	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypes_2_5_DefCommand2722);
             	            if  (HASEXCEPTION())
             	            {
-            	                goto ruledatatypesDefCommandEx;
+            	                goto ruledatatypes_2_5_DefCommandEx;
             	            }
 
 
-            	            FOLLOWPUSH(FOLLOW_datatypeDef_in_datatypesDefCommand2688);
+            	            FOLLOWPUSH(FOLLOW_datatypeDef_in_datatypes_2_5_DefCommand2724);
             	            datatypeDef(ctx, isCo, dts, sorts);
 
             	            FOLLOWPOP();
             	            if  (HASEXCEPTION())
             	            {
-            	                goto ruledatatypesDefCommandEx;
+            	                goto ruledatatypes_2_5_DefCommandEx;
             	            }
 
 
-            	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDefCommand2691);
+            	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypes_2_5_DefCommand2727);
             	            if  (HASEXCEPTION())
             	            {
-            	                goto ruledatatypesDefCommandEx;
+            	                goto ruledatatypes_2_5_DefCommandEx;
             	            }
 
 
@@ -8225,24 +8537,23 @@ datatypesDefCommand(pSmt2Parser ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>*
             		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
 
 
-            		goto ruledatatypesDefCommandEx;
+            		goto ruledatatypes_2_5_DefCommandEx;
             	}
             	cnt31++;
                 }
                 loop31: ;	/* Jump to here if this rule does not match */
             }
 
-             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDefCommand2696);
+             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypes_2_5_DefCommand2732);
             if  (HASEXCEPTION())
             {
-                goto ruledatatypesDefCommandEx;
+                goto ruledatatypes_2_5_DefCommandEx;
             }
 
 
             {
                  PARSER_STATE->popScope();
-                    cmd->reset(new DatatypeDeclarationCommand(
-                        PARSER_STATE->mkMutualDatatypeTypes(dts)));
+                    cmd->reset(new DatatypeDeclarationCommand(PARSER_STATE->mkMutualDatatypeTypes(dts)));
                   
             }
 
@@ -8253,8 +8564,8 @@ datatypesDefCommand(pSmt2Parser ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>*
 
     // This is where rules clean up and exit
     //
-    goto ruledatatypesDefCommandEx; /* Prevent compiler warnings */
-    ruledatatypesDefCommandEx: ;
+    goto ruledatatypes_2_5_DefCommandEx; /* Prevent compiler warnings */
+    ruledatatypes_2_5_DefCommandEx: ;
 
             if (HASEXCEPTION())
             {
@@ -8263,137 +8574,819 @@ datatypesDefCommand(pSmt2Parser ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>*
             }
     return ;
 }
-/* $ANTLR end datatypesDefCommand */
+/* $ANTLR end datatypes_2_5_DefCommand */
 
 /**
- * $ANTLR start rewriterulesCommand
- * ../../../../../../src/parser/smt2/Smt2.g:1524:1: rewriterulesCommand[CVC4::PtrCloser<CVC4::Command>* cmd] : ( REWRITE_RULE_TOK LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK LPAREN_TOK ( pattern[expr] )* RPAREN_TOK LPAREN_TOK ( termList[guards,expr] )? RPAREN_TOK term[head, expr2] term[body, expr2] | rewritePropaKind[kind] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK LPAREN_TOK ( pattern[expr] )* RPAREN_TOK LPAREN_TOK ( termList[guards,expr] )? RPAREN_TOK LPAREN_TOK ( term [...]
+ * $ANTLR start datatypeDefCommand
+ * ../../../../src/parser/smt2/Smt2.g:1520:1: datatypeDefCommand[bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd] : symbol[name,CHECK_UNDECLARED,SYM_SORT] LPAREN_TOK ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ RPAREN_TOK ;
  */
 static void
-rewriterulesCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
+datatypeDefCommand(pSmt2Parser ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd)
 {
 
-      std::vector<std::pair<std::string, Type> > sortedVarNames;
-      std::vector<Expr> args, guards, heads, triggers;
-      Expr head, body, expr, expr2, bvl;
-      Kind kind;
+      std::vector<CVC4::Datatype> dts;
+      std::string name;
 
     /* Initialize rule variables
      */
 
     {
+        // ../../../../src/parser/smt2/Smt2.g:1525:2: ( symbol[name,CHECK_UNDECLARED,SYM_SORT] LPAREN_TOK ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ RPAREN_TOK )
+        // ../../../../src/parser/smt2/Smt2.g:1525:4: symbol[name,CHECK_UNDECLARED,SYM_SORT] LPAREN_TOK ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ RPAREN_TOK
         {
-            //  ../../../../../../src/parser/smt2/Smt2.g:1531:3: ( REWRITE_RULE_TOK LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK LPAREN_TOK ( pattern[expr] )* RPAREN_TOK LPAREN_TOK ( termList[guards,expr] )? RPAREN_TOK term[head, expr2] term[body, expr2] | rewritePropaKind[kind] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK LPAREN_TOK ( pattern[expr] )* RPAREN_TOK LPAREN_TOK ( termList[guards,expr] )? RPAREN_TOK LPAREN_TOK ( termList[heads,expr] )? RPAREN_TOK term[body, expr2] )
+            {
+                 PARSER_STATE->checkThatLogicIsSet(); 
+            }
 
-            ANTLR3_UINT32 alt37;
 
-            alt37=2;
+            FOLLOWPUSH(FOLLOW_symbol_in_datatypeDefCommand2761);
+            symbol(ctx, name, CHECK_UNDECLARED, SYM_SORT);
 
-            switch ( LA(1) )
+            FOLLOWPOP();
+            if  (HASEXCEPTION())
             {
-            case REWRITE_RULE_TOK:
-            	{
-            		alt37=1;
-            	}
-                break;
-            case PROPAGATION_RULE_TOK:
-            case REDUCTION_RULE_TOK:
-            	{
-            		alt37=2;
-            	}
-                break;
+                goto ruledatatypeDefCommandEx;
+            }
 
-            default:
-                CONSTRUCTEX();
-                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
-                EXCEPTION->message      = (void *)"";
-                EXCEPTION->decisionNum  = 37;
-                EXCEPTION->state        = 0;
 
+             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypeDefCommand2764);
+            if  (HASEXCEPTION())
+            {
+                goto ruledatatypeDefCommandEx;
+            }
 
-                goto rulerewriterulesCommandEx;
 
+            {
+                 std::vector<Type> params;
+                   dts.push_back(Datatype(name,params,isCo));
+                 
             }
 
-            switch (alt37)
+
+            // ../../../../src/parser/smt2/Smt2.g:1530:2: ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+
             {
-        	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1532:5: REWRITE_RULE_TOK LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK LPAREN_TOK ( pattern[expr] )* RPAREN_TOK LPAREN_TOK ( termList[guards,expr] )? RPAREN_TOK term[head, expr2] term[body, expr2]
-        	    {
-        	         MATCHT(REWRITE_RULE_TOK, &FOLLOW_REWRITE_RULE_TOK_in_rewriterulesCommand2725);
-        	        if  (HASEXCEPTION())
-        	        {
-        	            goto rulerewriterulesCommandEx;
-        	        }
+                int cnt32=0;
 
+                for (;;)
+                {
+                    int alt32=2;
+            	switch ( LA(1) )
+            	{
+            	case LPAREN_TOK:
+            		{
+            			alt32=1;
+            		}
+            	    break;
 
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_rewriterulesCommand2731);
-        	        if  (HASEXCEPTION())
-        	        {
-        	            goto rulerewriterulesCommandEx;
-        	        }
+            	}
 
+            	switch (alt32)
+            	{
+            	    case 1:
+            	        // ../../../../src/parser/smt2/Smt2.g:1530:4: LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK
+            	        {
+            	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypeDefCommand2772);
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto ruledatatypeDefCommandEx;
+            	            }
 
-        	        FOLLOWPUSH(FOLLOW_sortedVarList_in_rewriterulesCommand2733);
-        	        sortedVarList(ctx, sortedVarNames);
 
-        	        FOLLOWPOP();
-        	        if  (HASEXCEPTION())
-        	        {
-        	            goto rulerewriterulesCommandEx;
-        	        }
+            	            FOLLOWPUSH(FOLLOW_constructorDef_in_datatypeDefCommand2774);
+            	            constructorDef(ctx, dts.back());
 
+            	            FOLLOWPOP();
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto ruledatatypeDefCommandEx;
+            	            }
 
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_rewriterulesCommand2736);
-        	        if  (HASEXCEPTION())
-        	        {
-        	            goto rulerewriterulesCommandEx;
-        	        }
 
+            	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypeDefCommand2777);
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto ruledatatypeDefCommandEx;
+            	            }
 
-        	        {
 
-        	                  kind = CVC4::kind::RR_REWRITE;
-        	                  PARSER_STATE->pushScope(true);
-        	                  for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
-        	                        sortedVarNames.begin(), iend = sortedVarNames.end();
-        	                      i != iend;
-        	                      ++i) {
-        	                    args.push_back(PARSER_STATE->mkBoundVar((*i).first, (*i).second));
-        	                  }
-        	                  bvl = MK_EXPR(kind::BOUND_VAR_LIST, args);
-        	                
-        	        }
+            	        }
+            	        break;
 
+            	    default:
 
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_rewriterulesCommand2748);
-        	        if  (HASEXCEPTION())
-        	        {
-        	            goto rulerewriterulesCommandEx;
-        	        }
+            		if ( cnt32 >= 1 )
+            		{
+            		    goto loop32;
+            		}
+            		/* mismatchedSetEx()
+            		 */
+            		CONSTRUCTEX();
+            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:1545:16: ( pattern[expr] )*
+            		goto ruledatatypeDefCommandEx;
+            	}
+            	cnt32++;
+                }
+                loop32: ;	/* Jump to here if this rule does not match */
+            }
 
-        	        for (;;)
-        	        {
-        	            int alt32=2;
-        	            switch ( LA(1) )
-        	            {
+             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypeDefCommand2783);
+            if  (HASEXCEPTION())
+            {
+                goto ruledatatypeDefCommandEx;
+            }
+
+
+            {
+                 cmd->reset(new DatatypeDeclarationCommand(PARSER_STATE->mkMutualDatatypeTypes(dts))); 
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruledatatypeDefCommandEx; /* Prevent compiler warnings */
+    ruledatatypeDefCommandEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end datatypeDefCommand */
+
+/**
+ * $ANTLR start datatypesDefCommand
+ * ../../../../src/parser/smt2/Smt2.g:1535:1: datatypesDefCommand[bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd] : LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL RPAREN_TOK )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK ( PAR_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ RPAREN_TOK | ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ ) RPAREN_TOK )+ RPAREN_TOK ;
+ */
+static void
+datatypesDefCommand(pSmt2Parser ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd)
+{
+
+      std::vector<CVC4::Datatype> dts;
+      std::string name;
+      std::vector<std::string> dnames;
+      std::vector<unsigned> arities;
+      std::vector<Type> params;
+
+    pANTLR3_COMMON_TOKEN    n;
+
+    /* Initialize rule variables
+     */
+
+    n       = NULL;
+
+    {
+        // ../../../../src/parser/smt2/Smt2.g:1543:3: ( LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL RPAREN_TOK )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK ( PAR_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ RPAREN_TOK | ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ ) RPAREN_TOK )+ RPAREN_TOK )
+        // ../../../../src/parser/smt2/Smt2.g:1543:5: LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL RPAREN_TOK )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK ( PAR_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ RPAREN_TOK | ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ ) RPAREN_TOK )+ RPAREN_TOK
+        {
+            {
+                 PARSER_STATE->checkThatLogicIsSet(); PARSER_STATE->pushScope(true); 
+            }
+
+
+             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDefCommand2810);
+            if  (HASEXCEPTION())
+            {
+                goto ruledatatypesDefCommandEx;
+            }
+
+
+            // ../../../../src/parser/smt2/Smt2.g:1545:3: ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL RPAREN_TOK )*
+
+            for (;;)
+            {
+                int alt33=2;
+                switch ( LA(1) )
+                {
+                case LPAREN_TOK:
+                	{
+                		alt33=1;
+                	}
+                    break;
+
+                }
+
+                switch (alt33)
+                {
+            	case 1:
+            	    // ../../../../src/parser/smt2/Smt2.g:1545:5: LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL RPAREN_TOK
+            	    {
+            	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDefCommand2818);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruledatatypesDefCommandEx;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_symbol_in_datatypesDefCommand2820);
+            	        symbol(ctx, name, CHECK_UNDECLARED, SYM_SORT);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruledatatypesDefCommandEx;
+            	        }
+
+
+            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_datatypesDefCommand2825);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruledatatypesDefCommandEx;
+            	        }
+
+
+            	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDefCommand2827);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruledatatypesDefCommandEx;
+            	        }
+
+
+            	        {
+            	             unsigned arity = AntlrInput::tokenToUnsigned(n);
+            	                  //Type type;
+            	                  //if(arity == 0) {
+            	                  //  type = PARSER_STATE->mkSort(name);
+            	                  //} else {
+            	                  //  type = PARSER_STATE->mkSortConstructor(name, arity);
+            	                  //}
+            	                  //types.push_back(type);
+            	                  Debug("parser-dt") << "Datatype : " << name << ", arity = " << arity << std::endl;
+            	                  dnames.push_back(name);
+            	                  arities.push_back( arity );
+            	                
+            	        }
+
+
+            	    }
+            	    break;
+
+            	default:
+            	    goto loop33;	/* break out of the loop */
+            	    break;
+                }
+            }
+            loop33: ; /* Jump out to here if this rule does not match */
+
+
+             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDefCommand2842);
+            if  (HASEXCEPTION())
+            {
+                goto ruledatatypesDefCommandEx;
+            }
+
+
+             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDefCommand2847);
+            if  (HASEXCEPTION())
+            {
+                goto ruledatatypesDefCommandEx;
+            }
+
+
+            // ../../../../src/parser/smt2/Smt2.g:1561:3: ( LPAREN_TOK ( PAR_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ RPAREN_TOK | ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ ) RPAREN_TOK )+
+            {
+                int cnt38=0;
+
+                for (;;)
+                {
+                    int alt38=2;
+            	switch ( LA(1) )
+            	{
+            	case LPAREN_TOK:
+            		{
+            			alt38=1;
+            		}
+            	    break;
+
+            	}
+
+            	switch (alt38)
+            	{
+            	    case 1:
+            	        // ../../../../src/parser/smt2/Smt2.g:1561:5: LPAREN_TOK ( PAR_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ RPAREN_TOK | ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ ) RPAREN_TOK
+            	        {
+            	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDefCommand2854);
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto ruledatatypesDefCommandEx;
+            	            }
+
+
+            	            {
+            	                 
+            	                      params.clear(); 
+            	                      Debug("parser-dt") << "Processing datatype #" << dts.size() << std::endl;
+            	                      if( dts.size()>=dnames.size() ){
+            	                        PARSER_STATE->parseError("Too many datatypes defined in this block.");
+            	                      }
+            	                    
+            	            }
+
+
+            	            // ../../../../src/parser/smt2/Smt2.g:1568:5: ( PAR_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ RPAREN_TOK | ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ )
+            	            {
+            	                int alt37=2;
+            	                switch ( LA(1) )
+            	                {
+            	                case PAR_TOK:
+            	                	{
+            	                		alt37=1;
+            	                	}
+            	                    break;
+            	                case LPAREN_TOK:
+            	                	{
+            	                		alt37=2;
+            	                	}
+            	                    break;
+
+            	                default:
+            	                    CONSTRUCTEX();
+            	                    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+            	                    EXCEPTION->message      = (void *)"";
+            	                    EXCEPTION->decisionNum  = 37;
+            	                    EXCEPTION->state        = 0;
+
+
+            	                    goto ruledatatypesDefCommandEx;
+
+            	                }
+
+            	                switch (alt37)
+            	                {
+            	            	case 1:
+            	            	    // ../../../../src/parser/smt2/Smt2.g:1568:7: PAR_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ RPAREN_TOK
+            	            	    {
+            	            	         MATCHT(PAR_TOK, &FOLLOW_PAR_TOK_in_datatypesDefCommand2864);
+            	            	        if  (HASEXCEPTION())
+            	            	        {
+            	            	            goto ruledatatypesDefCommandEx;
+            	            	        }
+
+
+            	            	        {
+            	            	             PARSER_STATE->pushScope(true); 
+            	            	        }
+
+
+            	            	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDefCommand2868);
+            	            	        if  (HASEXCEPTION())
+            	            	        {
+            	            	            goto ruledatatypesDefCommandEx;
+            	            	        }
+
+
+            	            	        // ../../../../src/parser/smt2/Smt2.g:1569:7: ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )*
+
+            	            	        for (;;)
+            	            	        {
+            	            	            int alt34=2;
+            	            	            switch ( LA(1) )
+            	            	            {
+            	            	            case CHECK_SYNTH_TOK:
+            	            	            case CONSTRAINT_TOK:
+            	            	            case DECLARE_PRIMED_VAR_TOK:
+            	            	            case DECLARE_VAR_TOK:
+            	            	            case INV_CONSTRAINT_TOK:
+            	            	            case QUOTED_SYMBOL:
+            	            	            case SET_OPTIONS_TOK:
+            	            	            case SIMPLE_SYMBOL:
+            	            	            case SYNTH_FUN_TOK:
+            	            	            case SYNTH_INV_TOK:
+            	            	            case UNTERMINATED_QUOTED_SYMBOL:
+            	            	            case 154:
+            	            	            	{
+            	            	            		alt34=1;
+            	            	            	}
+            	            	                break;
+
+            	            	            }
+
+            	            	            switch (alt34)
+            	            	            {
+            	            	        	case 1:
+            	            	        	    // ../../../../src/parser/smt2/Smt2.g:1569:9: symbol[name,CHECK_UNDECLARED,SYM_SORT]
+            	            	        	    {
+            	            	        	        FOLLOWPUSH(FOLLOW_symbol_in_datatypesDefCommand2878);
+            	            	        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_SORT);
+
+            	            	        	        FOLLOWPOP();
+            	            	        	        if  (HASEXCEPTION())
+            	            	        	        {
+            	            	        	            goto ruledatatypesDefCommandEx;
+            	            	        	        }
+
+
+            	            	        	        {
+            	            	        	             params.push_back( PARSER_STATE->mkSort(name) ); 
+            	            	        	        }
+
+
+            	            	        	    }
+            	            	        	    break;
+
+            	            	        	default:
+            	            	        	    goto loop34;	/* break out of the loop */
+            	            	        	    break;
+            	            	            }
+            	            	        }
+            	            	        loop34: ; /* Jump out to here if this rule does not match */
+
+
+            	            	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDefCommand2906);
+            	            	        if  (HASEXCEPTION())
+            	            	        {
+            	            	            goto ruledatatypesDefCommandEx;
+            	            	        }
+
+
+            	            	        {
+
+            	            	                    if( params.size()!=arities[dts.size()] ){
+            	            	                      PARSER_STATE->parseError("Wrong number of parameters for datatype.");
+            	            	                    }
+            	            	                    Debug("parser-dt") << params.size() << " parameters for " << dnames[dts.size()] << std::endl;
+            	            	                    dts.push_back(Datatype(dnames[dts.size()],params,isCo));
+            	            	                  
+            	            	        }
+
+
+            	            	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDefCommand2916);
+            	            	        if  (HASEXCEPTION())
+            	            	        {
+            	            	            goto ruledatatypesDefCommandEx;
+            	            	        }
+
+
+            	            	        // ../../../../src/parser/smt2/Smt2.g:1580:7: ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+
+            	            	        {
+            	            	            int cnt35=0;
+
+            	            	            for (;;)
+            	            	            {
+            	            	                int alt35=2;
+            	            	        	switch ( LA(1) )
+            	            	        	{
+            	            	        	case LPAREN_TOK:
+            	            	        		{
+            	            	        			alt35=1;
+            	            	        		}
+            	            	        	    break;
+
+            	            	        	}
+
+            	            	        	switch (alt35)
+            	            	        	{
+            	            	        	    case 1:
+            	            	        	        // ../../../../src/parser/smt2/Smt2.g:1580:9: LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK
+            	            	        	        {
+            	            	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDefCommand2926);
+            	            	        	            if  (HASEXCEPTION())
+            	            	        	            {
+            	            	        	                goto ruledatatypesDefCommandEx;
+            	            	        	            }
+
+
+            	            	        	            FOLLOWPUSH(FOLLOW_constructorDef_in_datatypesDefCommand2928);
+            	            	        	            constructorDef(ctx, dts.back());
+
+            	            	        	            FOLLOWPOP();
+            	            	        	            if  (HASEXCEPTION())
+            	            	        	            {
+            	            	        	                goto ruledatatypesDefCommandEx;
+            	            	        	            }
+
+
+            	            	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDefCommand2931);
+            	            	        	            if  (HASEXCEPTION())
+            	            	        	            {
+            	            	        	                goto ruledatatypesDefCommandEx;
+            	            	        	            }
+
+
+            	            	        	        }
+            	            	        	        break;
+
+            	            	        	    default:
+
+            	            	        		if ( cnt35 >= 1 )
+            	            	        		{
+            	            	        		    goto loop35;
+            	            	        		}
+            	            	        		/* mismatchedSetEx()
+            	            	        		 */
+            	            	        		CONSTRUCTEX();
+            	            	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+            	            	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+            	            	        		goto ruledatatypesDefCommandEx;
+            	            	        	}
+            	            	        	cnt35++;
+            	            	            }
+            	            	            loop35: ;	/* Jump to here if this rule does not match */
+            	            	        }
+
+            	            	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDefCommand2942);
+            	            	        if  (HASEXCEPTION())
+            	            	        {
+            	            	            goto ruledatatypesDefCommandEx;
+            	            	        }
+
+
+            	            	        {
+            	            	             PARSER_STATE->popScope(); 
+            	            	        }
+
+
+            	            	    }
+            	            	    break;
+            	            	case 2:
+            	            	    // ../../../../src/parser/smt2/Smt2.g:1582:7: ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+
+            	            	    {
+            	            	        {
+            	            	             if( 0!=arities[dts.size()] ){
+            	            	                      PARSER_STATE->parseError("No parameters given for datatype.");
+            	            	                    }
+            	            	                    Debug("parser-dt") << params.size() << " parameters for " << dnames[dts.size()] << std::endl;
+            	            	                    dts.push_back(Datatype(dnames[dts.size()],params,isCo));
+            	            	                  
+            	            	        }
+
+
+            	            	        // ../../../../src/parser/smt2/Smt2.g:1588:7: ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+
+            	            	        {
+            	            	            int cnt36=0;
+
+            	            	            for (;;)
+            	            	            {
+            	            	                int alt36=2;
+            	            	        	switch ( LA(1) )
+            	            	        	{
+            	            	        	case LPAREN_TOK:
+            	            	        		{
+            	            	        			alt36=1;
+            	            	        		}
+            	            	        	    break;
+
+            	            	        	}
+
+            	            	        	switch (alt36)
+            	            	        	{
+            	            	        	    case 1:
+            	            	        	        // ../../../../src/parser/smt2/Smt2.g:1588:9: LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK
+            	            	        	        {
+            	            	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDefCommand2963);
+            	            	        	            if  (HASEXCEPTION())
+            	            	        	            {
+            	            	        	                goto ruledatatypesDefCommandEx;
+            	            	        	            }
+
+
+            	            	        	            FOLLOWPUSH(FOLLOW_constructorDef_in_datatypesDefCommand2965);
+            	            	        	            constructorDef(ctx, dts.back());
+
+            	            	        	            FOLLOWPOP();
+            	            	        	            if  (HASEXCEPTION())
+            	            	        	            {
+            	            	        	                goto ruledatatypesDefCommandEx;
+            	            	        	            }
+
+
+            	            	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDefCommand2968);
+            	            	        	            if  (HASEXCEPTION())
+            	            	        	            {
+            	            	        	                goto ruledatatypesDefCommandEx;
+            	            	        	            }
+
+
+            	            	        	        }
+            	            	        	        break;
+
+            	            	        	    default:
+
+            	            	        		if ( cnt36 >= 1 )
+            	            	        		{
+            	            	        		    goto loop36;
+            	            	        		}
+            	            	        		/* mismatchedSetEx()
+            	            	        		 */
+            	            	        		CONSTRUCTEX();
+            	            	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+            	            	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+            	            	        		goto ruledatatypesDefCommandEx;
+            	            	        	}
+            	            	        	cnt36++;
+            	            	            }
+            	            	            loop36: ;	/* Jump to here if this rule does not match */
+            	            	        }
+
+            	            	    }
+            	            	    break;
+
+            	                }
+            	            }
+
+            	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDefCommand2983);
+            	            if  (HASEXCEPTION())
+            	            {
+            	                goto ruledatatypesDefCommandEx;
+            	            }
+
+
+            	        }
+            	        break;
+
+            	    default:
+
+            		if ( cnt38 >= 1 )
+            		{
+            		    goto loop38;
+            		}
+            		/* mismatchedSetEx()
+            		 */
+            		CONSTRUCTEX();
+            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+            		goto ruledatatypesDefCommandEx;
+            	}
+            	cnt38++;
+                }
+                loop38: ;	/* Jump to here if this rule does not match */
+            }
+
+             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDefCommand2994);
+            if  (HASEXCEPTION())
+            {
+                goto ruledatatypesDefCommandEx;
+            }
+
+
+            {
+                 PARSER_STATE->popScope();
+                    cmd->reset(new DatatypeDeclarationCommand(PARSER_STATE->mkMutualDatatypeTypes(dts))); 
+                  
+            }
+
+
+        }
+
+    }
+
+    // This is where rules clean up and exit
+    //
+    goto ruledatatypesDefCommandEx; /* Prevent compiler warnings */
+    ruledatatypesDefCommandEx: ;
+
+            if (HASEXCEPTION())
+            {
+                PREPORTERROR();
+                PRECOVER();
+            }
+    return ;
+}
+/* $ANTLR end datatypesDefCommand */
+
+/**
+ * $ANTLR start rewriterulesCommand
+ * ../../../../src/parser/smt2/Smt2.g:1598:1: rewriterulesCommand[CVC4::PtrCloser<CVC4::Command>* cmd] : ( REWRITE_RULE_TOK LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK LPAREN_TOK ( pattern[expr] )* RPAREN_TOK LPAREN_TOK ( termList[guards,expr] )? RPAREN_TOK term[head, expr2] term[body, expr2] | rewritePropaKind[kind] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK LPAREN_TOK ( pattern[expr] )* RPAREN_TOK LPAREN_TOK ( termList[guards,expr] )? RPAREN_TOK LPAREN_TOK ( termList[h [...]
+ */
+static void
+rewriterulesCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
+{
+
+      std::vector<std::pair<std::string, Type> > sortedVarNames;
+      std::vector<Expr> args, guards, heads, triggers;
+      Expr head, body, expr, expr2, bvl;
+      Kind kind;
+
+    /* Initialize rule variables
+     */
+
+    {
+        {
+            //  ../../../../src/parser/smt2/Smt2.g:1605:3: ( REWRITE_RULE_TOK LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK LPAREN_TOK ( pattern[expr] )* RPAREN_TOK LPAREN_TOK ( termList[guards,expr] )? RPAREN_TOK term[head, expr2] term[body, expr2] | rewritePropaKind[kind] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK LPAREN_TOK ( pattern[expr] )* RPAREN_TOK LPAREN_TOK ( termList[guards,expr] )? RPAREN_TOK LPAREN_TOK ( termList[heads,expr] )? RPAREN_TOK term[body, expr2] )
+
+            ANTLR3_UINT32 alt44;
+
+            alt44=2;
+
+            switch ( LA(1) )
+            {
+            case REWRITE_RULE_TOK:
+            	{
+            		alt44=1;
+            	}
+                break;
+            case PROPAGATION_RULE_TOK:
+            case REDUCTION_RULE_TOK:
+            	{
+            		alt44=2;
+            	}
+                break;
+
+            default:
+                CONSTRUCTEX();
+                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+                EXCEPTION->message      = (void *)"";
+                EXCEPTION->decisionNum  = 44;
+                EXCEPTION->state        = 0;
+
+
+                goto rulerewriterulesCommandEx;
+
+            }
+
+            switch (alt44)
+            {
+        	case 1:
+        	    // ../../../../src/parser/smt2/Smt2.g:1606:5: REWRITE_RULE_TOK LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK LPAREN_TOK ( pattern[expr] )* RPAREN_TOK LPAREN_TOK ( termList[guards,expr] )? RPAREN_TOK term[head, expr2] term[body, expr2]
+        	    {
+        	         MATCHT(REWRITE_RULE_TOK, &FOLLOW_REWRITE_RULE_TOK_in_rewriterulesCommand3023);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_rewriterulesCommand3029);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_sortedVarList_in_rewriterulesCommand3031);
+        	        sortedVarList(ctx, sortedVarNames);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_rewriterulesCommand3034);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	        {
+
+        	                  kind = CVC4::kind::RR_REWRITE;
+        	                  PARSER_STATE->pushScope(true);
+        	                  for(std::vector<std::pair<std::string, CVC4::Type> >::const_iterator i =
+        	                        sortedVarNames.begin(), iend = sortedVarNames.end();
+        	                      i != iend;
+        	                      ++i) {
+        	                    args.push_back(PARSER_STATE->mkBoundVar((*i).first, (*i).second));
+        	                  }
+        	                  bvl = MK_EXPR(kind::BOUND_VAR_LIST, args);
+        	                
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_rewriterulesCommand3046);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto rulerewriterulesCommandEx;
+        	        }
+
+
+        	        // ../../../../src/parser/smt2/Smt2.g:1619:16: ( pattern[expr] )*
+
+        	        for (;;)
+        	        {
+        	            int alt39=2;
+        	            switch ( LA(1) )
+        	            {
         	            case LPAREN_TOK:
         	            	{
-        	            		alt32=1;
+        	            		alt39=1;
         	            	}
         	                break;
 
         	            }
 
-        	            switch (alt32)
+        	            switch (alt39)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1545:18: pattern[expr]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:1619:18: pattern[expr]
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_pattern_in_rewriterulesCommand2752);
+        	        	        FOLLOWPUSH(FOLLOW_pattern_in_rewriterulesCommand3050);
         	        	        pattern(ctx, expr);
 
         	        	        FOLLOWPOP();
@@ -8412,30 +9405,30 @@ rewriterulesCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    break;
 
         	        	default:
-        	        	    goto loop32;	/* break out of the loop */
+        	        	    goto loop39;	/* break out of the loop */
         	        	    break;
         	            }
         	        }
-        	        loop32: ; /* Jump out to here if this rule does not match */
+        	        loop39: ; /* Jump out to here if this rule does not match */
 
 
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_rewriterulesCommand2760);
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_rewriterulesCommand3058);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerewriterulesCommandEx;
         	        }
 
 
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_rewriterulesCommand2766);
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_rewriterulesCommand3064);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerewriterulesCommandEx;
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:1546:16: ( termList[guards,expr] )?
+        	        // ../../../../src/parser/smt2/Smt2.g:1620:16: ( termList[guards,expr] )?
         	        {
-        	            int alt33=2;
+        	            int alt40=2;
         	            switch ( LA(1) )
         	            {
         	                case BINARY_LITERAL:
@@ -8471,19 +9464,19 @@ rewriterulesCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	                case SYNTH_INV_TOK:
         	                case UNIVSET_TOK:
         	                case UNTERMINATED_QUOTED_SYMBOL:
-        	                case 147:
+        	                case 154:
         	                	{
-        	                		alt33=1;
+        	                		alt40=1;
         	                	}
         	                    break;
         	            }
 
-        	            switch (alt33)
+        	            switch (alt40)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1546:17: termList[guards,expr]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:1620:17: termList[guards,expr]
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_termList_in_rewriterulesCommand2769);
+        	        	        FOLLOWPUSH(FOLLOW_termList_in_rewriterulesCommand3067);
         	        	        termList(ctx, guards, expr);
 
         	        	        FOLLOWPOP();
@@ -8499,14 +9492,14 @@ rewriterulesCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            }
         	        }
 
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_rewriterulesCommand2774);
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_rewriterulesCommand3072);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerewriterulesCommandEx;
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_term_in_rewriterulesCommand2780);
+        	        FOLLOWPUSH(FOLLOW_term_in_rewriterulesCommand3078);
         	        term(ctx, head, expr2);
 
         	        FOLLOWPOP();
@@ -8516,7 +9509,7 @@ rewriterulesCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_term_in_rewriterulesCommand2783);
+        	        FOLLOWPUSH(FOLLOW_term_in_rewriterulesCommand3081);
         	        term(ctx, body, expr2);
 
         	        FOLLOWPOP();
@@ -8558,9 +9551,9 @@ rewriterulesCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1574:5: rewritePropaKind[kind] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK LPAREN_TOK ( pattern[expr] )* RPAREN_TOK LPAREN_TOK ( termList[guards,expr] )? RPAREN_TOK LPAREN_TOK ( termList[heads,expr] )? RPAREN_TOK term[body, expr2]
+        	    // ../../../../src/parser/smt2/Smt2.g:1648:5: rewritePropaKind[kind] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK LPAREN_TOK ( pattern[expr] )* RPAREN_TOK LPAREN_TOK ( termList[guards,expr] )? RPAREN_TOK LPAREN_TOK ( termList[heads,expr] )? RPAREN_TOK term[body, expr2]
         	    {
-        	        FOLLOWPUSH(FOLLOW_rewritePropaKind_in_rewriterulesCommand2802);
+        	        FOLLOWPUSH(FOLLOW_rewritePropaKind_in_rewriterulesCommand3100);
         	        rewritePropaKind(ctx, kind);
 
         	        FOLLOWPOP();
@@ -8570,14 +9563,14 @@ rewriterulesCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_rewriterulesCommand2809);
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_rewriterulesCommand3107);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerewriterulesCommandEx;
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_sortedVarList_in_rewriterulesCommand2811);
+        	        FOLLOWPUSH(FOLLOW_sortedVarList_in_rewriterulesCommand3109);
         	        sortedVarList(ctx, sortedVarNames);
 
         	        FOLLOWPOP();
@@ -8587,7 +9580,7 @@ rewriterulesCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_rewriterulesCommand2814);
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_rewriterulesCommand3112);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerewriterulesCommandEx;
@@ -8608,34 +9601,34 @@ rewriterulesCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        }
 
 
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_rewriterulesCommand2826);
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_rewriterulesCommand3124);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerewriterulesCommandEx;
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:1586:16: ( pattern[expr] )*
+        	        // ../../../../src/parser/smt2/Smt2.g:1660:16: ( pattern[expr] )*
 
         	        for (;;)
         	        {
-        	            int alt34=2;
+        	            int alt41=2;
         	            switch ( LA(1) )
         	            {
         	            case LPAREN_TOK:
         	            	{
-        	            		alt34=1;
+        	            		alt41=1;
         	            	}
         	                break;
 
         	            }
 
-        	            switch (alt34)
+        	            switch (alt41)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1586:18: pattern[expr]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:1660:18: pattern[expr]
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_pattern_in_rewriterulesCommand2830);
+        	        	        FOLLOWPUSH(FOLLOW_pattern_in_rewriterulesCommand3128);
         	        	        pattern(ctx, expr);
 
         	        	        FOLLOWPOP();
@@ -8654,30 +9647,30 @@ rewriterulesCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	        	    break;
 
         	        	default:
-        	        	    goto loop34;	/* break out of the loop */
+        	        	    goto loop41;	/* break out of the loop */
         	        	    break;
         	            }
         	        }
-        	        loop34: ; /* Jump out to here if this rule does not match */
+        	        loop41: ; /* Jump out to here if this rule does not match */
 
 
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_rewriterulesCommand2838);
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_rewriterulesCommand3136);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerewriterulesCommandEx;
         	        }
 
 
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_rewriterulesCommand2844);
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_rewriterulesCommand3142);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerewriterulesCommandEx;
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:1587:16: ( termList[guards,expr] )?
+        	        // ../../../../src/parser/smt2/Smt2.g:1661:16: ( termList[guards,expr] )?
         	        {
-        	            int alt35=2;
+        	            int alt42=2;
         	            switch ( LA(1) )
         	            {
         	                case BINARY_LITERAL:
@@ -8713,19 +9706,19 @@ rewriterulesCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	                case SYNTH_INV_TOK:
         	                case UNIVSET_TOK:
         	                case UNTERMINATED_QUOTED_SYMBOL:
-        	                case 147:
+        	                case 154:
         	                	{
-        	                		alt35=1;
+        	                		alt42=1;
         	                	}
         	                    break;
         	            }
 
-        	            switch (alt35)
+        	            switch (alt42)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1587:17: termList[guards,expr]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:1661:17: termList[guards,expr]
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_termList_in_rewriterulesCommand2847);
+        	        	        FOLLOWPUSH(FOLLOW_termList_in_rewriterulesCommand3145);
         	        	        termList(ctx, guards, expr);
 
         	        	        FOLLOWPOP();
@@ -8741,23 +9734,23 @@ rewriterulesCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            }
         	        }
 
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_rewriterulesCommand2852);
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_rewriterulesCommand3150);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerewriterulesCommandEx;
         	        }
 
 
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_rewriterulesCommand2858);
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_rewriterulesCommand3156);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerewriterulesCommandEx;
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:1588:16: ( termList[heads,expr] )?
+        	        // ../../../../src/parser/smt2/Smt2.g:1662:16: ( termList[heads,expr] )?
         	        {
-        	            int alt36=2;
+        	            int alt43=2;
         	            switch ( LA(1) )
         	            {
         	                case BINARY_LITERAL:
@@ -8793,19 +9786,19 @@ rewriterulesCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	                case SYNTH_INV_TOK:
         	                case UNIVSET_TOK:
         	                case UNTERMINATED_QUOTED_SYMBOL:
-        	                case 147:
+        	                case 154:
         	                	{
-        	                		alt36=1;
+        	                		alt43=1;
         	                	}
         	                    break;
         	            }
 
-        	            switch (alt36)
+        	            switch (alt43)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1588:17: termList[heads,expr]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:1662:17: termList[heads,expr]
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_termList_in_rewriterulesCommand2861);
+        	        	        FOLLOWPUSH(FOLLOW_termList_in_rewriterulesCommand3159);
         	        	        termList(ctx, heads, expr);
 
         	        	        FOLLOWPOP();
@@ -8821,14 +9814,14 @@ rewriterulesCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
         	            }
         	        }
 
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_rewriterulesCommand2866);
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_rewriterulesCommand3164);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerewriterulesCommandEx;
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_term_in_rewriterulesCommand2872);
+        	        FOLLOWPUSH(FOLLOW_term_in_rewriterulesCommand3170);
         	        term(ctx, body, expr2);
 
         	        FOLLOWPOP();
@@ -8900,7 +9893,7 @@ rewriterulesCommand(pSmt2Parser ctx, CVC4::PtrCloser<CVC4::Command>* cmd)
 
 /**
  * $ANTLR start rewritePropaKind
- * ../../../../../../src/parser/smt2/Smt2.g:1627:1: rewritePropaKind[CVC4::Kind& kind] : ( REDUCTION_RULE_TOK | PROPAGATION_RULE_TOK );
+ * ../../../../src/parser/smt2/Smt2.g:1701:1: rewritePropaKind[CVC4::Kind& kind] : ( REDUCTION_RULE_TOK | PROPAGATION_RULE_TOK );
  */
 static void
 rewritePropaKind(pSmt2Parser ctx, CVC4::Kind& kind)
@@ -8910,22 +9903,22 @@ rewritePropaKind(pSmt2Parser ctx, CVC4::Kind& kind)
 
     {
         {
-            //  ../../../../../../src/parser/smt2/Smt2.g:1628:3: ( REDUCTION_RULE_TOK | PROPAGATION_RULE_TOK )
+            //  ../../../../src/parser/smt2/Smt2.g:1702:3: ( REDUCTION_RULE_TOK | PROPAGATION_RULE_TOK )
 
-            ANTLR3_UINT32 alt38;
+            ANTLR3_UINT32 alt45;
 
-            alt38=2;
+            alt45=2;
 
             switch ( LA(1) )
             {
             case REDUCTION_RULE_TOK:
             	{
-            		alt38=1;
+            		alt45=1;
             	}
                 break;
             case PROPAGATION_RULE_TOK:
             	{
-            		alt38=2;
+            		alt45=2;
             	}
                 break;
 
@@ -8933,7 +9926,7 @@ rewritePropaKind(pSmt2Parser ctx, CVC4::Kind& kind)
                 CONSTRUCTEX();
                 EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
                 EXCEPTION->message      = (void *)"";
-                EXCEPTION->decisionNum  = 38;
+                EXCEPTION->decisionNum  = 45;
                 EXCEPTION->state        = 0;
 
 
@@ -8941,12 +9934,12 @@ rewritePropaKind(pSmt2Parser ctx, CVC4::Kind& kind)
 
             }
 
-            switch (alt38)
+            switch (alt45)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1628:5: REDUCTION_RULE_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:1702:5: REDUCTION_RULE_TOK
         	    {
-        	         MATCHT(REDUCTION_RULE_TOK, &FOLLOW_REDUCTION_RULE_TOK_in_rewritePropaKind2893);
+        	         MATCHT(REDUCTION_RULE_TOK, &FOLLOW_REDUCTION_RULE_TOK_in_rewritePropaKind3191);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerewritePropaKindEx;
@@ -8961,9 +9954,9 @@ rewritePropaKind(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1629:5: PROPAGATION_RULE_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:1703:5: PROPAGATION_RULE_TOK
         	    {
-        	         MATCHT(PROPAGATION_RULE_TOK, &FOLLOW_PROPAGATION_RULE_TOK_in_rewritePropaKind2904);
+        	         MATCHT(PROPAGATION_RULE_TOK, &FOLLOW_PROPAGATION_RULE_TOK_in_rewritePropaKind3202);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulerewritePropaKindEx;
@@ -8998,7 +9991,7 @@ rewritePropaKind(pSmt2Parser ctx, CVC4::Kind& kind)
 
 /**
  * $ANTLR start pattern
- * ../../../../../../src/parser/smt2/Smt2.g:1632:1: pattern[CVC4::Expr& expr] : LPAREN_TOK termList[patexpr,expr] RPAREN_TOK ;
+ * ../../../../src/parser/smt2/Smt2.g:1706:1: pattern[CVC4::Expr& expr] : LPAREN_TOK termList[patexpr,expr] RPAREN_TOK ;
  */
 static void
 pattern(pSmt2Parser ctx, CVC4::Expr& expr)
@@ -9010,17 +10003,17 @@ pattern(pSmt2Parser ctx, CVC4::Expr& expr)
      */
 
     {
-        // ../../../../../../src/parser/smt2/Smt2.g:1636:3: ( LPAREN_TOK termList[patexpr,expr] RPAREN_TOK )
-        // ../../../../../../src/parser/smt2/Smt2.g:1636:5: LPAREN_TOK termList[patexpr,expr] RPAREN_TOK
+        // ../../../../src/parser/smt2/Smt2.g:1710:3: ( LPAREN_TOK termList[patexpr,expr] RPAREN_TOK )
+        // ../../../../src/parser/smt2/Smt2.g:1710:5: LPAREN_TOK termList[patexpr,expr] RPAREN_TOK
         {
-             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_pattern2926);
+             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_pattern3224);
             if  (HASEXCEPTION())
             {
                 goto rulepatternEx;
             }
 
 
-            FOLLOWPUSH(FOLLOW_termList_in_pattern2928);
+            FOLLOWPUSH(FOLLOW_termList_in_pattern3226);
             termList(ctx, patexpr, expr);
 
             FOLLOWPOP();
@@ -9030,7 +10023,7 @@ pattern(pSmt2Parser ctx, CVC4::Expr& expr)
             }
 
 
-             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_pattern2931);
+             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_pattern3229);
             if  (HASEXCEPTION())
             {
                 goto rulepatternEx;
@@ -9064,7 +10057,7 @@ pattern(pSmt2Parser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start simpleSymbolicExprNoKeyword
- * ../../../../../../src/parser/smt2/Smt2.g:1642:1: simpleSymbolicExprNoKeyword[CVC4::SExpr& sexpr] : ( INTEGER_LITERAL | DECIMAL_LITERAL | HEX_LITERAL | BINARY_LITERAL | str[s,false] | symbol[s,CHECK_NONE,SYM_SORT] |tok= ( ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_A [...]
+ * ../../../../src/parser/smt2/Smt2.g:1716:1: simpleSymbolicExprNoKeyword[CVC4::SExpr& sexpr] : ( INTEGER_LITERAL | DECIMAL_LITERAL | HEX_LITERAL | BINARY_LITERAL | str[s,false] | symbol[s,CHECK_NONE,SYM_SORT] |tok= ( ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTI [...]
  */
 static void
 simpleSymbolicExprNoKeyword(pSmt2Parser ctx, CVC4::SExpr& sexpr)
@@ -9091,38 +10084,38 @@ simpleSymbolicExprNoKeyword(pSmt2Parser ctx, CVC4::SExpr& sexpr)
 
     {
         {
-            //  ../../../../../../src/parser/smt2/Smt2.g:1648:3: ( INTEGER_LITERAL | DECIMAL_LITERAL | HEX_LITERAL | BINARY_LITERAL | str[s,false] | symbol[s,CHECK_NONE,SYM_SORT] |tok= ( ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTIONS_TOK | SET_LOGIC_TOK | SET_I [...]
+            //  ../../../../src/parser/smt2/Smt2.g:1722:3: ( INTEGER_LITERAL | DECIMAL_LITERAL | HEX_LITERAL | BINARY_LITERAL | str[s,false] | symbol[s,CHECK_NONE,SYM_SORT] |tok= ( ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTIONS_TOK | SET_LOGIC_TOK | SET_INFO_TO [...]
 
-            ANTLR3_UINT32 alt39;
+            ANTLR3_UINT32 alt46;
 
-            alt39=8;
+            alt46=8;
 
             switch ( LA(1) )
             {
             case INTEGER_LITERAL:
             	{
-            		alt39=1;
+            		alt46=1;
             	}
                 break;
             case DECIMAL_LITERAL:
             	{
-            		alt39=2;
+            		alt46=2;
             	}
                 break;
             case HEX_LITERAL:
             	{
-            		alt39=3;
+            		alt46=3;
             	}
                 break;
             case BINARY_LITERAL:
             	{
-            		alt39=4;
+            		alt46=4;
             	}
                 break;
             case STRING_LITERAL_2_0:
             case STRING_LITERAL_2_5:
             	{
-            		alt39=5;
+            		alt46=5;
             	}
                 break;
             case CHECK_SYNTH_TOK:
@@ -9136,9 +10129,9 @@ simpleSymbolicExprNoKeyword(pSmt2Parser ctx, CVC4::SExpr& sexpr)
             case SYNTH_FUN_TOK:
             case SYNTH_INV_TOK:
             case UNTERMINATED_QUOTED_SYMBOL:
-            case 147:
+            case 154:
             	{
-            		alt39=6;
+            		alt46=6;
             	}
                 break;
             case ASSERT_TOK:
@@ -9172,7 +10165,7 @@ simpleSymbolicExprNoKeyword(pSmt2Parser ctx, CVC4::SExpr& sexpr)
             case SET_OPTION_TOK:
             case SIMPLIFY_TOK:
             	{
-            		alt39=7;
+            		alt46=7;
             	}
                 break;
             case AND_TOK:
@@ -9197,7 +10190,7 @@ simpleSymbolicExprNoKeyword(pSmt2Parser ctx, CVC4::SExpr& sexpr)
             case STAR_TOK:
             case XOR_TOK:
             	{
-            		alt39=8;
+            		alt46=8;
             	}
                 break;
 
@@ -9205,7 +10198,7 @@ simpleSymbolicExprNoKeyword(pSmt2Parser ctx, CVC4::SExpr& sexpr)
                 CONSTRUCTEX();
                 EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
                 EXCEPTION->message      = (void *)"";
-                EXCEPTION->decisionNum  = 39;
+                EXCEPTION->decisionNum  = 46;
                 EXCEPTION->state        = 0;
 
 
@@ -9213,12 +10206,12 @@ simpleSymbolicExprNoKeyword(pSmt2Parser ctx, CVC4::SExpr& sexpr)
 
             }
 
-            switch (alt39)
+            switch (alt46)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1648:5: INTEGER_LITERAL
+        	    // ../../../../src/parser/smt2/Smt2.g:1722:5: INTEGER_LITERAL
         	    {
-        	        INTEGER_LITERAL8 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExprNoKeyword2956);
+        	        INTEGER_LITERAL8 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExprNoKeyword3254);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleSymbolicExprNoKeywordEx;
@@ -9233,9 +10226,9 @@ simpleSymbolicExprNoKeyword(pSmt2Parser ctx, CVC4::SExpr& sexpr)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1650:5: DECIMAL_LITERAL
+        	    // ../../../../src/parser/smt2/Smt2.g:1724:5: DECIMAL_LITERAL
         	    {
-        	        DECIMAL_LITERAL9 = (pANTLR3_COMMON_TOKEN) MATCHT(DECIMAL_LITERAL, &FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExprNoKeyword2968);
+        	        DECIMAL_LITERAL9 = (pANTLR3_COMMON_TOKEN) MATCHT(DECIMAL_LITERAL, &FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExprNoKeyword3266);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleSymbolicExprNoKeywordEx;
@@ -9250,9 +10243,9 @@ simpleSymbolicExprNoKeyword(pSmt2Parser ctx, CVC4::SExpr& sexpr)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1652:5: HEX_LITERAL
+        	    // ../../../../src/parser/smt2/Smt2.g:1726:5: HEX_LITERAL
         	    {
-        	        HEX_LITERAL10 = (pANTLR3_COMMON_TOKEN) MATCHT(HEX_LITERAL, &FOLLOW_HEX_LITERAL_in_simpleSymbolicExprNoKeyword2980);
+        	        HEX_LITERAL10 = (pANTLR3_COMMON_TOKEN) MATCHT(HEX_LITERAL, &FOLLOW_HEX_LITERAL_in_simpleSymbolicExprNoKeyword3278);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleSymbolicExprNoKeywordEx;
@@ -9270,9 +10263,9 @@ simpleSymbolicExprNoKeyword(pSmt2Parser ctx, CVC4::SExpr& sexpr)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1657:5: BINARY_LITERAL
+        	    // ../../../../src/parser/smt2/Smt2.g:1731:5: BINARY_LITERAL
         	    {
-        	        BINARY_LITERAL11 = (pANTLR3_COMMON_TOKEN) MATCHT(BINARY_LITERAL, &FOLLOW_BINARY_LITERAL_in_simpleSymbolicExprNoKeyword2992);
+        	        BINARY_LITERAL11 = (pANTLR3_COMMON_TOKEN) MATCHT(BINARY_LITERAL, &FOLLOW_BINARY_LITERAL_in_simpleSymbolicExprNoKeyword3290);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleSymbolicExprNoKeywordEx;
@@ -9290,9 +10283,9 @@ simpleSymbolicExprNoKeyword(pSmt2Parser ctx, CVC4::SExpr& sexpr)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1662:5: str[s,false]
+        	    // ../../../../src/parser/smt2/Smt2.g:1736:5: str[s,false]
         	    {
-        	        FOLLOWPUSH(FOLLOW_str_in_simpleSymbolicExprNoKeyword3004);
+        	        FOLLOWPUSH(FOLLOW_str_in_simpleSymbolicExprNoKeyword3302);
         	        str(ctx, s, false);
 
         	        FOLLOWPOP();
@@ -9310,9 +10303,9 @@ simpleSymbolicExprNoKeyword(pSmt2Parser ctx, CVC4::SExpr& sexpr)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1671:5: symbol[s,CHECK_NONE,SYM_SORT]
+        	    // ../../../../src/parser/smt2/Smt2.g:1745:5: symbol[s,CHECK_NONE,SYM_SORT]
         	    {
-        	        FOLLOWPUSH(FOLLOW_symbol_in_simpleSymbolicExprNoKeyword3024);
+        	        FOLLOWPUSH(FOLLOW_symbol_in_simpleSymbolicExprNoKeyword3322);
         	        symbol(ctx, s, CHECK_NONE, SYM_SORT);
 
         	        FOLLOWPOP();
@@ -9330,7 +10323,7 @@ simpleSymbolicExprNoKeyword(pSmt2Parser ctx, CVC4::SExpr& sexpr)
         	    }
         	    break;
         	case 7:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1673:5: tok= ( ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTIONS_TOK | SET_LOGIC_TOK | SET_INFO_TOK | GET_INFO_TOK | SET_OPTION_TOK | GET_OPTION_TOK | PUSH_TOK | POP_TOK | DECLARE_DATATYPES_TOK | GET_MODEL_T [...]
+        	    // ../../../../src/parser/smt2/Smt2.g:1747:5: tok= ( ASSERT_TOK | CHECKSAT_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTIONS_TOK | SET_LOGIC_TOK | SET_INFO_TOK | GET_INFO_TOK | SET_OPTION_TOK | GET_OPTION_TOK | PUSH_TOK | POP_TOK | DECLARE_DATATYPES_TOK | GET_MODEL_TOK | E [...]
         	    {
         	        tok=(pANTLR3_COMMON_TOKEN)LT(1);
 
@@ -9358,9 +10351,9 @@ simpleSymbolicExprNoKeyword(pSmt2Parser ctx, CVC4::SExpr& sexpr)
         	    }
         	    break;
         	case 8:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1682:5: builtinOp[k]
+        	    // ../../../../src/parser/smt2/Smt2.g:1756:5: builtinOp[k]
         	    {
-        	        FOLLOWPUSH(FOLLOW_builtinOp_in_simpleSymbolicExprNoKeyword3225);
+        	        FOLLOWPUSH(FOLLOW_builtinOp_in_simpleSymbolicExprNoKeyword3523);
         	        builtinOp(ctx, k);
 
         	        FOLLOWPOP();
@@ -9402,7 +10395,7 @@ simpleSymbolicExprNoKeyword(pSmt2Parser ctx, CVC4::SExpr& sexpr)
 
 /**
  * $ANTLR start keyword
- * ../../../../../../src/parser/smt2/Smt2.g:1690:1: keyword[std::string& s] : KEYWORD ;
+ * ../../../../src/parser/smt2/Smt2.g:1764:1: keyword[std::string& s] : KEYWORD ;
  */
 static void
 keyword(pSmt2Parser ctx, std::string& s)
@@ -9415,10 +10408,10 @@ keyword(pSmt2Parser ctx, std::string& s)
     KEYWORD12       = NULL;
 
     {
-        // ../../../../../../src/parser/smt2/Smt2.g:1691:3: ( KEYWORD )
-        // ../../../../../../src/parser/smt2/Smt2.g:1691:5: KEYWORD
+        // ../../../../src/parser/smt2/Smt2.g:1765:3: ( KEYWORD )
+        // ../../../../src/parser/smt2/Smt2.g:1765:5: KEYWORD
         {
-            KEYWORD12 = (pANTLR3_COMMON_TOKEN) MATCHT(KEYWORD, &FOLLOW_KEYWORD_in_keyword3246);
+            KEYWORD12 = (pANTLR3_COMMON_TOKEN) MATCHT(KEYWORD, &FOLLOW_KEYWORD_in_keyword3544);
             if  (HASEXCEPTION())
             {
                 goto rulekeywordEx;
@@ -9450,7 +10443,7 @@ keyword(pSmt2Parser ctx, std::string& s)
 
 /**
  * $ANTLR start simpleSymbolicExpr
- * ../../../../../../src/parser/smt2/Smt2.g:1695:1: simpleSymbolicExpr[CVC4::SExpr& sexpr] : ( simpleSymbolicExprNoKeyword[sexpr] | KEYWORD );
+ * ../../../../src/parser/smt2/Smt2.g:1769:1: simpleSymbolicExpr[CVC4::SExpr& sexpr] : ( simpleSymbolicExprNoKeyword[sexpr] | KEYWORD );
  */
 static void
 simpleSymbolicExpr(pSmt2Parser ctx, CVC4::SExpr& sexpr)
@@ -9464,11 +10457,11 @@ simpleSymbolicExpr(pSmt2Parser ctx, CVC4::SExpr& sexpr)
 
     {
         {
-            //  ../../../../../../src/parser/smt2/Smt2.g:1696:3: ( simpleSymbolicExprNoKeyword[sexpr] | KEYWORD )
+            //  ../../../../src/parser/smt2/Smt2.g:1770:3: ( simpleSymbolicExprNoKeyword[sexpr] | KEYWORD )
 
-            ANTLR3_UINT32 alt40;
+            ANTLR3_UINT32 alt47;
 
-            alt40=2;
+            alt47=2;
 
             switch ( LA(1) )
             {
@@ -9540,14 +10533,14 @@ simpleSymbolicExpr(pSmt2Parser ctx, CVC4::SExpr& sexpr)
             case SYNTH_INV_TOK:
             case UNTERMINATED_QUOTED_SYMBOL:
             case XOR_TOK:
-            case 147:
+            case 154:
             	{
-            		alt40=1;
+            		alt47=1;
             	}
                 break;
             case KEYWORD:
             	{
-            		alt40=2;
+            		alt47=2;
             	}
                 break;
 
@@ -9555,7 +10548,7 @@ simpleSymbolicExpr(pSmt2Parser ctx, CVC4::SExpr& sexpr)
                 CONSTRUCTEX();
                 EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
                 EXCEPTION->message      = (void *)"";
-                EXCEPTION->decisionNum  = 40;
+                EXCEPTION->decisionNum  = 47;
                 EXCEPTION->state        = 0;
 
 
@@ -9563,12 +10556,12 @@ simpleSymbolicExpr(pSmt2Parser ctx, CVC4::SExpr& sexpr)
 
             }
 
-            switch (alt40)
+            switch (alt47)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1696:5: simpleSymbolicExprNoKeyword[sexpr]
+        	    // ../../../../src/parser/smt2/Smt2.g:1770:5: simpleSymbolicExprNoKeyword[sexpr]
         	    {
-        	        FOLLOWPUSH(FOLLOW_simpleSymbolicExprNoKeyword_in_simpleSymbolicExpr3266);
+        	        FOLLOWPUSH(FOLLOW_simpleSymbolicExprNoKeyword_in_simpleSymbolicExpr3564);
         	        simpleSymbolicExprNoKeyword(ctx, sexpr);
 
         	        FOLLOWPOP();
@@ -9581,9 +10574,9 @@ simpleSymbolicExpr(pSmt2Parser ctx, CVC4::SExpr& sexpr)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1697:5: KEYWORD
+        	    // ../../../../src/parser/smt2/Smt2.g:1771:5: KEYWORD
         	    {
-        	        KEYWORD13 = (pANTLR3_COMMON_TOKEN) MATCHT(KEYWORD, &FOLLOW_KEYWORD_in_simpleSymbolicExpr3273);
+        	        KEYWORD13 = (pANTLR3_COMMON_TOKEN) MATCHT(KEYWORD, &FOLLOW_KEYWORD_in_simpleSymbolicExpr3571);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesimpleSymbolicExprEx;
@@ -9618,7 +10611,7 @@ simpleSymbolicExpr(pSmt2Parser ctx, CVC4::SExpr& sexpr)
 
 /**
  * $ANTLR start symbolicExpr
- * ../../../../../../src/parser/smt2/Smt2.g:1701:1: symbolicExpr[CVC4::SExpr& sexpr] : ( simpleSymbolicExpr[sexpr] | LPAREN_TOK ( symbolicExpr[sexpr] )* RPAREN_TOK );
+ * ../../../../src/parser/smt2/Smt2.g:1775:1: symbolicExpr[CVC4::SExpr& sexpr] : ( simpleSymbolicExpr[sexpr] | LPAREN_TOK ( symbolicExpr[sexpr] )* RPAREN_TOK );
  */
 static void
 symbolicExpr(pSmt2Parser ctx, CVC4::SExpr& sexpr)
@@ -9631,11 +10624,11 @@ symbolicExpr(pSmt2Parser ctx, CVC4::SExpr& sexpr)
 
     {
         {
-            //  ../../../../../../src/parser/smt2/Smt2.g:1705:3: ( simpleSymbolicExpr[sexpr] | LPAREN_TOK ( symbolicExpr[sexpr] )* RPAREN_TOK )
+            //  ../../../../src/parser/smt2/Smt2.g:1779:3: ( simpleSymbolicExpr[sexpr] | LPAREN_TOK ( symbolicExpr[sexpr] )* RPAREN_TOK )
 
-            ANTLR3_UINT32 alt42;
+            ANTLR3_UINT32 alt49;
 
-            alt42=2;
+            alt49=2;
 
             switch ( LA(1) )
             {
@@ -9708,14 +10701,14 @@ symbolicExpr(pSmt2Parser ctx, CVC4::SExpr& sexpr)
             case SYNTH_INV_TOK:
             case UNTERMINATED_QUOTED_SYMBOL:
             case XOR_TOK:
-            case 147:
+            case 154:
             	{
-            		alt42=1;
+            		alt49=1;
             	}
                 break;
             case LPAREN_TOK:
             	{
-            		alt42=2;
+            		alt49=2;
             	}
                 break;
 
@@ -9723,7 +10716,7 @@ symbolicExpr(pSmt2Parser ctx, CVC4::SExpr& sexpr)
                 CONSTRUCTEX();
                 EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
                 EXCEPTION->message      = (void *)"";
-                EXCEPTION->decisionNum  = 42;
+                EXCEPTION->decisionNum  = 49;
                 EXCEPTION->state        = 0;
 
 
@@ -9731,12 +10724,12 @@ symbolicExpr(pSmt2Parser ctx, CVC4::SExpr& sexpr)
 
             }
 
-            switch (alt42)
+            switch (alt49)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1705:5: simpleSymbolicExpr[sexpr]
+        	    // ../../../../src/parser/smt2/Smt2.g:1779:5: simpleSymbolicExpr[sexpr]
         	    {
-        	        FOLLOWPUSH(FOLLOW_simpleSymbolicExpr_in_symbolicExpr3298);
+        	        FOLLOWPUSH(FOLLOW_simpleSymbolicExpr_in_symbolicExpr3596);
         	        simpleSymbolicExpr(ctx, sexpr);
 
         	        FOLLOWPOP();
@@ -9749,20 +10742,20 @@ symbolicExpr(pSmt2Parser ctx, CVC4::SExpr& sexpr)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1706:5: LPAREN_TOK ( symbolicExpr[sexpr] )* RPAREN_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:1780:5: LPAREN_TOK ( symbolicExpr[sexpr] )* RPAREN_TOK
         	    {
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_symbolicExpr3305);
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_symbolicExpr3603);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesymbolicExprEx;
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:1707:5: ( symbolicExpr[sexpr] )*
+        	        // ../../../../src/parser/smt2/Smt2.g:1781:5: ( symbolicExpr[sexpr] )*
 
         	        for (;;)
         	        {
-        	            int alt41=2;
+        	            int alt48=2;
         	            switch ( LA(1) )
         	            {
         	            case AND_TOK:
@@ -9835,20 +10828,20 @@ symbolicExpr(pSmt2Parser ctx, CVC4::SExpr& sexpr)
         	            case SYNTH_INV_TOK:
         	            case UNTERMINATED_QUOTED_SYMBOL:
         	            case XOR_TOK:
-        	            case 147:
+        	            case 154:
         	            	{
-        	            		alt41=1;
+        	            		alt48=1;
         	            	}
         	                break;
 
         	            }
 
-        	            switch (alt41)
+        	            switch (alt48)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1707:7: symbolicExpr[sexpr]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:1781:7: symbolicExpr[sexpr]
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_symbolicExpr_in_symbolicExpr3313);
+        	        	        FOLLOWPUSH(FOLLOW_symbolicExpr_in_symbolicExpr3611);
         	        	        symbolicExpr(ctx, sexpr);
 
         	        	        FOLLOWPOP();
@@ -9867,14 +10860,14 @@ symbolicExpr(pSmt2Parser ctx, CVC4::SExpr& sexpr)
         	        	    break;
 
         	        	default:
-        	        	    goto loop41;	/* break out of the loop */
+        	        	    goto loop48;	/* break out of the loop */
         	        	    break;
         	            }
         	        }
-        	        loop41: ; /* Jump out to here if this rule does not match */
+        	        loop48: ; /* Jump out to here if this rule does not match */
 
 
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_symbolicExpr3321);
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_symbolicExpr3619);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesymbolicExprEx;
@@ -9909,7 +10902,7 @@ symbolicExpr(pSmt2Parser ctx, CVC4::SExpr& sexpr)
 
 /**
  * $ANTLR start term
- * ../../../../../../src/parser/smt2/Smt2.g:1715:1: term[CVC4::Expr& expr, CVC4::Expr& expr2] : ( LPAREN_TOK builtinOp[kind] termList[args,expr] RPAREN_TOK | LPAREN_TOK AS_TOK term[f, f2] sortSymbol[type, CHECK_DECLARED] RPAREN_TOK | LPAREN_TOK quantOp[kind] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK term[f, f2] RPAREN_TOK | LPAREN_TOK functionName[name, CHECK_NONE] termList[args,expr] RPAREN_TOK | LPAREN_TOK ( indexedFunctionName[op] termList[args,expr] RPAREN_TOK | LPAREN_TOK  [...]
+ * ../../../../src/parser/smt2/Smt2.g:1789:1: term[CVC4::Expr& expr, CVC4::Expr& expr2] : ( LPAREN_TOK builtinOp[kind] termList[args,expr] RPAREN_TOK | LPAREN_TOK AS_TOK term[f, f2] sortSymbol[type, CHECK_DECLARED] RPAREN_TOK | LPAREN_TOK quantOp[kind] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK term[f, f2] RPAREN_TOK | LPAREN_TOK functionName[name, CHECK_NONE] termList[args,expr] RPAREN_TOK | LPAREN_TOK ( indexedFunctionName[op, kind] termList[args,expr] RPAREN_TOK | LPAREN_TOK  [...]
  */
 static void
 term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
@@ -9937,12 +10930,15 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
       std::string attr;
       Expr attexpr;
       std::vector<Expr> patexprs;
+      std::vector<Expr> patconds;
       std::hash_set<std::string, StringHashFunction> names;
       std::vector< std::pair<std::string, Expr> > binders;
       Type type;
       std::string s;
       bool isBuiltinOperator = false;
       bool readLetSort = false;
+      int match_vindex = -1;
+      std::vector<Type> match_ptypes;
 
     bvLit       = NULL;
     size       = NULL;
@@ -9955,11 +10951,11 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
     {
         {
-            //  ../../../../../../src/parser/smt2/Smt2.g:1734:3: ( LPAREN_TOK builtinOp[kind] termList[args,expr] RPAREN_TOK | LPAREN_TOK AS_TOK term[f, f2] sortSymbol[type, CHECK_DECLARED] RPAREN_TOK | LPAREN_TOK quantOp[kind] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK term[f, f2] RPAREN_TOK | LPAREN_TOK functionName[name, CHECK_NONE] termList[args,expr] RPAREN_TOK | LPAREN_TOK ( indexedFunctionName[op] termList[args,expr] RPAREN_TOK | LPAREN_TOK AS_TOK CONST_TOK sortSymbol[typ [...]
+            //  ../../../../src/parser/smt2/Smt2.g:1811:3: ( LPAREN_TOK builtinOp[kind] termList[args,expr] RPAREN_TOK | LPAREN_TOK AS_TOK term[f, f2] sortSymbol[type, CHECK_DECLARED] RPAREN_TOK | LPAREN_TOK quantOp[kind] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK term[f, f2] RPAREN_TOK | LPAREN_TOK functionName[name, CHECK_NONE] termList[args,expr] RPAREN_TOK | LPAREN_TOK ( indexedFunctionName[op, kind] termList[args,expr] RPAREN_TOK | LPAREN_TOK AS_TOK CONST_TOK sortSymbol[typ [...]
 
-            ANTLR3_UINT32 alt48;
+            ANTLR3_UINT32 alt57;
 
-            alt48=30;
+            alt57=31;
 
             switch ( LA(1) )
             {
@@ -9969,22 +10965,27 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		{
             		case AS_TOK:
             			{
-            				alt48=2;
+            				alt57=2;
             			}
             		    break;
             		case LET_TOK:
             			{
-            				alt48=6;
+            				alt57=6;
+            			}
+            		    break;
+            		case MATCH_TOK:
+            			{
+            				alt57=7;
             			}
             		    break;
             		case ATTRIBUTE_TOK:
             			{
-            				alt48=9;
+            				alt57=10;
             			}
             		    break;
             		case INDEX_TOK:
             			{
-            				alt48=12;
+            				alt57=13;
             			}
             		    break;
             		case AND_TOK:
@@ -10009,13 +11010,13 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		case STAR_TOK:
             		case XOR_TOK:
             			{
-            				alt48=1;
+            				alt57=1;
             			}
             		    break;
             		case EXISTS_TOK:
             		case FORALL_TOK:
             			{
-            				alt48=3;
+            				alt57=3;
             			}
             		    break;
             		case CHECK_SYNTH_TOK:
@@ -10029,14 +11030,14 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		case SYNTH_FUN_TOK:
             		case SYNTH_INV_TOK:
             		case UNTERMINATED_QUOTED_SYMBOL:
-            		case 147:
+            		case 154:
             			{
-            				alt48=4;
+            				alt57=4;
             			}
             		    break;
             		case LPAREN_TOK:
             			{
-            				alt48=5;
+            				alt57=5;
             			}
             		    break;
 
@@ -10044,7 +11045,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		    CONSTRUCTEX();
             		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             		    EXCEPTION->message      = (void *)"";
-            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->decisionNum  = 57;
             		    EXCEPTION->state        = 1;
 
 
@@ -10060,7 +11061,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		{
             		case SYGUS_ENUM_CONS_TOK:
             			{
-            				alt48=7;
+            				alt57=8;
             			}
             		    break;
             		case EOF:
@@ -10104,9 +11105,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		case SYNTH_INV_TOK:
             		case UNIVSET_TOK:
             		case UNTERMINATED_QUOTED_SYMBOL:
-            		case 147:
+            		case 154:
             			{
-            				alt48=8;
+            				alt57=9;
             			}
             		    break;
 
@@ -10114,7 +11115,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		    CONSTRUCTEX();
             		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             		    EXCEPTION->message      = (void *)"";
-            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->decisionNum  = 57;
             		    EXCEPTION->state        = 2;
 
 
@@ -10124,13 +11125,13 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
             	}
                 break;
-            case 147:
+            case 154:
             	{
             		switch ( LA(2) )
             		{
             		case SYGUS_ENUM_CONS_TOK:
             			{
-            				alt48=7;
+            				alt57=8;
             			}
             		    break;
             		case EOF:
@@ -10174,9 +11175,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		case SYNTH_INV_TOK:
             		case UNIVSET_TOK:
             		case UNTERMINATED_QUOTED_SYMBOL:
-            		case 147:
+            		case 154:
             			{
-            				alt48=8;
+            				alt57=9;
             			}
             		    break;
 
@@ -10184,7 +11185,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		    CONSTRUCTEX();
             		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             		    EXCEPTION->message      = (void *)"";
-            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->decisionNum  = 57;
             		    EXCEPTION->state        = 3;
 
 
@@ -10200,7 +11201,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		{
             		case SYGUS_ENUM_CONS_TOK:
             			{
-            				alt48=7;
+            				alt57=8;
             			}
             		    break;
             		case EOF:
@@ -10244,9 +11245,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		case SYNTH_INV_TOK:
             		case UNIVSET_TOK:
             		case UNTERMINATED_QUOTED_SYMBOL:
-            		case 147:
+            		case 154:
             			{
-            				alt48=8;
+            				alt57=9;
             			}
             		    break;
 
@@ -10254,7 +11255,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		    CONSTRUCTEX();
             		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             		    EXCEPTION->message      = (void *)"";
-            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->decisionNum  = 57;
             		    EXCEPTION->state        = 4;
 
 
@@ -10270,7 +11271,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		{
             		case SYGUS_ENUM_CONS_TOK:
             			{
-            				alt48=7;
+            				alt57=8;
             			}
             		    break;
             		case EOF:
@@ -10314,9 +11315,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		case SYNTH_INV_TOK:
             		case UNIVSET_TOK:
             		case UNTERMINATED_QUOTED_SYMBOL:
-            		case 147:
+            		case 154:
             			{
-            				alt48=8;
+            				alt57=9;
             			}
             		    break;
 
@@ -10324,7 +11325,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		    CONSTRUCTEX();
             		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             		    EXCEPTION->message      = (void *)"";
-            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->decisionNum  = 57;
             		    EXCEPTION->state        = 5;
 
 
@@ -10340,7 +11341,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		{
             		case SYGUS_ENUM_CONS_TOK:
             			{
-            				alt48=7;
+            				alt57=8;
             			}
             		    break;
             		case EOF:
@@ -10384,9 +11385,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		case SYNTH_INV_TOK:
             		case UNIVSET_TOK:
             		case UNTERMINATED_QUOTED_SYMBOL:
-            		case 147:
+            		case 154:
             			{
-            				alt48=8;
+            				alt57=9;
             			}
             		    break;
 
@@ -10394,7 +11395,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		    CONSTRUCTEX();
             		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             		    EXCEPTION->message      = (void *)"";
-            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->decisionNum  = 57;
             		    EXCEPTION->state        = 6;
 
 
@@ -10410,7 +11411,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		{
             		case SYGUS_ENUM_CONS_TOK:
             			{
-            				alt48=7;
+            				alt57=8;
             			}
             		    break;
             		case EOF:
@@ -10454,9 +11455,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		case SYNTH_INV_TOK:
             		case UNIVSET_TOK:
             		case UNTERMINATED_QUOTED_SYMBOL:
-            		case 147:
+            		case 154:
             			{
-            				alt48=8;
+            				alt57=9;
             			}
             		    break;
 
@@ -10464,7 +11465,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		    CONSTRUCTEX();
             		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             		    EXCEPTION->message      = (void *)"";
-            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->decisionNum  = 57;
             		    EXCEPTION->state        = 7;
 
 
@@ -10480,7 +11481,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		{
             		case SYGUS_ENUM_CONS_TOK:
             			{
-            				alt48=7;
+            				alt57=8;
             			}
             		    break;
             		case EOF:
@@ -10524,9 +11525,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		case SYNTH_INV_TOK:
             		case UNIVSET_TOK:
             		case UNTERMINATED_QUOTED_SYMBOL:
-            		case 147:
+            		case 154:
             			{
-            				alt48=8;
+            				alt57=9;
             			}
             		    break;
 
@@ -10534,7 +11535,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		    CONSTRUCTEX();
             		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             		    EXCEPTION->message      = (void *)"";
-            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->decisionNum  = 57;
             		    EXCEPTION->state        = 8;
 
 
@@ -10550,7 +11551,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		{
             		case SYGUS_ENUM_CONS_TOK:
             			{
-            				alt48=7;
+            				alt57=8;
             			}
             		    break;
             		case EOF:
@@ -10594,9 +11595,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		case SYNTH_INV_TOK:
             		case UNIVSET_TOK:
             		case UNTERMINATED_QUOTED_SYMBOL:
-            		case 147:
+            		case 154:
             			{
-            				alt48=8;
+            				alt57=9;
             			}
             		    break;
 
@@ -10604,7 +11605,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		    CONSTRUCTEX();
             		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             		    EXCEPTION->message      = (void *)"";
-            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->decisionNum  = 57;
             		    EXCEPTION->state        = 9;
 
 
@@ -10620,7 +11621,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		{
             		case SYGUS_ENUM_CONS_TOK:
             			{
-            				alt48=7;
+            				alt57=8;
             			}
             		    break;
             		case EOF:
@@ -10664,9 +11665,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		case SYNTH_INV_TOK:
             		case UNIVSET_TOK:
             		case UNTERMINATED_QUOTED_SYMBOL:
-            		case 147:
+            		case 154:
             			{
-            				alt48=8;
+            				alt57=9;
             			}
             		    break;
 
@@ -10674,7 +11675,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		    CONSTRUCTEX();
             		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             		    EXCEPTION->message      = (void *)"";
-            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->decisionNum  = 57;
             		    EXCEPTION->state        = 10;
 
 
@@ -10690,7 +11691,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		{
             		case SYGUS_ENUM_CONS_TOK:
             			{
-            				alt48=7;
+            				alt57=8;
             			}
             		    break;
             		case EOF:
@@ -10734,9 +11735,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		case SYNTH_INV_TOK:
             		case UNIVSET_TOK:
             		case UNTERMINATED_QUOTED_SYMBOL:
-            		case 147:
+            		case 154:
             			{
-            				alt48=8;
+            				alt57=9;
             			}
             		    break;
 
@@ -10744,7 +11745,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		    CONSTRUCTEX();
             		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             		    EXCEPTION->message      = (void *)"";
-            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->decisionNum  = 57;
             		    EXCEPTION->state        = 11;
 
 
@@ -10760,7 +11761,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		{
             		case SYGUS_ENUM_CONS_TOK:
             			{
-            				alt48=7;
+            				alt57=8;
             			}
             		    break;
             		case EOF:
@@ -10804,9 +11805,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		case SYNTH_INV_TOK:
             		case UNIVSET_TOK:
             		case UNTERMINATED_QUOTED_SYMBOL:
-            		case 147:
+            		case 154:
             			{
-            				alt48=8;
+            				alt57=9;
             			}
             		    break;
 
@@ -10814,7 +11815,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		    CONSTRUCTEX();
             		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             		    EXCEPTION->message      = (void *)"";
-            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->decisionNum  = 57;
             		    EXCEPTION->state        = 12;
 
 
@@ -10830,12 +11831,12 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		{
             		case EOF:
             			{
-            				alt48=7;
+            				alt57=8;
             			}
             		    break;
-            		case 145:
+            		case 152:
             			{
-            				alt48=7;
+            				alt57=8;
             			}
             		    break;
 
@@ -10843,7 +11844,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
             		    CONSTRUCTEX();
             		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
             		    EXCEPTION->message      = (void *)"";
-            		    EXCEPTION->decisionNum  = 48;
+            		    EXCEPTION->decisionNum  = 57;
             		    EXCEPTION->state        = 13;
 
 
@@ -10855,103 +11856,103 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
                 break;
             case INTEGER_LITERAL:
             	{
-            		alt48=10;
+            		alt57=11;
             	}
                 break;
             case DECIMAL_LITERAL:
             	{
-            		alt48=11;
+            		alt57=12;
             	}
                 break;
             case HEX_LITERAL:
             	{
-            		alt48=13;
+            		alt57=14;
             	}
                 break;
             case BINARY_LITERAL:
             	{
-            		alt48=14;
+            		alt57=15;
             	}
                 break;
             case STRING_LITERAL_2_0:
             case STRING_LITERAL_2_5:
             	{
-            		alt48=15;
+            		alt57=16;
             	}
                 break;
             case FP_RNE_TOK:
             	{
-            		alt48=16;
+            		alt57=17;
             	}
                 break;
             case FP_RNA_TOK:
             	{
-            		alt48=17;
+            		alt57=18;
             	}
                 break;
             case FP_RTP_TOK:
             	{
-            		alt48=18;
+            		alt57=19;
             	}
                 break;
             case FP_RTN_TOK:
             	{
-            		alt48=19;
+            		alt57=20;
             	}
                 break;
             case FP_RTZ_TOK:
             	{
-            		alt48=20;
+            		alt57=21;
             	}
                 break;
             case FP_RNE_FULL_TOK:
             	{
-            		alt48=21;
+            		alt57=22;
             	}
                 break;
             case FP_RNA_FULL_TOK:
             	{
-            		alt48=22;
+            		alt57=23;
             	}
                 break;
             case FP_RTP_FULL_TOK:
             	{
-            		alt48=23;
+            		alt57=24;
             	}
                 break;
             case FP_RTN_FULL_TOK:
             	{
-            		alt48=24;
+            		alt57=25;
             	}
                 break;
             case FP_RTZ_FULL_TOK:
             	{
-            		alt48=25;
+            		alt57=26;
             	}
                 break;
             case RENOSTR_TOK:
             	{
-            		alt48=26;
+            		alt57=27;
             	}
                 break;
             case REALLCHAR_TOK:
             	{
-            		alt48=27;
+            		alt57=28;
             	}
                 break;
             case EMPTYSET_TOK:
             	{
-            		alt48=28;
+            		alt57=29;
             	}
                 break;
             case UNIVSET_TOK:
             	{
-            		alt48=29;
+            		alt57=30;
             	}
                 break;
             case NILREF_TOK:
             	{
-            		alt48=30;
+            		alt57=31;
             	}
                 break;
 
@@ -10959,7 +11960,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
                 CONSTRUCTEX();
                 EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
                 EXCEPTION->message      = (void *)"";
-                EXCEPTION->decisionNum  = 48;
+                EXCEPTION->decisionNum  = 57;
                 EXCEPTION->state        = 0;
 
 
@@ -10967,19 +11968,19 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
             }
 
-            switch (alt48)
+            switch (alt57)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1735:5: LPAREN_TOK builtinOp[kind] termList[args,expr] RPAREN_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:1812:5: LPAREN_TOK builtinOp[kind] termList[args,expr] RPAREN_TOK
         	    {
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3354);
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3652);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_builtinOp_in_term3356);
+        	        FOLLOWPUSH(FOLLOW_builtinOp_in_term3654);
         	        builtinOp(ctx, kind);
 
         	        FOLLOWPOP();
@@ -10989,7 +11990,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_termList_in_term3359);
+        	        FOLLOWPUSH(FOLLOW_termList_in_term3657);
         	        termList(ctx, args, expr);
 
         	        FOLLOWPOP();
@@ -10999,7 +12000,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        }
 
 
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3362);
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3660);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -11056,23 +12057,23 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1779:5: LPAREN_TOK AS_TOK term[f, f2] sortSymbol[type, CHECK_DECLARED] RPAREN_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:1856:5: LPAREN_TOK AS_TOK term[f, f2] sortSymbol[type, CHECK_DECLARED] RPAREN_TOK
         	    {
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3374);
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3672);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
         	        }
 
 
-        	         MATCHT(AS_TOK, &FOLLOW_AS_TOK_in_term3376);
+        	         MATCHT(AS_TOK, &FOLLOW_AS_TOK_in_term3674);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_term_in_term3378);
+        	        FOLLOWPUSH(FOLLOW_term_in_term3676);
         	        term(ctx, f, f2);
 
         	        FOLLOWPOP();
@@ -11082,7 +12083,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_term3381);
+        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_term3679);
         	        sortSymbol(ctx, type, CHECK_DECLARED);
 
         	        FOLLOWPOP();
@@ -11092,7 +12093,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        }
 
 
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3384);
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3682);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -11115,12 +12116,12 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	                                      << f2 << " " << type <<  std::endl;
         	                    expr = MK_CONST( ::CVC4::EmptySet(type) );
         	                  } else if(f.getKind() == CVC4::kind::UNIVERSE_SET) {
-        	                    expr = EXPR_MANAGER->mkUniqueVar(type, kind::UNIVERSE_SET);
+        	                    expr = EXPR_MANAGER->mkNullaryOperator(type, kind::UNIVERSE_SET);
         	                  } else if(f.getKind() == CVC4::kind::SEP_NIL) {
         	                    //We don't want the nil reference to be a constant: for instance, it
         	                    //could be of type Int but is not a const rational. However, the
         	                    //expression has 0 children. So we convert to a SEP_NIL variable.
-        	                    expr = EXPR_MANAGER->mkUniqueVar(type, kind::SEP_NIL);
+        	                    expr = EXPR_MANAGER->mkNullaryOperator(type, kind::SEP_NIL);
         	                  } else {
         	                    if(f.getType() != type) {
         	                      PARSER_STATE->parseError("Type ascription not satisfied.");
@@ -11133,16 +12134,16 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1807:5: LPAREN_TOK quantOp[kind] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK term[f, f2] RPAREN_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:1884:5: LPAREN_TOK quantOp[kind] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK term[f, f2] RPAREN_TOK
         	    {
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3396);
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3694);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_quantOp_in_term3398);
+        	        FOLLOWPUSH(FOLLOW_quantOp_in_term3696);
         	        quantOp(ctx, kind);
 
         	        FOLLOWPOP();
@@ -11152,14 +12153,14 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        }
 
 
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3405);
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3703);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_sortedVarList_in_term3407);
+        	        FOLLOWPUSH(FOLLOW_sortedVarList_in_term3705);
         	        sortedVarList(ctx, sortedVarNames);
 
         	        FOLLOWPOP();
@@ -11169,7 +12170,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        }
 
 
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3410);
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3708);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -11192,7 +12193,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_term_in_term3422);
+        	        FOLLOWPUSH(FOLLOW_term_in_term3720);
         	        term(ctx, f, f2);
 
         	        FOLLOWPOP();
@@ -11202,7 +12203,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        }
 
 
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3425);
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3723);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -11238,16 +12239,16 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1844:5: LPAREN_TOK functionName[name, CHECK_NONE] termList[args,expr] RPAREN_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:1921:5: LPAREN_TOK functionName[name, CHECK_NONE] termList[args,expr] RPAREN_TOK
         	    {
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3437);
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3735);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_functionName_in_term3439);
+        	        FOLLOWPUSH(FOLLOW_functionName_in_term3737);
         	        functionName(ctx, name, CHECK_NONE);
 
         	        FOLLOWPOP();
@@ -11294,7 +12295,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_termList_in_term3457);
+        	        FOLLOWPUSH(FOLLOW_termList_in_term3755);
         	        termList(ctx, args, expr);
 
         	        FOLLOWPOP();
@@ -11304,7 +12305,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        }
 
 
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3460);
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3758);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -11328,18 +12329,18 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1891:5: LPAREN_TOK ( indexedFunctionName[op] termList[args,expr] RPAREN_TOK | LPAREN_TOK AS_TOK CONST_TOK sortSymbol[type, CHECK_DECLARED] RPAREN_TOK term[f, f2] RPAREN_TOK )
+        	    // ../../../../src/parser/smt2/Smt2.g:1968:5: LPAREN_TOK ( indexedFunctionName[op, kind] termList[args,expr] RPAREN_TOK | LPAREN_TOK AS_TOK CONST_TOK sortSymbol[type, CHECK_DECLARED] RPAREN_TOK term[f, f2] RPAREN_TOK )
         	    {
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3473);
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3771);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:1892:5: ( indexedFunctionName[op] termList[args,expr] RPAREN_TOK | LPAREN_TOK AS_TOK CONST_TOK sortSymbol[type, CHECK_DECLARED] RPAREN_TOK term[f, f2] RPAREN_TOK )
+        	        // ../../../../src/parser/smt2/Smt2.g:1969:5: ( indexedFunctionName[op, kind] termList[args,expr] RPAREN_TOK | LPAREN_TOK AS_TOK CONST_TOK sortSymbol[type, CHECK_DECLARED] RPAREN_TOK term[f, f2] RPAREN_TOK )
         	        {
-        	            int alt43=2;
+        	            int alt50=2;
         	            switch ( LA(1) )
         	            {
         	            case LPAREN_TOK:
@@ -11348,12 +12349,12 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	            		{
         	            		case INDEX_TOK:
         	            			{
-        	            				alt43=1;
+        	            				alt50=1;
         	            			}
         	            		    break;
         	            		case AS_TOK:
         	            			{
-        	            				alt43=2;
+        	            				alt50=2;
         	            			}
         	            		    break;
 
@@ -11361,7 +12362,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	            		    CONSTRUCTEX();
         	            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
         	            		    EXCEPTION->message      = (void *)"";
-        	            		    EXCEPTION->decisionNum  = 43;
+        	            		    EXCEPTION->decisionNum  = 50;
         	            		    EXCEPTION->state        = 1;
 
 
@@ -11376,7 +12377,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	                CONSTRUCTEX();
         	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
         	                EXCEPTION->message      = (void *)"";
-        	                EXCEPTION->decisionNum  = 43;
+        	                EXCEPTION->decisionNum  = 50;
         	                EXCEPTION->state        = 0;
 
 
@@ -11384,13 +12385,13 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	            }
 
-        	            switch (alt43)
+        	            switch (alt50)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1893:7: indexedFunctionName[op] termList[args,expr] RPAREN_TOK
+        	        	    // ../../../../src/parser/smt2/Smt2.g:1970:7: indexedFunctionName[op, kind] termList[args,expr] RPAREN_TOK
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_indexedFunctionName_in_term3489);
-        	        	        indexedFunctionName(ctx, op);
+        	        	        FOLLOWPUSH(FOLLOW_indexedFunctionName_in_term3787);
+        	        	        indexedFunctionName(ctx, op, kind);
 
         	        	        FOLLOWPOP();
         	        	        if  (HASEXCEPTION())
@@ -11399,7 +12400,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	        }
 
 
-        	        	        FOLLOWPUSH(FOLLOW_termList_in_term3492);
+        	        	        FOLLOWPUSH(FOLLOW_termList_in_term3790);
         	        	        termList(ctx, args, expr);
 
         	        	        FOLLOWPOP();
@@ -11409,7 +12410,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	        }
 
 
-        	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3495);
+        	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3793);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruletermEx;
@@ -11417,7 +12418,12 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
 
         	        	        {
-        	        	             expr = MK_EXPR(op, args);
+        	        	             
+        	        	                    if( kind!=kind::NULL_EXPR ){
+        	        	                      expr = MK_EXPR( kind, op, args );
+        	        	                    }else{
+        	        	                      expr = MK_EXPR(op, args);
+        	        	                    }
         	        	                    PARSER_STATE->checkOperator(expr.getKind(), args.size());
         	        	                  
         	        	        }
@@ -11426,30 +12432,30 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:1898:7: LPAREN_TOK AS_TOK CONST_TOK sortSymbol[type, CHECK_DECLARED] RPAREN_TOK term[f, f2] RPAREN_TOK
+        	        	    // ../../../../src/parser/smt2/Smt2.g:1980:7: LPAREN_TOK AS_TOK CONST_TOK sortSymbol[type, CHECK_DECLARED] RPAREN_TOK term[f, f2] RPAREN_TOK
         	        	    {
-        	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3519);
+        	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3817);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruletermEx;
         	        	        }
 
 
-        	        	         MATCHT(AS_TOK, &FOLLOW_AS_TOK_in_term3521);
+        	        	         MATCHT(AS_TOK, &FOLLOW_AS_TOK_in_term3819);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruletermEx;
         	        	        }
 
 
-        	        	         MATCHT(CONST_TOK, &FOLLOW_CONST_TOK_in_term3523);
+        	        	         MATCHT(CONST_TOK, &FOLLOW_CONST_TOK_in_term3821);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruletermEx;
         	        	        }
 
 
-        	        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_term3525);
+        	        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_term3823);
         	        	        sortSymbol(ctx, type, CHECK_DECLARED);
 
         	        	        FOLLOWPOP();
@@ -11459,14 +12465,14 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	        }
 
 
-        	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3534);
+        	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3832);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruletermEx;
         	        	        }
 
 
-        	        	        FOLLOWPUSH(FOLLOW_term_in_term3536);
+        	        	        FOLLOWPUSH(FOLLOW_term_in_term3834);
         	        	        term(ctx, f, f2);
 
         	        	        FOLLOWPOP();
@@ -11476,7 +12482,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	        }
 
 
-        	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3539);
+        	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3837);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruletermEx;
@@ -11522,23 +12528,23 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1928:5: LPAREN_TOK LET_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] ( term[expr, f2] | sortSymbol[type,CHECK_DECLARED] term[expr, f2] ) RPAREN_TOK )+ RPAREN_TOK term[expr, f2] RPAREN_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2010:5: LPAREN_TOK LET_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] ( term[expr, f2] | sortSymbol[type,CHECK_DECLARED] term[expr, f2] ) RPAREN_TOK )+ RPAREN_TOK term[expr, f2] RPAREN_TOK
         	    {
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3565);
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3863);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
         	        }
 
 
-        	         MATCHT(LET_TOK, &FOLLOW_LET_TOK_in_term3567);
+        	         MATCHT(LET_TOK, &FOLLOW_LET_TOK_in_term3865);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
         	        }
 
 
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3569);
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3867);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -11550,36 +12556,36 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:1930:5: ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] ( term[expr, f2] | sortSymbol[type,CHECK_DECLARED] term[expr, f2] ) RPAREN_TOK )+
+        	        // ../../../../src/parser/smt2/Smt2.g:2012:5: ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] ( term[expr, f2] | sortSymbol[type,CHECK_DECLARED] term[expr, f2] ) RPAREN_TOK )+
         	        {
-        	            int cnt45=0;
+        	            int cnt52=0;
 
         	            for (;;)
         	            {
-        	                int alt45=2;
+        	                int alt52=2;
         	        	switch ( LA(1) )
         	        	{
         	        	case LPAREN_TOK:
         	        		{
-        	        			alt45=1;
+        	        			alt52=1;
         	        		}
         	        	    break;
 
         	        	}
 
-        	        	switch (alt45)
+        	        	switch (alt52)
         	        	{
         	        	    case 1:
-        	        	        // ../../../../../../src/parser/smt2/Smt2.g:1930:7: LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] ( term[expr, f2] | sortSymbol[type,CHECK_DECLARED] term[expr, f2] ) RPAREN_TOK
+        	        	        // ../../../../src/parser/smt2/Smt2.g:2012:7: LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] ( term[expr, f2] | sortSymbol[type,CHECK_DECLARED] term[expr, f2] ) RPAREN_TOK
         	        	        {
-        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3583);
+        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3881);
         	        	            if  (HASEXCEPTION())
         	        	            {
         	        	                goto ruletermEx;
         	        	            }
 
 
-        	        	            FOLLOWPUSH(FOLLOW_symbol_in_term3585);
+        	        	            FOLLOWPUSH(FOLLOW_symbol_in_term3883);
         	        	            symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
 
         	        	            FOLLOWPOP();
@@ -11589,9 +12595,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	            }
 
 
-        	        	            // ../../../../../../src/parser/smt2/Smt2.g:1931:7: ( term[expr, f2] | sortSymbol[type,CHECK_DECLARED] term[expr, f2] )
+        	        	            // ../../../../src/parser/smt2/Smt2.g:2013:7: ( term[expr, f2] | sortSymbol[type,CHECK_DECLARED] term[expr, f2] )
         	        	            {
-        	        	                int alt44=2;
+        	        	                int alt51=2;
         	        	                switch ( LA(1) )
         	        	                {
         	        	                case LPAREN_TOK:
@@ -11619,6 +12625,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case LESS_THAN_TOK:
         	        	                		case LET_TOK:
         	        	                		case LPAREN_TOK:
+        	        	                		case MATCH_TOK:
         	        	                		case MINUS_TOK:
         	        	                		case NOT_TOK:
         	        	                		case OR_TOK:
@@ -11626,72 +12633,72 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case STAR_TOK:
         	        	                		case XOR_TOK:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case INDEX_TOK:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case SIMPLE_SYMBOL:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
-        	        	                		case 147:
+        	        	                		case 154:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case SET_OPTIONS_TOK:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case DECLARE_VAR_TOK:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case DECLARE_PRIMED_VAR_TOK:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case SYNTH_FUN_TOK:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case SYNTH_INV_TOK:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case CONSTRAINT_TOK:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case INV_CONSTRAINT_TOK:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case CHECK_SYNTH_TOK:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case QUOTED_SYMBOL:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case UNTERMINATED_QUOTED_SYMBOL:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
 
@@ -11699,7 +12706,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		    CONSTRUCTEX();
         	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
         	        	                		    EXCEPTION->message      = (void *)"";
-        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->decisionNum  = 51;
         	        	                		    EXCEPTION->state        = 1;
 
 
@@ -11716,7 +12723,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case RPAREN_TOK:
         	        	                		case SYGUS_ENUM_CONS_TOK:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case BINARY_LITERAL:
@@ -11752,9 +12759,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case SYNTH_INV_TOK:
         	        	                		case UNIVSET_TOK:
         	        	                		case UNTERMINATED_QUOTED_SYMBOL:
-        	        	                		case 147:
+        	        	                		case 154:
         	        	                			{
-        	        	                				alt44=2;
+        	        	                				alt51=2;
         	        	                			}
         	        	                		    break;
 
@@ -11762,7 +12769,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		    CONSTRUCTEX();
         	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
         	        	                		    EXCEPTION->message      = (void *)"";
-        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->decisionNum  = 51;
         	        	                		    EXCEPTION->state        = 2;
 
 
@@ -11772,14 +12779,14 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	        	                	}
         	        	                    break;
-        	        	                case 147:
+        	        	                case 154:
         	        	                	{
         	        	                		switch ( LA(2) )
         	        	                		{
         	        	                		case RPAREN_TOK:
         	        	                		case SYGUS_ENUM_CONS_TOK:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case BINARY_LITERAL:
@@ -11815,9 +12822,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case SYNTH_INV_TOK:
         	        	                		case UNIVSET_TOK:
         	        	                		case UNTERMINATED_QUOTED_SYMBOL:
-        	        	                		case 147:
+        	        	                		case 154:
         	        	                			{
-        	        	                				alt44=2;
+        	        	                				alt51=2;
         	        	                			}
         	        	                		    break;
 
@@ -11825,7 +12832,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		    CONSTRUCTEX();
         	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
         	        	                		    EXCEPTION->message      = (void *)"";
-        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->decisionNum  = 51;
         	        	                		    EXCEPTION->state        = 3;
 
 
@@ -11842,7 +12849,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case RPAREN_TOK:
         	        	                		case SYGUS_ENUM_CONS_TOK:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case BINARY_LITERAL:
@@ -11878,9 +12885,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case SYNTH_INV_TOK:
         	        	                		case UNIVSET_TOK:
         	        	                		case UNTERMINATED_QUOTED_SYMBOL:
-        	        	                		case 147:
+        	        	                		case 154:
         	        	                			{
-        	        	                				alt44=2;
+        	        	                				alt51=2;
         	        	                			}
         	        	                		    break;
 
@@ -11888,7 +12895,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		    CONSTRUCTEX();
         	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
         	        	                		    EXCEPTION->message      = (void *)"";
-        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->decisionNum  = 51;
         	        	                		    EXCEPTION->state        = 4;
 
 
@@ -11905,7 +12912,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case RPAREN_TOK:
         	        	                		case SYGUS_ENUM_CONS_TOK:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case BINARY_LITERAL:
@@ -11941,9 +12948,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case SYNTH_INV_TOK:
         	        	                		case UNIVSET_TOK:
         	        	                		case UNTERMINATED_QUOTED_SYMBOL:
-        	        	                		case 147:
+        	        	                		case 154:
         	        	                			{
-        	        	                				alt44=2;
+        	        	                				alt51=2;
         	        	                			}
         	        	                		    break;
 
@@ -11951,7 +12958,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		    CONSTRUCTEX();
         	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
         	        	                		    EXCEPTION->message      = (void *)"";
-        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->decisionNum  = 51;
         	        	                		    EXCEPTION->state        = 5;
 
 
@@ -11968,7 +12975,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case RPAREN_TOK:
         	        	                		case SYGUS_ENUM_CONS_TOK:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case BINARY_LITERAL:
@@ -12004,9 +13011,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case SYNTH_INV_TOK:
         	        	                		case UNIVSET_TOK:
         	        	                		case UNTERMINATED_QUOTED_SYMBOL:
-        	        	                		case 147:
+        	        	                		case 154:
         	        	                			{
-        	        	                				alt44=2;
+        	        	                				alt51=2;
         	        	                			}
         	        	                		    break;
 
@@ -12014,7 +13021,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		    CONSTRUCTEX();
         	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
         	        	                		    EXCEPTION->message      = (void *)"";
-        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->decisionNum  = 51;
         	        	                		    EXCEPTION->state        = 6;
 
 
@@ -12031,7 +13038,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case RPAREN_TOK:
         	        	                		case SYGUS_ENUM_CONS_TOK:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case BINARY_LITERAL:
@@ -12067,9 +13074,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case SYNTH_INV_TOK:
         	        	                		case UNIVSET_TOK:
         	        	                		case UNTERMINATED_QUOTED_SYMBOL:
-        	        	                		case 147:
+        	        	                		case 154:
         	        	                			{
-        	        	                				alt44=2;
+        	        	                				alt51=2;
         	        	                			}
         	        	                		    break;
 
@@ -12077,7 +13084,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		    CONSTRUCTEX();
         	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
         	        	                		    EXCEPTION->message      = (void *)"";
-        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->decisionNum  = 51;
         	        	                		    EXCEPTION->state        = 7;
 
 
@@ -12094,7 +13101,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case RPAREN_TOK:
         	        	                		case SYGUS_ENUM_CONS_TOK:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case BINARY_LITERAL:
@@ -12130,9 +13137,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case SYNTH_INV_TOK:
         	        	                		case UNIVSET_TOK:
         	        	                		case UNTERMINATED_QUOTED_SYMBOL:
-        	        	                		case 147:
+        	        	                		case 154:
         	        	                			{
-        	        	                				alt44=2;
+        	        	                				alt51=2;
         	        	                			}
         	        	                		    break;
 
@@ -12140,7 +13147,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		    CONSTRUCTEX();
         	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
         	        	                		    EXCEPTION->message      = (void *)"";
-        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->decisionNum  = 51;
         	        	                		    EXCEPTION->state        = 8;
 
 
@@ -12157,7 +13164,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case RPAREN_TOK:
         	        	                		case SYGUS_ENUM_CONS_TOK:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case BINARY_LITERAL:
@@ -12193,9 +13200,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case SYNTH_INV_TOK:
         	        	                		case UNIVSET_TOK:
         	        	                		case UNTERMINATED_QUOTED_SYMBOL:
-        	        	                		case 147:
+        	        	                		case 154:
         	        	                			{
-        	        	                				alt44=2;
+        	        	                				alt51=2;
         	        	                			}
         	        	                		    break;
 
@@ -12203,7 +13210,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		    CONSTRUCTEX();
         	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
         	        	                		    EXCEPTION->message      = (void *)"";
-        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->decisionNum  = 51;
         	        	                		    EXCEPTION->state        = 9;
 
 
@@ -12220,7 +13227,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case RPAREN_TOK:
         	        	                		case SYGUS_ENUM_CONS_TOK:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case BINARY_LITERAL:
@@ -12256,9 +13263,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case SYNTH_INV_TOK:
         	        	                		case UNIVSET_TOK:
         	        	                		case UNTERMINATED_QUOTED_SYMBOL:
-        	        	                		case 147:
+        	        	                		case 154:
         	        	                			{
-        	        	                				alt44=2;
+        	        	                				alt51=2;
         	        	                			}
         	        	                		    break;
 
@@ -12266,7 +13273,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		    CONSTRUCTEX();
         	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
         	        	                		    EXCEPTION->message      = (void *)"";
-        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->decisionNum  = 51;
         	        	                		    EXCEPTION->state        = 10;
 
 
@@ -12283,7 +13290,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case RPAREN_TOK:
         	        	                		case SYGUS_ENUM_CONS_TOK:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case BINARY_LITERAL:
@@ -12319,9 +13326,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case SYNTH_INV_TOK:
         	        	                		case UNIVSET_TOK:
         	        	                		case UNTERMINATED_QUOTED_SYMBOL:
-        	        	                		case 147:
+        	        	                		case 154:
         	        	                			{
-        	        	                				alt44=2;
+        	        	                				alt51=2;
         	        	                			}
         	        	                		    break;
 
@@ -12329,7 +13336,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		    CONSTRUCTEX();
         	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
         	        	                		    EXCEPTION->message      = (void *)"";
-        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->decisionNum  = 51;
         	        	                		    EXCEPTION->state        = 11;
 
 
@@ -12346,7 +13353,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case RPAREN_TOK:
         	        	                		case SYGUS_ENUM_CONS_TOK:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
         	        	                		case BINARY_LITERAL:
@@ -12382,9 +13389,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		case SYNTH_INV_TOK:
         	        	                		case UNIVSET_TOK:
         	        	                		case UNTERMINATED_QUOTED_SYMBOL:
-        	        	                		case 147:
+        	        	                		case 154:
         	        	                			{
-        	        	                				alt44=2;
+        	        	                				alt51=2;
         	        	                			}
         	        	                		    break;
 
@@ -12392,7 +13399,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		    CONSTRUCTEX();
         	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
         	        	                		    EXCEPTION->message      = (void *)"";
-        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->decisionNum  = 51;
         	        	                		    EXCEPTION->state        = 12;
 
 
@@ -12408,12 +13415,12 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		{
         	        	                		case EOF:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
-        	        	                		case 145:
+        	        	                		case 152:
         	        	                			{
-        	        	                				alt44=1;
+        	        	                				alt51=1;
         	        	                			}
         	        	                		    break;
 
@@ -12421,7 +13428,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                		    CONSTRUCTEX();
         	        	                		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
         	        	                		    EXCEPTION->message      = (void *)"";
-        	        	                		    EXCEPTION->decisionNum  = 44;
+        	        	                		    EXCEPTION->decisionNum  = 51;
         	        	                		    EXCEPTION->state        = 13;
 
 
@@ -12453,29 +13460,376 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	                case STRING_LITERAL_2_5:
         	        	                case UNIVSET_TOK:
         	        	                	{
-        	        	                		alt44=1;
+        	        	                		alt51=1;
         	        	                	}
         	        	                    break;
 
-        	        	                default:
-        	        	                    CONSTRUCTEX();
-        	        	                    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
-        	        	                    EXCEPTION->message      = (void *)"";
-        	        	                    EXCEPTION->decisionNum  = 44;
-        	        	                    EXCEPTION->state        = 0;
+        	        	                default:
+        	        	                    CONSTRUCTEX();
+        	        	                    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
+        	        	                    EXCEPTION->message      = (void *)"";
+        	        	                    EXCEPTION->decisionNum  = 51;
+        	        	                    EXCEPTION->state        = 0;
+
+
+        	        	                    goto ruletermEx;
+
+        	        	                }
+
+        	        	                switch (alt51)
+        	        	                {
+        	        	            	case 1:
+        	        	            	    // ../../../../src/parser/smt2/Smt2.g:2013:8: term[expr, f2]
+        	        	            	    {
+        	        	            	        FOLLOWPUSH(FOLLOW_term_in_term3893);
+        	        	            	        term(ctx, expr, f2);
+
+        	        	            	        FOLLOWPOP();
+        	        	            	        if  (HASEXCEPTION())
+        	        	            	        {
+        	        	            	            goto ruletermEx;
+        	        	            	        }
+
+
+        	        	            	    }
+        	        	            	    break;
+        	        	            	case 2:
+        	        	            	    // ../../../../src/parser/smt2/Smt2.g:2013:25: sortSymbol[type,CHECK_DECLARED] term[expr, f2]
+        	        	            	    {
+        	        	            	        FOLLOWPUSH(FOLLOW_sortSymbol_in_term3898);
+        	        	            	        sortSymbol(ctx, type, CHECK_DECLARED);
+
+        	        	            	        FOLLOWPOP();
+        	        	            	        if  (HASEXCEPTION())
+        	        	            	        {
+        	        	            	            goto ruletermEx;
+        	        	            	        }
+
+
+        	        	            	        {
+        	        	            	             readLetSort = true; 
+        	        	            	        }
+
+
+        	        	            	        FOLLOWPUSH(FOLLOW_term_in_term3910);
+        	        	            	        term(ctx, expr, f2);
+
+        	        	            	        FOLLOWPOP();
+        	        	            	        if  (HASEXCEPTION())
+        	        	            	        {
+        	        	            	            goto ruletermEx;
+        	        	            	        }
+
+
+        	        	            	    }
+        	        	            	    break;
+
+        	        	                }
+        	        	            }
+
+        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3927);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruletermEx;
+        	        	            }
+
+
+        	        	            {
+        	        	                 if( !PARSER_STATE->sygus() && readLetSort ){
+        	        	                          PARSER_STATE->parseError("Bad syntax for let term.");
+        	        	                        }else if(names.count(name) == 1) {
+        	        	                          std::stringstream ss;
+        	        	                          ss << "warning: symbol `" << name << "' bound multiple times by let;"
+        	        	                             << " the last binding will be used, shadowing earlier ones";
+        	        	                          PARSER_STATE->warning(ss.str());
+        	        	                        } else {
+        	        	                          names.insert(name);
+        	        	                        }
+        	        	                        binders.push_back(std::make_pair(name, expr)); 
+        	        	            }
+
+
+        	        	        }
+        	        	        break;
+
+        	        	    default:
+
+        	        		if ( cnt52 >= 1 )
+        	        		{
+        	        		    goto loop52;
+        	        		}
+        	        		/* mismatchedSetEx()
+        	        		 */
+        	        		CONSTRUCTEX();
+        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
+        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
+
+
+        	        		goto ruletermEx;
+        	        	}
+        	        	cnt52++;
+        	            }
+        	            loop52: ;	/* Jump to here if this rule does not match */
+        	        }
+
+        	        {
+        	             // now implement these bindings
+        	                  for(std::vector< std::pair<std::string, Expr> >::iterator
+        	                        i = binders.begin(); i != binders.end(); ++i) {
+        	                    PARSER_STATE->defineVar((*i).first, (*i).second);
+        	                  }
+        	                
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3964);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_term3970);
+        	        term(ctx, expr, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3977);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+        	             PARSER_STATE->popScope(); 
+        	        }
+
+
+        	    }
+        	    break;
+        	case 7:
+        	    // ../../../../src/parser/smt2/Smt2.g:2041:5: LPAREN_TOK MATCH_TOK term[expr, f2] LPAREN_TOK ( LPAREN_TOK INDEX_TOK term[f, f2] RPAREN_TOK | LPAREN_TOK LPAREN_TOK term[f, f2] ( symbol[name,CHECK_NONE,SYM_VARIABLE] )* RPAREN_TOK term[f3, f2] RPAREN_TOK | LPAREN_TOK symbol[name,CHECK_DECLARED,SYM_VARIABLE] term[f3, f2] RPAREN_TOK )+ RPAREN_TOK RPAREN_TOK
+        	    {
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3995);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	         MATCHT(MATCH_TOK, &FOLLOW_MATCH_TOK_in_term3997);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        FOLLOWPUSH(FOLLOW_term_in_term3999);
+        	        term(ctx, expr, f2);
+
+        	        FOLLOWPOP();
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        {
+
+        	                  if( !expr.getType().isDatatype() ){
+        	                    PARSER_STATE->parseError("Cannot match on non-datatype term.");
+        	                  }
+        	                
+        	        }
+
+
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term4008);
+        	        if  (HASEXCEPTION())
+        	        {
+        	            goto ruletermEx;
+        	        }
+
+
+        	        // ../../../../src/parser/smt2/Smt2.g:2047:5: ( LPAREN_TOK INDEX_TOK term[f, f2] RPAREN_TOK | LPAREN_TOK LPAREN_TOK term[f, f2] ( symbol[name,CHECK_NONE,SYM_VARIABLE] )* RPAREN_TOK term[f3, f2] RPAREN_TOK | LPAREN_TOK symbol[name,CHECK_DECLARED,SYM_VARIABLE] term[f3, f2] RPAREN_TOK )+
+        	        {
+        	            int cnt54=0;
+
+        	            for (;;)
+        	            {
+        	                int alt54=4;
+        	        	switch ( LA(1) )
+        	        	{
+        	        	case LPAREN_TOK:
+        	        		{
+        	        			switch ( LA(2) )
+        	        			{
+        	        			case INDEX_TOK:
+        	        				{
+        	        					alt54=1;
+        	        				}
+        	        			    break;
+        	        			case LPAREN_TOK:
+        	        				{
+        	        					alt54=2;
+        	        				}
+        	        			    break;
+        	        			case CHECK_SYNTH_TOK:
+        	        			case CONSTRAINT_TOK:
+        	        			case DECLARE_PRIMED_VAR_TOK:
+        	        			case DECLARE_VAR_TOK:
+        	        			case INV_CONSTRAINT_TOK:
+        	        			case QUOTED_SYMBOL:
+        	        			case SET_OPTIONS_TOK:
+        	        			case SIMPLE_SYMBOL:
+        	        			case SYNTH_FUN_TOK:
+        	        			case SYNTH_INV_TOK:
+        	        			case UNTERMINATED_QUOTED_SYMBOL:
+        	        			case 154:
+        	        				{
+        	        					alt54=3;
+        	        				}
+        	        			    break;
+
+        	        			}
+
+        	        		}
+        	        	    break;
+
+        	        	}
+
+        	        	switch (alt54)
+        	        	{
+        	        	    case 1:
+        	        	        // ../../../../src/parser/smt2/Smt2.g:2049:8: LPAREN_TOK INDEX_TOK term[f, f2] RPAREN_TOK
+        	        	        {
+        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term4032);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruletermEx;
+        	        	            }
+
+
+        	        	             MATCHT(INDEX_TOK, &FOLLOW_INDEX_TOK_in_term4034);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruletermEx;
+        	        	            }
+
+
+        	        	            FOLLOWPUSH(FOLLOW_term_in_term4036);
+        	        	            term(ctx, f, f2);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruletermEx;
+        	        	            }
+
+
+        	        	            {
+        	        	                 
+        	        	                          if( match_vindex==-1 ){
+        	        	                            match_vindex = (int)patexprs.size(); 
+        	        	                          }
+        	        	                          patexprs.push_back( f ); 
+        	        	                          patconds.push_back(MK_CONST(bool(true)));
+        	        	                        
+        	        	            }
+
+
+        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term4049);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruletermEx;
+        	        	            }
+
+
+        	        	        }
+        	        	        break;
+        	        	    case 2:
+        	        	        // ../../../../src/parser/smt2/Smt2.g:2057:9: LPAREN_TOK LPAREN_TOK term[f, f2] ( symbol[name,CHECK_NONE,SYM_VARIABLE] )* RPAREN_TOK term[f3, f2] RPAREN_TOK
+        	        	        {
+        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term4059);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruletermEx;
+        	        	            }
+
+
+        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term4061);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruletermEx;
+        	        	            }
 
 
-        	        	                    goto ruletermEx;
+        	        	            FOLLOWPUSH(FOLLOW_term_in_term4063);
+        	        	            term(ctx, f, f2);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruletermEx;
+        	        	            }
+
+
+        	        	            {
+        	        	                 
+        	        	                           args.clear(); 
+        	        	                           PARSER_STATE->pushScope(true); 
+        	        	                           //f should be a constructor
+        	        	                           type = f.getType();
+        	        	                           Debug("parser-dt") << "Pattern head : " << f << " " << f.getType() << std::endl;
+        	        	                           if( !type.isConstructor() ){
+        	        	                             PARSER_STATE->parseError("Pattern must be application of a constructor or a variable.");
+        	        	                           }
+        	        	                           if( Datatype::datatypeOf(f).isParametric() ){
+        	        	                             type = Datatype::datatypeOf(f)[Datatype::indexOf(f)].getSpecializedConstructorType(expr.getType());
+        	        	                           }
+        	        	                           match_ptypes = ((ConstructorType)type).getArgTypes();
+        	        	                         
+        	        	            }
+
+
+        	        	            // ../../../../src/parser/smt2/Smt2.g:2072:10: ( symbol[name,CHECK_NONE,SYM_VARIABLE] )*
+
+        	        	            for (;;)
+        	        	            {
+        	        	                int alt53=2;
+        	        	                switch ( LA(1) )
+        	        	                {
+        	        	                case CHECK_SYNTH_TOK:
+        	        	                case CONSTRAINT_TOK:
+        	        	                case DECLARE_PRIMED_VAR_TOK:
+        	        	                case DECLARE_VAR_TOK:
+        	        	                case INV_CONSTRAINT_TOK:
+        	        	                case QUOTED_SYMBOL:
+        	        	                case SET_OPTIONS_TOK:
+        	        	                case SIMPLE_SYMBOL:
+        	        	                case SYNTH_FUN_TOK:
+        	        	                case SYNTH_INV_TOK:
+        	        	                case UNTERMINATED_QUOTED_SYMBOL:
+        	        	                case 154:
+        	        	                	{
+        	        	                		alt53=1;
+        	        	                	}
+        	        	                    break;
 
         	        	                }
 
-        	        	                switch (alt44)
+        	        	                switch (alt53)
         	        	                {
         	        	            	case 1:
-        	        	            	    // ../../../../../../src/parser/smt2/Smt2.g:1931:8: term[expr, f2]
+        	        	            	    // ../../../../src/parser/smt2/Smt2.g:2072:12: symbol[name,CHECK_NONE,SYM_VARIABLE]
         	        	            	    {
-        	        	            	        FOLLOWPUSH(FOLLOW_term_in_term3595);
-        	        	            	        term(ctx, expr, f2);
+        	        	            	        FOLLOWPUSH(FOLLOW_symbol_in_term4089);
+        	        	            	        symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
 
         	        	            	        FOLLOWPOP();
         	        	            	        if  (HASEXCEPTION())
@@ -12484,43 +13838,96 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	            	        }
 
 
+        	        	            	        {
+
+        	        	            	                         if( args.size()>=match_ptypes.size() ){
+        	        	            	                           PARSER_STATE->parseError("Too many arguments for pattern.");
+        	        	            	                         }
+        	        	            	                         //make of proper type
+        	        	            	                         Expr arg = PARSER_STATE->mkBoundVar(name, match_ptypes[args.size()]);
+        	        	            	                         args.push_back( arg );
+        	        	            	                       
+        	        	            	        }
+
+
         	        	            	    }
         	        	            	    break;
-        	        	            	case 2:
-        	        	            	    // ../../../../../../src/parser/smt2/Smt2.g:1931:25: sortSymbol[type,CHECK_DECLARED] term[expr, f2]
-        	        	            	    {
-        	        	            	        FOLLOWPUSH(FOLLOW_sortSymbol_in_term3600);
-        	        	            	        sortSymbol(ctx, type, CHECK_DECLARED);
 
-        	        	            	        FOLLOWPOP();
-        	        	            	        if  (HASEXCEPTION())
-        	        	            	        {
-        	        	            	            goto ruletermEx;
-        	        	            	        }
+        	        	            	default:
+        	        	            	    goto loop53;	/* break out of the loop */
+        	        	            	    break;
+        	        	                }
+        	        	            }
+        	        	            loop53: ; /* Jump out to here if this rule does not match */
 
 
-        	        	            	        {
-        	        	            	             readLetSort = true; 
-        	        	            	        }
+        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term4115);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruletermEx;
+        	        	            }
 
 
-        	        	            	        FOLLOWPUSH(FOLLOW_term_in_term3612);
-        	        	            	        term(ctx, expr, f2);
+        	        	            FOLLOWPUSH(FOLLOW_term_in_term4126);
+        	        	            term(ctx, f3, f2);
 
-        	        	            	        FOLLOWPOP();
-        	        	            	        if  (HASEXCEPTION())
-        	        	            	        {
-        	        	            	            goto ruletermEx;
-        	        	            	        }
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruletermEx;
+        	        	            }
 
 
-        	        	            	    }
-        	        	            	    break;
+        	        	            {
+        	        	                 
+        	        	                           const DatatypeConstructor& dtc = Datatype::datatypeOf(f)[Datatype::indexOf(f)];
+        	        	                           if( args.size()!=dtc.getNumArgs() ){
+        	        	                             PARSER_STATE->parseError("Bad number of arguments for application of constructor in pattern.");
+        	        	                           }
+        	        	                           // build a lambda
+        	        	                           std::vector<Expr> largs;
+        	        	                           largs.push_back( MK_EXPR( CVC4::kind::BOUND_VAR_LIST, args ) );
+        	        	                           largs.push_back( f3 );
+        	        	                           std::vector< Expr > aargs;
+        	        	                           aargs.push_back( MK_EXPR( CVC4::kind::LAMBDA, largs ) );
+        	        	                           for( unsigned i=0; i<dtc.getNumArgs(); i++ ){
+        	        	                             //can apply total version since we will be guarded by ITE condition
+        	        	                             aargs.push_back( MK_EXPR( CVC4::kind::APPLY_SELECTOR_TOTAL, dtc[i].getSelector(), expr ) );
+        	        	                           }
+        	        	                           patexprs.push_back( MK_EXPR( CVC4::kind::APPLY, aargs ) );
+        	        	                           patconds.push_back( MK_EXPR( CVC4::kind::APPLY_TESTER, dtc.getTester(), expr ) );
+        	        	                         
+        	        	            }
 
-        	        	                }
+
+        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term4140);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruletermEx;
+        	        	            }
+
+
+        	        	            {
+        	        	                 PARSER_STATE->popScope(); 
+        	        	            }
+
+
+        	        	        }
+        	        	        break;
+        	        	    case 3:
+        	        	        // ../../../../src/parser/smt2/Smt2.g:2102:10: LPAREN_TOK symbol[name,CHECK_DECLARED,SYM_VARIABLE] term[f3, f2] RPAREN_TOK
+        	        	        {
+        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term4163);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruletermEx;
         	        	            }
 
-        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3629);
+
+        	        	            FOLLOWPUSH(FOLLOW_symbol_in_term4165);
+        	        	            symbol(ctx, name, CHECK_DECLARED, SYM_VARIABLE);
+
+        	        	            FOLLOWPOP();
         	        	            if  (HASEXCEPTION())
         	        	            {
         	        	                goto ruletermEx;
@@ -12528,17 +13935,39 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
 
         	        	            {
-        	        	                 if( !PARSER_STATE->sygus() && readLetSort ){
-        	        	                          PARSER_STATE->parseError("Bad syntax for let term.");
-        	        	                        }else if(names.count(name) == 1) {
-        	        	                          std::stringstream ss;
-        	        	                          ss << "warning: symbol `" << name << "' bound multiple times by let;"
-        	        	                             << " the last binding will be used, shadowing earlier ones";
-        	        	                          PARSER_STATE->warning(ss.str());
-        	        	                        } else {
-        	        	                          names.insert(name);
-        	        	                        }
-        	        	                        binders.push_back(std::make_pair(name, expr)); 
+
+        	        	                           f = PARSER_STATE->getVariable(name);
+        	        	                           type = f.getType();
+        	        	                           if( !type.isConstructor() || !((ConstructorType)type).getArgTypes().empty() ){
+        	        	                             PARSER_STATE->parseError("Must apply constructors of arity greater than 0 to arguments in pattern.");
+        	        	                           }
+        	        	                         
+        	        	            }
+
+
+        	        	            FOLLOWPUSH(FOLLOW_term_in_term4179);
+        	        	            term(ctx, f3, f2);
+
+        	        	            FOLLOWPOP();
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruletermEx;
+        	        	            }
+
+
+        	        	            {
+
+        	        	                           const DatatypeConstructor& dtc = Datatype::datatypeOf(f)[Datatype::indexOf(f)];
+        	        	                           patexprs.push_back( f3 );
+        	        	                           patconds.push_back( MK_EXPR( CVC4::kind::APPLY_TESTER, dtc.getTester(), expr ) );
+        	        	                         
+        	        	            }
+
+
+        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term4193);
+        	        	            if  (HASEXCEPTION())
+        	        	            {
+        	        	                goto ruletermEx;
         	        	            }
 
 
@@ -12547,9 +13976,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	        	    default:
 
-        	        		if ( cnt45 >= 1 )
+        	        		if ( cnt54 >= 1 )
         	        		{
-        	        		    goto loop45;
+        	        		    goto loop54;
         	        		}
         	        		/* mismatchedSetEx()
         	        		 */
@@ -12560,39 +13989,19 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	        		goto ruletermEx;
         	        	}
-        	        	cnt45++;
+        	        	cnt54++;
         	            }
-        	            loop45: ;	/* Jump to here if this rule does not match */
-        	        }
-
-        	        {
-        	             // now implement these bindings
-        	                  for(std::vector< std::pair<std::string, Expr> >::iterator
-        	                        i = binders.begin(); i != binders.end(); ++i) {
-        	                    PARSER_STATE->defineVar((*i).first, (*i).second);
-        	                  }
-        	                
+        	            loop54: ;	/* Jump to here if this rule does not match */
         	        }
 
-
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3666);
-        	        if  (HASEXCEPTION())
-        	        {
-        	            goto ruletermEx;
-        	        }
-
-
-        	        FOLLOWPUSH(FOLLOW_term_in_term3672);
-        	        term(ctx, expr, f2);
-
-        	        FOLLOWPOP();
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term4206);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
         	        }
 
 
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3679);
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term4208);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -12600,16 +14009,47 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
 
         	        {
-        	             PARSER_STATE->popScope(); 
+        	             
+        	                  if( match_vindex==-1 ){
+        	                    const Datatype& dt = ((DatatypeType)expr.getType()).getDatatype();
+        	                    std::map< unsigned, bool > processed;
+        	                    unsigned count = 0;
+        	                    //ensure that all datatype constructors are matched (to ensure exhaustiveness)
+        	                    for( unsigned i=0; i<patconds.size(); i++ ){
+        	                      unsigned curr_index = Datatype::indexOf(patconds[i].getOperator());
+        	                      if( curr_index<0 && curr_index>=dt.getNumConstructors() ){
+        	                        PARSER_STATE->parseError("Pattern is not legal for the head of a match.");
+        	                      }
+        	                      if( processed.find( curr_index )==processed.end() ){
+        	                        processed[curr_index] = true;
+        	                        count++;
+        	                      }
+        	                    }
+        	                    if( count!=dt.getNumConstructors() ){
+        	                      PARSER_STATE->parseError("Patterns are not exhaustive in a match construct.");
+        	                    }
+        	                  }
+        	                  //now, make the ITE
+        	                  int end_index = match_vindex==-1 ? patexprs.size()-1 : match_vindex;
+        	                  bool first_time = true;
+        	                  for( int index = end_index; index>=0; index-- ){
+        	                    if( first_time ){
+        	                      expr = patexprs[index];
+        	                      first_time = false;
+        	                    }else{
+        	                      expr = MK_EXPR( CVC4::kind::ITE, patconds[index], patexprs[index], expr );
+        	                    }
+        	                  }
+        	                
         	        }
 
 
         	    }
         	    break;
-        	case 7:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1958:5: symbol[name,CHECK_NONE,SYM_VARIABLE] SYGUS_ENUM_CONS_TOK symbol[name2,CHECK_NONE,SYM_VARIABLE]
+        	case 8:
+        	    // ../../../../src/parser/smt2/Smt2.g:2148:5: symbol[name,CHECK_NONE,SYM_VARIABLE] SYGUS_ENUM_CONS_TOK symbol[name2,CHECK_NONE,SYM_VARIABLE]
         	    {
-        	        FOLLOWPUSH(FOLLOW_symbol_in_term3691);
+        	        FOLLOWPUSH(FOLLOW_symbol_in_term4217);
         	        symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
 
         	        FOLLOWPOP();
@@ -12619,14 +14059,14 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        }
 
 
-        	         MATCHT(SYGUS_ENUM_CONS_TOK, &FOLLOW_SYGUS_ENUM_CONS_TOK_in_term3694);
+        	         MATCHT(SYGUS_ENUM_CONS_TOK, &FOLLOW_SYGUS_ENUM_CONS_TOK_in_term4220);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_symbol_in_term3700);
+        	        FOLLOWPUSH(FOLLOW_symbol_in_term4226);
         	        symbol(ctx, name2, CHECK_NONE, SYM_VARIABLE);
 
         	        FOLLOWPOP();
@@ -12649,10 +14089,10 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 8:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1968:5: symbol[name,CHECK_DECLARED,SYM_VARIABLE]
+        	case 9:
+        	    // ../../../../src/parser/smt2/Smt2.g:2158:5: symbol[name,CHECK_DECLARED,SYM_VARIABLE]
         	    {
-        	        FOLLOWPUSH(FOLLOW_symbol_in_term3719);
+        	        FOLLOWPUSH(FOLLOW_symbol_in_term4245);
         	        symbol(ctx, name, CHECK_DECLARED, SYM_VARIABLE);
 
         	        FOLLOWPOP();
@@ -12690,24 +14130,24 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 9:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:1993:5: LPAREN_TOK ATTRIBUTE_TOK term[expr, f2] ( attribute[expr, attexpr, attr] )+ RPAREN_TOK
+        	case 10:
+        	    // ../../../../src/parser/smt2/Smt2.g:2183:5: LPAREN_TOK ATTRIBUTE_TOK term[expr, f2] ( attribute[expr, attexpr, attr] )+ RPAREN_TOK
         	    {
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3739);
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term4265);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
         	        }
 
 
-        	         MATCHT(ATTRIBUTE_TOK, &FOLLOW_ATTRIBUTE_TOK_in_term3741);
+        	         MATCHT(ATTRIBUTE_TOK, &FOLLOW_ATTRIBUTE_TOK_in_term4267);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_term_in_term3743);
+        	        FOLLOWPUSH(FOLLOW_term_in_term4269);
         	        term(ctx, expr, f2);
 
         	        FOLLOWPOP();
@@ -12717,13 +14157,13 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:1994:5: ( attribute[expr, attexpr, attr] )+
+        	        // ../../../../src/parser/smt2/Smt2.g:2184:5: ( attribute[expr, attexpr, attr] )+
         	        {
-        	            int cnt46=0;
+        	            int cnt55=0;
 
         	            for (;;)
         	            {
-        	                int alt46=2;
+        	                int alt55=2;
         	        	switch ( LA(1) )
         	        	{
         	        	case ATTRIBUTE_INST_LEVEL:
@@ -12733,18 +14173,18 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	case ATTRIBUTE_RR_PRIORITY:
         	        	case KEYWORD:
         	        		{
-        	        			alt46=1;
+        	        			alt55=1;
         	        		}
         	        	    break;
 
         	        	}
 
-        	        	switch (alt46)
+        	        	switch (alt55)
         	        	{
         	        	    case 1:
-        	        	        // ../../../../../../src/parser/smt2/Smt2.g:1994:7: attribute[expr, attexpr, attr]
+        	        	        // ../../../../src/parser/smt2/Smt2.g:2184:7: attribute[expr, attexpr, attr]
         	        	        {
-        	        	            FOLLOWPUSH(FOLLOW_attribute_in_term3752);
+        	        	            FOLLOWPUSH(FOLLOW_attribute_in_term4278);
         	        	            attribute(ctx, expr, attexpr, attr);
 
         	        	            FOLLOWPOP();
@@ -12767,9 +14207,9 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	        	    default:
 
-        	        		if ( cnt46 >= 1 )
+        	        		if ( cnt55 >= 1 )
         	        		{
-        	        		    goto loop46;
+        	        		    goto loop55;
         	        		}
         	        		/* mismatchedSetEx()
         	        		 */
@@ -12780,12 +14220,12 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	        		goto ruletermEx;
         	        	}
-        	        	cnt46++;
+        	        	cnt55++;
         	            }
-        	            loop46: ;	/* Jump to here if this rule does not match */
+        	            loop55: ;	/* Jump to here if this rule does not match */
         	        }
 
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3770);
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term4296);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -12843,10 +14283,10 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 10:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2046:5: INTEGER_LITERAL
+        	case 11:
+        	    // ../../../../src/parser/smt2/Smt2.g:2236:5: INTEGER_LITERAL
         	    {
-        	        INTEGER_LITERAL14 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term3788);
+        	        INTEGER_LITERAL14 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term4314);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -12860,10 +14300,10 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 11:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2049:5: DECIMAL_LITERAL
+        	case 12:
+        	    // ../../../../src/parser/smt2/Smt2.g:2239:5: DECIMAL_LITERAL
         	    {
-        	        DECIMAL_LITERAL15 = (pANTLR3_COMMON_TOKEN) MATCHT(DECIMAL_LITERAL, &FOLLOW_DECIMAL_LITERAL_in_term3801);
+        	        DECIMAL_LITERAL15 = (pANTLR3_COMMON_TOKEN) MATCHT(DECIMAL_LITERAL, &FOLLOW_DECIMAL_LITERAL_in_term4327);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -12879,46 +14319,46 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 12:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2054:5: LPAREN_TOK INDEX_TOK (bvLit= SIMPLE_SYMBOL size= INTEGER_LITERAL | FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NAN_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL ) RPAREN_TOK
+        	case 13:
+        	    // ../../../../src/parser/smt2/Smt2.g:2244:5: LPAREN_TOK INDEX_TOK (bvLit= SIMPLE_SYMBOL size= INTEGER_LITERAL | FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NAN_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL ) RPAREN_TOK
         	    {
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term3814);
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_term4340);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
         	        }
 
 
-        	         MATCHT(INDEX_TOK, &FOLLOW_INDEX_TOK_in_term3816);
+        	         MATCHT(INDEX_TOK, &FOLLOW_INDEX_TOK_in_term4342);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:2055:5: (bvLit= SIMPLE_SYMBOL size= INTEGER_LITERAL | FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NAN_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL )
+        	        // ../../../../src/parser/smt2/Smt2.g:2245:5: (bvLit= SIMPLE_SYMBOL size= INTEGER_LITERAL | FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NAN_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL )
         	        {
-        	            int alt47=4;
+        	            int alt56=4;
         	            switch ( LA(1) )
         	            {
         	            case SIMPLE_SYMBOL:
         	            	{
-        	            		alt47=1;
+        	            		alt56=1;
         	            	}
         	                break;
         	            case FP_PINF_TOK:
         	            	{
-        	            		alt47=2;
+        	            		alt56=2;
         	            	}
         	                break;
         	            case FP_NINF_TOK:
         	            	{
-        	            		alt47=3;
+        	            		alt56=3;
         	            	}
         	                break;
         	            case FP_NAN_TOK:
         	            	{
-        	            		alt47=4;
+        	            		alt56=4;
         	            	}
         	                break;
 
@@ -12926,7 +14366,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	                CONSTRUCTEX();
         	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
         	                EXCEPTION->message      = (void *)"";
-        	                EXCEPTION->decisionNum  = 47;
+        	                EXCEPTION->decisionNum  = 56;
         	                EXCEPTION->state        = 0;
 
 
@@ -12934,19 +14374,19 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	            }
 
-        	            switch (alt47)
+        	            switch (alt56)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2055:7: bvLit= SIMPLE_SYMBOL size= INTEGER_LITERAL
+        	        	    // ../../../../src/parser/smt2/Smt2.g:2245:7: bvLit= SIMPLE_SYMBOL size= INTEGER_LITERAL
         	        	    {
-        	        	        bvLit = (pANTLR3_COMMON_TOKEN) MATCHT(SIMPLE_SYMBOL, &FOLLOW_SIMPLE_SYMBOL_in_term3827);
+        	        	        bvLit = (pANTLR3_COMMON_TOKEN) MATCHT(SIMPLE_SYMBOL, &FOLLOW_SIMPLE_SYMBOL_in_term4353);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruletermEx;
         	        	        }
 
 
-        	        	        size = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term3831);
+        	        	        size = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term4357);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruletermEx;
@@ -12967,23 +14407,23 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2063:7: FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+        	        	    // ../../../../src/parser/smt2/Smt2.g:2253:7: FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
         	        	    {
-        	        	         MATCHT(FP_PINF_TOK, &FOLLOW_FP_PINF_TOK_in_term3848);
+        	        	         MATCHT(FP_PINF_TOK, &FOLLOW_FP_PINF_TOK_in_term4374);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruletermEx;
         	        	        }
 
 
-        	        	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term3852);
+        	        	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term4378);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruletermEx;
         	        	        }
 
 
-        	        	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term3856);
+        	        	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term4382);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruletermEx;
@@ -13000,23 +14440,23 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	    }
         	        	    break;
         	        	case 3:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2067:7: FP_NINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+        	        	    // ../../../../src/parser/smt2/Smt2.g:2257:7: FP_NINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
         	        	    {
-        	        	         MATCHT(FP_NINF_TOK, &FOLLOW_FP_NINF_TOK_in_term3872);
+        	        	         MATCHT(FP_NINF_TOK, &FOLLOW_FP_NINF_TOK_in_term4398);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruletermEx;
         	        	        }
 
 
-        	        	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term3876);
+        	        	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term4402);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruletermEx;
         	        	        }
 
 
-        	        	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term3880);
+        	        	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term4406);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruletermEx;
@@ -13033,23 +14473,23 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	        	    }
         	        	    break;
         	        	case 4:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2071:7: FP_NAN_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+        	        	    // ../../../../src/parser/smt2/Smt2.g:2261:7: FP_NAN_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
         	        	    {
-        	        	         MATCHT(FP_NAN_TOK, &FOLLOW_FP_NAN_TOK_in_term3896);
+        	        	         MATCHT(FP_NAN_TOK, &FOLLOW_FP_NAN_TOK_in_term4422);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruletermEx;
         	        	        }
 
 
-        	        	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term3900);
+        	        	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term4426);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruletermEx;
         	        	        }
 
 
-        	        	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term3904);
+        	        	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_term4430);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto ruletermEx;
@@ -13069,7 +14509,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
         	            }
         	        }
 
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term3930);
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_term4456);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -13078,10 +14518,10 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 13:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2080:5: HEX_LITERAL
+        	case 14:
+        	    // ../../../../src/parser/smt2/Smt2.g:2270:5: HEX_LITERAL
         	    {
-        	        HEX_LITERAL16 = (pANTLR3_COMMON_TOKEN) MATCHT(HEX_LITERAL, &FOLLOW_HEX_LITERAL_in_term3937);
+        	        HEX_LITERAL16 = (pANTLR3_COMMON_TOKEN) MATCHT(HEX_LITERAL, &FOLLOW_HEX_LITERAL_in_term4463);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -13097,10 +14537,10 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 14:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2085:5: BINARY_LITERAL
+        	case 15:
+        	    // ../../../../src/parser/smt2/Smt2.g:2275:5: BINARY_LITERAL
         	    {
-        	        BINARY_LITERAL17 = (pANTLR3_COMMON_TOKEN) MATCHT(BINARY_LITERAL, &FOLLOW_BINARY_LITERAL_in_term3950);
+        	        BINARY_LITERAL17 = (pANTLR3_COMMON_TOKEN) MATCHT(BINARY_LITERAL, &FOLLOW_BINARY_LITERAL_in_term4476);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -13116,10 +14556,10 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 15:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2090:5: str[s,false]
+        	case 16:
+        	    // ../../../../src/parser/smt2/Smt2.g:2280:5: str[s,false]
         	    {
-        	        FOLLOWPUSH(FOLLOW_str_in_term3963);
+        	        FOLLOWPUSH(FOLLOW_str_in_term4489);
         	        str(ctx, s, false);
 
         	        FOLLOWPOP();
@@ -13136,10 +14576,10 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 16:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2092:5: FP_RNE_TOK
+        	case 17:
+        	    // ../../../../src/parser/smt2/Smt2.g:2282:5: FP_RNE_TOK
         	    {
-        	         MATCHT(FP_RNE_TOK, &FOLLOW_FP_RNE_TOK_in_term3976);
+        	         MATCHT(FP_RNE_TOK, &FOLLOW_FP_RNE_TOK_in_term4502);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -13153,10 +14593,10 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 17:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2093:5: FP_RNA_TOK
+        	case 18:
+        	    // ../../../../src/parser/smt2/Smt2.g:2283:5: FP_RNA_TOK
         	    {
-        	         MATCHT(FP_RNA_TOK, &FOLLOW_FP_RNA_TOK_in_term3989);
+        	         MATCHT(FP_RNA_TOK, &FOLLOW_FP_RNA_TOK_in_term4515);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -13170,10 +14610,10 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 18:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2094:5: FP_RTP_TOK
+        	case 19:
+        	    // ../../../../src/parser/smt2/Smt2.g:2284:5: FP_RTP_TOK
         	    {
-        	         MATCHT(FP_RTP_TOK, &FOLLOW_FP_RTP_TOK_in_term4002);
+        	         MATCHT(FP_RTP_TOK, &FOLLOW_FP_RTP_TOK_in_term4528);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -13187,10 +14627,10 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 19:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2095:5: FP_RTN_TOK
+        	case 20:
+        	    // ../../../../src/parser/smt2/Smt2.g:2285:5: FP_RTN_TOK
         	    {
-        	         MATCHT(FP_RTN_TOK, &FOLLOW_FP_RTN_TOK_in_term4015);
+        	         MATCHT(FP_RTN_TOK, &FOLLOW_FP_RTN_TOK_in_term4541);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -13204,10 +14644,10 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 20:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2096:5: FP_RTZ_TOK
+        	case 21:
+        	    // ../../../../src/parser/smt2/Smt2.g:2286:5: FP_RTZ_TOK
         	    {
-        	         MATCHT(FP_RTZ_TOK, &FOLLOW_FP_RTZ_TOK_in_term4028);
+        	         MATCHT(FP_RTZ_TOK, &FOLLOW_FP_RTZ_TOK_in_term4554);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -13221,10 +14661,10 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 21:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2097:5: FP_RNE_FULL_TOK
+        	case 22:
+        	    // ../../../../src/parser/smt2/Smt2.g:2287:5: FP_RNE_FULL_TOK
         	    {
-        	         MATCHT(FP_RNE_FULL_TOK, &FOLLOW_FP_RNE_FULL_TOK_in_term4041);
+        	         MATCHT(FP_RNE_FULL_TOK, &FOLLOW_FP_RNE_FULL_TOK_in_term4567);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -13238,10 +14678,10 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 22:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2098:5: FP_RNA_FULL_TOK
+        	case 23:
+        	    // ../../../../src/parser/smt2/Smt2.g:2288:5: FP_RNA_FULL_TOK
         	    {
-        	         MATCHT(FP_RNA_FULL_TOK, &FOLLOW_FP_RNA_FULL_TOK_in_term4049);
+        	         MATCHT(FP_RNA_FULL_TOK, &FOLLOW_FP_RNA_FULL_TOK_in_term4575);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -13255,10 +14695,10 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 23:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2099:5: FP_RTP_FULL_TOK
+        	case 24:
+        	    // ../../../../src/parser/smt2/Smt2.g:2289:5: FP_RTP_FULL_TOK
         	    {
-        	         MATCHT(FP_RTP_FULL_TOK, &FOLLOW_FP_RTP_FULL_TOK_in_term4057);
+        	         MATCHT(FP_RTP_FULL_TOK, &FOLLOW_FP_RTP_FULL_TOK_in_term4583);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -13272,10 +14712,10 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 24:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2100:5: FP_RTN_FULL_TOK
+        	case 25:
+        	    // ../../../../src/parser/smt2/Smt2.g:2290:5: FP_RTN_FULL_TOK
         	    {
-        	         MATCHT(FP_RTN_FULL_TOK, &FOLLOW_FP_RTN_FULL_TOK_in_term4065);
+        	         MATCHT(FP_RTN_FULL_TOK, &FOLLOW_FP_RTN_FULL_TOK_in_term4591);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -13289,10 +14729,10 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 25:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2101:5: FP_RTZ_FULL_TOK
+        	case 26:
+        	    // ../../../../src/parser/smt2/Smt2.g:2291:5: FP_RTZ_FULL_TOK
         	    {
-        	         MATCHT(FP_RTZ_FULL_TOK, &FOLLOW_FP_RTZ_FULL_TOK_in_term4073);
+        	         MATCHT(FP_RTZ_FULL_TOK, &FOLLOW_FP_RTZ_FULL_TOK_in_term4599);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -13306,10 +14746,10 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 26:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2103:5: RENOSTR_TOK
+        	case 27:
+        	    // ../../../../src/parser/smt2/Smt2.g:2293:5: RENOSTR_TOK
         	    {
-        	         MATCHT(RENOSTR_TOK, &FOLLOW_RENOSTR_TOK_in_term4082);
+        	         MATCHT(RENOSTR_TOK, &FOLLOW_RENOSTR_TOK_in_term4608);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -13325,10 +14765,10 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 27:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2108:5: REALLCHAR_TOK
+        	case 28:
+        	    // ../../../../src/parser/smt2/Smt2.g:2298:5: REALLCHAR_TOK
         	    {
-        	         MATCHT(REALLCHAR_TOK, &FOLLOW_REALLCHAR_TOK_in_term4095);
+        	         MATCHT(REALLCHAR_TOK, &FOLLOW_REALLCHAR_TOK_in_term4621);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -13344,10 +14784,10 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 28:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2113:5: EMPTYSET_TOK
+        	case 29:
+        	    // ../../../../src/parser/smt2/Smt2.g:2303:5: EMPTYSET_TOK
         	    {
-        	         MATCHT(EMPTYSET_TOK, &FOLLOW_EMPTYSET_TOK_in_term4108);
+        	         MATCHT(EMPTYSET_TOK, &FOLLOW_EMPTYSET_TOK_in_term4634);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -13361,10 +14801,10 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	    }
         	    break;
-        	case 29:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2116:5: UNIVSET_TOK
+        	case 30:
+        	    // ../../../../src/parser/smt2/Smt2.g:2306:5: UNIVSET_TOK
         	    {
-        	         MATCHT(UNIVSET_TOK, &FOLLOW_UNIVSET_TOK_in_term4121);
+        	         MATCHT(UNIVSET_TOK, &FOLLOW_UNIVSET_TOK_in_term4647);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -13373,16 +14813,16 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	        {
         	             //booleanType is placeholder here since we don't have type info without type annotation
-        	                  expr = EXPR_MANAGER->mkUniqueVar(EXPR_MANAGER->booleanType(), kind::UNIVERSE_SET); 
+        	                  expr = EXPR_MANAGER->mkNullaryOperator(EXPR_MANAGER->booleanType(), kind::UNIVERSE_SET); 
         	        }
 
 
         	    }
         	    break;
-        	case 30:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2120:5: NILREF_TOK
+        	case 31:
+        	    // ../../../../src/parser/smt2/Smt2.g:2310:5: NILREF_TOK
         	    {
-        	         MATCHT(NILREF_TOK, &FOLLOW_NILREF_TOK_in_term4134);
+        	         MATCHT(NILREF_TOK, &FOLLOW_NILREF_TOK_in_term4660);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruletermEx;
@@ -13391,7 +14831,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
         	        {
         	             //booleanType is placeholder here since we don't have type info without type annotation
-        	                  expr = EXPR_MANAGER->mkUniqueVar(EXPR_MANAGER->booleanType(), kind::SEP_NIL); 
+        	                  expr = EXPR_MANAGER->mkNullaryOperator(EXPR_MANAGER->booleanType(), kind::SEP_NIL); 
         	        }
 
 
@@ -13418,7 +14858,7 @@ term(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& expr2)
 
 /**
  * $ANTLR start attribute
- * ../../../../../../src/parser/smt2/Smt2.g:2129:1: attribute[CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& attr] : ( KEYWORD ( simpleSymbolicExprNoKeyword[sexpr] )? | ATTRIBUTE_PATTERN_TOK LPAREN_TOK ( term[patexpr, e2] )+ RPAREN_TOK | ATTRIBUTE_NO_PATTERN_TOK term[patexpr, e2] |tok= ( ATTRIBUTE_INST_LEVEL | ATTRIBUTE_RR_PRIORITY ) INTEGER_LITERAL | ATTRIBUTE_NAMED_TOK symbolicExpr[sexpr] );
+ * ../../../../src/parser/smt2/Smt2.g:2319:1: attribute[CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& attr] : ( KEYWORD ( simpleSymbolicExprNoKeyword[sexpr] )? | ATTRIBUTE_PATTERN_TOK LPAREN_TOK ( term[patexpr, e2] )+ RPAREN_TOK | ATTRIBUTE_NO_PATTERN_TOK term[patexpr, e2] |tok= ( ATTRIBUTE_INST_LEVEL | ATTRIBUTE_RR_PRIORITY ) INTEGER_LITERAL | ATTRIBUTE_NAMED_TOK symbolicExpr[sexpr] );
  */
 static void
 attribute(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& attr)
@@ -13443,38 +14883,38 @@ attribute(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& a
 
     {
         {
-            //  ../../../../../../src/parser/smt2/Smt2.g:2137:3: ( KEYWORD ( simpleSymbolicExprNoKeyword[sexpr] )? | ATTRIBUTE_PATTERN_TOK LPAREN_TOK ( term[patexpr, e2] )+ RPAREN_TOK | ATTRIBUTE_NO_PATTERN_TOK term[patexpr, e2] |tok= ( ATTRIBUTE_INST_LEVEL | ATTRIBUTE_RR_PRIORITY ) INTEGER_LITERAL | ATTRIBUTE_NAMED_TOK symbolicExpr[sexpr] )
+            //  ../../../../src/parser/smt2/Smt2.g:2327:3: ( KEYWORD ( simpleSymbolicExprNoKeyword[sexpr] )? | ATTRIBUTE_PATTERN_TOK LPAREN_TOK ( term[patexpr, e2] )+ RPAREN_TOK | ATTRIBUTE_NO_PATTERN_TOK term[patexpr, e2] |tok= ( ATTRIBUTE_INST_LEVEL | ATTRIBUTE_RR_PRIORITY ) INTEGER_LITERAL | ATTRIBUTE_NAMED_TOK symbolicExpr[sexpr] )
 
-            ANTLR3_UINT32 alt51;
+            ANTLR3_UINT32 alt60;
 
-            alt51=5;
+            alt60=5;
 
             switch ( LA(1) )
             {
             case KEYWORD:
             	{
-            		alt51=1;
+            		alt60=1;
             	}
                 break;
             case ATTRIBUTE_PATTERN_TOK:
             	{
-            		alt51=2;
+            		alt60=2;
             	}
                 break;
             case ATTRIBUTE_NO_PATTERN_TOK:
             	{
-            		alt51=3;
+            		alt60=3;
             	}
                 break;
             case ATTRIBUTE_INST_LEVEL:
             case ATTRIBUTE_RR_PRIORITY:
             	{
-            		alt51=4;
+            		alt60=4;
             	}
                 break;
             case ATTRIBUTE_NAMED_TOK:
             	{
-            		alt51=5;
+            		alt60=5;
             	}
                 break;
 
@@ -13482,7 +14922,7 @@ attribute(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& a
                 CONSTRUCTEX();
                 EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
                 EXCEPTION->message      = (void *)"";
-                EXCEPTION->decisionNum  = 51;
+                EXCEPTION->decisionNum  = 60;
                 EXCEPTION->state        = 0;
 
 
@@ -13490,21 +14930,21 @@ attribute(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& a
 
             }
 
-            switch (alt51)
+            switch (alt60)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2137:5: KEYWORD ( simpleSymbolicExprNoKeyword[sexpr] )?
+        	    // ../../../../src/parser/smt2/Smt2.g:2327:5: KEYWORD ( simpleSymbolicExprNoKeyword[sexpr] )?
         	    {
-        	        KEYWORD18 = (pANTLR3_COMMON_TOKEN) MATCHT(KEYWORD, &FOLLOW_KEYWORD_in_attribute4166);
+        	        KEYWORD18 = (pANTLR3_COMMON_TOKEN) MATCHT(KEYWORD, &FOLLOW_KEYWORD_in_attribute4692);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleattributeEx;
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:2137:13: ( simpleSymbolicExprNoKeyword[sexpr] )?
+        	        // ../../../../src/parser/smt2/Smt2.g:2327:13: ( simpleSymbolicExprNoKeyword[sexpr] )?
         	        {
-        	            int alt49=2;
+        	            int alt58=2;
         	            switch ( LA(1) )
         	            {
         	                case AND_TOK:
@@ -13575,19 +15015,19 @@ attribute(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& a
         	                case SYNTH_INV_TOK:
         	                case UNTERMINATED_QUOTED_SYMBOL:
         	                case XOR_TOK:
-        	                case 147:
+        	                case 154:
         	                	{
-        	                		alt49=1;
+        	                		alt58=1;
         	                	}
         	                    break;
         	            }
 
-        	            switch (alt49)
+        	            switch (alt58)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2137:15: simpleSymbolicExprNoKeyword[sexpr]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:2327:15: simpleSymbolicExprNoKeyword[sexpr]
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_simpleSymbolicExprNoKeyword_in_attribute4170);
+        	        	        FOLLOWPUSH(FOLLOW_simpleSymbolicExprNoKeyword_in_attribute4696);
         	        	        simpleSymbolicExprNoKeyword(ctx, sexpr);
 
         	        	        FOLLOWPOP();
@@ -13682,29 +15122,29 @@ attribute(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& a
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2205:5: ATTRIBUTE_PATTERN_TOK LPAREN_TOK ( term[patexpr, e2] )+ RPAREN_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2395:5: ATTRIBUTE_PATTERN_TOK LPAREN_TOK ( term[patexpr, e2] )+ RPAREN_TOK
         	    {
-        	         MATCHT(ATTRIBUTE_PATTERN_TOK, &FOLLOW_ATTRIBUTE_PATTERN_TOK_in_attribute4186);
+        	         MATCHT(ATTRIBUTE_PATTERN_TOK, &FOLLOW_ATTRIBUTE_PATTERN_TOK_in_attribute4712);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleattributeEx;
         	        }
 
 
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_attribute4188);
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_attribute4714);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleattributeEx;
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:2206:5: ( term[patexpr, e2] )+
+        	        // ../../../../src/parser/smt2/Smt2.g:2396:5: ( term[patexpr, e2] )+
         	        {
-        	            int cnt50=0;
+        	            int cnt59=0;
 
         	            for (;;)
         	            {
-        	                int alt50=2;
+        	                int alt59=2;
         	        	switch ( LA(1) )
         	        	{
         	        	case BINARY_LITERAL:
@@ -13740,20 +15180,20 @@ attribute(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& a
         	        	case SYNTH_INV_TOK:
         	        	case UNIVSET_TOK:
         	        	case UNTERMINATED_QUOTED_SYMBOL:
-        	        	case 147:
+        	        	case 154:
         	        		{
-        	        			alt50=1;
+        	        			alt59=1;
         	        		}
         	        	    break;
 
         	        	}
 
-        	        	switch (alt50)
+        	        	switch (alt59)
         	        	{
         	        	    case 1:
-        	        	        // ../../../../../../src/parser/smt2/Smt2.g:2206:7: term[patexpr, e2]
+        	        	        // ../../../../src/parser/smt2/Smt2.g:2396:7: term[patexpr, e2]
         	        	        {
-        	        	            FOLLOWPUSH(FOLLOW_term_in_attribute4196);
+        	        	            FOLLOWPUSH(FOLLOW_term_in_attribute4722);
         	        	            term(ctx, patexpr, e2);
 
         	        	            FOLLOWPOP();
@@ -13773,9 +15213,9 @@ attribute(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& a
 
         	        	    default:
 
-        	        		if ( cnt50 >= 1 )
+        	        		if ( cnt59 >= 1 )
         	        		{
-        	        		    goto loop50;
+        	        		    goto loop59;
         	        		}
         	        		/* mismatchedSetEx()
         	        		 */
@@ -13786,12 +15226,12 @@ attribute(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& a
 
         	        		goto ruleattributeEx;
         	        	}
-        	        	cnt50++;
+        	        	cnt59++;
         	            }
-        	            loop50: ;	/* Jump to here if this rule does not match */
+        	            loop59: ;	/* Jump to here if this rule does not match */
         	        }
 
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_attribute4214);
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_attribute4740);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleattributeEx;
@@ -13809,16 +15249,16 @@ attribute(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& a
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2213:5: ATTRIBUTE_NO_PATTERN_TOK term[patexpr, e2]
+        	    // ../../../../src/parser/smt2/Smt2.g:2403:5: ATTRIBUTE_NO_PATTERN_TOK term[patexpr, e2]
         	    {
-        	         MATCHT(ATTRIBUTE_NO_PATTERN_TOK, &FOLLOW_ATTRIBUTE_NO_PATTERN_TOK_in_attribute4226);
+        	         MATCHT(ATTRIBUTE_NO_PATTERN_TOK, &FOLLOW_ATTRIBUTE_NO_PATTERN_TOK_in_attribute4752);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleattributeEx;
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_term_in_attribute4228);
+        	        FOLLOWPUSH(FOLLOW_term_in_attribute4754);
         	        term(ctx, patexpr, e2);
 
         	        FOLLOWPOP();
@@ -13839,7 +15279,7 @@ attribute(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& a
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2218:5: tok= ( ATTRIBUTE_INST_LEVEL | ATTRIBUTE_RR_PRIORITY ) INTEGER_LITERAL
+        	    // ../../../../src/parser/smt2/Smt2.g:2408:5: tok= ( ATTRIBUTE_INST_LEVEL | ATTRIBUTE_RR_PRIORITY ) INTEGER_LITERAL
         	    {
         	        tok=(pANTLR3_COMMON_TOKEN)LT(1);
 
@@ -13859,7 +15299,7 @@ attribute(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& a
         	        }
 
 
-        	        INTEGER_LITERAL19 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_attribute4253);
+        	        INTEGER_LITERAL19 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_attribute4779);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleattributeEx;
@@ -13886,16 +15326,16 @@ attribute(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& a
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2232:5: ATTRIBUTE_NAMED_TOK symbolicExpr[sexpr]
+        	    // ../../../../src/parser/smt2/Smt2.g:2422:5: ATTRIBUTE_NAMED_TOK symbolicExpr[sexpr]
         	    {
-        	         MATCHT(ATTRIBUTE_NAMED_TOK, &FOLLOW_ATTRIBUTE_NAMED_TOK_in_attribute4265);
+        	         MATCHT(ATTRIBUTE_NAMED_TOK, &FOLLOW_ATTRIBUTE_NAMED_TOK_in_attribute4791);
         	        if  (HASEXCEPTION())
         	        {
         	            goto ruleattributeEx;
         	        }
 
 
-        	        FOLLOWPUSH(FOLLOW_symbolicExpr_in_attribute4267);
+        	        FOLLOWPUSH(FOLLOW_symbolicExpr_in_attribute4793);
         	        symbolicExpr(ctx, sexpr);
 
         	        FOLLOWPOP();
@@ -13964,10 +15404,10 @@ attribute(pSmt2Parser ctx, CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& a
 
 /**
  * $ANTLR start indexedFunctionName
- * ../../../../../../src/parser/smt2/Smt2.g:2270:1: indexedFunctionName[CVC4::Expr& op] : LPAREN_TOK INDEX_TOK ( 'extract' n1= INTEGER_LITERAL n2= INTEGER_LITERAL | 'repeat' n= INTEGER_LITERAL | 'zero_extend' n= INTEGER_LITERAL | 'sign_extend' n= INTEGER_LITERAL | 'rotate_left' n= INTEGER_LITERAL | 'rotate_right' n= INTEGER_LITERAL | DIVISIBLE_TOK n= INTEGER_LITERAL | INT2BV_TOK n= INTEGER_LITERAL | FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NINF_TOK eb= INTEGER_LITERAL sb= [...]
+ * ../../../../src/parser/smt2/Smt2.g:2460:1: indexedFunctionName[CVC4::Expr& op, CVC4::Kind& kind] : LPAREN_TOK INDEX_TOK ( 'extract' n1= INTEGER_LITERAL n2= INTEGER_LITERAL | 'repeat' n= INTEGER_LITERAL | 'zero_extend' n= INTEGER_LITERAL | 'sign_extend' n= INTEGER_LITERAL | 'rotate_left' n= INTEGER_LITERAL | 'rotate_right' n= INTEGER_LITERAL | DIVISIBLE_TOK n= INTEGER_LITERAL | INT2BV_TOK n= INTEGER_LITERAL | FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NINF_TOK eb= INTEGER [...]
  */
 static void
-indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
+indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op, CVC4::Kind& kind)
 {
     pANTLR3_COMMON_TOKEN    n1;
     pANTLR3_COMMON_TOKEN    n2;
@@ -13979,6 +15419,10 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
     /* Initialize rule variables
      */
 
+
+      Expr expr;
+      Expr expr2;
+
     n1       = NULL;
     n2       = NULL;
     n       = NULL;
@@ -13987,138 +15431,143 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
     m       = NULL;
 
     {
-        // ../../../../../../src/parser/smt2/Smt2.g:2271:3: ( LPAREN_TOK INDEX_TOK ( 'extract' n1= INTEGER_LITERAL n2= INTEGER_LITERAL | 'repeat' n= INTEGER_LITERAL | 'zero_extend' n= INTEGER_LITERAL | 'sign_extend' n= INTEGER_LITERAL | 'rotate_left' n= INTEGER_LITERAL | 'rotate_right' n= INTEGER_LITERAL | DIVISIBLE_TOK n= INTEGER_LITERAL | INT2BV_TOK n= INTEGER_LITERAL | FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NAN_TO [...]
-        // ../../../../../../src/parser/smt2/Smt2.g:2271:5: LPAREN_TOK INDEX_TOK ( 'extract' n1= INTEGER_LITERAL n2= INTEGER_LITERAL | 'repeat' n= INTEGER_LITERAL | 'zero_extend' n= INTEGER_LITERAL | 'sign_extend' n= INTEGER_LITERAL | 'rotate_left' n= INTEGER_LITERAL | 'rotate_right' n= INTEGER_LITERAL | DIVISIBLE_TOK n= INTEGER_LITERAL | INT2BV_TOK n= INTEGER_LITERAL | FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NAN_TOK  [...]
+        // ../../../../src/parser/smt2/Smt2.g:2465:3: ( LPAREN_TOK INDEX_TOK ( 'extract' n1= INTEGER_LITERAL n2= INTEGER_LITERAL | 'repeat' n= INTEGER_LITERAL | 'zero_extend' n= INTEGER_LITERAL | 'sign_extend' n= INTEGER_LITERAL | 'rotate_left' n= INTEGER_LITERAL | 'rotate_right' n= INTEGER_LITERAL | DIVISIBLE_TOK n= INTEGER_LITERAL | INT2BV_TOK n= INTEGER_LITERAL | FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NAN_TOK eb=  [...]
+        // ../../../../src/parser/smt2/Smt2.g:2465:5: LPAREN_TOK INDEX_TOK ( 'extract' n1= INTEGER_LITERAL n2= INTEGER_LITERAL | 'repeat' n= INTEGER_LITERAL | 'zero_extend' n= INTEGER_LITERAL | 'sign_extend' n= INTEGER_LITERAL | 'rotate_left' n= INTEGER_LITERAL | 'rotate_right' n= INTEGER_LITERAL | DIVISIBLE_TOK n= INTEGER_LITERAL | INT2BV_TOK n= INTEGER_LITERAL | FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NAN_TOK eb= IN [...]
         {
-             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_indexedFunctionName4290);
+             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_indexedFunctionName4821);
             if  (HASEXCEPTION())
             {
                 goto ruleindexedFunctionNameEx;
             }
 
 
-             MATCHT(INDEX_TOK, &FOLLOW_INDEX_TOK_in_indexedFunctionName4292);
+             MATCHT(INDEX_TOK, &FOLLOW_INDEX_TOK_in_indexedFunctionName4823);
             if  (HASEXCEPTION())
             {
                 goto ruleindexedFunctionNameEx;
             }
 
 
-            // ../../../../../../src/parser/smt2/Smt2.g:2272:5: ( 'extract' n1= INTEGER_LITERAL n2= INTEGER_LITERAL | 'repeat' n= INTEGER_LITERAL | 'zero_extend' n= INTEGER_LITERAL | 'sign_extend' n= INTEGER_LITERAL | 'rotate_left' n= INTEGER_LITERAL | 'rotate_right' n= INTEGER_LITERAL | DIVISIBLE_TOK n= INTEGER_LITERAL | INT2BV_TOK n= INTEGER_LITERAL | FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NAN_TOK eb= INTEGER_LITER [...]
+            // ../../../../src/parser/smt2/Smt2.g:2466:5: ( 'extract' n1= INTEGER_LITERAL n2= INTEGER_LITERAL | 'repeat' n= INTEGER_LITERAL | 'zero_extend' n= INTEGER_LITERAL | 'sign_extend' n= INTEGER_LITERAL | 'rotate_left' n= INTEGER_LITERAL | 'rotate_right' n= INTEGER_LITERAL | DIVISIBLE_TOK n= INTEGER_LITERAL | INT2BV_TOK n= INTEGER_LITERAL | FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL | FP_NAN_TOK eb= INTEGER_LITERAL sb= [...]
             {
-                int alt52=22;
+                int alt61=23;
                 switch ( LA(1) )
                 {
-                case 146:
+                case 153:
                 	{
-                		alt52=1;
+                		alt61=1;
                 	}
                     break;
-                case 147:
+                case 154:
                 	{
-                		alt52=2;
+                		alt61=2;
                 	}
                     break;
-                case 151:
+                case 158:
                 	{
-                		alt52=3;
+                		alt61=3;
                 	}
                     break;
-                case 150:
+                case 157:
                 	{
-                		alt52=4;
+                		alt61=4;
                 	}
                     break;
-                case 148:
+                case 155:
                 	{
-                		alt52=5;
+                		alt61=5;
                 	}
                     break;
-                case 149:
+                case 156:
                 	{
-                		alt52=6;
+                		alt61=6;
                 	}
                     break;
                 case DIVISIBLE_TOK:
                 	{
-                		alt52=7;
+                		alt61=7;
                 	}
                     break;
                 case INT2BV_TOK:
                 	{
-                		alt52=8;
+                		alt61=8;
                 	}
                     break;
                 case FP_PINF_TOK:
                 	{
-                		alt52=9;
+                		alt61=9;
                 	}
                     break;
                 case FP_NINF_TOK:
                 	{
-                		alt52=10;
+                		alt61=10;
                 	}
                     break;
                 case FP_NAN_TOK:
                 	{
-                		alt52=11;
+                		alt61=11;
                 	}
                     break;
                 case FP_PZERO_TOK:
                 	{
-                		alt52=12;
+                		alt61=12;
                 	}
                     break;
                 case FP_NZERO_TOK:
                 	{
-                		alt52=13;
+                		alt61=13;
                 	}
                     break;
                 case FP_TO_FP_TOK:
                 	{
-                		alt52=14;
+                		alt61=14;
                 	}
                     break;
                 case FP_TO_FPBV_TOK:
                 	{
-                		alt52=15;
+                		alt61=15;
                 	}
                     break;
                 case FP_TO_FPFP_TOK:
                 	{
-                		alt52=16;
+                		alt61=16;
                 	}
                     break;
                 case FP_TO_FPR_TOK:
                 	{
-                		alt52=17;
+                		alt61=17;
                 	}
                     break;
                 case FP_TO_FPS_TOK:
                 	{
-                		alt52=18;
+                		alt61=18;
                 	}
                     break;
                 case FP_TO_FPU_TOK:
                 	{
-                		alt52=19;
+                		alt61=19;
                 	}
                     break;
                 case FP_TO_UBV_TOK:
                 	{
-                		alt52=20;
+                		alt61=20;
                 	}
                     break;
                 case FP_TO_SBV_TOK:
                 	{
-                		alt52=21;
+                		alt61=21;
+                	}
+                    break;
+                case TESTER_TOK:
+                	{
+                		alt61=22;
                 	}
                     break;
                 case QUOTED_SYMBOL:
                 case SIMPLE_SYMBOL:
                 case UNTERMINATED_QUOTED_SYMBOL:
                 	{
-                		alt52=22;
+                		alt61=23;
                 	}
                     break;
 
@@ -14126,7 +15575,7 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
                     CONSTRUCTEX();
                     EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
                     EXCEPTION->message      = (void *)"";
-                    EXCEPTION->decisionNum  = 52;
+                    EXCEPTION->decisionNum  = 61;
                     EXCEPTION->state        = 0;
 
 
@@ -14134,26 +15583,26 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
 
                 }
 
-                switch (alt52)
+                switch (alt61)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2272:7: 'extract' n1= INTEGER_LITERAL n2= INTEGER_LITERAL
+            	    // ../../../../src/parser/smt2/Smt2.g:2466:7: 'extract' n1= INTEGER_LITERAL n2= INTEGER_LITERAL
             	    {
-            	         MATCHT(146, &FOLLOW_146_in_indexedFunctionName4300);
+            	         MATCHT(153, &FOLLOW_153_in_indexedFunctionName4831);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        n1 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4304);
+            	        n1 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4835);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        n2 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4308);
+            	        n2 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4839);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
@@ -14169,16 +15618,16 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
             	    }
             	    break;
             	case 2:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2275:7: 'repeat' n= INTEGER_LITERAL
+            	    // ../../../../src/parser/smt2/Smt2.g:2469:7: 'repeat' n= INTEGER_LITERAL
             	    {
-            	         MATCHT(147, &FOLLOW_147_in_indexedFunctionName4324);
+            	         MATCHT(154, &FOLLOW_154_in_indexedFunctionName4855);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4328);
+            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4859);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
@@ -14193,16 +15642,16 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
             	    }
             	    break;
             	case 3:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2277:7: 'zero_extend' n= INTEGER_LITERAL
+            	    // ../../../../src/parser/smt2/Smt2.g:2471:7: 'zero_extend' n= INTEGER_LITERAL
             	    {
-            	         MATCHT(151, &FOLLOW_151_in_indexedFunctionName4344);
+            	         MATCHT(158, &FOLLOW_158_in_indexedFunctionName4875);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4348);
+            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4879);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
@@ -14217,16 +15666,16 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
             	    }
             	    break;
             	case 4:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2279:7: 'sign_extend' n= INTEGER_LITERAL
+            	    // ../../../../src/parser/smt2/Smt2.g:2473:7: 'sign_extend' n= INTEGER_LITERAL
             	    {
-            	         MATCHT(150, &FOLLOW_150_in_indexedFunctionName4364);
+            	         MATCHT(157, &FOLLOW_157_in_indexedFunctionName4895);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4368);
+            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4899);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
@@ -14241,16 +15690,16 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
             	    }
             	    break;
             	case 5:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2281:7: 'rotate_left' n= INTEGER_LITERAL
+            	    // ../../../../src/parser/smt2/Smt2.g:2475:7: 'rotate_left' n= INTEGER_LITERAL
             	    {
-            	         MATCHT(148, &FOLLOW_148_in_indexedFunctionName4384);
+            	         MATCHT(155, &FOLLOW_155_in_indexedFunctionName4915);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4388);
+            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4919);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
@@ -14265,16 +15714,16 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
             	    }
             	    break;
             	case 6:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2283:7: 'rotate_right' n= INTEGER_LITERAL
+            	    // ../../../../src/parser/smt2/Smt2.g:2477:7: 'rotate_right' n= INTEGER_LITERAL
             	    {
-            	         MATCHT(149, &FOLLOW_149_in_indexedFunctionName4404);
+            	         MATCHT(156, &FOLLOW_156_in_indexedFunctionName4935);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4408);
+            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4939);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
@@ -14289,16 +15738,16 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
             	    }
             	    break;
             	case 7:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2285:7: DIVISIBLE_TOK n= INTEGER_LITERAL
+            	    // ../../../../src/parser/smt2/Smt2.g:2479:7: DIVISIBLE_TOK n= INTEGER_LITERAL
             	    {
-            	         MATCHT(DIVISIBLE_TOK, &FOLLOW_DIVISIBLE_TOK_in_indexedFunctionName4424);
+            	         MATCHT(DIVISIBLE_TOK, &FOLLOW_DIVISIBLE_TOK_in_indexedFunctionName4955);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4428);
+            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4959);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
@@ -14313,16 +15762,16 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
             	    }
             	    break;
             	case 8:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2287:7: INT2BV_TOK n= INTEGER_LITERAL
+            	    // ../../../../src/parser/smt2/Smt2.g:2481:7: INT2BV_TOK n= INTEGER_LITERAL
             	    {
-            	         MATCHT(INT2BV_TOK, &FOLLOW_INT2BV_TOK_in_indexedFunctionName4444);
+            	         MATCHT(INT2BV_TOK, &FOLLOW_INT2BV_TOK_in_indexedFunctionName4975);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4448);
+            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4979);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
@@ -14342,23 +15791,23 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
             	    }
             	    break;
             	case 9:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2294:7: FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    // ../../../../src/parser/smt2/Smt2.g:2488:7: FP_PINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
             	    {
-            	         MATCHT(FP_PINF_TOK, &FOLLOW_FP_PINF_TOK_in_indexedFunctionName4464);
+            	         MATCHT(FP_PINF_TOK, &FOLLOW_FP_PINF_TOK_in_indexedFunctionName4995);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4468);
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4999);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4472);
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5003);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
@@ -14375,23 +15824,23 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
             	    }
             	    break;
             	case 10:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2298:7: FP_NINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    // ../../../../src/parser/smt2/Smt2.g:2492:7: FP_NINF_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
             	    {
-            	         MATCHT(FP_NINF_TOK, &FOLLOW_FP_NINF_TOK_in_indexedFunctionName4488);
+            	         MATCHT(FP_NINF_TOK, &FOLLOW_FP_NINF_TOK_in_indexedFunctionName5019);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4492);
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5023);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4496);
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5027);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
@@ -14408,23 +15857,23 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
             	    }
             	    break;
             	case 11:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2302:7: FP_NAN_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    // ../../../../src/parser/smt2/Smt2.g:2496:7: FP_NAN_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
             	    {
-            	         MATCHT(FP_NAN_TOK, &FOLLOW_FP_NAN_TOK_in_indexedFunctionName4512);
+            	         MATCHT(FP_NAN_TOK, &FOLLOW_FP_NAN_TOK_in_indexedFunctionName5043);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4516);
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5047);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4520);
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5051);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
@@ -14441,23 +15890,23 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
             	    }
             	    break;
             	case 12:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2306:7: FP_PZERO_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    // ../../../../src/parser/smt2/Smt2.g:2500:7: FP_PZERO_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
             	    {
-            	         MATCHT(FP_PZERO_TOK, &FOLLOW_FP_PZERO_TOK_in_indexedFunctionName4536);
+            	         MATCHT(FP_PZERO_TOK, &FOLLOW_FP_PZERO_TOK_in_indexedFunctionName5067);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4540);
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5071);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4544);
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5075);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
@@ -14474,23 +15923,23 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
             	    }
             	    break;
             	case 13:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2310:7: FP_NZERO_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    // ../../../../src/parser/smt2/Smt2.g:2504:7: FP_NZERO_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
             	    {
-            	         MATCHT(FP_NZERO_TOK, &FOLLOW_FP_NZERO_TOK_in_indexedFunctionName4560);
+            	         MATCHT(FP_NZERO_TOK, &FOLLOW_FP_NZERO_TOK_in_indexedFunctionName5091);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4564);
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5095);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4568);
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5099);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
@@ -14507,23 +15956,23 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
             	    }
             	    break;
             	case 14:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2314:7: FP_TO_FP_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    // ../../../../src/parser/smt2/Smt2.g:2508:7: FP_TO_FP_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
             	    {
-            	         MATCHT(FP_TO_FP_TOK, &FOLLOW_FP_TO_FP_TOK_in_indexedFunctionName4584);
+            	         MATCHT(FP_TO_FP_TOK, &FOLLOW_FP_TO_FP_TOK_in_indexedFunctionName5115);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4588);
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5119);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4592);
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5123);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
@@ -14541,23 +15990,23 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
             	    }
             	    break;
             	case 15:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2319:7: FP_TO_FPBV_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    // ../../../../src/parser/smt2/Smt2.g:2513:7: FP_TO_FPBV_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
             	    {
-            	         MATCHT(FP_TO_FPBV_TOK, &FOLLOW_FP_TO_FPBV_TOK_in_indexedFunctionName4608);
+            	         MATCHT(FP_TO_FPBV_TOK, &FOLLOW_FP_TO_FPBV_TOK_in_indexedFunctionName5139);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4612);
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5143);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4616);
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5147);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
@@ -14575,23 +16024,23 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
             	    }
             	    break;
             	case 16:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2324:7: FP_TO_FPFP_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    // ../../../../src/parser/smt2/Smt2.g:2518:7: FP_TO_FPFP_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
             	    {
-            	         MATCHT(FP_TO_FPFP_TOK, &FOLLOW_FP_TO_FPFP_TOK_in_indexedFunctionName4632);
+            	         MATCHT(FP_TO_FPFP_TOK, &FOLLOW_FP_TO_FPFP_TOK_in_indexedFunctionName5163);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4636);
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5167);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4640);
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5171);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
@@ -14609,23 +16058,23 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
             	    }
             	    break;
             	case 17:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2329:7: FP_TO_FPR_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    // ../../../../src/parser/smt2/Smt2.g:2523:7: FP_TO_FPR_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
             	    {
-            	         MATCHT(FP_TO_FPR_TOK, &FOLLOW_FP_TO_FPR_TOK_in_indexedFunctionName4656);
+            	         MATCHT(FP_TO_FPR_TOK, &FOLLOW_FP_TO_FPR_TOK_in_indexedFunctionName5187);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4660);
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5191);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4664);
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5195);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
@@ -14642,23 +16091,23 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
             	    }
             	    break;
             	case 18:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2333:7: FP_TO_FPS_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    // ../../../../src/parser/smt2/Smt2.g:2527:7: FP_TO_FPS_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
             	    {
-            	         MATCHT(FP_TO_FPS_TOK, &FOLLOW_FP_TO_FPS_TOK_in_indexedFunctionName4680);
+            	         MATCHT(FP_TO_FPS_TOK, &FOLLOW_FP_TO_FPS_TOK_in_indexedFunctionName5211);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4684);
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5215);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4688);
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5219);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
@@ -14676,23 +16125,23 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
             	    }
             	    break;
             	case 19:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2338:7: FP_TO_FPU_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
+            	    // ../../../../src/parser/smt2/Smt2.g:2532:7: FP_TO_FPU_TOK eb= INTEGER_LITERAL sb= INTEGER_LITERAL
             	    {
-            	         MATCHT(FP_TO_FPU_TOK, &FOLLOW_FP_TO_FPU_TOK_in_indexedFunctionName4704);
+            	         MATCHT(FP_TO_FPU_TOK, &FOLLOW_FP_TO_FPU_TOK_in_indexedFunctionName5235);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4708);
+            	        eb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5239);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4712);
+            	        sb = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5243);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
@@ -14710,16 +16159,16 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
             	    }
             	    break;
             	case 20:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2343:7: FP_TO_UBV_TOK m= INTEGER_LITERAL
+            	    // ../../../../src/parser/smt2/Smt2.g:2537:7: FP_TO_UBV_TOK m= INTEGER_LITERAL
             	    {
-            	         MATCHT(FP_TO_UBV_TOK, &FOLLOW_FP_TO_UBV_TOK_in_indexedFunctionName4728);
+            	         MATCHT(FP_TO_UBV_TOK, &FOLLOW_FP_TO_UBV_TOK_in_indexedFunctionName5259);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        m = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4732);
+            	        m = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5263);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
@@ -14734,16 +16183,16 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
             	    }
             	    break;
             	case 21:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2345:7: FP_TO_SBV_TOK m= INTEGER_LITERAL
+            	    // ../../../../src/parser/smt2/Smt2.g:2539:7: FP_TO_SBV_TOK m= INTEGER_LITERAL
             	    {
-            	         MATCHT(FP_TO_SBV_TOK, &FOLLOW_FP_TO_SBV_TOK_in_indexedFunctionName4748);
+            	         MATCHT(FP_TO_SBV_TOK, &FOLLOW_FP_TO_SBV_TOK_in_indexedFunctionName5279);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
             	        }
 
 
-            	        m = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName4752);
+            	        m = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_indexedFunctionName5283);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleindexedFunctionNameEx;
@@ -14758,9 +16207,46 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
             	    }
             	    break;
             	case 22:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2347:7: badIndexedFunctionName
+            	    // ../../../../src/parser/smt2/Smt2.g:2541:7: TESTER_TOK term[expr, expr2]
+            	    {
+            	         MATCHT(TESTER_TOK, &FOLLOW_TESTER_TOK_in_indexedFunctionName5299);
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        FOLLOWPUSH(FOLLOW_term_in_indexedFunctionName5301);
+            	        term(ctx, expr, expr2);
+
+            	        FOLLOWPOP();
+            	        if  (HASEXCEPTION())
+            	        {
+            	            goto ruleindexedFunctionNameEx;
+            	        }
+
+
+            	        {
+            	             
+            	                    if( expr.getKind()==kind::APPLY_CONSTRUCTOR && expr.getNumChildren()==0 ){
+            	                      //for nullary constructors, must get the operator
+            	                      expr = expr.getOperator();
+            	                    }
+            	                    if( !expr.getType().isConstructor() ){
+            	                      PARSER_STATE->parseError("Bad syntax for test (_ is X), X must be a constructor.");
+            	                    }
+            	                    op = Datatype::datatypeOf(expr)[Datatype::indexOf(expr)].getTester();
+            	                    kind = CVC4::kind::APPLY_TESTER;
+            	                  
+            	        }
+
+
+            	    }
+            	    break;
+            	case 23:
+            	    // ../../../../src/parser/smt2/Smt2.g:2552:7: badIndexedFunctionName
             	    {
-            	        FOLLOWPUSH(FOLLOW_badIndexedFunctionName_in_indexedFunctionName4768);
+            	        FOLLOWPUSH(FOLLOW_badIndexedFunctionName_in_indexedFunctionName5312);
             	        badIndexedFunctionName(ctx);
 
             	        FOLLOWPOP();
@@ -14776,7 +16262,7 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
                 }
             }
 
-             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_indexedFunctionName4780);
+             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_indexedFunctionName5324);
             if  (HASEXCEPTION())
             {
                 goto ruleindexedFunctionNameEx;
@@ -14803,7 +16289,7 @@ indexedFunctionName(pSmt2Parser ctx, CVC4::Expr& op)
 
 /**
  * $ANTLR start badIndexedFunctionName
- * ../../../../../../src/parser/smt2/Smt2.g:2356:1: badIndexedFunctionName : id= ( SIMPLE_SYMBOL | QUOTED_SYMBOL | UNTERMINATED_QUOTED_SYMBOL ) ;
+ * ../../../../src/parser/smt2/Smt2.g:2561:1: badIndexedFunctionName : id= ( SIMPLE_SYMBOL | QUOTED_SYMBOL | UNTERMINATED_QUOTED_SYMBOL ) ;
  */
 static void
 badIndexedFunctionName(pSmt2Parser ctx)
@@ -14819,8 +16305,8 @@ badIndexedFunctionName(pSmt2Parser ctx)
     id       = NULL;
 
     {
-        // ../../../../../../src/parser/smt2/Smt2.g:2360:3: (id= ( SIMPLE_SYMBOL | QUOTED_SYMBOL | UNTERMINATED_QUOTED_SYMBOL ) )
-        // ../../../../../../src/parser/smt2/Smt2.g:2360:5: id= ( SIMPLE_SYMBOL | QUOTED_SYMBOL | UNTERMINATED_QUOTED_SYMBOL )
+        // ../../../../src/parser/smt2/Smt2.g:2565:3: (id= ( SIMPLE_SYMBOL | QUOTED_SYMBOL | UNTERMINATED_QUOTED_SYMBOL ) )
+        // ../../../../src/parser/smt2/Smt2.g:2565:5: id= ( SIMPLE_SYMBOL | QUOTED_SYMBOL | UNTERMINATED_QUOTED_SYMBOL )
         {
             id=(pANTLR3_COMMON_TOKEN)LT(1);
 
@@ -14867,7 +16353,7 @@ badIndexedFunctionName(pSmt2Parser ctx)
 
 /**
  * $ANTLR start termList
- * ../../../../../../src/parser/smt2/Smt2.g:2374:1: termList[std::vector<CVC4::Expr>& formulas, CVC4::Expr& expr] : ( term[expr, expr2] )+ ;
+ * ../../../../src/parser/smt2/Smt2.g:2579:1: termList[std::vector<CVC4::Expr>& formulas, CVC4::Expr& expr] : ( term[expr, expr2] )+ ;
  */
 static void
 termList(pSmt2Parser ctx, std::vector<CVC4::Expr>& formulas, CVC4::Expr& expr)
@@ -14879,16 +16365,16 @@ termList(pSmt2Parser ctx, std::vector<CVC4::Expr>& formulas, CVC4::Expr& expr)
      */
 
     {
-        // ../../../../../../src/parser/smt2/Smt2.g:2378:3: ( ( term[expr, expr2] )+ )
-        // ../../../../../../src/parser/smt2/Smt2.g:2378:5: ( term[expr, expr2] )+
+        // ../../../../src/parser/smt2/Smt2.g:2583:3: ( ( term[expr, expr2] )+ )
+        // ../../../../src/parser/smt2/Smt2.g:2583:5: ( term[expr, expr2] )+
         {
-            // ../../../../../../src/parser/smt2/Smt2.g:2378:5: ( term[expr, expr2] )+
+            // ../../../../src/parser/smt2/Smt2.g:2583:5: ( term[expr, expr2] )+
             {
-                int cnt53=0;
+                int cnt62=0;
 
                 for (;;)
                 {
-                    int alt53=2;
+                    int alt62=2;
             	switch ( LA(1) )
             	{
             	case BINARY_LITERAL:
@@ -14924,20 +16410,20 @@ termList(pSmt2Parser ctx, std::vector<CVC4::Expr>& formulas, CVC4::Expr& expr)
             	case SYNTH_INV_TOK:
             	case UNIVSET_TOK:
             	case UNTERMINATED_QUOTED_SYMBOL:
-            	case 147:
+            	case 154:
             		{
-            			alt53=1;
+            			alt62=1;
             		}
             	    break;
 
             	}
 
-            	switch (alt53)
+            	switch (alt62)
             	{
             	    case 1:
-            	        // ../../../../../../src/parser/smt2/Smt2.g:2378:7: term[expr, expr2]
+            	        // ../../../../src/parser/smt2/Smt2.g:2583:7: term[expr, expr2]
             	        {
-            	            FOLLOWPUSH(FOLLOW_term_in_termList4843);
+            	            FOLLOWPUSH(FOLLOW_term_in_termList5387);
             	            term(ctx, expr, expr2);
 
             	            FOLLOWPOP();
@@ -14957,9 +16443,9 @@ termList(pSmt2Parser ctx, std::vector<CVC4::Expr>& formulas, CVC4::Expr& expr)
 
             	    default:
 
-            		if ( cnt53 >= 1 )
+            		if ( cnt62 >= 1 )
             		{
-            		    goto loop53;
+            		    goto loop62;
             		}
             		/* mismatchedSetEx()
             		 */
@@ -14970,9 +16456,9 @@ termList(pSmt2Parser ctx, std::vector<CVC4::Expr>& formulas, CVC4::Expr& expr)
 
             		goto ruletermListEx;
             	}
-            	cnt53++;
+            	cnt62++;
                 }
-                loop53: ;	/* Jump to here if this rule does not match */
+                loop62: ;	/* Jump to here if this rule does not match */
             }
 
         }
@@ -14995,7 +16481,7 @@ termList(pSmt2Parser ctx, std::vector<CVC4::Expr>& formulas, CVC4::Expr& expr)
 
 /**
  * $ANTLR start str
- * ../../../../../../src/parser/smt2/Smt2.g:2384:1: str[std::string& s, bool fsmtlib] : ( STRING_LITERAL_2_0 | STRING_LITERAL_2_5 );
+ * ../../../../src/parser/smt2/Smt2.g:2589:1: str[std::string& s, bool fsmtlib] : ( STRING_LITERAL_2_0 | STRING_LITERAL_2_5 );
  */
 static void
 str(pSmt2Parser ctx, std::string& s, bool fsmtlib)
@@ -15011,22 +16497,22 @@ str(pSmt2Parser ctx, std::string& s, bool fsmtlib)
 
     {
         {
-            //  ../../../../../../src/parser/smt2/Smt2.g:2385:3: ( STRING_LITERAL_2_0 | STRING_LITERAL_2_5 )
+            //  ../../../../src/parser/smt2/Smt2.g:2590:3: ( STRING_LITERAL_2_0 | STRING_LITERAL_2_5 )
 
-            ANTLR3_UINT32 alt54;
+            ANTLR3_UINT32 alt63;
 
-            alt54=2;
+            alt63=2;
 
             switch ( LA(1) )
             {
             case STRING_LITERAL_2_0:
             	{
-            		alt54=1;
+            		alt63=1;
             	}
                 break;
             case STRING_LITERAL_2_5:
             	{
-            		alt54=2;
+            		alt63=2;
             	}
                 break;
 
@@ -15034,7 +16520,7 @@ str(pSmt2Parser ctx, std::string& s, bool fsmtlib)
                 CONSTRUCTEX();
                 EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
                 EXCEPTION->message      = (void *)"";
-                EXCEPTION->decisionNum  = 54;
+                EXCEPTION->decisionNum  = 63;
                 EXCEPTION->state        = 0;
 
 
@@ -15042,12 +16528,12 @@ str(pSmt2Parser ctx, std::string& s, bool fsmtlib)
 
             }
 
-            switch (alt54)
+            switch (alt63)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2385:5: STRING_LITERAL_2_0
+        	    // ../../../../src/parser/smt2/Smt2.g:2590:5: STRING_LITERAL_2_0
         	    {
-        	        STRING_LITERAL_2_020 = (pANTLR3_COMMON_TOKEN) MATCHT(STRING_LITERAL_2_0, &FOLLOW_STRING_LITERAL_2_0_in_str4865);
+        	        STRING_LITERAL_2_020 = (pANTLR3_COMMON_TOKEN) MATCHT(STRING_LITERAL_2_0, &FOLLOW_STRING_LITERAL_2_0_in_str5409);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestrEx;
@@ -15094,9 +16580,9 @@ str(pSmt2Parser ctx, std::string& s, bool fsmtlib)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2419:5: STRING_LITERAL_2_5
+        	    // ../../../../src/parser/smt2/Smt2.g:2624:5: STRING_LITERAL_2_5
         	    {
-        	        STRING_LITERAL_2_521 = (pANTLR3_COMMON_TOKEN) MATCHT(STRING_LITERAL_2_5, &FOLLOW_STRING_LITERAL_2_5_in_str4877);
+        	        STRING_LITERAL_2_521 = (pANTLR3_COMMON_TOKEN) MATCHT(STRING_LITERAL_2_5, &FOLLOW_STRING_LITERAL_2_5_in_str5421);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulestrEx;
@@ -15154,7 +16640,7 @@ str(pSmt2Parser ctx, std::string& s, bool fsmtlib)
 
 /**
  * $ANTLR start builtinOp
- * ../../../../../../src/parser/smt2/Smt2.g:2449:1: builtinOp[CVC4::Kind& kind] : ( NOT_TOK | IMPLIES_TOK | AND_TOK | OR_TOK | XOR_TOK | EQUAL_TOK | DISTINCT_TOK | ITE_TOK | GREATER_THAN_TOK | GREATER_THAN_EQUAL_TOK | LESS_THAN_EQUAL_TOK | LESS_THAN_TOK | PLUS_TOK | MINUS_TOK | STAR_TOK | DIV_TOK | BV2NAT_TOK | DTSIZE_TOK | FMFCARD_TOK | FMFCARDVAL_TOK | INST_CLOSURE_TOK );
+ * ../../../../src/parser/smt2/Smt2.g:2654:1: builtinOp[CVC4::Kind& kind] : ( NOT_TOK | IMPLIES_TOK | AND_TOK | OR_TOK | XOR_TOK | EQUAL_TOK | DISTINCT_TOK | ITE_TOK | GREATER_THAN_TOK | GREATER_THAN_EQUAL_TOK | LESS_THAN_EQUAL_TOK | LESS_THAN_TOK | PLUS_TOK | MINUS_TOK | STAR_TOK | DIV_TOK | BV2NAT_TOK | DTSIZE_TOK | FMFCARD_TOK | FMFCARDVAL_TOK | INST_CLOSURE_TOK );
  */
 static void
 builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
@@ -15167,117 +16653,117 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
 
     {
         {
-            //  ../../../../../../src/parser/smt2/Smt2.g:2453:3: ( NOT_TOK | IMPLIES_TOK | AND_TOK | OR_TOK | XOR_TOK | EQUAL_TOK | DISTINCT_TOK | ITE_TOK | GREATER_THAN_TOK | GREATER_THAN_EQUAL_TOK | LESS_THAN_EQUAL_TOK | LESS_THAN_TOK | PLUS_TOK | MINUS_TOK | STAR_TOK | DIV_TOK | BV2NAT_TOK | DTSIZE_TOK | FMFCARD_TOK | FMFCARDVAL_TOK | INST_CLOSURE_TOK )
+            //  ../../../../src/parser/smt2/Smt2.g:2658:3: ( NOT_TOK | IMPLIES_TOK | AND_TOK | OR_TOK | XOR_TOK | EQUAL_TOK | DISTINCT_TOK | ITE_TOK | GREATER_THAN_TOK | GREATER_THAN_EQUAL_TOK | LESS_THAN_EQUAL_TOK | LESS_THAN_TOK | PLUS_TOK | MINUS_TOK | STAR_TOK | DIV_TOK | BV2NAT_TOK | DTSIZE_TOK | FMFCARD_TOK | FMFCARDVAL_TOK | INST_CLOSURE_TOK )
 
-            ANTLR3_UINT32 alt55;
+            ANTLR3_UINT32 alt64;
 
-            alt55=21;
+            alt64=21;
 
             switch ( LA(1) )
             {
             case NOT_TOK:
             	{
-            		alt55=1;
+            		alt64=1;
             	}
                 break;
             case IMPLIES_TOK:
             	{
-            		alt55=2;
+            		alt64=2;
             	}
                 break;
             case AND_TOK:
             	{
-            		alt55=3;
+            		alt64=3;
             	}
                 break;
             case OR_TOK:
             	{
-            		alt55=4;
+            		alt64=4;
             	}
                 break;
             case XOR_TOK:
             	{
-            		alt55=5;
+            		alt64=5;
             	}
                 break;
             case EQUAL_TOK:
             	{
-            		alt55=6;
+            		alt64=6;
             	}
                 break;
             case DISTINCT_TOK:
             	{
-            		alt55=7;
+            		alt64=7;
             	}
                 break;
             case ITE_TOK:
             	{
-            		alt55=8;
+            		alt64=8;
             	}
                 break;
             case GREATER_THAN_TOK:
             	{
-            		alt55=9;
+            		alt64=9;
             	}
                 break;
             case GREATER_THAN_EQUAL_TOK:
             	{
-            		alt55=10;
+            		alt64=10;
             	}
                 break;
             case LESS_THAN_EQUAL_TOK:
             	{
-            		alt55=11;
+            		alt64=11;
             	}
                 break;
             case LESS_THAN_TOK:
             	{
-            		alt55=12;
+            		alt64=12;
             	}
                 break;
             case PLUS_TOK:
             	{
-            		alt55=13;
+            		alt64=13;
             	}
                 break;
             case MINUS_TOK:
             	{
-            		alt55=14;
+            		alt64=14;
             	}
                 break;
             case STAR_TOK:
             	{
-            		alt55=15;
+            		alt64=15;
             	}
                 break;
             case DIV_TOK:
             	{
-            		alt55=16;
+            		alt64=16;
             	}
                 break;
             case BV2NAT_TOK:
             	{
-            		alt55=17;
+            		alt64=17;
             	}
                 break;
             case DTSIZE_TOK:
             	{
-            		alt55=18;
+            		alt64=18;
             	}
                 break;
             case FMFCARD_TOK:
             	{
-            		alt55=19;
+            		alt64=19;
             	}
                 break;
             case FMFCARDVAL_TOK:
             	{
-            		alt55=20;
+            		alt64=20;
             	}
                 break;
             case INST_CLOSURE_TOK:
             	{
-            		alt55=21;
+            		alt64=21;
             	}
                 break;
 
@@ -15285,7 +16771,7 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
                 CONSTRUCTEX();
                 EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
                 EXCEPTION->message      = (void *)"";
-                EXCEPTION->decisionNum  = 55;
+                EXCEPTION->decisionNum  = 64;
                 EXCEPTION->state        = 0;
 
 
@@ -15293,12 +16779,12 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
 
             }
 
-            switch (alt55)
+            switch (alt64)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2453:5: NOT_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2658:5: NOT_TOK
         	    {
-        	         MATCHT(NOT_TOK, &FOLLOW_NOT_TOK_in_builtinOp4904);
+        	         MATCHT(NOT_TOK, &FOLLOW_NOT_TOK_in_builtinOp5448);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebuiltinOpEx;
@@ -15313,9 +16799,9 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2454:5: IMPLIES_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2659:5: IMPLIES_TOK
         	    {
-        	         MATCHT(IMPLIES_TOK, &FOLLOW_IMPLIES_TOK_in_builtinOp4917);
+        	         MATCHT(IMPLIES_TOK, &FOLLOW_IMPLIES_TOK_in_builtinOp5461);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebuiltinOpEx;
@@ -15330,9 +16816,9 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2455:5: AND_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2660:5: AND_TOK
         	    {
-        	         MATCHT(AND_TOK, &FOLLOW_AND_TOK_in_builtinOp4926);
+        	         MATCHT(AND_TOK, &FOLLOW_AND_TOK_in_builtinOp5470);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebuiltinOpEx;
@@ -15347,9 +16833,9 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2456:5: OR_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2661:5: OR_TOK
         	    {
-        	         MATCHT(OR_TOK, &FOLLOW_OR_TOK_in_builtinOp4939);
+        	         MATCHT(OR_TOK, &FOLLOW_OR_TOK_in_builtinOp5483);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebuiltinOpEx;
@@ -15364,9 +16850,9 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2457:5: XOR_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2662:5: XOR_TOK
         	    {
-        	         MATCHT(XOR_TOK, &FOLLOW_XOR_TOK_in_builtinOp4953);
+        	         MATCHT(XOR_TOK, &FOLLOW_XOR_TOK_in_builtinOp5497);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebuiltinOpEx;
@@ -15381,9 +16867,9 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2458:5: EQUAL_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2663:5: EQUAL_TOK
         	    {
-        	         MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_builtinOp4966);
+        	         MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_builtinOp5510);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebuiltinOpEx;
@@ -15398,9 +16884,9 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 7:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2459:5: DISTINCT_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2664:5: DISTINCT_TOK
         	    {
-        	         MATCHT(DISTINCT_TOK, &FOLLOW_DISTINCT_TOK_in_builtinOp4977);
+        	         MATCHT(DISTINCT_TOK, &FOLLOW_DISTINCT_TOK_in_builtinOp5521);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebuiltinOpEx;
@@ -15415,9 +16901,9 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 8:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2460:5: ITE_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2665:5: ITE_TOK
         	    {
-        	         MATCHT(ITE_TOK, &FOLLOW_ITE_TOK_in_builtinOp4985);
+        	         MATCHT(ITE_TOK, &FOLLOW_ITE_TOK_in_builtinOp5529);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebuiltinOpEx;
@@ -15432,9 +16918,9 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 9:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2461:5: GREATER_THAN_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2666:5: GREATER_THAN_TOK
         	    {
-        	         MATCHT(GREATER_THAN_TOK, &FOLLOW_GREATER_THAN_TOK_in_builtinOp4998);
+        	         MATCHT(GREATER_THAN_TOK, &FOLLOW_GREATER_THAN_TOK_in_builtinOp5542);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebuiltinOpEx;
@@ -15449,9 +16935,9 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 10:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2463:5: GREATER_THAN_EQUAL_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2668:5: GREATER_THAN_EQUAL_TOK
         	    {
-        	         MATCHT(GREATER_THAN_EQUAL_TOK, &FOLLOW_GREATER_THAN_EQUAL_TOK_in_builtinOp5023);
+        	         MATCHT(GREATER_THAN_EQUAL_TOK, &FOLLOW_GREATER_THAN_EQUAL_TOK_in_builtinOp5567);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebuiltinOpEx;
@@ -15466,9 +16952,9 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 11:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2465:5: LESS_THAN_EQUAL_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2670:5: LESS_THAN_EQUAL_TOK
         	    {
-        	         MATCHT(LESS_THAN_EQUAL_TOK, &FOLLOW_LESS_THAN_EQUAL_TOK_in_builtinOp5048);
+        	         MATCHT(LESS_THAN_EQUAL_TOK, &FOLLOW_LESS_THAN_EQUAL_TOK_in_builtinOp5592);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebuiltinOpEx;
@@ -15483,9 +16969,9 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 12:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2467:5: LESS_THAN_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2672:5: LESS_THAN_TOK
         	    {
-        	         MATCHT(LESS_THAN_TOK, &FOLLOW_LESS_THAN_TOK_in_builtinOp5073);
+        	         MATCHT(LESS_THAN_TOK, &FOLLOW_LESS_THAN_TOK_in_builtinOp5617);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebuiltinOpEx;
@@ -15500,9 +16986,9 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 13:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2469:5: PLUS_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2674:5: PLUS_TOK
         	    {
-        	         MATCHT(PLUS_TOK, &FOLLOW_PLUS_TOK_in_builtinOp5098);
+        	         MATCHT(PLUS_TOK, &FOLLOW_PLUS_TOK_in_builtinOp5642);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebuiltinOpEx;
@@ -15517,9 +17003,9 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 14:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2470:5: MINUS_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2675:5: MINUS_TOK
         	    {
-        	         MATCHT(MINUS_TOK, &FOLLOW_MINUS_TOK_in_builtinOp5110);
+        	         MATCHT(MINUS_TOK, &FOLLOW_MINUS_TOK_in_builtinOp5654);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebuiltinOpEx;
@@ -15534,9 +17020,9 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 15:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2471:5: STAR_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2676:5: STAR_TOK
         	    {
-        	         MATCHT(STAR_TOK, &FOLLOW_STAR_TOK_in_builtinOp5121);
+        	         MATCHT(STAR_TOK, &FOLLOW_STAR_TOK_in_builtinOp5665);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebuiltinOpEx;
@@ -15551,9 +17037,9 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 16:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2472:5: DIV_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2677:5: DIV_TOK
         	    {
-        	         MATCHT(DIV_TOK, &FOLLOW_DIV_TOK_in_builtinOp5133);
+        	         MATCHT(DIV_TOK, &FOLLOW_DIV_TOK_in_builtinOp5677);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebuiltinOpEx;
@@ -15568,9 +17054,9 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 17:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2474:5: BV2NAT_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2679:5: BV2NAT_TOK
         	    {
-        	         MATCHT(BV2NAT_TOK, &FOLLOW_BV2NAT_TOK_in_builtinOp5147);
+        	         MATCHT(BV2NAT_TOK, &FOLLOW_BV2NAT_TOK_in_builtinOp5691);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebuiltinOpEx;
@@ -15591,9 +17077,9 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 18:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2483:5: DTSIZE_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2688:5: DTSIZE_TOK
         	    {
-        	         MATCHT(DTSIZE_TOK, &FOLLOW_DTSIZE_TOK_in_builtinOp5160);
+        	         MATCHT(DTSIZE_TOK, &FOLLOW_DTSIZE_TOK_in_builtinOp5704);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebuiltinOpEx;
@@ -15608,9 +17094,9 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 19:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2484:5: FMFCARD_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2689:5: FMFCARD_TOK
         	    {
-        	         MATCHT(FMFCARD_TOK, &FOLLOW_FMFCARD_TOK_in_builtinOp5174);
+        	         MATCHT(FMFCARD_TOK, &FOLLOW_FMFCARD_TOK_in_builtinOp5718);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebuiltinOpEx;
@@ -15625,9 +17111,9 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 20:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2485:5: FMFCARDVAL_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2690:5: FMFCARDVAL_TOK
         	    {
-        	         MATCHT(FMFCARDVAL_TOK, &FOLLOW_FMFCARDVAL_TOK_in_builtinOp5187);
+        	         MATCHT(FMFCARDVAL_TOK, &FOLLOW_FMFCARDVAL_TOK_in_builtinOp5731);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebuiltinOpEx;
@@ -15642,9 +17128,9 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 21:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2486:5: INST_CLOSURE_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2691:5: INST_CLOSURE_TOK
         	    {
-        	         MATCHT(INST_CLOSURE_TOK, &FOLLOW_INST_CLOSURE_TOK_in_builtinOp5197);
+        	         MATCHT(INST_CLOSURE_TOK, &FOLLOW_INST_CLOSURE_TOK_in_builtinOp5741);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulebuiltinOpEx;
@@ -15679,7 +17165,7 @@ builtinOp(pSmt2Parser ctx, CVC4::Kind& kind)
 
 /**
  * $ANTLR start quantOp
- * ../../../../../../src/parser/smt2/Smt2.g:2496:1: quantOp[CVC4::Kind& kind] : ( EXISTS_TOK | FORALL_TOK );
+ * ../../../../src/parser/smt2/Smt2.g:2701:1: quantOp[CVC4::Kind& kind] : ( EXISTS_TOK | FORALL_TOK );
  */
 static void
 quantOp(pSmt2Parser ctx, CVC4::Kind& kind)
@@ -15692,22 +17178,22 @@ quantOp(pSmt2Parser ctx, CVC4::Kind& kind)
 
     {
         {
-            //  ../../../../../../src/parser/smt2/Smt2.g:2500:3: ( EXISTS_TOK | FORALL_TOK )
+            //  ../../../../src/parser/smt2/Smt2.g:2705:3: ( EXISTS_TOK | FORALL_TOK )
 
-            ANTLR3_UINT32 alt56;
+            ANTLR3_UINT32 alt65;
 
-            alt56=2;
+            alt65=2;
 
             switch ( LA(1) )
             {
             case EXISTS_TOK:
             	{
-            		alt56=1;
+            		alt65=1;
             	}
                 break;
             case FORALL_TOK:
             	{
-            		alt56=2;
+            		alt65=2;
             	}
                 break;
 
@@ -15715,7 +17201,7 @@ quantOp(pSmt2Parser ctx, CVC4::Kind& kind)
                 CONSTRUCTEX();
                 EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
                 EXCEPTION->message      = (void *)"";
-                EXCEPTION->decisionNum  = 56;
+                EXCEPTION->decisionNum  = 65;
                 EXCEPTION->state        = 0;
 
 
@@ -15723,12 +17209,12 @@ quantOp(pSmt2Parser ctx, CVC4::Kind& kind)
 
             }
 
-            switch (alt56)
+            switch (alt65)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2500:5: EXISTS_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2705:5: EXISTS_TOK
         	    {
-        	         MATCHT(EXISTS_TOK, &FOLLOW_EXISTS_TOK_in_quantOp5239);
+        	         MATCHT(EXISTS_TOK, &FOLLOW_EXISTS_TOK_in_quantOp5783);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulequantOpEx;
@@ -15743,9 +17229,9 @@ quantOp(pSmt2Parser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2501:5: FORALL_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2706:5: FORALL_TOK
         	    {
-        	         MATCHT(FORALL_TOK, &FOLLOW_FORALL_TOK_in_quantOp5250);
+        	         MATCHT(FORALL_TOK, &FOLLOW_FORALL_TOK_in_quantOp5794);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulequantOpEx;
@@ -15780,7 +17266,7 @@ quantOp(pSmt2Parser ctx, CVC4::Kind& kind)
 
 /**
  * $ANTLR start functionName
- * ../../../../../../src/parser/smt2/Smt2.g:2508:1: functionName[std::string& name, CVC4::parser::DeclarationCheck check] : symbol[name,check,SYM_VARIABLE] ;
+ * ../../../../src/parser/smt2/Smt2.g:2713:1: functionName[std::string& name, CVC4::parser::DeclarationCheck check] : symbol[name,check,SYM_VARIABLE] ;
  */
 static void
 functionName(pSmt2Parser ctx, std::string& name, CVC4::parser::DeclarationCheck check)
@@ -15789,10 +17275,10 @@ functionName(pSmt2Parser ctx, std::string& name, CVC4::parser::DeclarationCheck
      */
 
     {
-        // ../../../../../../src/parser/smt2/Smt2.g:2509:3: ( symbol[name,check,SYM_VARIABLE] )
-        // ../../../../../../src/parser/smt2/Smt2.g:2509:5: symbol[name,check,SYM_VARIABLE]
+        // ../../../../src/parser/smt2/Smt2.g:2714:3: ( symbol[name,check,SYM_VARIABLE] )
+        // ../../../../src/parser/smt2/Smt2.g:2714:5: symbol[name,check,SYM_VARIABLE]
         {
-            FOLLOWPUSH(FOLLOW_symbol_in_functionName5271);
+            FOLLOWPUSH(FOLLOW_symbol_in_functionName5815);
             symbol(ctx, name, check, SYM_VARIABLE);
 
             FOLLOWPOP();
@@ -15822,7 +17308,7 @@ functionName(pSmt2Parser ctx, std::string& name, CVC4::parser::DeclarationCheck
 
 /**
  * $ANTLR start sortList
- * ../../../../../../src/parser/smt2/Smt2.g:2516:1: sortList[std::vector<CVC4::Type>& sorts] : ( sortSymbol[t,CHECK_DECLARED] )* ;
+ * ../../../../src/parser/smt2/Smt2.g:2721:1: sortList[std::vector<CVC4::Type>& sorts] : ( sortSymbol[t,CHECK_DECLARED] )* ;
  */
 static void
 sortList(pSmt2Parser ctx, std::vector<CVC4::Type>& sorts)
@@ -15834,14 +17320,14 @@ sortList(pSmt2Parser ctx, std::vector<CVC4::Type>& sorts)
      */
 
     {
-        // ../../../../../../src/parser/smt2/Smt2.g:2520:3: ( ( sortSymbol[t,CHECK_DECLARED] )* )
-        // ../../../../../../src/parser/smt2/Smt2.g:2520:5: ( sortSymbol[t,CHECK_DECLARED] )*
+        // ../../../../src/parser/smt2/Smt2.g:2725:3: ( ( sortSymbol[t,CHECK_DECLARED] )* )
+        // ../../../../src/parser/smt2/Smt2.g:2725:5: ( sortSymbol[t,CHECK_DECLARED] )*
         {
-            // ../../../../../../src/parser/smt2/Smt2.g:2520:5: ( sortSymbol[t,CHECK_DECLARED] )*
+            // ../../../../src/parser/smt2/Smt2.g:2725:5: ( sortSymbol[t,CHECK_DECLARED] )*
 
             for (;;)
             {
-                int alt57=2;
+                int alt66=2;
                 switch ( LA(1) )
                 {
                 case CHECK_SYNTH_TOK:
@@ -15856,20 +17342,20 @@ sortList(pSmt2Parser ctx, std::vector<CVC4::Type>& sorts)
                 case SYNTH_FUN_TOK:
                 case SYNTH_INV_TOK:
                 case UNTERMINATED_QUOTED_SYMBOL:
-                case 147:
+                case 154:
                 	{
-                		alt57=1;
+                		alt66=1;
                 	}
                     break;
 
                 }
 
-                switch (alt57)
+                switch (alt66)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2520:7: sortSymbol[t,CHECK_DECLARED]
+            	    // ../../../../src/parser/smt2/Smt2.g:2725:7: sortSymbol[t,CHECK_DECLARED]
             	    {
-            	        FOLLOWPUSH(FOLLOW_sortSymbol_in_sortList5295);
+            	        FOLLOWPUSH(FOLLOW_sortSymbol_in_sortList5839);
             	        sortSymbol(ctx, t, CHECK_DECLARED);
 
             	        FOLLOWPOP();
@@ -15888,11 +17374,11 @@ sortList(pSmt2Parser ctx, std::vector<CVC4::Type>& sorts)
             	    break;
 
             	default:
-            	    goto loop57;	/* break out of the loop */
+            	    goto loop66;	/* break out of the loop */
             	    break;
                 }
             }
-            loop57: ; /* Jump out to here if this rule does not match */
+            loop66: ; /* Jump out to here if this rule does not match */
 
 
         }
@@ -15915,7 +17401,7 @@ sortList(pSmt2Parser ctx, std::vector<CVC4::Type>& sorts)
 
 /**
  * $ANTLR start nonemptySortList
- * ../../../../../../src/parser/smt2/Smt2.g:2523:1: nonemptySortList[std::vector<CVC4::Type>& sorts] : ( sortSymbol[t,CHECK_DECLARED] )+ ;
+ * ../../../../src/parser/smt2/Smt2.g:2728:1: nonemptySortList[std::vector<CVC4::Type>& sorts] : ( sortSymbol[t,CHECK_DECLARED] )+ ;
  */
 static void
 nonemptySortList(pSmt2Parser ctx, std::vector<CVC4::Type>& sorts)
@@ -15927,16 +17413,16 @@ nonemptySortList(pSmt2Parser ctx, std::vector<CVC4::Type>& sorts)
      */
 
     {
-        // ../../../../../../src/parser/smt2/Smt2.g:2527:3: ( ( sortSymbol[t,CHECK_DECLARED] )+ )
-        // ../../../../../../src/parser/smt2/Smt2.g:2527:5: ( sortSymbol[t,CHECK_DECLARED] )+
+        // ../../../../src/parser/smt2/Smt2.g:2732:3: ( ( sortSymbol[t,CHECK_DECLARED] )+ )
+        // ../../../../src/parser/smt2/Smt2.g:2732:5: ( sortSymbol[t,CHECK_DECLARED] )+
         {
-            // ../../../../../../src/parser/smt2/Smt2.g:2527:5: ( sortSymbol[t,CHECK_DECLARED] )+
+            // ../../../../src/parser/smt2/Smt2.g:2732:5: ( sortSymbol[t,CHECK_DECLARED] )+
             {
-                int cnt58=0;
+                int cnt67=0;
 
                 for (;;)
                 {
-                    int alt58=2;
+                    int alt67=2;
             	switch ( LA(1) )
             	{
             	case CHECK_SYNTH_TOK:
@@ -15951,20 +17437,20 @@ nonemptySortList(pSmt2Parser ctx, std::vector<CVC4::Type>& sorts)
             	case SYNTH_FUN_TOK:
             	case SYNTH_INV_TOK:
             	case UNTERMINATED_QUOTED_SYMBOL:
-            	case 147:
+            	case 154:
             		{
-            			alt58=1;
+            			alt67=1;
             		}
             	    break;
 
             	}
 
-            	switch (alt58)
+            	switch (alt67)
             	{
             	    case 1:
-            	        // ../../../../../../src/parser/smt2/Smt2.g:2527:7: sortSymbol[t,CHECK_DECLARED]
+            	        // ../../../../src/parser/smt2/Smt2.g:2732:7: sortSymbol[t,CHECK_DECLARED]
             	        {
-            	            FOLLOWPUSH(FOLLOW_sortSymbol_in_nonemptySortList5322);
+            	            FOLLOWPUSH(FOLLOW_sortSymbol_in_nonemptySortList5866);
             	            sortSymbol(ctx, t, CHECK_DECLARED);
 
             	            FOLLOWPOP();
@@ -15984,9 +17470,9 @@ nonemptySortList(pSmt2Parser ctx, std::vector<CVC4::Type>& sorts)
 
             	    default:
 
-            		if ( cnt58 >= 1 )
+            		if ( cnt67 >= 1 )
             		{
-            		    goto loop58;
+            		    goto loop67;
             		}
             		/* mismatchedSetEx()
             		 */
@@ -15997,9 +17483,9 @@ nonemptySortList(pSmt2Parser ctx, std::vector<CVC4::Type>& sorts)
 
             		goto rulenonemptySortListEx;
             	}
-            	cnt58++;
+            	cnt67++;
                 }
-                loop58: ;	/* Jump to here if this rule does not match */
+                loop67: ;	/* Jump to here if this rule does not match */
             }
 
         }
@@ -16022,7 +17508,7 @@ nonemptySortList(pSmt2Parser ctx, std::vector<CVC4::Type>& sorts)
 
 /**
  * $ANTLR start sortedVarList
- * ../../../../../../src/parser/smt2/Smt2.g:2534:1: sortedVarList[std::vector<std::pair<std::string, CVC4::Type> >& sortedVars] : ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )* ;
+ * ../../../../src/parser/smt2/Smt2.g:2739:1: sortedVarList[std::vector<std::pair<std::string, CVC4::Type> >& sortedVars] : ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )* ;
  */
 static void
 sortedVarList(pSmt2Parser ctx, std::vector<std::pair<std::string, CVC4::Type> >& sortedVars)
@@ -16035,37 +17521,37 @@ sortedVarList(pSmt2Parser ctx, std::vector<std::pair<std::string, CVC4::Type> >&
      */
 
     {
-        // ../../../../../../src/parser/smt2/Smt2.g:2539:3: ( ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )* )
-        // ../../../../../../src/parser/smt2/Smt2.g:2539:5: ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )*
+        // ../../../../src/parser/smt2/Smt2.g:2744:3: ( ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )* )
+        // ../../../../src/parser/smt2/Smt2.g:2744:5: ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )*
         {
-            // ../../../../../../src/parser/smt2/Smt2.g:2539:5: ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )*
+            // ../../../../src/parser/smt2/Smt2.g:2744:5: ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )*
 
             for (;;)
             {
-                int alt59=2;
+                int alt68=2;
                 switch ( LA(1) )
                 {
                 case LPAREN_TOK:
                 	{
-                		alt59=1;
+                		alt68=1;
                 	}
                     break;
 
                 }
 
-                switch (alt59)
+                switch (alt68)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2539:7: LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] RPAREN_TOK
+            	    // ../../../../src/parser/smt2/Smt2.g:2744:7: LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] RPAREN_TOK
             	    {
-            	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sortedVarList5351);
+            	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sortedVarList5895);
             	        if  (HASEXCEPTION())
             	        {
             	            goto rulesortedVarListEx;
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_symbol_in_sortedVarList5353);
+            	        FOLLOWPUSH(FOLLOW_symbol_in_sortedVarList5897);
             	        symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
 
             	        FOLLOWPOP();
@@ -16075,7 +17561,7 @@ sortedVarList(pSmt2Parser ctx, std::vector<std::pair<std::string, CVC4::Type> >&
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_sortSymbol_in_sortedVarList5362);
+            	        FOLLOWPUSH(FOLLOW_sortSymbol_in_sortedVarList5906);
             	        sortSymbol(ctx, t, CHECK_DECLARED);
 
             	        FOLLOWPOP();
@@ -16085,7 +17571,7 @@ sortedVarList(pSmt2Parser ctx, std::vector<std::pair<std::string, CVC4::Type> >&
             	        }
 
 
-            	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sortedVarList5365);
+            	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sortedVarList5909);
             	        if  (HASEXCEPTION())
             	        {
             	            goto rulesortedVarListEx;
@@ -16101,11 +17587,11 @@ sortedVarList(pSmt2Parser ctx, std::vector<std::pair<std::string, CVC4::Type> >&
             	    break;
 
             	default:
-            	    goto loop59;	/* break out of the loop */
+            	    goto loop68;	/* break out of the loop */
             	    break;
                 }
             }
-            loop59: ; /* Jump out to here if this rule does not match */
+            loop68: ; /* Jump out to here if this rule does not match */
 
 
         }
@@ -16128,7 +17614,7 @@ sortedVarList(pSmt2Parser ctx, std::vector<std::pair<std::string, CVC4::Type> >&
 
 /**
  * $ANTLR start sortName
- * ../../../../../../src/parser/smt2/Smt2.g:2549:1: sortName[std::string& name, CVC4::parser::DeclarationCheck check] : symbol[name,check,SYM_SORT] ;
+ * ../../../../src/parser/smt2/Smt2.g:2754:1: sortName[std::string& name, CVC4::parser::DeclarationCheck check] : symbol[name,check,SYM_SORT] ;
  */
 static void
 sortName(pSmt2Parser ctx, std::string& name, CVC4::parser::DeclarationCheck check)
@@ -16137,10 +17623,10 @@ sortName(pSmt2Parser ctx, std::string& name, CVC4::parser::DeclarationCheck chec
      */
 
     {
-        // ../../../../../../src/parser/smt2/Smt2.g:2550:3: ( symbol[name,check,SYM_SORT] )
-        // ../../../../../../src/parser/smt2/Smt2.g:2550:5: symbol[name,check,SYM_SORT]
+        // ../../../../src/parser/smt2/Smt2.g:2755:3: ( symbol[name,check,SYM_SORT] )
+        // ../../../../src/parser/smt2/Smt2.g:2755:5: symbol[name,check,SYM_SORT]
         {
-            FOLLOWPUSH(FOLLOW_symbol_in_sortName5396);
+            FOLLOWPUSH(FOLLOW_symbol_in_sortName5940);
             symbol(ctx, name, check, SYM_SORT);
 
             FOLLOWPOP();
@@ -16170,7 +17656,7 @@ sortName(pSmt2Parser ctx, std::string& name, CVC4::parser::DeclarationCheck chec
 
 /**
  * $ANTLR start sortSymbol
- * ../../../../../../src/parser/smt2/Smt2.g:2553:1: sortSymbol[CVC4::Type& t, CVC4::parser::DeclarationCheck check] : ( sortName[name,CHECK_NONE] | LPAREN_TOK ( INDEX_TOK |) symbol[name,CHECK_NONE,SYM_SORT] ( nonemptyNumeralList[numerals] | sortList[args] ) RPAREN_TOK );
+ * ../../../../src/parser/smt2/Smt2.g:2758:1: sortSymbol[CVC4::Type& t, CVC4::parser::DeclarationCheck check] : ( sortName[name,CHECK_NONE] | LPAREN_TOK ( INDEX_TOK |) symbol[name,CHECK_NONE,SYM_SORT] ( nonemptyNumeralList[numerals] | sortList[args] ) RPAREN_TOK );
  */
 static void
 sortSymbol(pSmt2Parser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
@@ -16186,11 +17672,11 @@ sortSymbol(pSmt2Parser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
 
     {
         {
-            //  ../../../../../../src/parser/smt2/Smt2.g:2560:3: ( sortName[name,CHECK_NONE] | LPAREN_TOK ( INDEX_TOK |) symbol[name,CHECK_NONE,SYM_SORT] ( nonemptyNumeralList[numerals] | sortList[args] ) RPAREN_TOK )
+            //  ../../../../src/parser/smt2/Smt2.g:2765:3: ( sortName[name,CHECK_NONE] | LPAREN_TOK ( INDEX_TOK |) symbol[name,CHECK_NONE,SYM_SORT] ( nonemptyNumeralList[numerals] | sortList[args] ) RPAREN_TOK )
 
-            ANTLR3_UINT32 alt62;
+            ANTLR3_UINT32 alt71;
 
-            alt62=2;
+            alt71=2;
 
             switch ( LA(1) )
             {
@@ -16205,14 +17691,14 @@ sortSymbol(pSmt2Parser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
             case SYNTH_FUN_TOK:
             case SYNTH_INV_TOK:
             case UNTERMINATED_QUOTED_SYMBOL:
-            case 147:
+            case 154:
             	{
-            		alt62=1;
+            		alt71=1;
             	}
                 break;
             case LPAREN_TOK:
             	{
-            		alt62=2;
+            		alt71=2;
             	}
                 break;
 
@@ -16220,7 +17706,7 @@ sortSymbol(pSmt2Parser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
                 CONSTRUCTEX();
                 EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
                 EXCEPTION->message      = (void *)"";
-                EXCEPTION->decisionNum  = 62;
+                EXCEPTION->decisionNum  = 71;
                 EXCEPTION->state        = 0;
 
 
@@ -16228,12 +17714,12 @@ sortSymbol(pSmt2Parser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
 
             }
 
-            switch (alt62)
+            switch (alt71)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2560:5: sortName[name,CHECK_NONE]
+        	    // ../../../../src/parser/smt2/Smt2.g:2765:5: sortName[name,CHECK_NONE]
         	    {
-        	        FOLLOWPUSH(FOLLOW_sortName_in_sortSymbol5416);
+        	        FOLLOWPUSH(FOLLOW_sortName_in_sortSymbol5960);
         	        sortName(ctx, name, CHECK_NONE);
 
         	        FOLLOWPOP();
@@ -16257,23 +17743,23 @@ sortSymbol(pSmt2Parser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2568:5: LPAREN_TOK ( INDEX_TOK |) symbol[name,CHECK_NONE,SYM_SORT] ( nonemptyNumeralList[numerals] | sortList[args] ) RPAREN_TOK
+        	    // ../../../../src/parser/smt2/Smt2.g:2773:5: LPAREN_TOK ( INDEX_TOK |) symbol[name,CHECK_NONE,SYM_SORT] ( nonemptyNumeralList[numerals] | sortList[args] ) RPAREN_TOK
         	    {
-        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sortSymbol5429);
+        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sortSymbol5973);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesortSymbolEx;
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:2568:16: ( INDEX_TOK |)
+        	        // ../../../../src/parser/smt2/Smt2.g:2773:16: ( INDEX_TOK |)
         	        {
-        	            int alt60=2;
+        	            int alt69=2;
         	            switch ( LA(1) )
         	            {
         	            case INDEX_TOK:
         	            	{
-        	            		alt60=1;
+        	            		alt69=1;
         	            	}
         	                break;
         	            case CHECK_SYNTH_TOK:
@@ -16287,9 +17773,9 @@ sortSymbol(pSmt2Parser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
         	            case SYNTH_FUN_TOK:
         	            case SYNTH_INV_TOK:
         	            case UNTERMINATED_QUOTED_SYMBOL:
-        	            case 147:
+        	            case 154:
         	            	{
-        	            		alt60=2;
+        	            		alt69=2;
         	            	}
         	                break;
 
@@ -16297,7 +17783,7 @@ sortSymbol(pSmt2Parser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
         	                CONSTRUCTEX();
         	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
         	                EXCEPTION->message      = (void *)"";
-        	                EXCEPTION->decisionNum  = 60;
+        	                EXCEPTION->decisionNum  = 69;
         	                EXCEPTION->state        = 0;
 
 
@@ -16305,12 +17791,12 @@ sortSymbol(pSmt2Parser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
 
         	            }
 
-        	            switch (alt60)
+        	            switch (alt69)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2568:17: INDEX_TOK
+        	        	    // ../../../../src/parser/smt2/Smt2.g:2773:17: INDEX_TOK
         	        	    {
-        	        	         MATCHT(INDEX_TOK, &FOLLOW_INDEX_TOK_in_sortSymbol5432);
+        	        	         MATCHT(INDEX_TOK, &FOLLOW_INDEX_TOK_in_sortSymbol5976);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulesortSymbolEx;
@@ -16325,7 +17811,7 @@ sortSymbol(pSmt2Parser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2568:47: 
+        	        	    // ../../../../src/parser/smt2/Smt2.g:2773:47: 
         	        	    {
         	        	        {
         	        	            indexed = false;
@@ -16338,7 +17824,7 @@ sortSymbol(pSmt2Parser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
         	            }
         	        }
 
-        	        FOLLOWPUSH(FOLLOW_symbol_in_sortSymbol5445);
+        	        FOLLOWPUSH(FOLLOW_symbol_in_sortSymbol5989);
         	        symbol(ctx, name, CHECK_NONE, SYM_SORT);
 
         	        FOLLOWPOP();
@@ -16348,14 +17834,14 @@ sortSymbol(pSmt2Parser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:2570:5: ( nonemptyNumeralList[numerals] | sortList[args] )
+        	        // ../../../../src/parser/smt2/Smt2.g:2775:5: ( nonemptyNumeralList[numerals] | sortList[args] )
         	        {
-        	            int alt61=2;
+        	            int alt70=2;
         	            switch ( LA(1) )
         	            {
         	            case INTEGER_LITERAL:
         	            	{
-        	            		alt61=1;
+        	            		alt70=1;
         	            	}
         	                break;
         	            case CHECK_SYNTH_TOK:
@@ -16371,9 +17857,9 @@ sortSymbol(pSmt2Parser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
         	            case SYNTH_FUN_TOK:
         	            case SYNTH_INV_TOK:
         	            case UNTERMINATED_QUOTED_SYMBOL:
-        	            case 147:
+        	            case 154:
         	            	{
-        	            		alt61=2;
+        	            		alt70=2;
         	            	}
         	                break;
 
@@ -16381,7 +17867,7 @@ sortSymbol(pSmt2Parser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
         	                CONSTRUCTEX();
         	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
         	                EXCEPTION->message      = (void *)"";
-        	                EXCEPTION->decisionNum  = 61;
+        	                EXCEPTION->decisionNum  = 70;
         	                EXCEPTION->state        = 0;
 
 
@@ -16389,12 +17875,12 @@ sortSymbol(pSmt2Parser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
 
         	            }
 
-        	            switch (alt61)
+        	            switch (alt70)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2570:7: nonemptyNumeralList[numerals]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:2775:7: nonemptyNumeralList[numerals]
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_nonemptyNumeralList_in_sortSymbol5454);
+        	        	        FOLLOWPUSH(FOLLOW_nonemptyNumeralList_in_sortSymbol5998);
         	        	        nonemptyNumeralList(ctx, numerals);
 
         	        	        FOLLOWPOP();
@@ -16443,9 +17929,9 @@ sortSymbol(pSmt2Parser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2603:7: sortList[args]
+        	        	    // ../../../../src/parser/smt2/Smt2.g:2808:7: sortList[args]
         	        	    {
-        	        	        FOLLOWPUSH(FOLLOW_sortList_in_sortSymbol5471);
+        	        	        FOLLOWPUSH(FOLLOW_sortList_in_sortSymbol6015);
         	        	        sortList(ctx, args);
 
         	        	        FOLLOWPOP();
@@ -16504,7 +17990,7 @@ sortSymbol(pSmt2Parser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
         	            }
         	        }
 
-        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sortSymbol5488);
+        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sortSymbol6032);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesortSymbolEx;
@@ -16534,7 +18020,7 @@ sortSymbol(pSmt2Parser ctx, CVC4::Type& t, CVC4::parser::DeclarationCheck check)
 
 /**
  * $ANTLR start symbolList
- * ../../../../../../src/parser/smt2/Smt2.g:2650:1: symbolList[std::vector<std::string>& names,\n CVC4::parser::DeclarationCheck check,\n CVC4::parser::SymbolType type] : ( symbol[id,check,type] )* ;
+ * ../../../../src/parser/smt2/Smt2.g:2855:1: symbolList[std::vector<std::string>& names,\n CVC4::parser::DeclarationCheck check,\n CVC4::parser::SymbolType type] : ( symbol[id,check,type] )* ;
  */
 static void
 symbolList(pSmt2Parser ctx, std::vector<std::string>& names, CVC4::parser::DeclarationCheck check, CVC4::parser::SymbolType type)
@@ -16546,14 +18032,14 @@ symbolList(pSmt2Parser ctx, std::vector<std::string>& names, CVC4::parser::Decla
      */
 
     {
-        // ../../../../../../src/parser/smt2/Smt2.g:2656:3: ( ( symbol[id,check,type] )* )
-        // ../../../../../../src/parser/smt2/Smt2.g:2656:5: ( symbol[id,check,type] )*
+        // ../../../../src/parser/smt2/Smt2.g:2861:3: ( ( symbol[id,check,type] )* )
+        // ../../../../src/parser/smt2/Smt2.g:2861:5: ( symbol[id,check,type] )*
         {
-            // ../../../../../../src/parser/smt2/Smt2.g:2656:5: ( symbol[id,check,type] )*
+            // ../../../../src/parser/smt2/Smt2.g:2861:5: ( symbol[id,check,type] )*
 
             for (;;)
             {
-                int alt63=2;
+                int alt72=2;
                 switch ( LA(1) )
                 {
                 case CHECK_SYNTH_TOK:
@@ -16567,20 +18053,20 @@ symbolList(pSmt2Parser ctx, std::vector<std::string>& names, CVC4::parser::Decla
                 case SYNTH_FUN_TOK:
                 case SYNTH_INV_TOK:
                 case UNTERMINATED_QUOTED_SYMBOL:
-                case 147:
+                case 154:
                 	{
-                		alt63=1;
+                		alt72=1;
                 	}
                     break;
 
                 }
 
-                switch (alt63)
+                switch (alt72)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2656:7: symbol[id,check,type]
+            	    // ../../../../src/parser/smt2/Smt2.g:2861:7: symbol[id,check,type]
             	    {
-            	        FOLLOWPUSH(FOLLOW_symbol_in_symbolList5511);
+            	        FOLLOWPUSH(FOLLOW_symbol_in_symbolList6055);
             	        symbol(ctx, id, check, type);
 
             	        FOLLOWPOP();
@@ -16599,11 +18085,11 @@ symbolList(pSmt2Parser ctx, std::vector<std::string>& names, CVC4::parser::Decla
             	    break;
 
             	default:
-            	    goto loop63;	/* break out of the loop */
+            	    goto loop72;	/* break out of the loop */
             	    break;
                 }
             }
-            loop63: ; /* Jump out to here if this rule does not match */
+            loop72: ; /* Jump out to here if this rule does not match */
 
 
         }
@@ -16626,7 +18112,7 @@ symbolList(pSmt2Parser ctx, std::vector<std::string>& names, CVC4::parser::Decla
 
 /**
  * $ANTLR start symbol
- * ../../../../../../src/parser/smt2/Smt2.g:2665:1: symbol[std::string& id,\n CVC4::parser::DeclarationCheck check,\n CVC4::parser::SymbolType type] : ( SIMPLE_SYMBOL | ( 'repeat' | SET_OPTIONS_TOK | DECLARE_VAR_TOK | DECLARE_PRIMED_VAR_TOK | SYNTH_FUN_TOK | SYNTH_INV_TOK | CONSTRAINT_TOK | INV_CONSTRAINT_TOK | CHECK_SYNTH_TOK ) | QUOTED_SYMBOL | UNTERMINATED_QUOTED_SYMBOL ( EOF | '\\\\' ) );
+ * ../../../../src/parser/smt2/Smt2.g:2870:1: symbol[std::string& id,\n CVC4::parser::DeclarationCheck check,\n CVC4::parser::SymbolType type] : ( SIMPLE_SYMBOL | ( 'repeat' | SET_OPTIONS_TOK | DECLARE_VAR_TOK | DECLARE_PRIMED_VAR_TOK | SYNTH_FUN_TOK | SYNTH_INV_TOK | CONSTRAINT_TOK | INV_CONSTRAINT_TOK | CHECK_SYNTH_TOK ) | QUOTED_SYMBOL | UNTERMINATED_QUOTED_SYMBOL ( EOF | '\\\\' ) );
  */
 static void
 symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, CVC4::parser::SymbolType type)
@@ -16642,17 +18128,17 @@ symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, C
 
     {
         {
-            //  ../../../../../../src/parser/smt2/Smt2.g:2668:3: ( SIMPLE_SYMBOL | ( 'repeat' | SET_OPTIONS_TOK | DECLARE_VAR_TOK | DECLARE_PRIMED_VAR_TOK | SYNTH_FUN_TOK | SYNTH_INV_TOK | CONSTRAINT_TOK | INV_CONSTRAINT_TOK | CHECK_SYNTH_TOK ) | QUOTED_SYMBOL | UNTERMINATED_QUOTED_SYMBOL ( EOF | '\\\\' ) )
+            //  ../../../../src/parser/smt2/Smt2.g:2873:3: ( SIMPLE_SYMBOL | ( 'repeat' | SET_OPTIONS_TOK | DECLARE_VAR_TOK | DECLARE_PRIMED_VAR_TOK | SYNTH_FUN_TOK | SYNTH_INV_TOK | CONSTRAINT_TOK | INV_CONSTRAINT_TOK | CHECK_SYNTH_TOK ) | QUOTED_SYMBOL | UNTERMINATED_QUOTED_SYMBOL ( EOF | '\\\\' ) )
 
-            ANTLR3_UINT32 alt66;
+            ANTLR3_UINT32 alt75;
 
-            alt66=4;
+            alt75=4;
 
             switch ( LA(1) )
             {
             case SIMPLE_SYMBOL:
             	{
-            		alt66=1;
+            		alt75=1;
             	}
                 break;
             case CHECK_SYNTH_TOK:
@@ -16663,19 +18149,19 @@ symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, C
             case SET_OPTIONS_TOK:
             case SYNTH_FUN_TOK:
             case SYNTH_INV_TOK:
-            case 147:
+            case 154:
             	{
-            		alt66=2;
+            		alt75=2;
             	}
                 break;
             case QUOTED_SYMBOL:
             	{
-            		alt66=3;
+            		alt75=3;
             	}
                 break;
             case UNTERMINATED_QUOTED_SYMBOL:
             	{
-            		alt66=4;
+            		alt75=4;
             	}
                 break;
 
@@ -16683,7 +18169,7 @@ symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, C
                 CONSTRUCTEX();
                 EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
                 EXCEPTION->message      = (void *)"";
-                EXCEPTION->decisionNum  = 66;
+                EXCEPTION->decisionNum  = 75;
                 EXCEPTION->state        = 0;
 
 
@@ -16691,12 +18177,12 @@ symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, C
 
             }
 
-            switch (alt66)
+            switch (alt75)
             {
         	case 1:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2668:5: SIMPLE_SYMBOL
+        	    // ../../../../src/parser/smt2/Smt2.g:2873:5: SIMPLE_SYMBOL
         	    {
-        	        SIMPLE_SYMBOL22 = (pANTLR3_COMMON_TOKEN) MATCHT(SIMPLE_SYMBOL, &FOLLOW_SIMPLE_SYMBOL_in_symbol5533);
+        	        SIMPLE_SYMBOL22 = (pANTLR3_COMMON_TOKEN) MATCHT(SIMPLE_SYMBOL, &FOLLOW_SIMPLE_SYMBOL_in_symbol6077);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesymbolEx;
@@ -16716,56 +18202,56 @@ symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, C
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2675:5: ( 'repeat' | SET_OPTIONS_TOK | DECLARE_VAR_TOK | DECLARE_PRIMED_VAR_TOK | SYNTH_FUN_TOK | SYNTH_INV_TOK | CONSTRAINT_TOK | INV_CONSTRAINT_TOK | CHECK_SYNTH_TOK )
+        	    // ../../../../src/parser/smt2/Smt2.g:2880:5: ( 'repeat' | SET_OPTIONS_TOK | DECLARE_VAR_TOK | DECLARE_PRIMED_VAR_TOK | SYNTH_FUN_TOK | SYNTH_INV_TOK | CONSTRAINT_TOK | INV_CONSTRAINT_TOK | CHECK_SYNTH_TOK )
         	    {
-        	        // ../../../../../../src/parser/smt2/Smt2.g:2675:5: ( 'repeat' | SET_OPTIONS_TOK | DECLARE_VAR_TOK | DECLARE_PRIMED_VAR_TOK | SYNTH_FUN_TOK | SYNTH_INV_TOK | CONSTRAINT_TOK | INV_CONSTRAINT_TOK | CHECK_SYNTH_TOK )
+        	        // ../../../../src/parser/smt2/Smt2.g:2880:5: ( 'repeat' | SET_OPTIONS_TOK | DECLARE_VAR_TOK | DECLARE_PRIMED_VAR_TOK | SYNTH_FUN_TOK | SYNTH_INV_TOK | CONSTRAINT_TOK | INV_CONSTRAINT_TOK | CHECK_SYNTH_TOK )
         	        {
-        	            int alt64=9;
+        	            int alt73=9;
         	            switch ( LA(1) )
         	            {
-        	            case 147:
+        	            case 154:
         	            	{
-        	            		alt64=1;
+        	            		alt73=1;
         	            	}
         	                break;
         	            case SET_OPTIONS_TOK:
         	            	{
-        	            		alt64=2;
+        	            		alt73=2;
         	            	}
         	                break;
         	            case DECLARE_VAR_TOK:
         	            	{
-        	            		alt64=3;
+        	            		alt73=3;
         	            	}
         	                break;
         	            case DECLARE_PRIMED_VAR_TOK:
         	            	{
-        	            		alt64=4;
+        	            		alt73=4;
         	            	}
         	                break;
         	            case SYNTH_FUN_TOK:
         	            	{
-        	            		alt64=5;
+        	            		alt73=5;
         	            	}
         	                break;
         	            case SYNTH_INV_TOK:
         	            	{
-        	            		alt64=6;
+        	            		alt73=6;
         	            	}
         	                break;
         	            case CONSTRAINT_TOK:
         	            	{
-        	            		alt64=7;
+        	            		alt73=7;
         	            	}
         	                break;
         	            case INV_CONSTRAINT_TOK:
         	            	{
-        	            		alt64=8;
+        	            		alt73=8;
         	            	}
         	                break;
         	            case CHECK_SYNTH_TOK:
         	            	{
-        	            		alt64=9;
+        	            		alt73=9;
         	            	}
         	                break;
 
@@ -16773,7 +18259,7 @@ symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, C
         	                CONSTRUCTEX();
         	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
         	                EXCEPTION->message      = (void *)"";
-        	                EXCEPTION->decisionNum  = 64;
+        	                EXCEPTION->decisionNum  = 73;
         	                EXCEPTION->state        = 0;
 
 
@@ -16781,12 +18267,12 @@ symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, C
 
         	            }
 
-        	            switch (alt64)
+        	            switch (alt73)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2675:7: 'repeat'
+        	        	    // ../../../../src/parser/smt2/Smt2.g:2880:7: 'repeat'
         	        	    {
-        	        	         MATCHT(147, &FOLLOW_147_in_symbol5547);
+        	        	         MATCHT(154, &FOLLOW_154_in_symbol6091);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulesymbolEx;
@@ -16801,9 +18287,9 @@ symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, C
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2678:7: SET_OPTIONS_TOK
+        	        	    // ../../../../src/parser/smt2/Smt2.g:2883:7: SET_OPTIONS_TOK
         	        	    {
-        	        	         MATCHT(SET_OPTIONS_TOK, &FOLLOW_SET_OPTIONS_TOK_in_symbol5563);
+        	        	         MATCHT(SET_OPTIONS_TOK, &FOLLOW_SET_OPTIONS_TOK_in_symbol6107);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulesymbolEx;
@@ -16818,9 +18304,9 @@ symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, C
         	        	    }
         	        	    break;
         	        	case 3:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2679:7: DECLARE_VAR_TOK
+        	        	    // ../../../../src/parser/smt2/Smt2.g:2884:7: DECLARE_VAR_TOK
         	        	    {
-        	        	         MATCHT(DECLARE_VAR_TOK, &FOLLOW_DECLARE_VAR_TOK_in_symbol5573);
+        	        	         MATCHT(DECLARE_VAR_TOK, &FOLLOW_DECLARE_VAR_TOK_in_symbol6117);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulesymbolEx;
@@ -16835,9 +18321,9 @@ symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, C
         	        	    }
         	        	    break;
         	        	case 4:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2680:7: DECLARE_PRIMED_VAR_TOK
+        	        	    // ../../../../src/parser/smt2/Smt2.g:2885:7: DECLARE_PRIMED_VAR_TOK
         	        	    {
-        	        	         MATCHT(DECLARE_PRIMED_VAR_TOK, &FOLLOW_DECLARE_PRIMED_VAR_TOK_in_symbol5583);
+        	        	         MATCHT(DECLARE_PRIMED_VAR_TOK, &FOLLOW_DECLARE_PRIMED_VAR_TOK_in_symbol6127);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulesymbolEx;
@@ -16852,9 +18338,9 @@ symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, C
         	        	    }
         	        	    break;
         	        	case 5:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2681:7: SYNTH_FUN_TOK
+        	        	    // ../../../../src/parser/smt2/Smt2.g:2886:7: SYNTH_FUN_TOK
         	        	    {
-        	        	         MATCHT(SYNTH_FUN_TOK, &FOLLOW_SYNTH_FUN_TOK_in_symbol5593);
+        	        	         MATCHT(SYNTH_FUN_TOK, &FOLLOW_SYNTH_FUN_TOK_in_symbol6137);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulesymbolEx;
@@ -16869,9 +18355,9 @@ symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, C
         	        	    }
         	        	    break;
         	        	case 6:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2682:7: SYNTH_INV_TOK
+        	        	    // ../../../../src/parser/smt2/Smt2.g:2887:7: SYNTH_INV_TOK
         	        	    {
-        	        	         MATCHT(SYNTH_INV_TOK, &FOLLOW_SYNTH_INV_TOK_in_symbol5603);
+        	        	         MATCHT(SYNTH_INV_TOK, &FOLLOW_SYNTH_INV_TOK_in_symbol6147);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulesymbolEx;
@@ -16886,9 +18372,9 @@ symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, C
         	        	    }
         	        	    break;
         	        	case 7:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2683:7: CONSTRAINT_TOK
+        	        	    // ../../../../src/parser/smt2/Smt2.g:2888:7: CONSTRAINT_TOK
         	        	    {
-        	        	         MATCHT(CONSTRAINT_TOK, &FOLLOW_CONSTRAINT_TOK_in_symbol5613);
+        	        	         MATCHT(CONSTRAINT_TOK, &FOLLOW_CONSTRAINT_TOK_in_symbol6157);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulesymbolEx;
@@ -16903,9 +18389,9 @@ symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, C
         	        	    }
         	        	    break;
         	        	case 8:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2684:7: INV_CONSTRAINT_TOK
+        	        	    // ../../../../src/parser/smt2/Smt2.g:2889:7: INV_CONSTRAINT_TOK
         	        	    {
-        	        	         MATCHT(INV_CONSTRAINT_TOK, &FOLLOW_INV_CONSTRAINT_TOK_in_symbol5623);
+        	        	         MATCHT(INV_CONSTRAINT_TOK, &FOLLOW_INV_CONSTRAINT_TOK_in_symbol6167);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulesymbolEx;
@@ -16920,9 +18406,9 @@ symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, C
         	        	    }
         	        	    break;
         	        	case 9:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2685:7: CHECK_SYNTH_TOK
+        	        	    // ../../../../src/parser/smt2/Smt2.g:2890:7: CHECK_SYNTH_TOK
         	        	    {
-        	        	         MATCHT(CHECK_SYNTH_TOK, &FOLLOW_CHECK_SYNTH_TOK_in_symbol5633);
+        	        	         MATCHT(CHECK_SYNTH_TOK, &FOLLOW_CHECK_SYNTH_TOK_in_symbol6177);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulesymbolEx;
@@ -16948,9 +18434,9 @@ symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, C
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2688:5: QUOTED_SYMBOL
+        	    // ../../../../src/parser/smt2/Smt2.g:2893:5: QUOTED_SYMBOL
         	    {
-        	        QUOTED_SYMBOL23 = (pANTLR3_COMMON_TOKEN) MATCHT(QUOTED_SYMBOL, &FOLLOW_QUOTED_SYMBOL_in_symbol5653);
+        	        QUOTED_SYMBOL23 = (pANTLR3_COMMON_TOKEN) MATCHT(QUOTED_SYMBOL, &FOLLOW_QUOTED_SYMBOL_in_symbol6197);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesymbolEx;
@@ -16972,28 +18458,28 @@ symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, C
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/smt2/Smt2.g:2697:5: UNTERMINATED_QUOTED_SYMBOL ( EOF | '\\\\' )
+        	    // ../../../../src/parser/smt2/Smt2.g:2902:5: UNTERMINATED_QUOTED_SYMBOL ( EOF | '\\\\' )
         	    {
-        	         MATCHT(UNTERMINATED_QUOTED_SYMBOL, &FOLLOW_UNTERMINATED_QUOTED_SYMBOL_in_symbol5665);
+        	         MATCHT(UNTERMINATED_QUOTED_SYMBOL, &FOLLOW_UNTERMINATED_QUOTED_SYMBOL_in_symbol6209);
         	        if  (HASEXCEPTION())
         	        {
         	            goto rulesymbolEx;
         	        }
 
 
-        	        // ../../../../../../src/parser/smt2/Smt2.g:2698:5: ( EOF | '\\\\' )
+        	        // ../../../../src/parser/smt2/Smt2.g:2903:5: ( EOF | '\\\\' )
         	        {
-        	            int alt65=2;
+        	            int alt74=2;
         	            switch ( LA(1) )
         	            {
         	            case EOF:
         	            	{
-        	            		alt65=1;
+        	            		alt74=1;
         	            	}
         	                break;
-        	            case 145:
+        	            case 152:
         	            	{
-        	            		alt65=2;
+        	            		alt74=2;
         	            	}
         	                break;
 
@@ -17001,7 +18487,7 @@ symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, C
         	                CONSTRUCTEX();
         	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
         	                EXCEPTION->message      = (void *)"";
-        	                EXCEPTION->decisionNum  = 65;
+        	                EXCEPTION->decisionNum  = 74;
         	                EXCEPTION->state        = 0;
 
 
@@ -17009,12 +18495,12 @@ symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, C
 
         	            }
 
-        	            switch (alt65)
+        	            switch (alt74)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2698:7: EOF
+        	        	    // ../../../../src/parser/smt2/Smt2.g:2903:7: EOF
         	        	    {
-        	        	         MATCHT(EOF, &FOLLOW_EOF_in_symbol5673);
+        	        	         MATCHT(EOF, &FOLLOW_EOF_in_symbol6217);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulesymbolEx;
@@ -17029,9 +18515,9 @@ symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, C
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/smt2/Smt2.g:2700:7: '\\\\'
+        	        	    // ../../../../src/parser/smt2/Smt2.g:2905:7: '\\\\'
         	        	    {
-        	        	         MATCHT(145, &FOLLOW_145_in_symbol5689);
+        	        	         MATCHT(152, &FOLLOW_152_in_symbol6233);
         	        	        if  (HASEXCEPTION())
         	        	        {
         	        	            goto rulesymbolEx;
@@ -17073,7 +18559,7 @@ symbol(pSmt2Parser ctx, std::string& id, CVC4::parser::DeclarationCheck check, C
 
 /**
  * $ANTLR start nonemptyNumeralList
- * ../../../../../../src/parser/smt2/Smt2.g:2710:1: nonemptyNumeralList[std::vector<uint64_t>& numerals] : ( INTEGER_LITERAL )+ ;
+ * ../../../../src/parser/smt2/Smt2.g:2915:1: nonemptyNumeralList[std::vector<uint64_t>& numerals] : ( INTEGER_LITERAL )+ ;
  */
 static void
 nonemptyNumeralList(pSmt2Parser ctx, std::vector<uint64_t>& numerals)
@@ -17086,32 +18572,32 @@ nonemptyNumeralList(pSmt2Parser ctx, std::vector<uint64_t>& numerals)
     INTEGER_LITERAL24       = NULL;
 
     {
-        // ../../../../../../src/parser/smt2/Smt2.g:2711:3: ( ( INTEGER_LITERAL )+ )
-        // ../../../../../../src/parser/smt2/Smt2.g:2711:5: ( INTEGER_LITERAL )+
+        // ../../../../src/parser/smt2/Smt2.g:2916:3: ( ( INTEGER_LITERAL )+ )
+        // ../../../../src/parser/smt2/Smt2.g:2916:5: ( INTEGER_LITERAL )+
         {
-            // ../../../../../../src/parser/smt2/Smt2.g:2711:5: ( INTEGER_LITERAL )+
+            // ../../../../src/parser/smt2/Smt2.g:2916:5: ( INTEGER_LITERAL )+
             {
-                int cnt67=0;
+                int cnt76=0;
 
                 for (;;)
                 {
-                    int alt67=2;
+                    int alt76=2;
             	switch ( LA(1) )
             	{
             	case INTEGER_LITERAL:
             		{
-            			alt67=1;
+            			alt76=1;
             		}
             	    break;
 
             	}
 
-            	switch (alt67)
+            	switch (alt76)
             	{
             	    case 1:
-            	        // ../../../../../../src/parser/smt2/Smt2.g:2711:7: INTEGER_LITERAL
+            	        // ../../../../src/parser/smt2/Smt2.g:2916:7: INTEGER_LITERAL
             	        {
-            	            INTEGER_LITERAL24 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_nonemptyNumeralList5721);
+            	            INTEGER_LITERAL24 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_nonemptyNumeralList6265);
             	            if  (HASEXCEPTION())
             	            {
             	                goto rulenonemptyNumeralListEx;
@@ -17128,9 +18614,9 @@ nonemptyNumeralList(pSmt2Parser ctx, std::vector<uint64_t>& numerals)
 
             	    default:
 
-            		if ( cnt67 >= 1 )
+            		if ( cnt76 >= 1 )
             		{
-            		    goto loop67;
+            		    goto loop76;
             		}
             		/* mismatchedSetEx()
             		 */
@@ -17141,9 +18627,9 @@ nonemptyNumeralList(pSmt2Parser ctx, std::vector<uint64_t>& numerals)
 
             		goto rulenonemptyNumeralListEx;
             	}
-            	cnt67++;
+            	cnt76++;
                 }
-                loop67: ;	/* Jump to here if this rule does not match */
+                loop76: ;	/* Jump to here if this rule does not match */
             }
 
         }
@@ -17166,7 +18652,7 @@ nonemptyNumeralList(pSmt2Parser ctx, std::vector<uint64_t>& numerals)
 
 /**
  * $ANTLR start datatypeDef
- * ../../../../../../src/parser/smt2/Smt2.g:2719:1: datatypeDef[bool isCo, std::vector<CVC4::Datatype>& datatypes,\n std::vector< CVC4::Type >& params] : symbol[id,CHECK_NONE,SYM_SORT] ( LPAREN_TOK constructorDef[datatypes.back()] RPAREN_TOK )+ ;
+ * ../../../../src/parser/smt2/Smt2.g:2924:1: datatypeDef[bool isCo, std::vector<CVC4::Datatype>& datatypes,\n std::vector< CVC4::Type >& params] : symbol[id,CHECK_NONE,SYM_SORT] ( LPAREN_TOK constructorDef[datatypes.back()] RPAREN_TOK )+ ;
  */
 static void
 datatypeDef(pSmt2Parser ctx, bool isCo, std::vector<CVC4::Datatype>& datatypes, std::vector< CVC4::Type >& params)
@@ -17178,10 +18664,10 @@ datatypeDef(pSmt2Parser ctx, bool isCo, std::vector<CVC4::Datatype>& datatypes,
       std::string id;
 
     {
-        // ../../../../../../src/parser/smt2/Smt2.g:2728:3: ( symbol[id,CHECK_NONE,SYM_SORT] ( LPAREN_TOK constructorDef[datatypes.back()] RPAREN_TOK )+ )
-        // ../../../../../../src/parser/smt2/Smt2.g:2728:5: symbol[id,CHECK_NONE,SYM_SORT] ( LPAREN_TOK constructorDef[datatypes.back()] RPAREN_TOK )+
+        // ../../../../src/parser/smt2/Smt2.g:2933:3: ( symbol[id,CHECK_NONE,SYM_SORT] ( LPAREN_TOK constructorDef[datatypes.back()] RPAREN_TOK )+ )
+        // ../../../../src/parser/smt2/Smt2.g:2933:5: symbol[id,CHECK_NONE,SYM_SORT] ( LPAREN_TOK constructorDef[datatypes.back()] RPAREN_TOK )+
         {
-            FOLLOWPUSH(FOLLOW_symbol_in_datatypeDef5763);
+            FOLLOWPUSH(FOLLOW_symbol_in_datatypeDef6307);
             symbol(ctx, id, CHECK_NONE, SYM_SORT);
 
             FOLLOWPOP();
@@ -17206,36 +18692,36 @@ datatypeDef(pSmt2Parser ctx, bool isCo, std::vector<CVC4::Datatype>& datatypes,
             }
 
 
-            // ../../../../../../src/parser/smt2/Smt2.g:2744:5: ( LPAREN_TOK constructorDef[datatypes.back()] RPAREN_TOK )+
+            // ../../../../src/parser/smt2/Smt2.g:2949:5: ( LPAREN_TOK constructorDef[datatypes.back()] RPAREN_TOK )+
             {
-                int cnt68=0;
+                int cnt77=0;
 
                 for (;;)
                 {
-                    int alt68=2;
+                    int alt77=2;
             	switch ( LA(1) )
             	{
             	case LPAREN_TOK:
             		{
-            			alt68=1;
+            			alt77=1;
             		}
             	    break;
 
             	}
 
-            	switch (alt68)
+            	switch (alt77)
             	{
             	    case 1:
-            	        // ../../../../../../src/parser/smt2/Smt2.g:2744:7: LPAREN_TOK constructorDef[datatypes.back()] RPAREN_TOK
+            	        // ../../../../src/parser/smt2/Smt2.g:2949:7: LPAREN_TOK constructorDef[datatypes.back()] RPAREN_TOK
             	        {
-            	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypeDef5786);
+            	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypeDef6330);
             	            if  (HASEXCEPTION())
             	            {
             	                goto ruledatatypeDefEx;
             	            }
 
 
-            	            FOLLOWPUSH(FOLLOW_constructorDef_in_datatypeDef5788);
+            	            FOLLOWPUSH(FOLLOW_constructorDef_in_datatypeDef6332);
             	            constructorDef(ctx, datatypes.back());
 
             	            FOLLOWPOP();
@@ -17245,7 +18731,7 @@ datatypeDef(pSmt2Parser ctx, bool isCo, std::vector<CVC4::Datatype>& datatypes,
             	            }
 
 
-            	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypeDef5791);
+            	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypeDef6335);
             	            if  (HASEXCEPTION())
             	            {
             	                goto ruledatatypeDefEx;
@@ -17257,9 +18743,9 @@ datatypeDef(pSmt2Parser ctx, bool isCo, std::vector<CVC4::Datatype>& datatypes,
 
             	    default:
 
-            		if ( cnt68 >= 1 )
+            		if ( cnt77 >= 1 )
             		{
-            		    goto loop68;
+            		    goto loop77;
             		}
             		/* mismatchedSetEx()
             		 */
@@ -17270,9 +18756,9 @@ datatypeDef(pSmt2Parser ctx, bool isCo, std::vector<CVC4::Datatype>& datatypes,
 
             		goto ruledatatypeDefEx;
             	}
-            	cnt68++;
+            	cnt77++;
                 }
-                loop68: ;	/* Jump to here if this rule does not match */
+                loop77: ;	/* Jump to here if this rule does not match */
             }
 
             {
@@ -17300,7 +18786,7 @@ datatypeDef(pSmt2Parser ctx, bool isCo, std::vector<CVC4::Datatype>& datatypes,
 
 /**
  * $ANTLR start constructorDef
- * ../../../../../../src/parser/smt2/Smt2.g:2751:1: constructorDef[CVC4::Datatype& type] : symbol[id,CHECK_UNDECLARED,SYM_VARIABLE] ( LPAREN_TOK selector[*ctor] RPAREN_TOK )* ;
+ * ../../../../src/parser/smt2/Smt2.g:2956:1: constructorDef[CVC4::Datatype& type] : symbol[id,CHECK_UNDECLARED,SYM_VARIABLE] ( LPAREN_TOK selector[*ctor] RPAREN_TOK )* ;
  */
 static void
 constructorDef(pSmt2Parser ctx, CVC4::Datatype& type)
@@ -17313,10 +18799,10 @@ constructorDef(pSmt2Parser ctx, CVC4::Datatype& type)
       CVC4::DatatypeConstructor* ctor = NULL;
 
     {
-        // ../../../../../../src/parser/smt2/Smt2.g:2756:3: ( symbol[id,CHECK_UNDECLARED,SYM_VARIABLE] ( LPAREN_TOK selector[*ctor] RPAREN_TOK )* )
-        // ../../../../../../src/parser/smt2/Smt2.g:2756:5: symbol[id,CHECK_UNDECLARED,SYM_VARIABLE] ( LPAREN_TOK selector[*ctor] RPAREN_TOK )*
+        // ../../../../src/parser/smt2/Smt2.g:2961:3: ( symbol[id,CHECK_UNDECLARED,SYM_VARIABLE] ( LPAREN_TOK selector[*ctor] RPAREN_TOK )* )
+        // ../../../../src/parser/smt2/Smt2.g:2961:5: symbol[id,CHECK_UNDECLARED,SYM_VARIABLE] ( LPAREN_TOK selector[*ctor] RPAREN_TOK )*
         {
-            FOLLOWPUSH(FOLLOW_symbol_in_constructorDef5821);
+            FOLLOWPUSH(FOLLOW_symbol_in_constructorDef6365);
             symbol(ctx, id, CHECK_UNDECLARED, SYM_VARIABLE);
 
             FOLLOWPOP();
@@ -17336,34 +18822,34 @@ constructorDef(pSmt2Parser ctx, CVC4::Datatype& type)
             }
 
 
-            // ../../../../../../src/parser/smt2/Smt2.g:2763:5: ( LPAREN_TOK selector[*ctor] RPAREN_TOK )*
+            // ../../../../src/parser/smt2/Smt2.g:2968:5: ( LPAREN_TOK selector[*ctor] RPAREN_TOK )*
 
             for (;;)
             {
-                int alt69=2;
+                int alt78=2;
                 switch ( LA(1) )
                 {
                 case LPAREN_TOK:
                 	{
-                		alt69=1;
+                		alt78=1;
                 	}
                     break;
 
                 }
 
-                switch (alt69)
+                switch (alt78)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/smt2/Smt2.g:2763:7: LPAREN_TOK selector[*ctor] RPAREN_TOK
+            	    // ../../../../src/parser/smt2/Smt2.g:2968:7: LPAREN_TOK selector[*ctor] RPAREN_TOK
             	    {
-            	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_constructorDef5836);
+            	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_constructorDef6380);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleconstructorDefEx;
             	        }
 
 
-            	        FOLLOWPUSH(FOLLOW_selector_in_constructorDef5838);
+            	        FOLLOWPUSH(FOLLOW_selector_in_constructorDef6382);
             	        selector(ctx, *ctor);
 
             	        FOLLOWPOP();
@@ -17373,7 +18859,7 @@ constructorDef(pSmt2Parser ctx, CVC4::Datatype& type)
             	        }
 
 
-            	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_constructorDef5841);
+            	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_constructorDef6385);
             	        if  (HASEXCEPTION())
             	        {
             	            goto ruleconstructorDefEx;
@@ -17384,11 +18870,11 @@ constructorDef(pSmt2Parser ctx, CVC4::Datatype& type)
             	    break;
 
             	default:
-            	    goto loop69;	/* break out of the loop */
+            	    goto loop78;	/* break out of the loop */
             	    break;
                 }
             }
-            loop69: ; /* Jump out to here if this rule does not match */
+            loop78: ; /* Jump out to here if this rule does not match */
 
 
             {
@@ -17420,7 +18906,7 @@ constructorDef(pSmt2Parser ctx, CVC4::Datatype& type)
 
 /**
  * $ANTLR start selector
- * ../../../../../../src/parser/smt2/Smt2.g:2771:1: selector[CVC4::DatatypeConstructor& ctor] : symbol[id,CHECK_UNDECLARED,SYM_SORT] sortSymbol[t,CHECK_NONE] ;
+ * ../../../../src/parser/smt2/Smt2.g:2976:1: selector[CVC4::DatatypeConstructor& ctor] : symbol[id,CHECK_UNDECLARED,SYM_SORT] sortSymbol[t,CHECK_NONE] ;
  */
 static void
 selector(pSmt2Parser ctx, CVC4::DatatypeConstructor& ctor)
@@ -17433,10 +18919,10 @@ selector(pSmt2Parser ctx, CVC4::DatatypeConstructor& ctor)
       Type t, t2;
 
     {
-        // ../../../../../../src/parser/smt2/Smt2.g:2776:3: ( symbol[id,CHECK_UNDECLARED,SYM_SORT] sortSymbol[t,CHECK_NONE] )
-        // ../../../../../../src/parser/smt2/Smt2.g:2776:5: symbol[id,CHECK_UNDECLARED,SYM_SORT] sortSymbol[t,CHECK_NONE]
+        // ../../../../src/parser/smt2/Smt2.g:2981:3: ( symbol[id,CHECK_UNDECLARED,SYM_SORT] sortSymbol[t,CHECK_NONE] )
+        // ../../../../src/parser/smt2/Smt2.g:2981:5: symbol[id,CHECK_UNDECLARED,SYM_SORT] sortSymbol[t,CHECK_NONE]
         {
-            FOLLOWPUSH(FOLLOW_symbol_in_selector5869);
+            FOLLOWPUSH(FOLLOW_symbol_in_selector6413);
             symbol(ctx, id, CHECK_UNDECLARED, SYM_SORT);
 
             FOLLOWPOP();
@@ -17446,7 +18932,7 @@ selector(pSmt2Parser ctx, CVC4::DatatypeConstructor& ctor)
             }
 
 
-            FOLLOWPUSH(FOLLOW_sortSymbol_in_selector5872);
+            FOLLOWPUSH(FOLLOW_sortSymbol_in_selector6416);
             sortSymbol(ctx, t, CHECK_NONE);
 
             FOLLOWPOP();
diff --git a/src/parser/smt2/Smt2Parser.h b/src/parser/smt2/Smt2Parser.h
index 833bffd..a43fc55 100644
--- a/src/parser/smt2/Smt2Parser.h
+++ b/src/parser/smt2/Smt2Parser.h
@@ -1,8 +1,8 @@
 /** \file
  *  This C header file was generated by $ANTLR version 3.4
  *
- *     -  From the grammar source file : ../../../../../../src/parser/smt2/Smt2.g
- *     -                            On : 2017-03-16 01:03:01
+ *     -  From the grammar source file : ../../../../src/parser/smt2/Smt2.g
+ *     -                            On : 2017-07-10 10:01:29
  *     -                for the parser : Smt2ParserParser
  *
  * Editing it, at least manually, is not wise.
@@ -60,6 +60,12 @@ has the callable functions (rules) shown below,
       pSmt2Parser->extendedCommand(pSmt2Parser)
  *  - 
  void
+      pSmt2Parser->datatypes_2_5_DefCommand(pSmt2Parser)
+ *  - 
+ void
+      pSmt2Parser->datatypeDefCommand(pSmt2Parser)
+ *  - 
+ void
       pSmt2Parser->datatypesDefCommand(pSmt2Parser)
  *  - 
  void
@@ -231,10 +237,11 @@ typedef struct Smt2Parser_Ctx_struct Smt2Parser, * pSmt2Parser;
 
 
 /**
- ** This file is part of CVC4.
- ** Copyright (c) 2009-2014  New York University and The University of Iowa
- ** See the file COPYING in the top-level source directory for licensing
- ** information.
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.
  **/
 
 
@@ -301,6 +308,12 @@ struct Smt2Parser_Ctx_struct
      (*extendedCommand)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::PtrCloser<CVC4::Command>* cmd);
 
      void
+     (*datatypes_2_5_DefCommand)	(struct Smt2Parser_Ctx_struct * ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd);
+
+     void
+     (*datatypeDefCommand)	(struct Smt2Parser_Ctx_struct * ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd);
+
+     void
      (*datatypesDefCommand)	(struct Smt2Parser_Ctx_struct * ctx, bool isCo, CVC4::PtrCloser<CVC4::Command>* cmd);
 
      void
@@ -331,7 +344,7 @@ struct Smt2Parser_Ctx_struct
      (*attribute)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::Expr& expr, CVC4::Expr& retExpr, std::string& attr);
 
      void
-     (*indexedFunctionName)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::Expr& op);
+     (*indexedFunctionName)	(struct Smt2Parser_Ctx_struct * ctx, CVC4::Expr& op, CVC4::Kind& kind);
 
      void
      (*badIndexedFunctionName)	(struct Smt2Parser_Ctx_struct * ctx);
@@ -417,13 +430,13 @@ parser
 #undef	Tokens
 #endif
 #define EOF      -1
-#define T__145      145
-#define T__146      146
-#define T__147      147
-#define T__148      148
-#define T__149      149
-#define T__150      150
-#define T__151      151
+#define T__152      152
+#define T__153      153
+#define T__154      154
+#define T__155      155
+#define T__156      156
+#define T__157      157
+#define T__158      158
 #define ALPHA      4
 #define AMPERSAND_TOK      5
 #define AND_TOK      6
@@ -444,127 +457,134 @@ parser
 #define CONSTRAINT_TOK      21
 #define CONST_TOK      22
 #define DECIMAL_LITERAL      23
-#define DECLARE_CODATATYPES_TOK      24
-#define DECLARE_CONST_TOK      25
-#define DECLARE_DATATYPES_TOK      26
-#define DECLARE_FUNS_TOK      27
-#define DECLARE_FUN_TOK      28
-#define DECLARE_PREDS_TOK      29
-#define DECLARE_PRIMED_VAR_TOK      30
-#define DECLARE_SORTS_TOK      31
-#define DECLARE_SORT_TOK      32
-#define DECLARE_VAR_TOK      33
-#define DEFINE_CONST_TOK      34
-#define DEFINE_FUNS_REC_TOK      35
-#define DEFINE_FUN_REC_TOK      36
-#define DEFINE_FUN_TOK      37
-#define DEFINE_SORT_TOK      38
-#define DEFINE_TOK      39
-#define DIGIT      40
-#define DISTINCT_TOK      41
-#define DIVISIBLE_TOK      42
-#define DIV_TOK      43
-#define DTSIZE_TOK      44
-#define ECHO_TOK      45
-#define EMPTYSET_TOK      46
-#define EQUAL_TOK      47
-#define EXISTS_TOK      48
-#define EXIT_TOK      49
-#define FMFCARDVAL_TOK      50
-#define FMFCARD_TOK      51
-#define FORALL_TOK      52
-#define FP_NAN_TOK      53
-#define FP_NINF_TOK      54
-#define FP_NZERO_TOK      55
-#define FP_PINF_TOK      56
-#define FP_PZERO_TOK      57
-#define FP_RNA_FULL_TOK      58
-#define FP_RNA_TOK      59
-#define FP_RNE_FULL_TOK      60
-#define FP_RNE_TOK      61
-#define FP_RTN_FULL_TOK      62
-#define FP_RTN_TOK      63
-#define FP_RTP_FULL_TOK      64
-#define FP_RTP_TOK      65
-#define FP_RTZ_FULL_TOK      66
-#define FP_RTZ_TOK      67
-#define FP_TO_FPBV_TOK      68
-#define FP_TO_FPFP_TOK      69
-#define FP_TO_FPR_TOK      70
-#define FP_TO_FPS_TOK      71
-#define FP_TO_FPU_TOK      72
-#define FP_TO_FP_TOK      73
-#define FP_TO_SBV_TOK      74
-#define FP_TO_UBV_TOK      75
-#define GET_ASSERTIONS_TOK      76
-#define GET_ASSIGNMENT_TOK      77
-#define GET_INFO_TOK      78
-#define GET_MODEL_TOK      79
-#define GET_OPTION_TOK      80
-#define GET_PROOF_TOK      81
-#define GET_QE_DISJUNCT_TOK      82
-#define GET_QE_TOK      83
-#define GET_UNSAT_CORE_TOK      84
-#define GET_VALUE_TOK      85
-#define GREATER_THAN_EQUAL_TOK      86
-#define GREATER_THAN_TOK      87
-#define HEX_DIGIT      88
-#define HEX_LITERAL      89
-#define IMPLIES_TOK      90
-#define INCLUDE_TOK      91
-#define INDEX_TOK      92
-#define INST_CLOSURE_TOK      93
-#define INT2BV_TOK      94
-#define INTEGER_LITERAL      95
-#define INV_CONSTRAINT_TOK      96
-#define ITE_TOK      97
-#define KEYWORD      98
-#define LESS_THAN_EQUAL_TOK      99
-#define LESS_THAN_TOK      100
-#define LET_TOK      101
-#define LPAREN_TOK      102
-#define META_INFO_TOK      103
-#define MINUS_TOK      104
-#define NILREF_TOK      105
-#define NOT_TOK      106
-#define NUMERAL      107
-#define OR_TOK      108
-#define PLUS_TOK      109
-#define POP_TOK      110
-#define PROPAGATION_RULE_TOK      111
-#define PUSH_TOK      112
-#define QUOTED_SYMBOL      113
-#define REALLCHAR_TOK      114
-#define REDUCTION_RULE_TOK      115
-#define RENOSTR_TOK      116
-#define RESET_ASSERTIONS_TOK      117
-#define RESET_TOK      118
-#define REWRITE_RULE_TOK      119
-#define RPAREN_TOK      120
-#define SET_INFO_TOK      121
-#define SET_LOGIC_TOK      122
-#define SET_OPTIONS_TOK      123
-#define SET_OPTION_TOK      124
-#define SIMPLE_SYMBOL      125
-#define SIMPLIFY_TOK      126
-#define STAR_TOK      127
-#define STRING_LITERAL_2_0      128
-#define STRING_LITERAL_2_5      129
-#define SYGUS_CONSTANT_TOK      130
-#define SYGUS_ENUM_CONS_TOK      131
-#define SYGUS_ENUM_TOK      132
-#define SYGUS_INPUT_VARIABLE_TOK      133
-#define SYGUS_LOCAL_VARIABLE_TOK      134
-#define SYGUS_QUOTED_LITERAL      135
-#define SYGUS_VARIABLE_TOK      136
-#define SYMBOL_CHAR      137
-#define SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE      138
-#define SYNTH_FUN_TOK      139
-#define SYNTH_INV_TOK      140
-#define UNIVSET_TOK      141
-#define UNTERMINATED_QUOTED_SYMBOL      142
-#define WHITESPACE      143
-#define XOR_TOK      144
+#define DECLARE_CODATATYPES_2_5_TOK      24
+#define DECLARE_CODATATYPES_TOK      25
+#define DECLARE_CODATATYPE_TOK      26
+#define DECLARE_CONST_TOK      27
+#define DECLARE_DATATYPES_2_5_TOK      28
+#define DECLARE_DATATYPES_TOK      29
+#define DECLARE_DATATYPE_TOK      30
+#define DECLARE_FUNS_TOK      31
+#define DECLARE_FUN_TOK      32
+#define DECLARE_PREDS_TOK      33
+#define DECLARE_PRIMED_VAR_TOK      34
+#define DECLARE_SORTS_TOK      35
+#define DECLARE_SORT_TOK      36
+#define DECLARE_VAR_TOK      37
+#define DEFINE_CONST_TOK      38
+#define DEFINE_FUNS_REC_TOK      39
+#define DEFINE_FUN_REC_TOK      40
+#define DEFINE_FUN_TOK      41
+#define DEFINE_SORT_TOK      42
+#define DEFINE_TOK      43
+#define DIGIT      44
+#define DISTINCT_TOK      45
+#define DIVISIBLE_TOK      46
+#define DIV_TOK      47
+#define DTSIZE_TOK      48
+#define ECHO_TOK      49
+#define EMPTYSET_TOK      50
+#define EQUAL_TOK      51
+#define EXISTS_TOK      52
+#define EXIT_TOK      53
+#define FMFCARDVAL_TOK      54
+#define FMFCARD_TOK      55
+#define FORALL_TOK      56
+#define FP_NAN_TOK      57
+#define FP_NINF_TOK      58
+#define FP_NZERO_TOK      59
+#define FP_PINF_TOK      60
+#define FP_PZERO_TOK      61
+#define FP_RNA_FULL_TOK      62
+#define FP_RNA_TOK      63
+#define FP_RNE_FULL_TOK      64
+#define FP_RNE_TOK      65
+#define FP_RTN_FULL_TOK      66
+#define FP_RTN_TOK      67
+#define FP_RTP_FULL_TOK      68
+#define FP_RTP_TOK      69
+#define FP_RTZ_FULL_TOK      70
+#define FP_RTZ_TOK      71
+#define FP_TO_FPBV_TOK      72
+#define FP_TO_FPFP_TOK      73
+#define FP_TO_FPR_TOK      74
+#define FP_TO_FPS_TOK      75
+#define FP_TO_FPU_TOK      76
+#define FP_TO_FP_TOK      77
+#define FP_TO_SBV_TOK      78
+#define FP_TO_UBV_TOK      79
+#define GET_ASSERTIONS_TOK      80
+#define GET_ASSIGNMENT_TOK      81
+#define GET_INFO_TOK      82
+#define GET_MODEL_TOK      83
+#define GET_OPTION_TOK      84
+#define GET_PROOF_TOK      85
+#define GET_QE_DISJUNCT_TOK      86
+#define GET_QE_TOK      87
+#define GET_UNSAT_CORE_TOK      88
+#define GET_VALUE_TOK      89
+#define GREATER_THAN_EQUAL_TOK      90
+#define GREATER_THAN_TOK      91
+#define HEX_DIGIT      92
+#define HEX_LITERAL      93
+#define IMPLIES_TOK      94
+#define INCLUDE_TOK      95
+#define INDEX_TOK      96
+#define INST_CLOSURE_TOK      97
+#define INT2BV_TOK      98
+#define INTEGER_LITERAL      99
+#define INV_CONSTRAINT_TOK      100
+#define ITE_TOK      101
+#define KEYWORD      102
+#define LESS_THAN_EQUAL_TOK      103
+#define LESS_THAN_TOK      104
+#define LET_TOK      105
+#define LPAREN_TOK      106
+#define MATCH_TOK      107
+#define META_INFO_TOK      108
+#define MINUS_TOK      109
+#define NILREF_TOK      110
+#define NOT_TOK      111
+#define NUMERAL      112
+#define OR_TOK      113
+#define PAR_TOK      114
+#define PLUS_TOK      115
+#define POP_TOK      116
+#define PROPAGATION_RULE_TOK      117
+#define PUSH_TOK      118
+#define QUOTED_SYMBOL      119
+#define REALLCHAR_TOK      120
+#define REDUCTION_RULE_TOK      121
+#define RENOSTR_TOK      122
+#define RESET_ASSERTIONS_TOK      123
+#define RESET_TOK      124
+#define REWRITE_RULE_TOK      125
+#define RPAREN_TOK      126
+#define SET_INFO_TOK      127
+#define SET_LOGIC_TOK      128
+#define SET_OPTIONS_TOK      129
+#define SET_OPTION_TOK      130
+#define SIMPLE_SYMBOL      131
+#define SIMPLIFY_TOK      132
+#define STAR_TOK      133
+#define STRING_LITERAL_2_0      134
+#define STRING_LITERAL_2_5      135
+#define SYGUS_CONSTANT_TOK      136
+#define SYGUS_ENUM_CONS_TOK      137
+#define SYGUS_ENUM_TOK      138
+#define SYGUS_INPUT_VARIABLE_TOK      139
+#define SYGUS_LOCAL_VARIABLE_TOK      140
+#define SYGUS_QUOTED_LITERAL      141
+#define SYGUS_VARIABLE_TOK      142
+#define SYMBOL_CHAR      143
+#define SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE      144
+#define SYNTH_FUN_TOK      145
+#define SYNTH_INV_TOK      146
+#define TESTER_TOK      147
+#define UNIVSET_TOK      148
+#define UNTERMINATED_QUOTED_SYMBOL      149
+#define WHITESPACE      150
+#define XOR_TOK      151
 #ifdef	EOF
 #undef	EOF
 #define	EOF	ANTLR3_TOKEN_EOF
diff --git a/src/parser/smt2/smt2.cpp b/src/parser/smt2/smt2.cpp
index ebe730e..7fa7189 100644
--- a/src/parser/smt2/smt2.cpp
+++ b/src/parser/smt2/smt2.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Kshitij Bansal, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -354,22 +354,23 @@ void Smt2::resetAssertions() {
 
 void Smt2::setLogic(std::string name) {
   if(sygus()) {
+    // sygus by default requires UF, datatypes, and LIA
     if(name == "Arrays") {
-      name = "AUF";
+      name = "AUFDTLIA";
     } else if(name == "Reals") {
-      name = "UFLRA";
+      name = "UFDTLIRA";
     } else if(name == "LIA") {
-      name = "UFLIA";
+      name = "UFDTLIA";
     } else if(name == "LRA") {
-      name = "UFLRA";
+      name = "UFDTLIRA";
     } else if(name == "LIRA") {
-      name = "UFLIRA";
+      name = "UFDTLIRA";
     } else if(name == "BV") {
-      name = "UFBV";
+      name = "UFDTBVLIA";
     } else if(name == "SLIA") {
-      name = "UFSLIA";
+      name = "UFDTSLIA";
     } else if(name == "SAT") {
-      name = "UF";
+      name = "UFDTLIA";
     } else if(name == "ALL" || name == "ALL_SUPPORTED") {
       //no change
     } else {
@@ -452,16 +453,12 @@ void Smt2::checkThatLogicIsSet() {
     if(strictModeEnabled()) {
       parseError("set-logic must appear before this point.");
     } else {
-      if(sygus()) {
-        setLogic("LIA");
-      } else {
-        warning("No set-logic command was given before this point.");
-        warning("CVC4 will make all theories available.");
-        warning("Consider setting a stricter logic for (likely) better performance.");
-        warning("To suppress this warning in the future use (set-logic ALL).");
+      warning("No set-logic command was given before this point.");
+      warning("CVC4 will make all theories available.");
+      warning("Consider setting a stricter logic for (likely) better performance.");
+      warning("To suppress this warning in the future use (set-logic ALL).");
 
-        setLogic("ALL");
-      }
+      setLogic("ALL");
 
       Command* c = new SetBenchmarkLogicCommand("ALL");
       c->setMuted(true);
diff --git a/src/parser/smt2/smt2.h b/src/parser/smt2/smt2.h
index fc930dc..8222ac3 100644
--- a/src/parser/smt2/smt2.h
+++ b/src/parser/smt2/smt2.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Andrew Reynolds, Christopher L. Conway
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -108,8 +108,14 @@ public:
   bool v2_0() const {
     return getInput()->getLanguage() == language::input::LANG_SMTLIB_V2_0;
   }
-  bool v2_5() const {
-    return getInput()->getLanguage() == language::input::LANG_SMTLIB_V2_5;
+  // 2.6 is a superset of 2.5, use exact=false to query whether smt lib 2.5 or above
+  bool v2_5( bool exact = true ) const {
+    return exact ? getInput()->getLanguage() == language::input::LANG_SMTLIB_V2_5 : 
+                   ( getInput()->getLanguage() >= language::input::LANG_SMTLIB_V2_5 && 
+                     getInput()->getLanguage() <= language::input::LANG_SMTLIB_V2 );
+  }
+  bool v2_6() const {
+    return getInput()->getLanguage() == language::input::LANG_SMTLIB_V2_6;
   }
   bool sygus() const {
     return getInput()->getLanguage() == language::input::LANG_SYGUS;
diff --git a/src/parser/smt2/smt2_input.cpp b/src/parser/smt2/smt2_input.cpp
index 7aa4c34..0958e9d 100644
--- a/src/parser/smt2/smt2_input.cpp
+++ b/src/parser/smt2/smt2_input.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Christopher L. Conway, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -67,7 +67,8 @@ Smt2Input::~Smt2Input() {
 
 void Smt2Input::setLanguage(InputLanguage lang) {
   CheckArgument(lang == language::input::LANG_SMTLIB_V2_0 ||
-                lang == language::input::LANG_SMTLIB_V2_5, lang);
+                lang == language::input::LANG_SMTLIB_V2_5 ||
+                lang == language::input::LANG_SMTLIB_V2_6, lang);
   d_lang = lang;
 }
 
diff --git a/src/parser/smt2/smt2_input.h b/src/parser/smt2/smt2_input.h
index 0ed8839..4d61686 100644
--- a/src/parser/smt2/smt2_input.h
+++ b/src/parser/smt2/smt2_input.h
@@ -2,9 +2,9 @@
 /*! \file smt2_input.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Christopher L. Conway, Morgan Deters, Tim King
+ **   Christopher L. Conway, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/smt2/sygus_input.cpp b/src/parser/smt2/sygus_input.cpp
index 5b20e0a..a967e95 100644
--- a/src/parser/smt2/sygus_input.cpp
+++ b/src/parser/smt2/sygus_input.cpp
@@ -2,9 +2,9 @@
 /*! \file sygus_input.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/smt2/sygus_input.h b/src/parser/smt2/sygus_input.h
index 50bc973..888d629 100644
--- a/src/parser/smt2/sygus_input.h
+++ b/src/parser/smt2/sygus_input.h
@@ -2,9 +2,9 @@
 /*! \file sygus_input.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/tptp/Makefile.in b/src/parser/tptp/Makefile.in
index e78e4e5..9d5c815 100644
--- a/src/parser/tptp/Makefile.in
+++ b/src/parser/tptp/Makefile.in
@@ -242,6 +242,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/src/parser/tptp/Tptp.g b/src/parser/tptp/Tptp.g
index 4e73fa6..fe4ea6f 100644
--- a/src/parser/tptp/Tptp.g
+++ b/src/parser/tptp/Tptp.g
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Francois Bobot, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -32,10 +32,11 @@ options {
 
 @header {
 /**
- ** This file is part of CVC4.
- ** Copyright (c) 2009-2014  New York University and The University of Iowa
- ** See the file COPYING in the top-level source directory for licensing
- ** information.
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.
  **/
 }/* @header */
 
@@ -353,7 +354,7 @@ definedFun[CVC4::Expr& expr]
                                       MK_EXPR(CVC4::kind::TO_INTEGER, expr),
                                       MK_EXPR(CVC4::kind::UMINUS, MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::UMINUS, expr))));
       if(remainder) {
-        expr = MK_EXPR(CVC4::kind::MINUS, n, MK_EXPR(CVC4::kind::MULT, expr, d));
+        expr = MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::MINUS, n, MK_EXPR(CVC4::kind::MULT, expr, d)));
       }
       expr = MK_EXPR(CVC4::kind::LAMBDA, formals, expr);
     }
@@ -368,7 +369,7 @@ definedFun[CVC4::Expr& expr]
                                       MK_EXPR(CVC4::kind::TO_INTEGER, expr),
                                       MK_EXPR(CVC4::kind::UMINUS, MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::UMINUS, expr))));
       if(remainder) {
-        expr = MK_EXPR(CVC4::kind::MINUS, n, MK_EXPR(CVC4::kind::MULT, expr, d));
+        expr = MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::MINUS, n, MK_EXPR(CVC4::kind::MULT, expr, d)));
       }
       expr = MK_EXPR(CVC4::kind::LAMBDA, formals, expr);
     }
@@ -381,7 +382,7 @@ definedFun[CVC4::Expr& expr]
       expr = MK_EXPR(CVC4::kind::DIVISION_TOTAL, n, d);
       expr = MK_EXPR(CVC4::kind::TO_INTEGER, expr);
       if(remainder) {
-        expr = MK_EXPR(CVC4::kind::MINUS, n, MK_EXPR(CVC4::kind::MULT, expr, d));
+        expr = MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::MINUS, n, MK_EXPR(CVC4::kind::MULT, expr, d)));
       }
       expr = MK_EXPR(CVC4::kind::LAMBDA, formals, expr);
     }
diff --git a/src/parser/tptp/TptpLexer.c b/src/parser/tptp/TptpLexer.c
index f18995c..c3bf435 100644
--- a/src/parser/tptp/TptpLexer.c
+++ b/src/parser/tptp/TptpLexer.c
@@ -1,8 +1,8 @@
 /** \file
  *  This C source file was generated by $ANTLR version 3.4
  *
- *     -  From the grammar source file : ../../../../../../src/parser/tptp/Tptp.g
- *     -                            On : 2017-03-16 01:03:04
+ *     -  From the grammar source file : ../../../../src/parser/tptp/Tptp.g
+ *     -                            On : 2017-07-10 10:01:31
  *     -                 for the lexer : TptpLexerLexer
  *
  * Editing it, at least manually, is not wise.
@@ -599,7 +599,7 @@ TptpLexerReset (pTptpLexer ctx)
 
 /** \brief Name of the grammar file that generated this code
  */
-static const char fileName[] = "../../../../../../src/parser/tptp/Tptp.g";
+static const char fileName[] = "../../../../src/parser/tptp/Tptp.g";
 
 /** \brief Return the name of the grammar file that generated this code.
  */
@@ -780,7 +780,7 @@ ANTLR3_API pTptpLexer TptpLexerNewSSD
  * DFA tables for the lexer
  */
 /** Static dfa state tables for Cyclic dfa:
- *    992:5: ( ( SIGN[pos] )? num= DECIMAL | ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? | ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL )
+ *    993:5: ( ( SIGN[pos] )? num= DECIMAL | ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? | ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL )
  */
 static const ANTLR3_INT32 dfa15_eot[7] =
     {
@@ -842,7 +842,7 @@ ANTLR3_CYCLIC_DFA cdfa15
     =	{
 	    15,		    /* Decision number of this dfa	    */
 	    /* Which decision this represents:   */
-	    (const pANTLR3_UCHAR)"992:5: ( ( SIGN[pos] )? num= DECIMAL | ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? | ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL )",
+	    (const pANTLR3_UCHAR)"993:5: ( ( SIGN[pos] )? num= DECIMAL | ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? | ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL )",
 	    (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition,	/* Default special state transition function	*/
 
 	    antlr3dfaspecialTransition,		/* DFA specialTransition is currently just a default function in the runtime */
@@ -1780,8 +1780,8 @@ void mT__56(pTptpLexer ctx)
     _type	    = T__56;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:53:7: ( '$ceiling' )
-    // ../../../../../../src/parser/tptp/Tptp.g:53:9: '$ceiling'
+    // ../../../../src/parser/tptp/Tptp.g:53:7: ( '$ceiling' )
+    // ../../../../src/parser/tptp/Tptp.g:53:9: '$ceiling'
     {
         MATCHS(lit_1);
         if  (HASEXCEPTION())
@@ -1823,8 +1823,8 @@ void mT__57(pTptpLexer ctx)
     _type	    = T__57;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:54:7: ( '$difference' )
-    // ../../../../../../src/parser/tptp/Tptp.g:54:9: '$difference'
+    // ../../../../src/parser/tptp/Tptp.g:54:7: ( '$difference' )
+    // ../../../../src/parser/tptp/Tptp.g:54:9: '$difference'
     {
         MATCHS(lit_2);
         if  (HASEXCEPTION())
@@ -1866,8 +1866,8 @@ void mT__58(pTptpLexer ctx)
     _type	    = T__58;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:55:7: ( '$distinct' )
-    // ../../../../../../src/parser/tptp/Tptp.g:55:9: '$distinct'
+    // ../../../../src/parser/tptp/Tptp.g:55:7: ( '$distinct' )
+    // ../../../../src/parser/tptp/Tptp.g:55:9: '$distinct'
     {
         MATCHS(lit_3);
         if  (HASEXCEPTION())
@@ -1909,8 +1909,8 @@ void mT__59(pTptpLexer ctx)
     _type	    = T__59;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:56:7: ( '$floor' )
-    // ../../../../../../src/parser/tptp/Tptp.g:56:9: '$floor'
+    // ../../../../src/parser/tptp/Tptp.g:56:7: ( '$floor' )
+    // ../../../../src/parser/tptp/Tptp.g:56:9: '$floor'
     {
         MATCHS(lit_4);
         if  (HASEXCEPTION())
@@ -1952,8 +1952,8 @@ void mT__60(pTptpLexer ctx)
     _type	    = T__60;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:57:7: ( '$greater' )
-    // ../../../../../../src/parser/tptp/Tptp.g:57:9: '$greater'
+    // ../../../../src/parser/tptp/Tptp.g:57:7: ( '$greater' )
+    // ../../../../src/parser/tptp/Tptp.g:57:9: '$greater'
     {
         MATCHS(lit_5);
         if  (HASEXCEPTION())
@@ -1995,8 +1995,8 @@ void mT__61(pTptpLexer ctx)
     _type	    = T__61;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:58:7: ( '$greatereq' )
-    // ../../../../../../src/parser/tptp/Tptp.g:58:9: '$greatereq'
+    // ../../../../src/parser/tptp/Tptp.g:58:7: ( '$greatereq' )
+    // ../../../../src/parser/tptp/Tptp.g:58:9: '$greatereq'
     {
         MATCHS(lit_6);
         if  (HASEXCEPTION())
@@ -2038,8 +2038,8 @@ void mT__62(pTptpLexer ctx)
     _type	    = T__62;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:59:7: ( '$is_int' )
-    // ../../../../../../src/parser/tptp/Tptp.g:59:9: '$is_int'
+    // ../../../../src/parser/tptp/Tptp.g:59:7: ( '$is_int' )
+    // ../../../../src/parser/tptp/Tptp.g:59:9: '$is_int'
     {
         MATCHS(lit_7);
         if  (HASEXCEPTION())
@@ -2081,8 +2081,8 @@ void mT__63(pTptpLexer ctx)
     _type	    = T__63;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:60:7: ( '$is_rat' )
-    // ../../../../../../src/parser/tptp/Tptp.g:60:9: '$is_rat'
+    // ../../../../src/parser/tptp/Tptp.g:60:7: ( '$is_rat' )
+    // ../../../../src/parser/tptp/Tptp.g:60:9: '$is_rat'
     {
         MATCHS(lit_8);
         if  (HASEXCEPTION())
@@ -2124,8 +2124,8 @@ void mT__64(pTptpLexer ctx)
     _type	    = T__64;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:61:7: ( '$ite_f' )
-    // ../../../../../../src/parser/tptp/Tptp.g:61:9: '$ite_f'
+    // ../../../../src/parser/tptp/Tptp.g:61:7: ( '$ite_f' )
+    // ../../../../src/parser/tptp/Tptp.g:61:9: '$ite_f'
     {
         MATCHS(lit_9);
         if  (HASEXCEPTION())
@@ -2167,8 +2167,8 @@ void mT__65(pTptpLexer ctx)
     _type	    = T__65;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:62:7: ( '$ite_t' )
-    // ../../../../../../src/parser/tptp/Tptp.g:62:9: '$ite_t'
+    // ../../../../src/parser/tptp/Tptp.g:62:7: ( '$ite_t' )
+    // ../../../../src/parser/tptp/Tptp.g:62:9: '$ite_t'
     {
         MATCHS(lit_10);
         if  (HASEXCEPTION())
@@ -2210,8 +2210,8 @@ void mT__66(pTptpLexer ctx)
     _type	    = T__66;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:63:7: ( '$less' )
-    // ../../../../../../src/parser/tptp/Tptp.g:63:9: '$less'
+    // ../../../../src/parser/tptp/Tptp.g:63:7: ( '$less' )
+    // ../../../../src/parser/tptp/Tptp.g:63:9: '$less'
     {
         MATCHS(lit_11);
         if  (HASEXCEPTION())
@@ -2253,8 +2253,8 @@ void mT__67(pTptpLexer ctx)
     _type	    = T__67;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:64:7: ( '$lesseq' )
-    // ../../../../../../src/parser/tptp/Tptp.g:64:9: '$lesseq'
+    // ../../../../src/parser/tptp/Tptp.g:64:7: ( '$lesseq' )
+    // ../../../../src/parser/tptp/Tptp.g:64:9: '$lesseq'
     {
         MATCHS(lit_12);
         if  (HASEXCEPTION())
@@ -2296,8 +2296,8 @@ void mT__68(pTptpLexer ctx)
     _type	    = T__68;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:65:7: ( '$let_ff' )
-    // ../../../../../../src/parser/tptp/Tptp.g:65:9: '$let_ff'
+    // ../../../../src/parser/tptp/Tptp.g:65:7: ( '$let_ff' )
+    // ../../../../src/parser/tptp/Tptp.g:65:9: '$let_ff'
     {
         MATCHS(lit_13);
         if  (HASEXCEPTION())
@@ -2339,8 +2339,8 @@ void mT__69(pTptpLexer ctx)
     _type	    = T__69;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:66:7: ( '$let_ft' )
-    // ../../../../../../src/parser/tptp/Tptp.g:66:9: '$let_ft'
+    // ../../../../src/parser/tptp/Tptp.g:66:7: ( '$let_ft' )
+    // ../../../../src/parser/tptp/Tptp.g:66:9: '$let_ft'
     {
         MATCHS(lit_14);
         if  (HASEXCEPTION())
@@ -2382,8 +2382,8 @@ void mT__70(pTptpLexer ctx)
     _type	    = T__70;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:67:7: ( '$let_tf' )
-    // ../../../../../../src/parser/tptp/Tptp.g:67:9: '$let_tf'
+    // ../../../../src/parser/tptp/Tptp.g:67:7: ( '$let_tf' )
+    // ../../../../src/parser/tptp/Tptp.g:67:9: '$let_tf'
     {
         MATCHS(lit_15);
         if  (HASEXCEPTION())
@@ -2425,8 +2425,8 @@ void mT__71(pTptpLexer ctx)
     _type	    = T__71;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:68:7: ( '$let_tt' )
-    // ../../../../../../src/parser/tptp/Tptp.g:68:9: '$let_tt'
+    // ../../../../src/parser/tptp/Tptp.g:68:7: ( '$let_tt' )
+    // ../../../../src/parser/tptp/Tptp.g:68:9: '$let_tt'
     {
         MATCHS(lit_16);
         if  (HASEXCEPTION())
@@ -2468,8 +2468,8 @@ void mT__72(pTptpLexer ctx)
     _type	    = T__72;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:69:7: ( '$product' )
-    // ../../../../../../src/parser/tptp/Tptp.g:69:9: '$product'
+    // ../../../../src/parser/tptp/Tptp.g:69:7: ( '$product' )
+    // ../../../../src/parser/tptp/Tptp.g:69:9: '$product'
     {
         MATCHS(lit_17);
         if  (HASEXCEPTION())
@@ -2511,8 +2511,8 @@ void mT__73(pTptpLexer ctx)
     _type	    = T__73;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:70:7: ( '$quotient' )
-    // ../../../../../../src/parser/tptp/Tptp.g:70:9: '$quotient'
+    // ../../../../src/parser/tptp/Tptp.g:70:7: ( '$quotient' )
+    // ../../../../src/parser/tptp/Tptp.g:70:9: '$quotient'
     {
         MATCHS(lit_18);
         if  (HASEXCEPTION())
@@ -2554,8 +2554,8 @@ void mT__74(pTptpLexer ctx)
     _type	    = T__74;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:71:7: ( '$quotient_e' )
-    // ../../../../../../src/parser/tptp/Tptp.g:71:9: '$quotient_e'
+    // ../../../../src/parser/tptp/Tptp.g:71:7: ( '$quotient_e' )
+    // ../../../../src/parser/tptp/Tptp.g:71:9: '$quotient_e'
     {
         MATCHS(lit_19);
         if  (HASEXCEPTION())
@@ -2597,8 +2597,8 @@ void mT__75(pTptpLexer ctx)
     _type	    = T__75;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:72:7: ( '$quotient_f' )
-    // ../../../../../../src/parser/tptp/Tptp.g:72:9: '$quotient_f'
+    // ../../../../src/parser/tptp/Tptp.g:72:7: ( '$quotient_f' )
+    // ../../../../src/parser/tptp/Tptp.g:72:9: '$quotient_f'
     {
         MATCHS(lit_20);
         if  (HASEXCEPTION())
@@ -2640,8 +2640,8 @@ void mT__76(pTptpLexer ctx)
     _type	    = T__76;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:73:7: ( '$quotient_t' )
-    // ../../../../../../src/parser/tptp/Tptp.g:73:9: '$quotient_t'
+    // ../../../../src/parser/tptp/Tptp.g:73:7: ( '$quotient_t' )
+    // ../../../../src/parser/tptp/Tptp.g:73:9: '$quotient_t'
     {
         MATCHS(lit_21);
         if  (HASEXCEPTION())
@@ -2683,8 +2683,8 @@ void mT__77(pTptpLexer ctx)
     _type	    = T__77;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:74:7: ( '$remainder_e' )
-    // ../../../../../../src/parser/tptp/Tptp.g:74:9: '$remainder_e'
+    // ../../../../src/parser/tptp/Tptp.g:74:7: ( '$remainder_e' )
+    // ../../../../src/parser/tptp/Tptp.g:74:9: '$remainder_e'
     {
         MATCHS(lit_22);
         if  (HASEXCEPTION())
@@ -2726,8 +2726,8 @@ void mT__78(pTptpLexer ctx)
     _type	    = T__78;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:75:7: ( '$remainder_f' )
-    // ../../../../../../src/parser/tptp/Tptp.g:75:9: '$remainder_f'
+    // ../../../../src/parser/tptp/Tptp.g:75:7: ( '$remainder_f' )
+    // ../../../../src/parser/tptp/Tptp.g:75:9: '$remainder_f'
     {
         MATCHS(lit_23);
         if  (HASEXCEPTION())
@@ -2769,8 +2769,8 @@ void mT__79(pTptpLexer ctx)
     _type	    = T__79;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:76:7: ( '$remainder_t' )
-    // ../../../../../../src/parser/tptp/Tptp.g:76:9: '$remainder_t'
+    // ../../../../src/parser/tptp/Tptp.g:76:7: ( '$remainder_t' )
+    // ../../../../src/parser/tptp/Tptp.g:76:9: '$remainder_t'
     {
         MATCHS(lit_24);
         if  (HASEXCEPTION())
@@ -2812,8 +2812,8 @@ void mT__80(pTptpLexer ctx)
     _type	    = T__80;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:77:7: ( '$round' )
-    // ../../../../../../src/parser/tptp/Tptp.g:77:9: '$round'
+    // ../../../../src/parser/tptp/Tptp.g:77:7: ( '$round' )
+    // ../../../../src/parser/tptp/Tptp.g:77:9: '$round'
     {
         MATCHS(lit_25);
         if  (HASEXCEPTION())
@@ -2855,8 +2855,8 @@ void mT__81(pTptpLexer ctx)
     _type	    = T__81;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:78:7: ( '$sum' )
-    // ../../../../../../src/parser/tptp/Tptp.g:78:9: '$sum'
+    // ../../../../src/parser/tptp/Tptp.g:78:7: ( '$sum' )
+    // ../../../../src/parser/tptp/Tptp.g:78:9: '$sum'
     {
         MATCHS(lit_26);
         if  (HASEXCEPTION())
@@ -2898,8 +2898,8 @@ void mT__82(pTptpLexer ctx)
     _type	    = T__82;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:79:7: ( '$tType' )
-    // ../../../../../../src/parser/tptp/Tptp.g:79:9: '$tType'
+    // ../../../../src/parser/tptp/Tptp.g:79:7: ( '$tType' )
+    // ../../../../src/parser/tptp/Tptp.g:79:9: '$tType'
     {
         MATCHS(lit_27);
         if  (HASEXCEPTION())
@@ -2941,8 +2941,8 @@ void mT__83(pTptpLexer ctx)
     _type	    = T__83;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:80:7: ( '$to_int' )
-    // ../../../../../../src/parser/tptp/Tptp.g:80:9: '$to_int'
+    // ../../../../src/parser/tptp/Tptp.g:80:7: ( '$to_int' )
+    // ../../../../src/parser/tptp/Tptp.g:80:9: '$to_int'
     {
         MATCHS(lit_28);
         if  (HASEXCEPTION())
@@ -2984,8 +2984,8 @@ void mT__84(pTptpLexer ctx)
     _type	    = T__84;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:81:7: ( '$to_rat' )
-    // ../../../../../../src/parser/tptp/Tptp.g:81:9: '$to_rat'
+    // ../../../../src/parser/tptp/Tptp.g:81:7: ( '$to_rat' )
+    // ../../../../src/parser/tptp/Tptp.g:81:9: '$to_rat'
     {
         MATCHS(lit_29);
         if  (HASEXCEPTION())
@@ -3027,8 +3027,8 @@ void mT__85(pTptpLexer ctx)
     _type	    = T__85;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:82:7: ( '$to_real' )
-    // ../../../../../../src/parser/tptp/Tptp.g:82:9: '$to_real'
+    // ../../../../src/parser/tptp/Tptp.g:82:7: ( '$to_real' )
+    // ../../../../src/parser/tptp/Tptp.g:82:9: '$to_real'
     {
         MATCHS(lit_30);
         if  (HASEXCEPTION())
@@ -3070,8 +3070,8 @@ void mT__86(pTptpLexer ctx)
     _type	    = T__86;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:83:7: ( '$truncate' )
-    // ../../../../../../src/parser/tptp/Tptp.g:83:9: '$truncate'
+    // ../../../../src/parser/tptp/Tptp.g:83:7: ( '$truncate' )
+    // ../../../../src/parser/tptp/Tptp.g:83:9: '$truncate'
     {
         MATCHS(lit_31);
         if  (HASEXCEPTION())
@@ -3113,8 +3113,8 @@ void mT__87(pTptpLexer ctx)
     _type	    = T__87;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:84:7: ( '$uminus' )
-    // ../../../../../../src/parser/tptp/Tptp.g:84:9: '$uminus'
+    // ../../../../src/parser/tptp/Tptp.g:84:7: ( '$uminus' )
+    // ../../../../src/parser/tptp/Tptp.g:84:9: '$uminus'
     {
         MATCHS(lit_32);
         if  (HASEXCEPTION())
@@ -3136,7 +3136,7 @@ void mT__87(pTptpLexer ctx)
 }
 // $ANTLR end T__87
 
-//   Comes from: 870:12: ( ',' )
+//   Comes from: 871:12: ( ',' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start COMMA_TOK
@@ -3156,8 +3156,8 @@ void mCOMMA_TOK(pTptpLexer ctx)
     _type	    = COMMA_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:870:12: ( ',' )
-    // ../../../../../../src/parser/tptp/Tptp.g:870:14: ','
+    // ../../../../src/parser/tptp/Tptp.g:871:12: ( ',' )
+    // ../../../../src/parser/tptp/Tptp.g:871:14: ','
     {
         MATCHC(',');
         if  (HASEXCEPTION())
@@ -3177,7 +3177,7 @@ void mCOMMA_TOK(pTptpLexer ctx)
 }
 // $ANTLR end COMMA_TOK
 
-//   Comes from: 868:12: ( '.' )
+//   Comes from: 869:12: ( '.' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DOT_TOK
@@ -3197,8 +3197,8 @@ void mDOT_TOK(pTptpLexer ctx)
     _type	    = DOT_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:868:12: ( '.' )
-    // ../../../../../../src/parser/tptp/Tptp.g:868:14: '.'
+    // ../../../../src/parser/tptp/Tptp.g:869:12: ( '.' )
+    // ../../../../src/parser/tptp/Tptp.g:869:14: '.'
     {
         MATCHC('.');
         if  (HASEXCEPTION())
@@ -3218,7 +3218,7 @@ void mDOT_TOK(pTptpLexer ctx)
 }
 // $ANTLR end DOT_TOK
 
-//   Comes from: 869:12: ( '(' )
+//   Comes from: 870:12: ( '(' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start LPAREN_TOK
@@ -3238,8 +3238,8 @@ void mLPAREN_TOK(pTptpLexer ctx)
     _type	    = LPAREN_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:869:12: ( '(' )
-    // ../../../../../../src/parser/tptp/Tptp.g:869:14: '('
+    // ../../../../src/parser/tptp/Tptp.g:870:12: ( '(' )
+    // ../../../../src/parser/tptp/Tptp.g:870:14: '('
     {
         MATCHC('(');
         if  (HASEXCEPTION())
@@ -3259,7 +3259,7 @@ void mLPAREN_TOK(pTptpLexer ctx)
 }
 // $ANTLR end LPAREN_TOK
 
-//   Comes from: 870:12: ( ')' )
+//   Comes from: 871:12: ( ')' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start RPAREN_TOK
@@ -3279,8 +3279,8 @@ void mRPAREN_TOK(pTptpLexer ctx)
     _type	    = RPAREN_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:870:12: ( ')' )
-    // ../../../../../../src/parser/tptp/Tptp.g:870:14: ')'
+    // ../../../../src/parser/tptp/Tptp.g:871:12: ( ')' )
+    // ../../../../src/parser/tptp/Tptp.g:871:14: ')'
     {
         MATCHC(')');
         if  (HASEXCEPTION())
@@ -3300,7 +3300,7 @@ void mRPAREN_TOK(pTptpLexer ctx)
 }
 // $ANTLR end RPAREN_TOK
 
-//   Comes from: 871:12: ( '[' )
+//   Comes from: 872:12: ( '[' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start LBRACK_TOK
@@ -3320,8 +3320,8 @@ void mLBRACK_TOK(pTptpLexer ctx)
     _type	    = LBRACK_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:871:12: ( '[' )
-    // ../../../../../../src/parser/tptp/Tptp.g:871:14: '['
+    // ../../../../src/parser/tptp/Tptp.g:872:12: ( '[' )
+    // ../../../../src/parser/tptp/Tptp.g:872:14: '['
     {
         MATCHC('[');
         if  (HASEXCEPTION())
@@ -3341,7 +3341,7 @@ void mLBRACK_TOK(pTptpLexer ctx)
 }
 // $ANTLR end LBRACK_TOK
 
-//   Comes from: 872:12: ( ']' )
+//   Comes from: 873:12: ( ']' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start RBRACK_TOK
@@ -3361,8 +3361,8 @@ void mRBRACK_TOK(pTptpLexer ctx)
     _type	    = RBRACK_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:872:12: ( ']' )
-    // ../../../../../../src/parser/tptp/Tptp.g:872:14: ']'
+    // ../../../../src/parser/tptp/Tptp.g:873:12: ( ']' )
+    // ../../../../src/parser/tptp/Tptp.g:873:14: ']'
     {
         MATCHC(']');
         if  (HASEXCEPTION())
@@ -3382,7 +3382,7 @@ void mRBRACK_TOK(pTptpLexer ctx)
 }
 // $ANTLR end RBRACK_TOK
 
-//   Comes from: 873:12: ( ':' )
+//   Comes from: 874:12: ( ':' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start COLON_TOK
@@ -3402,8 +3402,8 @@ void mCOLON_TOK(pTptpLexer ctx)
     _type	    = COLON_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:873:12: ( ':' )
-    // ../../../../../../src/parser/tptp/Tptp.g:873:14: ':'
+    // ../../../../src/parser/tptp/Tptp.g:874:12: ( ':' )
+    // ../../../../src/parser/tptp/Tptp.g:874:14: ':'
     {
         MATCHC(':');
         if  (HASEXCEPTION())
@@ -3423,7 +3423,7 @@ void mCOLON_TOK(pTptpLexer ctx)
 }
 // $ANTLR end COLON_TOK
 
-//   Comes from: 875:14: ( '>' )
+//   Comes from: 876:14: ( '>' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start GREATER_TOK
@@ -3443,8 +3443,8 @@ void mGREATER_TOK(pTptpLexer ctx)
     _type	    = GREATER_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:875:14: ( '>' )
-    // ../../../../../../src/parser/tptp/Tptp.g:875:16: '>'
+    // ../../../../src/parser/tptp/Tptp.g:876:14: ( '>' )
+    // ../../../../src/parser/tptp/Tptp.g:876:16: '>'
     {
         MATCHC('>');
         if  (HASEXCEPTION())
@@ -3464,7 +3464,7 @@ void mGREATER_TOK(pTptpLexer ctx)
 }
 // $ANTLR end GREATER_TOK
 
-//   Comes from: 878:14: ( '|' )
+//   Comes from: 879:14: ( '|' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start OR_TOK
@@ -3484,8 +3484,8 @@ void mOR_TOK(pTptpLexer ctx)
     _type	    = OR_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:878:14: ( '|' )
-    // ../../../../../../src/parser/tptp/Tptp.g:878:16: '|'
+    // ../../../../src/parser/tptp/Tptp.g:879:14: ( '|' )
+    // ../../../../src/parser/tptp/Tptp.g:879:16: '|'
     {
         MATCHC('|');
         if  (HASEXCEPTION())
@@ -3505,7 +3505,7 @@ void mOR_TOK(pTptpLexer ctx)
 }
 // $ANTLR end OR_TOK
 
-//   Comes from: 879:14: ( '~' )
+//   Comes from: 880:14: ( '~' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start NOT_TOK
@@ -3525,8 +3525,8 @@ void mNOT_TOK(pTptpLexer ctx)
     _type	    = NOT_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:879:14: ( '~' )
-    // ../../../../../../src/parser/tptp/Tptp.g:879:16: '~'
+    // ../../../../src/parser/tptp/Tptp.g:880:14: ( '~' )
+    // ../../../../src/parser/tptp/Tptp.g:880:16: '~'
     {
         MATCHC('~');
         if  (HASEXCEPTION())
@@ -3546,7 +3546,7 @@ void mNOT_TOK(pTptpLexer ctx)
 }
 // $ANTLR end NOT_TOK
 
-//   Comes from: 880:14: ( '!' )
+//   Comes from: 881:14: ( '!' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start BANG_TOK
@@ -3566,8 +3566,8 @@ void mBANG_TOK(pTptpLexer ctx)
     _type	    = BANG_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:880:14: ( '!' )
-    // ../../../../../../src/parser/tptp/Tptp.g:880:16: '!'
+    // ../../../../src/parser/tptp/Tptp.g:881:14: ( '!' )
+    // ../../../../src/parser/tptp/Tptp.g:881:16: '!'
     {
         MATCHC('!');
         if  (HASEXCEPTION())
@@ -3587,7 +3587,7 @@ void mBANG_TOK(pTptpLexer ctx)
 }
 // $ANTLR end BANG_TOK
 
-//   Comes from: 881:14: ( '?' )
+//   Comes from: 882:14: ( '?' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start MARK_TOK
@@ -3607,8 +3607,8 @@ void mMARK_TOK(pTptpLexer ctx)
     _type	    = MARK_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:881:14: ( '?' )
-    // ../../../../../../src/parser/tptp/Tptp.g:881:16: '?'
+    // ../../../../src/parser/tptp/Tptp.g:882:14: ( '?' )
+    // ../../../../src/parser/tptp/Tptp.g:882:16: '?'
     {
         MATCHC('?');
         if  (HASEXCEPTION())
@@ -3628,7 +3628,7 @@ void mMARK_TOK(pTptpLexer ctx)
 }
 // $ANTLR end MARK_TOK
 
-//   Comes from: 882:14: ( '&' )
+//   Comes from: 883:14: ( '&' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start AND_TOK
@@ -3648,8 +3648,8 @@ void mAND_TOK(pTptpLexer ctx)
     _type	    = AND_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:882:14: ( '&' )
-    // ../../../../../../src/parser/tptp/Tptp.g:882:16: '&'
+    // ../../../../src/parser/tptp/Tptp.g:883:14: ( '&' )
+    // ../../../../src/parser/tptp/Tptp.g:883:16: '&'
     {
         MATCHC('&');
         if  (HASEXCEPTION())
@@ -3669,7 +3669,7 @@ void mAND_TOK(pTptpLexer ctx)
 }
 // $ANTLR end AND_TOK
 
-//   Comes from: 883:14: ( '<=>' )
+//   Comes from: 884:14: ( '<=>' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start IFF_TOK
@@ -3689,8 +3689,8 @@ void mIFF_TOK(pTptpLexer ctx)
     _type	    = IFF_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:883:14: ( '<=>' )
-    // ../../../../../../src/parser/tptp/Tptp.g:883:16: '<=>'
+    // ../../../../src/parser/tptp/Tptp.g:884:14: ( '<=>' )
+    // ../../../../src/parser/tptp/Tptp.g:884:16: '<=>'
     {
         MATCHS(lit_33);
         if  (HASEXCEPTION())
@@ -3712,7 +3712,7 @@ void mIFF_TOK(pTptpLexer ctx)
 }
 // $ANTLR end IFF_TOK
 
-//   Comes from: 884:16: ( '=>' )
+//   Comes from: 885:16: ( '=>' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start IMPLIES_TOK
@@ -3732,8 +3732,8 @@ void mIMPLIES_TOK(pTptpLexer ctx)
     _type	    = IMPLIES_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:884:16: ( '=>' )
-    // ../../../../../../src/parser/tptp/Tptp.g:884:18: '=>'
+    // ../../../../src/parser/tptp/Tptp.g:885:16: ( '=>' )
+    // ../../../../src/parser/tptp/Tptp.g:885:18: '=>'
     {
         MATCHS(lit_34);
         if  (HASEXCEPTION())
@@ -3755,7 +3755,7 @@ void mIMPLIES_TOK(pTptpLexer ctx)
 }
 // $ANTLR end IMPLIES_TOK
 
-//   Comes from: 885:16: ( '<=' )
+//   Comes from: 886:16: ( '<=' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start REVIMPLIES_TOK
@@ -3775,8 +3775,8 @@ void mREVIMPLIES_TOK(pTptpLexer ctx)
     _type	    = REVIMPLIES_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:885:16: ( '<=' )
-    // ../../../../../../src/parser/tptp/Tptp.g:885:18: '<='
+    // ../../../../src/parser/tptp/Tptp.g:886:16: ( '<=' )
+    // ../../../../src/parser/tptp/Tptp.g:886:18: '<='
     {
         MATCHS(lit_35);
         if  (HASEXCEPTION())
@@ -3798,7 +3798,7 @@ void mREVIMPLIES_TOK(pTptpLexer ctx)
 }
 // $ANTLR end REVIMPLIES_TOK
 
-//   Comes from: 886:14: ( '<~>' )
+//   Comes from: 887:14: ( '<~>' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start REVIFF_TOK
@@ -3818,8 +3818,8 @@ void mREVIFF_TOK(pTptpLexer ctx)
     _type	    = REVIFF_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:886:14: ( '<~>' )
-    // ../../../../../../src/parser/tptp/Tptp.g:886:16: '<~>'
+    // ../../../../src/parser/tptp/Tptp.g:887:14: ( '<~>' )
+    // ../../../../src/parser/tptp/Tptp.g:887:16: '<~>'
     {
         MATCHS(lit_36);
         if  (HASEXCEPTION())
@@ -3841,7 +3841,7 @@ void mREVIFF_TOK(pTptpLexer ctx)
 }
 // $ANTLR end REVIFF_TOK
 
-//   Comes from: 887:14: ( '~|' )
+//   Comes from: 888:14: ( '~|' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start REVOR_TOK
@@ -3861,8 +3861,8 @@ void mREVOR_TOK(pTptpLexer ctx)
     _type	    = REVOR_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:887:14: ( '~|' )
-    // ../../../../../../src/parser/tptp/Tptp.g:887:16: '~|'
+    // ../../../../src/parser/tptp/Tptp.g:888:14: ( '~|' )
+    // ../../../../src/parser/tptp/Tptp.g:888:16: '~|'
     {
         MATCHS(lit_37);
         if  (HASEXCEPTION())
@@ -3884,7 +3884,7 @@ void mREVOR_TOK(pTptpLexer ctx)
 }
 // $ANTLR end REVOR_TOK
 
-//   Comes from: 888:14: ( '~&' )
+//   Comes from: 889:14: ( '~&' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start REVAND_TOK
@@ -3904,8 +3904,8 @@ void mREVAND_TOK(pTptpLexer ctx)
     _type	    = REVAND_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:888:14: ( '~&' )
-    // ../../../../../../src/parser/tptp/Tptp.g:888:16: '~&'
+    // ../../../../src/parser/tptp/Tptp.g:889:14: ( '~&' )
+    // ../../../../src/parser/tptp/Tptp.g:889:16: '~&'
     {
         MATCHS(lit_38);
         if  (HASEXCEPTION())
@@ -3927,7 +3927,7 @@ void mREVAND_TOK(pTptpLexer ctx)
 }
 // $ANTLR end REVAND_TOK
 
-//   Comes from: 889:14: ( '*' )
+//   Comes from: 890:14: ( '*' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start TIMES_TOK
@@ -3947,8 +3947,8 @@ void mTIMES_TOK(pTptpLexer ctx)
     _type	    = TIMES_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:889:14: ( '*' )
-    // ../../../../../../src/parser/tptp/Tptp.g:889:16: '*'
+    // ../../../../src/parser/tptp/Tptp.g:890:14: ( '*' )
+    // ../../../../src/parser/tptp/Tptp.g:890:16: '*'
     {
         MATCHC('*');
         if  (HASEXCEPTION())
@@ -3968,7 +3968,7 @@ void mTIMES_TOK(pTptpLexer ctx)
 }
 // $ANTLR end TIMES_TOK
 
-//   Comes from: 890:14: ( '+' )
+//   Comes from: 891:14: ( '+' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start PLUS_TOK
@@ -3988,8 +3988,8 @@ void mPLUS_TOK(pTptpLexer ctx)
     _type	    = PLUS_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:890:14: ( '+' )
-    // ../../../../../../src/parser/tptp/Tptp.g:890:16: '+'
+    // ../../../../src/parser/tptp/Tptp.g:891:14: ( '+' )
+    // ../../../../src/parser/tptp/Tptp.g:891:16: '+'
     {
         MATCHC('+');
         if  (HASEXCEPTION())
@@ -4009,7 +4009,7 @@ void mPLUS_TOK(pTptpLexer ctx)
 }
 // $ANTLR end PLUS_TOK
 
-//   Comes from: 891:14: ( '-' )
+//   Comes from: 892:14: ( '-' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start MINUS_TOK
@@ -4029,8 +4029,8 @@ void mMINUS_TOK(pTptpLexer ctx)
     _type	    = MINUS_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:891:14: ( '-' )
-    // ../../../../../../src/parser/tptp/Tptp.g:891:16: '-'
+    // ../../../../src/parser/tptp/Tptp.g:892:14: ( '-' )
+    // ../../../../src/parser/tptp/Tptp.g:892:16: '-'
     {
         MATCHC('-');
         if  (HASEXCEPTION())
@@ -4050,7 +4050,7 @@ void mMINUS_TOK(pTptpLexer ctx)
 }
 // $ANTLR end MINUS_TOK
 
-//   Comes from: 894:14: ( '$true' )
+//   Comes from: 895:14: ( '$true' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start TRUE_TOK
@@ -4070,8 +4070,8 @@ void mTRUE_TOK(pTptpLexer ctx)
     _type	    = TRUE_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:894:14: ( '$true' )
-    // ../../../../../../src/parser/tptp/Tptp.g:894:16: '$true'
+    // ../../../../src/parser/tptp/Tptp.g:895:14: ( '$true' )
+    // ../../../../src/parser/tptp/Tptp.g:895:16: '$true'
     {
         MATCHS(lit_39);
         if  (HASEXCEPTION())
@@ -4093,7 +4093,7 @@ void mTRUE_TOK(pTptpLexer ctx)
 }
 // $ANTLR end TRUE_TOK
 
-//   Comes from: 895:14: ( '$false' )
+//   Comes from: 896:14: ( '$false' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FALSE_TOK
@@ -4113,8 +4113,8 @@ void mFALSE_TOK(pTptpLexer ctx)
     _type	    = FALSE_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:895:14: ( '$false' )
-    // ../../../../../../src/parser/tptp/Tptp.g:895:16: '$false'
+    // ../../../../src/parser/tptp/Tptp.g:896:14: ( '$false' )
+    // ../../../../src/parser/tptp/Tptp.g:896:16: '$false'
     {
         MATCHS(lit_40);
         if  (HASEXCEPTION())
@@ -4136,7 +4136,7 @@ void mFALSE_TOK(pTptpLexer ctx)
 }
 // $ANTLR end FALSE_TOK
 
-//   Comes from: 896:14: ( '=' )
+//   Comes from: 897:14: ( '=' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start EQUAL_TOK
@@ -4156,8 +4156,8 @@ void mEQUAL_TOK(pTptpLexer ctx)
     _type	    = EQUAL_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:896:14: ( '=' )
-    // ../../../../../../src/parser/tptp/Tptp.g:896:16: '='
+    // ../../../../src/parser/tptp/Tptp.g:897:14: ( '=' )
+    // ../../../../src/parser/tptp/Tptp.g:897:16: '='
     {
         MATCHC('=');
         if  (HASEXCEPTION())
@@ -4177,7 +4177,7 @@ void mEQUAL_TOK(pTptpLexer ctx)
 }
 // $ANTLR end EQUAL_TOK
 
-//   Comes from: 897:14: ( '!=' )
+//   Comes from: 898:14: ( '!=' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DISEQUAL_TOK
@@ -4197,8 +4197,8 @@ void mDISEQUAL_TOK(pTptpLexer ctx)
     _type	    = DISEQUAL_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:897:14: ( '!=' )
-    // ../../../../../../src/parser/tptp/Tptp.g:897:16: '!='
+    // ../../../../src/parser/tptp/Tptp.g:898:14: ( '!=' )
+    // ../../../../src/parser/tptp/Tptp.g:898:16: '!='
     {
         MATCHS(lit_41);
         if  (HASEXCEPTION())
@@ -4220,7 +4220,7 @@ void mDISEQUAL_TOK(pTptpLexer ctx)
 }
 // $ANTLR end DISEQUAL_TOK
 
-//   Comes from: 900:13: ( 'cnf' )
+//   Comes from: 901:13: ( 'cnf' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start CNF_TOK
@@ -4240,8 +4240,8 @@ void mCNF_TOK(pTptpLexer ctx)
     _type	    = CNF_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:900:13: ( 'cnf' )
-    // ../../../../../../src/parser/tptp/Tptp.g:900:15: 'cnf'
+    // ../../../../src/parser/tptp/Tptp.g:901:13: ( 'cnf' )
+    // ../../../../src/parser/tptp/Tptp.g:901:15: 'cnf'
     {
         MATCHS(lit_42);
         if  (HASEXCEPTION())
@@ -4263,7 +4263,7 @@ void mCNF_TOK(pTptpLexer ctx)
 }
 // $ANTLR end CNF_TOK
 
-//   Comes from: 901:13: ( 'fof' )
+//   Comes from: 902:13: ( 'fof' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start FOF_TOK
@@ -4283,8 +4283,8 @@ void mFOF_TOK(pTptpLexer ctx)
     _type	    = FOF_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:901:13: ( 'fof' )
-    // ../../../../../../src/parser/tptp/Tptp.g:901:15: 'fof'
+    // ../../../../src/parser/tptp/Tptp.g:902:13: ( 'fof' )
+    // ../../../../src/parser/tptp/Tptp.g:902:15: 'fof'
     {
         MATCHS(lit_43);
         if  (HASEXCEPTION())
@@ -4306,7 +4306,7 @@ void mFOF_TOK(pTptpLexer ctx)
 }
 // $ANTLR end FOF_TOK
 
-//   Comes from: 902:13: ( 'thf' )
+//   Comes from: 903:13: ( 'thf' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start THF_TOK
@@ -4326,8 +4326,8 @@ void mTHF_TOK(pTptpLexer ctx)
     _type	    = THF_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:902:13: ( 'thf' )
-    // ../../../../../../src/parser/tptp/Tptp.g:902:15: 'thf'
+    // ../../../../src/parser/tptp/Tptp.g:903:13: ( 'thf' )
+    // ../../../../src/parser/tptp/Tptp.g:903:15: 'thf'
     {
         MATCHS(lit_44);
         if  (HASEXCEPTION())
@@ -4349,7 +4349,7 @@ void mTHF_TOK(pTptpLexer ctx)
 }
 // $ANTLR end THF_TOK
 
-//   Comes from: 903:13: ( 'tff' )
+//   Comes from: 904:13: ( 'tff' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start TFF_TOK
@@ -4369,8 +4369,8 @@ void mTFF_TOK(pTptpLexer ctx)
     _type	    = TFF_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:903:13: ( 'tff' )
-    // ../../../../../../src/parser/tptp/Tptp.g:903:15: 'tff'
+    // ../../../../src/parser/tptp/Tptp.g:904:13: ( 'tff' )
+    // ../../../../src/parser/tptp/Tptp.g:904:15: 'tff'
     {
         MATCHS(lit_45);
         if  (HASEXCEPTION())
@@ -4392,7 +4392,7 @@ void mTFF_TOK(pTptpLexer ctx)
 }
 // $ANTLR end TFF_TOK
 
-//   Comes from: 904:13: ( 'type' )
+//   Comes from: 905:13: ( 'type' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start TYPE_TOK
@@ -4412,8 +4412,8 @@ void mTYPE_TOK(pTptpLexer ctx)
     _type	    = TYPE_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:904:13: ( 'type' )
-    // ../../../../../../src/parser/tptp/Tptp.g:904:15: 'type'
+    // ../../../../src/parser/tptp/Tptp.g:905:13: ( 'type' )
+    // ../../../../src/parser/tptp/Tptp.g:905:15: 'type'
     {
         MATCHS(lit_46);
         if  (HASEXCEPTION())
@@ -4435,7 +4435,7 @@ void mTYPE_TOK(pTptpLexer ctx)
 }
 // $ANTLR end TYPE_TOK
 
-//   Comes from: 905:13: ( 'include' )
+//   Comes from: 906:13: ( 'include' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start INCLUDE_TOK
@@ -4455,8 +4455,8 @@ void mINCLUDE_TOK(pTptpLexer ctx)
     _type	    = INCLUDE_TOK;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:905:13: ( 'include' )
-    // ../../../../../../src/parser/tptp/Tptp.g:905:15: 'include'
+    // ../../../../src/parser/tptp/Tptp.g:906:13: ( 'include' )
+    // ../../../../src/parser/tptp/Tptp.g:906:15: 'include'
     {
         MATCHS(lit_47);
         if  (HASEXCEPTION())
@@ -4478,7 +4478,7 @@ void mINCLUDE_TOK(pTptpLexer ctx)
 }
 // $ANTLR end INCLUDE_TOK
 
-//   Comes from: 908:16: ( '$' LOWER_WORD )
+//   Comes from: 909:16: ( '$' LOWER_WORD )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DEFINED_SYMBOL
@@ -4498,8 +4498,8 @@ void mDEFINED_SYMBOL(pTptpLexer ctx)
     _type	    = DEFINED_SYMBOL;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:908:16: ( '$' LOWER_WORD )
-    // ../../../../../../src/parser/tptp/Tptp.g:908:18: '$' LOWER_WORD
+    // ../../../../src/parser/tptp/Tptp.g:909:16: ( '$' LOWER_WORD )
+    // ../../../../src/parser/tptp/Tptp.g:909:18: '$' LOWER_WORD
     {
         MATCHC('$');
         if  (HASEXCEPTION())
@@ -4508,7 +4508,7 @@ void mDEFINED_SYMBOL(pTptpLexer ctx)
         }
 
 
-        /* 908:18: '$' LOWER_WORD */
+        /* 909:18: '$' LOWER_WORD */
         mLOWER_WORD(ctx );
         if  (HASEXCEPTION())
         {
@@ -4528,7 +4528,7 @@ void mDEFINED_SYMBOL(pTptpLexer ctx)
 }
 // $ANTLR end DEFINED_SYMBOL
 
-//   Comes from: 925:3: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
+//   Comes from: 926:3: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start WHITESPACE
@@ -4548,10 +4548,10 @@ void mWHITESPACE(pTptpLexer ctx)
     _type	    = WHITESPACE;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:925:3: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
-    // ../../../../../../src/parser/tptp/Tptp.g:925:5: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
+    // ../../../../src/parser/tptp/Tptp.g:926:3: ( ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+ )
+    // ../../../../src/parser/tptp/Tptp.g:926:5: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
     {
-        // ../../../../../../src/parser/tptp/Tptp.g:925:5: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
+        // ../../../../src/parser/tptp/Tptp.g:926:5: ( ' ' | '\\t' | '\\f' | '\\r' | '\\n' )+
         {
             int cnt1=0;
 
@@ -4575,7 +4575,7 @@ void mWHITESPACE(pTptpLexer ctx)
         	switch (alt1)
         	{
         	    case 1:
-        	        // ../../../../../../src/parser/tptp/Tptp.g:
+        	        // ../../../../src/parser/tptp/Tptp.g:
         	        {
         	            if ( ((LA(1) >= '\t') && (LA(1) <= '\n')) || ((LA(1) >= '\f') && (LA(1) <= '\r')) || LA(1) == ' ' )
         	            {
@@ -4631,7 +4631,7 @@ void mWHITESPACE(pTptpLexer ctx)
 }
 // $ANTLR end WHITESPACE
 
-//   Comes from: 930:17: ( '\"' ( DO_CHAR )* '\"' )
+//   Comes from: 931:17: ( '\"' ( DO_CHAR )* '\"' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DISTINCT_OBJECT
@@ -4651,8 +4651,8 @@ void mDISTINCT_OBJECT(pTptpLexer ctx)
     _type	    = DISTINCT_OBJECT;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:930:17: ( '\"' ( DO_CHAR )* '\"' )
-    // ../../../../../../src/parser/tptp/Tptp.g:930:19: '\"' ( DO_CHAR )* '\"'
+    // ../../../../src/parser/tptp/Tptp.g:931:17: ( '\"' ( DO_CHAR )* '\"' )
+    // ../../../../src/parser/tptp/Tptp.g:931:19: '\"' ( DO_CHAR )* '\"'
     {
         MATCHC('"');
         if  (HASEXCEPTION())
@@ -4661,7 +4661,7 @@ void mDISTINCT_OBJECT(pTptpLexer ctx)
         }
 
 
-        // ../../../../../../src/parser/tptp/Tptp.g:930:23: ( DO_CHAR )*
+        // ../../../../src/parser/tptp/Tptp.g:931:23: ( DO_CHAR )*
 
         for (;;)
         {
@@ -4772,9 +4772,9 @@ void mDISTINCT_OBJECT(pTptpLexer ctx)
             switch (alt2)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:930:24: DO_CHAR
+        	    // ../../../../src/parser/tptp/Tptp.g:931:24: DO_CHAR
         	    {
-        	        /* 930:24: DO_CHAR */
+        	        /* 931:24: DO_CHAR */
         	        mDO_CHAR(ctx );
         	        if  (HASEXCEPTION())
         	        {
@@ -4812,7 +4812,7 @@ void mDISTINCT_OBJECT(pTptpLexer ctx)
 }
 // $ANTLR end DISTINCT_OBJECT
 
-//   Comes from: 927:18: ( ' ' .. '!' | '#' .. '[' | ']' .. '~' | '\\\\\"' | '\\\\\\\\' )
+//   Comes from: 928:18: ( ' ' .. '!' | '#' .. '[' | ']' .. '~' | '\\\\\"' | '\\\\\\\\' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DO_CHAR
@@ -4831,7 +4831,7 @@ void mDO_CHAR(pTptpLexer ctx)
 
 
     {
-        //  ../../../../../../src/parser/tptp/Tptp.g:927:18: ( ' ' .. '!' | '#' .. '[' | ']' .. '~' | '\\\\\"' | '\\\\\\\\' )
+        //  ../../../../src/parser/tptp/Tptp.g:928:18: ( ' ' .. '!' | '#' .. '[' | ']' .. '~' | '\\\\\"' | '\\\\\\\\' )
 
         ANTLR3_UINT32 alt3;
 
@@ -4989,7 +4989,7 @@ void mDO_CHAR(pTptpLexer ctx)
         switch (alt3)
         {
     	case 1:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:927:20: ' ' .. '!'
+    	    // ../../../../src/parser/tptp/Tptp.g:928:20: ' ' .. '!'
     	    {
     	        MATCHRANGE(' ', '!');
     	        if  (HASEXCEPTION())
@@ -5001,7 +5001,7 @@ void mDO_CHAR(pTptpLexer ctx)
     	    }
     	    break;
     	case 2:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:927:30: '#' .. '['
+    	    // ../../../../src/parser/tptp/Tptp.g:928:30: '#' .. '['
     	    {
     	        MATCHRANGE('#', '[');
     	        if  (HASEXCEPTION())
@@ -5013,7 +5013,7 @@ void mDO_CHAR(pTptpLexer ctx)
     	    }
     	    break;
     	case 3:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:927:41: ']' .. '~'
+    	    // ../../../../src/parser/tptp/Tptp.g:928:41: ']' .. '~'
     	    {
     	        MATCHRANGE(']', '~');
     	        if  (HASEXCEPTION())
@@ -5025,7 +5025,7 @@ void mDO_CHAR(pTptpLexer ctx)
     	    }
     	    break;
     	case 4:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:927:52: '\\\\\"'
+    	    // ../../../../src/parser/tptp/Tptp.g:928:52: '\\\\\"'
     	    {
     	        MATCHS(lit_48);
     	        if  (HASEXCEPTION())
@@ -5039,7 +5039,7 @@ void mDO_CHAR(pTptpLexer ctx)
     	    }
     	    break;
     	case 5:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:927:60: '\\\\\\\\'
+    	    // ../../../../src/parser/tptp/Tptp.g:928:60: '\\\\\\\\'
     	    {
     	        MATCHS(lit_49);
     	        if  (HASEXCEPTION())
@@ -5064,7 +5064,7 @@ void mDO_CHAR(pTptpLexer ctx)
 }
 // $ANTLR end DO_CHAR
 
-//   Comes from: 930:26: ( '\\'' LOWER_WORD '\\'' )
+//   Comes from: 931:26: ( '\\'' LOWER_WORD '\\'' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start LOWER_WORD_SINGLE_QUOTED
@@ -5084,8 +5084,8 @@ void mLOWER_WORD_SINGLE_QUOTED(pTptpLexer ctx)
     _type	    = LOWER_WORD_SINGLE_QUOTED;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:930:26: ( '\\'' LOWER_WORD '\\'' )
-    // ../../../../../../src/parser/tptp/Tptp.g:930:28: '\\'' LOWER_WORD '\\''
+    // ../../../../src/parser/tptp/Tptp.g:931:26: ( '\\'' LOWER_WORD '\\'' )
+    // ../../../../src/parser/tptp/Tptp.g:931:28: '\\'' LOWER_WORD '\\''
     {
         MATCHC('\'');
         if  (HASEXCEPTION())
@@ -5094,7 +5094,7 @@ void mLOWER_WORD_SINGLE_QUOTED(pTptpLexer ctx)
         }
 
 
-        /* 930:28: '\\'' LOWER_WORD '\\'' */
+        /* 931:28: '\\'' LOWER_WORD '\\'' */
         mLOWER_WORD(ctx );
         if  (HASEXCEPTION())
         {
@@ -5121,7 +5121,7 @@ void mLOWER_WORD_SINGLE_QUOTED(pTptpLexer ctx)
 }
 // $ANTLR end LOWER_WORD_SINGLE_QUOTED
 
-//   Comes from: 931:15: ( '\\'' ( SQ_CHAR )* '\\'' )
+//   Comes from: 932:15: ( '\\'' ( SQ_CHAR )* '\\'' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SINGLE_QUOTED
@@ -5141,8 +5141,8 @@ void mSINGLE_QUOTED(pTptpLexer ctx)
     _type	    = SINGLE_QUOTED;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:931:15: ( '\\'' ( SQ_CHAR )* '\\'' )
-    // ../../../../../../src/parser/tptp/Tptp.g:931:17: '\\'' ( SQ_CHAR )* '\\''
+    // ../../../../src/parser/tptp/Tptp.g:932:15: ( '\\'' ( SQ_CHAR )* '\\'' )
+    // ../../../../src/parser/tptp/Tptp.g:932:17: '\\'' ( SQ_CHAR )* '\\''
     {
         MATCHC('\'');
         if  (HASEXCEPTION())
@@ -5151,7 +5151,7 @@ void mSINGLE_QUOTED(pTptpLexer ctx)
         }
 
 
-        // ../../../../../../src/parser/tptp/Tptp.g:931:22: ( SQ_CHAR )*
+        // ../../../../src/parser/tptp/Tptp.g:932:22: ( SQ_CHAR )*
 
         for (;;)
         {
@@ -5262,9 +5262,9 @@ void mSINGLE_QUOTED(pTptpLexer ctx)
             switch (alt4)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:931:23: SQ_CHAR
+        	    // ../../../../src/parser/tptp/Tptp.g:932:23: SQ_CHAR
         	    {
-        	        /* 931:23: SQ_CHAR */
+        	        /* 932:23: SQ_CHAR */
         	        mSQ_CHAR(ctx );
         	        if  (HASEXCEPTION())
         	        {
@@ -5302,7 +5302,7 @@ void mSINGLE_QUOTED(pTptpLexer ctx)
 }
 // $ANTLR end SINGLE_QUOTED
 
-//   Comes from: 933:18: ( ' ' .. '&' | '(' .. '[' | ']' .. '~' | '\\\\\\'' | '\\\\\\\\' )
+//   Comes from: 934:18: ( ' ' .. '&' | '(' .. '[' | ']' .. '~' | '\\\\\\'' | '\\\\\\\\' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SQ_CHAR
@@ -5321,7 +5321,7 @@ void mSQ_CHAR(pTptpLexer ctx)
 
 
     {
-        //  ../../../../../../src/parser/tptp/Tptp.g:933:18: ( ' ' .. '&' | '(' .. '[' | ']' .. '~' | '\\\\\\'' | '\\\\\\\\' )
+        //  ../../../../src/parser/tptp/Tptp.g:934:18: ( ' ' .. '&' | '(' .. '[' | ']' .. '~' | '\\\\\\'' | '\\\\\\\\' )
 
         ANTLR3_UINT32 alt5;
 
@@ -5479,7 +5479,7 @@ void mSQ_CHAR(pTptpLexer ctx)
         switch (alt5)
         {
     	case 1:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:933:20: ' ' .. '&'
+    	    // ../../../../src/parser/tptp/Tptp.g:934:20: ' ' .. '&'
     	    {
     	        MATCHRANGE(' ', '&');
     	        if  (HASEXCEPTION())
@@ -5491,7 +5491,7 @@ void mSQ_CHAR(pTptpLexer ctx)
     	    }
     	    break;
     	case 2:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:933:31: '(' .. '['
+    	    // ../../../../src/parser/tptp/Tptp.g:934:31: '(' .. '['
     	    {
     	        MATCHRANGE('(', '[');
     	        if  (HASEXCEPTION())
@@ -5503,7 +5503,7 @@ void mSQ_CHAR(pTptpLexer ctx)
     	    }
     	    break;
     	case 3:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:933:42: ']' .. '~'
+    	    // ../../../../src/parser/tptp/Tptp.g:934:42: ']' .. '~'
     	    {
     	        MATCHRANGE(']', '~');
     	        if  (HASEXCEPTION())
@@ -5515,7 +5515,7 @@ void mSQ_CHAR(pTptpLexer ctx)
     	    }
     	    break;
     	case 4:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:933:53: '\\\\\\''
+    	    // ../../../../src/parser/tptp/Tptp.g:934:53: '\\\\\\''
     	    {
     	        MATCHS(lit_50);
     	        if  (HASEXCEPTION())
@@ -5529,7 +5529,7 @@ void mSQ_CHAR(pTptpLexer ctx)
     	    }
     	    break;
     	case 5:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:933:62: '\\\\\\\\'
+    	    // ../../../../src/parser/tptp/Tptp.g:934:62: '\\\\\\\\'
     	    {
     	        MATCHS(lit_49);
     	        if  (HASEXCEPTION())
@@ -5554,7 +5554,7 @@ void mSQ_CHAR(pTptpLexer ctx)
 }
 // $ANTLR end SQ_CHAR
 
-//   Comes from: 936:18: ( '0' .. '9' )
+//   Comes from: 937:18: ( '0' .. '9' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start NUMERIC
@@ -5572,8 +5572,8 @@ void mNUMERIC(pTptpLexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:936:18: ( '0' .. '9' )
-    // ../../../../../../src/parser/tptp/Tptp.g:
+    // ../../../../src/parser/tptp/Tptp.g:937:18: ( '0' .. '9' )
+    // ../../../../src/parser/tptp/Tptp.g:
     {
         if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
         {
@@ -5601,7 +5601,7 @@ void mNUMERIC(pTptpLexer ctx)
 }
 // $ANTLR end NUMERIC
 
-//   Comes from: 937:22: ( 'a' .. 'z' )
+//   Comes from: 938:22: ( 'a' .. 'z' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start LOWER_ALPHA
@@ -5619,8 +5619,8 @@ void mLOWER_ALPHA(pTptpLexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:937:22: ( 'a' .. 'z' )
-    // ../../../../../../src/parser/tptp/Tptp.g:
+    // ../../../../src/parser/tptp/Tptp.g:938:22: ( 'a' .. 'z' )
+    // ../../../../src/parser/tptp/Tptp.g:
     {
         if ( ((LA(1) >= 'a') && (LA(1) <= 'z')) )
         {
@@ -5648,7 +5648,7 @@ void mLOWER_ALPHA(pTptpLexer ctx)
 }
 // $ANTLR end LOWER_ALPHA
 
-//   Comes from: 938:22: ( 'A' .. 'Z' )
+//   Comes from: 939:22: ( 'A' .. 'Z' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start UPPER_ALPHA
@@ -5666,8 +5666,8 @@ void mUPPER_ALPHA(pTptpLexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:938:22: ( 'A' .. 'Z' )
-    // ../../../../../../src/parser/tptp/Tptp.g:
+    // ../../../../src/parser/tptp/Tptp.g:939:22: ( 'A' .. 'Z' )
+    // ../../../../src/parser/tptp/Tptp.g:
     {
         if ( ((LA(1) >= 'A') && (LA(1) <= 'Z')) )
         {
@@ -5695,7 +5695,7 @@ void mUPPER_ALPHA(pTptpLexer ctx)
 }
 // $ANTLR end UPPER_ALPHA
 
-//   Comes from: 939:24: ( LOWER_ALPHA | UPPER_ALPHA | NUMERIC | '_' )
+//   Comes from: 940:24: ( LOWER_ALPHA | UPPER_ALPHA | NUMERIC | '_' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start ALPHA_NUMERIC
@@ -5713,8 +5713,8 @@ void mALPHA_NUMERIC(pTptpLexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:939:24: ( LOWER_ALPHA | UPPER_ALPHA | NUMERIC | '_' )
-    // ../../../../../../src/parser/tptp/Tptp.g:
+    // ../../../../src/parser/tptp/Tptp.g:940:24: ( LOWER_ALPHA | UPPER_ALPHA | NUMERIC | '_' )
+    // ../../../../src/parser/tptp/Tptp.g:
     {
         if ( ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'A') && (LA(1) <= 'Z')) || LA(1) == '_' || ((LA(1) >= 'a') && (LA(1) <= 'z')) )
         {
@@ -5742,7 +5742,7 @@ void mALPHA_NUMERIC(pTptpLexer ctx)
 }
 // $ANTLR end ALPHA_NUMERIC
 
-//   Comes from: 940:12: ( UPPER_ALPHA ( ALPHA_NUMERIC )* )
+//   Comes from: 941:12: ( UPPER_ALPHA ( ALPHA_NUMERIC )* )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start UPPER_WORD
@@ -5762,10 +5762,10 @@ void mUPPER_WORD(pTptpLexer ctx)
     _type	    = UPPER_WORD;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:940:12: ( UPPER_ALPHA ( ALPHA_NUMERIC )* )
-    // ../../../../../../src/parser/tptp/Tptp.g:940:14: UPPER_ALPHA ( ALPHA_NUMERIC )*
+    // ../../../../src/parser/tptp/Tptp.g:941:12: ( UPPER_ALPHA ( ALPHA_NUMERIC )* )
+    // ../../../../src/parser/tptp/Tptp.g:941:14: UPPER_ALPHA ( ALPHA_NUMERIC )*
     {
-        /* 940:14: UPPER_ALPHA ( ALPHA_NUMERIC )* */
+        /* 941:14: UPPER_ALPHA ( ALPHA_NUMERIC )* */
         mUPPER_ALPHA(ctx );
         if  (HASEXCEPTION())
         {
@@ -5774,7 +5774,7 @@ void mUPPER_WORD(pTptpLexer ctx)
 
 
 
-        // ../../../../../../src/parser/tptp/Tptp.g:940:26: ( ALPHA_NUMERIC )*
+        // ../../../../src/parser/tptp/Tptp.g:941:26: ( ALPHA_NUMERIC )*
 
         for (;;)
         {
@@ -5854,7 +5854,7 @@ void mUPPER_WORD(pTptpLexer ctx)
             switch (alt6)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:
+        	    // ../../../../src/parser/tptp/Tptp.g:
         	    {
         	        if ( ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'A') && (LA(1) <= 'Z')) || LA(1) == '_' || ((LA(1) >= 'a') && (LA(1) <= 'z')) )
         	        {
@@ -5893,7 +5893,7 @@ void mUPPER_WORD(pTptpLexer ctx)
 }
 // $ANTLR end UPPER_WORD
 
-//   Comes from: 941:12: ( LOWER_ALPHA ( ALPHA_NUMERIC )* )
+//   Comes from: 942:12: ( LOWER_ALPHA ( ALPHA_NUMERIC )* )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start LOWER_WORD
@@ -5913,10 +5913,10 @@ void mLOWER_WORD(pTptpLexer ctx)
     _type	    = LOWER_WORD;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:941:12: ( LOWER_ALPHA ( ALPHA_NUMERIC )* )
-    // ../../../../../../src/parser/tptp/Tptp.g:941:14: LOWER_ALPHA ( ALPHA_NUMERIC )*
+    // ../../../../src/parser/tptp/Tptp.g:942:12: ( LOWER_ALPHA ( ALPHA_NUMERIC )* )
+    // ../../../../src/parser/tptp/Tptp.g:942:14: LOWER_ALPHA ( ALPHA_NUMERIC )*
     {
-        /* 941:14: LOWER_ALPHA ( ALPHA_NUMERIC )* */
+        /* 942:14: LOWER_ALPHA ( ALPHA_NUMERIC )* */
         mLOWER_ALPHA(ctx );
         if  (HASEXCEPTION())
         {
@@ -5925,7 +5925,7 @@ void mLOWER_WORD(pTptpLexer ctx)
 
 
 
-        // ../../../../../../src/parser/tptp/Tptp.g:941:26: ( ALPHA_NUMERIC )*
+        // ../../../../src/parser/tptp/Tptp.g:942:26: ( ALPHA_NUMERIC )*
 
         for (;;)
         {
@@ -6005,7 +6005,7 @@ void mLOWER_WORD(pTptpLexer ctx)
             switch (alt7)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:
+        	    // ../../../../src/parser/tptp/Tptp.g:
         	    {
         	        if ( ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'A') && (LA(1) <= 'Z')) || LA(1) == '_' || ((LA(1) >= 'a') && (LA(1) <= 'z')) )
         	        {
@@ -6044,7 +6044,7 @@ void mLOWER_WORD(pTptpLexer ctx)
 }
 // $ANTLR end LOWER_WORD
 
-//   Comes from: 978:27: ( '.' )
+//   Comes from: 979:27: ( '.' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DOT
@@ -6062,8 +6062,8 @@ void mDOT(pTptpLexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:978:27: ( '.' )
-    // ../../../../../../src/parser/tptp/Tptp.g:978:29: '.'
+    // ../../../../src/parser/tptp/Tptp.g:979:27: ( '.' )
+    // ../../../../src/parser/tptp/Tptp.g:979:29: '.'
     {
         MATCHC('.');
         if  (HASEXCEPTION())
@@ -6083,7 +6083,7 @@ void mDOT(pTptpLexer ctx)
 }
 // $ANTLR end DOT
 
-//   Comes from: 976:27: ( 'E' | 'e' )
+//   Comes from: 977:27: ( 'E' | 'e' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start EXPONENT
@@ -6101,8 +6101,8 @@ void mEXPONENT(pTptpLexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:976:27: ( 'E' | 'e' )
-    // ../../../../../../src/parser/tptp/Tptp.g:
+    // ../../../../src/parser/tptp/Tptp.g:977:27: ( 'E' | 'e' )
+    // ../../../../src/parser/tptp/Tptp.g:
     {
         if ( LA(1) == 'E' || LA(1) == 'e' )
         {
@@ -6130,7 +6130,7 @@ void mEXPONENT(pTptpLexer ctx)
 }
 // $ANTLR end EXPONENT
 
-//   Comes from: 977:27: ( '/' )
+//   Comes from: 978:27: ( '/' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SLASH
@@ -6148,8 +6148,8 @@ void mSLASH(pTptpLexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:977:27: ( '/' )
-    // ../../../../../../src/parser/tptp/Tptp.g:977:29: '/'
+    // ../../../../src/parser/tptp/Tptp.g:978:27: ( '/' )
+    // ../../../../src/parser/tptp/Tptp.g:978:29: '/'
     {
         MATCHC('/');
         if  (HASEXCEPTION())
@@ -6169,7 +6169,7 @@ void mSLASH(pTptpLexer ctx)
 }
 // $ANTLR end SLASH
 
-//   Comes from: 979:18: ( ( NUMERIC )+ )
+//   Comes from: 980:18: ( ( NUMERIC )+ )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start DECIMAL
@@ -6187,10 +6187,10 @@ void mDECIMAL(pTptpLexer ctx)
 	ANTLR3_UINT32	_type;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:979:18: ( ( NUMERIC )+ )
-    // ../../../../../../src/parser/tptp/Tptp.g:979:20: ( NUMERIC )+
+    // ../../../../src/parser/tptp/Tptp.g:980:18: ( ( NUMERIC )+ )
+    // ../../../../src/parser/tptp/Tptp.g:980:20: ( NUMERIC )+
     {
-        // ../../../../../../src/parser/tptp/Tptp.g:979:20: ( NUMERIC )+
+        // ../../../../src/parser/tptp/Tptp.g:980:20: ( NUMERIC )+
         {
             int cnt8=0;
 
@@ -6219,7 +6219,7 @@ void mDECIMAL(pTptpLexer ctx)
         	switch (alt8)
         	{
         	    case 1:
-        	        // ../../../../../../src/parser/tptp/Tptp.g:
+        	        // ../../../../src/parser/tptp/Tptp.g:
         	        {
         	            if ( ((LA(1) >= '0') && (LA(1) <= '9')) )
         	            {
@@ -6270,7 +6270,7 @@ void mDECIMAL(pTptpLexer ctx)
 }
 // $ANTLR end DECIMAL
 
-//   Comes from: 983:3: ( PLUS_TOK | MINUS_TOK )
+//   Comes from: 984:3: ( PLUS_TOK | MINUS_TOK )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start SIGN
@@ -6289,7 +6289,7 @@ void mSIGN(pTptpLexer ctx, bool& pos)
 
 
     {
-        //  ../../../../../../src/parser/tptp/Tptp.g:983:3: ( PLUS_TOK | MINUS_TOK )
+        //  ../../../../src/parser/tptp/Tptp.g:984:3: ( PLUS_TOK | MINUS_TOK )
 
         ANTLR3_UINT32 alt9;
 
@@ -6323,9 +6323,9 @@ void mSIGN(pTptpLexer ctx, bool& pos)
         switch (alt9)
         {
     	case 1:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:983:5: PLUS_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:984:5: PLUS_TOK
     	    {
-    	        /* 983:5: PLUS_TOK */
+    	        /* 984:5: PLUS_TOK */
     	        mPLUS_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -6342,9 +6342,9 @@ void mSIGN(pTptpLexer ctx, bool& pos)
     	    }
     	    break;
     	case 2:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:984:5: MINUS_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:985:5: MINUS_TOK
     	    {
-    	        /* 984:5: MINUS_TOK */
+    	        /* 985:5: MINUS_TOK */
     	        mMINUS_TOK(ctx );
     	        if  (HASEXCEPTION())
     	        {
@@ -6372,7 +6372,7 @@ void mSIGN(pTptpLexer ctx, bool& pos)
 }
 // $ANTLR end SIGN
 
-//   Comes from: 992:3: ( ( ( SIGN[pos] )? num= DECIMAL | ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? | ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL ) )
+//   Comes from: 993:3: ( ( ( SIGN[pos] )? num= DECIMAL | ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? | ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL ) )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start NUMBER
@@ -6404,10 +6404,10 @@ void mNUMBER(pTptpLexer ctx)
     _type	    = NUMBER;
 
 
-    // ../../../../../../src/parser/tptp/Tptp.g:992:3: ( ( ( SIGN[pos] )? num= DECIMAL | ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? | ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL ) )
-    // ../../../../../../src/parser/tptp/Tptp.g:992:5: ( ( SIGN[pos] )? num= DECIMAL | ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? | ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL )
+    // ../../../../src/parser/tptp/Tptp.g:993:3: ( ( ( SIGN[pos] )? num= DECIMAL | ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? | ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL ) )
+    // ../../../../src/parser/tptp/Tptp.g:993:5: ( ( SIGN[pos] )? num= DECIMAL | ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? | ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL )
     {
-        // ../../../../../../src/parser/tptp/Tptp.g:992:5: ( ( SIGN[pos] )? num= DECIMAL | ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? | ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL )
+        // ../../../../src/parser/tptp/Tptp.g:993:5: ( ( SIGN[pos] )? num= DECIMAL | ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? | ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL )
         {
             int alt15=3;
             alt15 = cdfa15.predict(ctx, RECOGNIZER, ISTREAM, &cdfa15);
@@ -6419,9 +6419,9 @@ void mNUMBER(pTptpLexer ctx)
             switch (alt15)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:992:7: ( SIGN[pos] )? num= DECIMAL
+        	    // ../../../../src/parser/tptp/Tptp.g:993:7: ( SIGN[pos] )? num= DECIMAL
         	    {
-        	        // ../../../../../../src/parser/tptp/Tptp.g:992:7: ( SIGN[pos] )?
+        	        // ../../../../src/parser/tptp/Tptp.g:993:7: ( SIGN[pos] )?
         	        {
         	            int alt10=2;
         	            switch ( LA(1) )
@@ -6437,9 +6437,9 @@ void mNUMBER(pTptpLexer ctx)
         	            switch (alt10)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:992:7: SIGN[pos]
+        	        	    // ../../../../src/parser/tptp/Tptp.g:993:7: SIGN[pos]
         	        	    {
-        	        	        /* 992:7: SIGN[pos] */
+        	        	        /* 993:7: SIGN[pos] */
         	        	        mSIGN(ctx , pos);
         	        	        if  (HASEXCEPTION())
         	        	        {
@@ -6454,7 +6454,7 @@ void mNUMBER(pTptpLexer ctx)
         	            }
         	        }
 
-        	        /* 992:7: ( SIGN[pos] )? num= DECIMAL */
+        	        /* 993:7: ( SIGN[pos] )? num= DECIMAL */
         	        {
         	            ANTLR3_MARKER numStart952 = GETCHARINDEX();
         	        mDECIMAL(ctx );
@@ -6482,9 +6482,9 @@ void mNUMBER(pTptpLexer ctx)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:997:7: ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )?
+        	    // ../../../../src/parser/tptp/Tptp.g:998:7: ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )?
         	    {
-        	        // ../../../../../../src/parser/tptp/Tptp.g:997:7: ( SIGN[pos] )?
+        	        // ../../../../src/parser/tptp/Tptp.g:998:7: ( SIGN[pos] )?
         	        {
         	            int alt11=2;
         	            switch ( LA(1) )
@@ -6500,9 +6500,9 @@ void mNUMBER(pTptpLexer ctx)
         	            switch (alt11)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:997:7: SIGN[pos]
+        	        	    // ../../../../src/parser/tptp/Tptp.g:998:7: SIGN[pos]
         	        	    {
-        	        	        /* 997:7: SIGN[pos] */
+        	        	        /* 998:7: SIGN[pos] */
         	        	        mSIGN(ctx , pos);
         	        	        if  (HASEXCEPTION())
         	        	        {
@@ -6517,7 +6517,7 @@ void mNUMBER(pTptpLexer ctx)
         	            }
         	        }
 
-        	        /* 997:7: ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? */
+        	        /* 998:7: ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? */
         	        {
         	            ANTLR3_MARKER numStart974 = GETCHARINDEX();
         	        mDECIMAL(ctx );
@@ -6534,7 +6534,7 @@ void mNUMBER(pTptpLexer ctx)
         	        }
 
 
-        	        /* 997:7: ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? */
+        	        /* 998:7: ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? */
         	        mDOT(ctx );
         	        if  (HASEXCEPTION())
         	        {
@@ -6543,7 +6543,7 @@ void mNUMBER(pTptpLexer ctx)
 
 
 
-        	        /* 997:7: ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? */
+        	        /* 998:7: ( SIGN[pos] )? num= DECIMAL DOT den= DECIMAL ( EXPONENT ( SIGN[posE] )? e= DECIMAL )? */
         	        {
         	            ANTLR3_MARKER denStart980 = GETCHARINDEX();
         	        mDECIMAL(ctx );
@@ -6560,7 +6560,7 @@ void mNUMBER(pTptpLexer ctx)
         	        }
 
 
-        	        // ../../../../../../src/parser/tptp/Tptp.g:997:46: ( EXPONENT ( SIGN[posE] )? e= DECIMAL )?
+        	        // ../../../../src/parser/tptp/Tptp.g:998:46: ( EXPONENT ( SIGN[posE] )? e= DECIMAL )?
         	        {
         	            int alt13=2;
         	            switch ( LA(1) )
@@ -6576,9 +6576,9 @@ void mNUMBER(pTptpLexer ctx)
         	            switch (alt13)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:997:47: EXPONENT ( SIGN[posE] )? e= DECIMAL
+        	        	    // ../../../../src/parser/tptp/Tptp.g:998:47: EXPONENT ( SIGN[posE] )? e= DECIMAL
         	        	    {
-        	        	        /* 997:47: EXPONENT ( SIGN[posE] )? e= DECIMAL */
+        	        	        /* 998:47: EXPONENT ( SIGN[posE] )? e= DECIMAL */
         	        	        mEXPONENT(ctx );
         	        	        if  (HASEXCEPTION())
         	        	        {
@@ -6587,7 +6587,7 @@ void mNUMBER(pTptpLexer ctx)
 
 
 
-        	        	        // ../../../../../../src/parser/tptp/Tptp.g:997:56: ( SIGN[posE] )?
+        	        	        // ../../../../src/parser/tptp/Tptp.g:998:56: ( SIGN[posE] )?
         	        	        {
         	        	            int alt12=2;
         	        	            switch ( LA(1) )
@@ -6603,9 +6603,9 @@ void mNUMBER(pTptpLexer ctx)
         	        	            switch (alt12)
         	        	            {
         	        	        	case 1:
-        	        	        	    // ../../../../../../src/parser/tptp/Tptp.g:997:56: SIGN[posE]
+        	        	        	    // ../../../../src/parser/tptp/Tptp.g:998:56: SIGN[posE]
         	        	        	    {
-        	        	        	        /* 997:56: SIGN[posE] */
+        	        	        	        /* 998:56: SIGN[posE] */
         	        	        	        mSIGN(ctx , posE);
         	        	        	        if  (HASEXCEPTION())
         	        	        	        {
@@ -6620,7 +6620,7 @@ void mNUMBER(pTptpLexer ctx)
         	        	            }
         	        	        }
 
-        	        	        /* 997:47: EXPONENT ( SIGN[posE] )? e= DECIMAL */
+        	        	        /* 998:47: EXPONENT ( SIGN[posE] )? e= DECIMAL */
         	        	        {
         	        	            ANTLR3_MARKER eStart991 = GETCHARINDEX();
         	        	        mDECIMAL(ctx );
@@ -6669,9 +6669,9 @@ void mNUMBER(pTptpLexer ctx)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:1017:7: ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL
+        	    // ../../../../src/parser/tptp/Tptp.g:1018:7: ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL
         	    {
-        	        // ../../../../../../src/parser/tptp/Tptp.g:1017:7: ( SIGN[pos] )?
+        	        // ../../../../src/parser/tptp/Tptp.g:1018:7: ( SIGN[pos] )?
         	        {
         	            int alt14=2;
         	            switch ( LA(1) )
@@ -6687,9 +6687,9 @@ void mNUMBER(pTptpLexer ctx)
         	            switch (alt14)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:1017:7: SIGN[pos]
+        	        	    // ../../../../src/parser/tptp/Tptp.g:1018:7: SIGN[pos]
         	        	    {
-        	        	        /* 1017:7: SIGN[pos] */
+        	        	        /* 1018:7: SIGN[pos] */
         	        	        mSIGN(ctx , pos);
         	        	        if  (HASEXCEPTION())
         	        	        {
@@ -6704,7 +6704,7 @@ void mNUMBER(pTptpLexer ctx)
         	            }
         	        }
 
-        	        /* 1017:7: ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL */
+        	        /* 1018:7: ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL */
         	        {
         	            ANTLR3_MARKER numStart1015 = GETCHARINDEX();
         	        mDECIMAL(ctx );
@@ -6721,7 +6721,7 @@ void mNUMBER(pTptpLexer ctx)
         	        }
 
 
-        	        /* 1017:7: ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL */
+        	        /* 1018:7: ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL */
         	        mSLASH(ctx );
         	        if  (HASEXCEPTION())
         	        {
@@ -6730,7 +6730,7 @@ void mNUMBER(pTptpLexer ctx)
 
 
 
-        	        /* 1017:7: ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL */
+        	        /* 1018:7: ( SIGN[pos] )? num= DECIMAL SLASH den= DECIMAL */
         	        {
         	            ANTLR3_MARKER denStart1021 = GETCHARINDEX();
         	        mDECIMAL(ctx );
@@ -6785,7 +6785,7 @@ void mNUMBER(pTptpLexer ctx)
 }
 // $ANTLR end NUMBER
 
-//   Comes from: 1037:3: ( '%' (~ ( '\\n' | '\\r' ) )* | '/*' ( options {greedy=false; } : . )* '*/' )
+//   Comes from: 1038:3: ( '%' (~ ( '\\n' | '\\r' ) )* | '/*' ( options {greedy=false; } : . )* '*/' )
 /** \brief Lexer rule generated by ANTLR3
  *
  * $ANTLR start COMMENT
@@ -6806,7 +6806,7 @@ void mCOMMENT(pTptpLexer ctx)
 
 
     {
-        //  ../../../../../../src/parser/tptp/Tptp.g:1037:3: ( '%' (~ ( '\\n' | '\\r' ) )* | '/*' ( options {greedy=false; } : . )* '*/' )
+        //  ../../../../src/parser/tptp/Tptp.g:1038:3: ( '%' (~ ( '\\n' | '\\r' ) )* | '/*' ( options {greedy=false; } : . )* '*/' )
 
         ANTLR3_UINT32 alt18;
 
@@ -6840,7 +6840,7 @@ void mCOMMENT(pTptpLexer ctx)
         switch (alt18)
         {
     	case 1:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1037:5: '%' (~ ( '\\n' | '\\r' ) )*
+    	    // ../../../../src/parser/tptp/Tptp.g:1038:5: '%' (~ ( '\\n' | '\\r' ) )*
     	    {
     	        MATCHC('%');
     	        if  (HASEXCEPTION())
@@ -6849,7 +6849,7 @@ void mCOMMENT(pTptpLexer ctx)
     	        }
 
 
-    	        // ../../../../../../src/parser/tptp/Tptp.g:1037:9: (~ ( '\\n' | '\\r' ) )*
+    	        // ../../../../src/parser/tptp/Tptp.g:1038:9: (~ ( '\\n' | '\\r' ) )*
 
     	        for (;;)
     	        {
@@ -6867,7 +6867,7 @@ void mCOMMENT(pTptpLexer ctx)
     	            switch (alt16)
     	            {
     	        	case 1:
-    	        	    // ../../../../../../src/parser/tptp/Tptp.g:
+    	        	    // ../../../../src/parser/tptp/Tptp.g:
     	        	    {
     	        	        if ( ((LA(1) >= 0x0000) && (LA(1) <= '\t')) || ((LA(1) >= 0x000B) && (LA(1) <= '\f')) || ((LA(1) >= 0x000E) && (LA(1) <= 0xFFFF)) )
     	        	        {
@@ -6903,7 +6903,7 @@ void mCOMMENT(pTptpLexer ctx)
     	    }
     	    break;
     	case 2:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1038:5: '/*' ( options {greedy=false; } : . )* '*/'
+    	    // ../../../../src/parser/tptp/Tptp.g:1039:5: '/*' ( options {greedy=false; } : . )* '*/'
     	    {
     	        MATCHS(lit_51);
     	        if  (HASEXCEPTION())
@@ -6914,7 +6914,7 @@ void mCOMMENT(pTptpLexer ctx)
 
 
 
-    	        // ../../../../../../src/parser/tptp/Tptp.g:1038:11: ( options {greedy=false; } : . )*
+    	        // ../../../../src/parser/tptp/Tptp.g:1039:11: ( options {greedy=false; } : . )*
 
     	        for (;;)
     	        {
@@ -6949,7 +6949,7 @@ void mCOMMENT(pTptpLexer ctx)
     	            switch (alt17)
     	            {
     	        	case 1:
-    	        	    // ../../../../../../src/parser/tptp/Tptp.g:1038:39: .
+    	        	    // ../../../../src/parser/tptp/Tptp.g:1039:39: .
     	        	    {
     	        	        MATCHANY();
     	        	        if  (HASEXCEPTION())
@@ -7004,7 +7004,7 @@ static void
 mTokens(pTptpLexer ctx)
 {
     {
-        //  ../../../../../../src/parser/tptp/Tptp.g:1:8: ( T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | COMMA_TOK | DOT_TOK | LPAREN_TOK | RPAREN_TOK | LBRACK_TOK | RBRACK_TOK | COLON_TOK | GREATER_TOK | OR_TOK | NOT_TOK | BANG_TOK | MARK_TOK | AND_TOK | IFF_TOK | IMPLIES_TOK | R [...]
+        //  ../../../../src/parser/tptp/Tptp.g:1:8: ( T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | COMMA_TOK | DOT_TOK | LPAREN_TOK | RPAREN_TOK | LBRACK_TOK | RBRACK_TOK | COLON_TOK | GREATER_TOK | OR_TOK | NOT_TOK | BANG_TOK | MARK_TOK | AND_TOK | IFF_TOK | IMPLIES_TOK | REVIMPL [...]
 
         ANTLR3_UINT32 alt19;
 
@@ -7019,7 +7019,7 @@ mTokens(pTptpLexer ctx)
         switch (alt19)
         {
     	case 1:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:10: T__56
+    	    // ../../../../src/parser/tptp/Tptp.g:1:10: T__56
     	    {
     	        /* 1:10: T__56 */
     	        mT__56(ctx );
@@ -7033,7 +7033,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 2:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:16: T__57
+    	    // ../../../../src/parser/tptp/Tptp.g:1:16: T__57
     	    {
     	        /* 1:16: T__57 */
     	        mT__57(ctx );
@@ -7047,7 +7047,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 3:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:22: T__58
+    	    // ../../../../src/parser/tptp/Tptp.g:1:22: T__58
     	    {
     	        /* 1:22: T__58 */
     	        mT__58(ctx );
@@ -7061,7 +7061,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 4:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:28: T__59
+    	    // ../../../../src/parser/tptp/Tptp.g:1:28: T__59
     	    {
     	        /* 1:28: T__59 */
     	        mT__59(ctx );
@@ -7075,7 +7075,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 5:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:34: T__60
+    	    // ../../../../src/parser/tptp/Tptp.g:1:34: T__60
     	    {
     	        /* 1:34: T__60 */
     	        mT__60(ctx );
@@ -7089,7 +7089,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 6:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:40: T__61
+    	    // ../../../../src/parser/tptp/Tptp.g:1:40: T__61
     	    {
     	        /* 1:40: T__61 */
     	        mT__61(ctx );
@@ -7103,7 +7103,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 7:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:46: T__62
+    	    // ../../../../src/parser/tptp/Tptp.g:1:46: T__62
     	    {
     	        /* 1:46: T__62 */
     	        mT__62(ctx );
@@ -7117,7 +7117,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 8:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:52: T__63
+    	    // ../../../../src/parser/tptp/Tptp.g:1:52: T__63
     	    {
     	        /* 1:52: T__63 */
     	        mT__63(ctx );
@@ -7131,7 +7131,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 9:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:58: T__64
+    	    // ../../../../src/parser/tptp/Tptp.g:1:58: T__64
     	    {
     	        /* 1:58: T__64 */
     	        mT__64(ctx );
@@ -7145,7 +7145,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 10:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:64: T__65
+    	    // ../../../../src/parser/tptp/Tptp.g:1:64: T__65
     	    {
     	        /* 1:64: T__65 */
     	        mT__65(ctx );
@@ -7159,7 +7159,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 11:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:70: T__66
+    	    // ../../../../src/parser/tptp/Tptp.g:1:70: T__66
     	    {
     	        /* 1:70: T__66 */
     	        mT__66(ctx );
@@ -7173,7 +7173,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 12:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:76: T__67
+    	    // ../../../../src/parser/tptp/Tptp.g:1:76: T__67
     	    {
     	        /* 1:76: T__67 */
     	        mT__67(ctx );
@@ -7187,7 +7187,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 13:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:82: T__68
+    	    // ../../../../src/parser/tptp/Tptp.g:1:82: T__68
     	    {
     	        /* 1:82: T__68 */
     	        mT__68(ctx );
@@ -7201,7 +7201,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 14:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:88: T__69
+    	    // ../../../../src/parser/tptp/Tptp.g:1:88: T__69
     	    {
     	        /* 1:88: T__69 */
     	        mT__69(ctx );
@@ -7215,7 +7215,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 15:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:94: T__70
+    	    // ../../../../src/parser/tptp/Tptp.g:1:94: T__70
     	    {
     	        /* 1:94: T__70 */
     	        mT__70(ctx );
@@ -7229,7 +7229,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 16:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:100: T__71
+    	    // ../../../../src/parser/tptp/Tptp.g:1:100: T__71
     	    {
     	        /* 1:100: T__71 */
     	        mT__71(ctx );
@@ -7243,7 +7243,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 17:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:106: T__72
+    	    // ../../../../src/parser/tptp/Tptp.g:1:106: T__72
     	    {
     	        /* 1:106: T__72 */
     	        mT__72(ctx );
@@ -7257,7 +7257,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 18:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:112: T__73
+    	    // ../../../../src/parser/tptp/Tptp.g:1:112: T__73
     	    {
     	        /* 1:112: T__73 */
     	        mT__73(ctx );
@@ -7271,7 +7271,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 19:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:118: T__74
+    	    // ../../../../src/parser/tptp/Tptp.g:1:118: T__74
     	    {
     	        /* 1:118: T__74 */
     	        mT__74(ctx );
@@ -7285,7 +7285,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 20:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:124: T__75
+    	    // ../../../../src/parser/tptp/Tptp.g:1:124: T__75
     	    {
     	        /* 1:124: T__75 */
     	        mT__75(ctx );
@@ -7299,7 +7299,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 21:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:130: T__76
+    	    // ../../../../src/parser/tptp/Tptp.g:1:130: T__76
     	    {
     	        /* 1:130: T__76 */
     	        mT__76(ctx );
@@ -7313,7 +7313,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 22:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:136: T__77
+    	    // ../../../../src/parser/tptp/Tptp.g:1:136: T__77
     	    {
     	        /* 1:136: T__77 */
     	        mT__77(ctx );
@@ -7327,7 +7327,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 23:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:142: T__78
+    	    // ../../../../src/parser/tptp/Tptp.g:1:142: T__78
     	    {
     	        /* 1:142: T__78 */
     	        mT__78(ctx );
@@ -7341,7 +7341,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 24:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:148: T__79
+    	    // ../../../../src/parser/tptp/Tptp.g:1:148: T__79
     	    {
     	        /* 1:148: T__79 */
     	        mT__79(ctx );
@@ -7355,7 +7355,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 25:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:154: T__80
+    	    // ../../../../src/parser/tptp/Tptp.g:1:154: T__80
     	    {
     	        /* 1:154: T__80 */
     	        mT__80(ctx );
@@ -7369,7 +7369,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 26:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:160: T__81
+    	    // ../../../../src/parser/tptp/Tptp.g:1:160: T__81
     	    {
     	        /* 1:160: T__81 */
     	        mT__81(ctx );
@@ -7383,7 +7383,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 27:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:166: T__82
+    	    // ../../../../src/parser/tptp/Tptp.g:1:166: T__82
     	    {
     	        /* 1:166: T__82 */
     	        mT__82(ctx );
@@ -7397,7 +7397,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 28:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:172: T__83
+    	    // ../../../../src/parser/tptp/Tptp.g:1:172: T__83
     	    {
     	        /* 1:172: T__83 */
     	        mT__83(ctx );
@@ -7411,7 +7411,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 29:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:178: T__84
+    	    // ../../../../src/parser/tptp/Tptp.g:1:178: T__84
     	    {
     	        /* 1:178: T__84 */
     	        mT__84(ctx );
@@ -7425,7 +7425,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 30:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:184: T__85
+    	    // ../../../../src/parser/tptp/Tptp.g:1:184: T__85
     	    {
     	        /* 1:184: T__85 */
     	        mT__85(ctx );
@@ -7439,7 +7439,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 31:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:190: T__86
+    	    // ../../../../src/parser/tptp/Tptp.g:1:190: T__86
     	    {
     	        /* 1:190: T__86 */
     	        mT__86(ctx );
@@ -7453,7 +7453,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 32:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:196: T__87
+    	    // ../../../../src/parser/tptp/Tptp.g:1:196: T__87
     	    {
     	        /* 1:196: T__87 */
     	        mT__87(ctx );
@@ -7467,7 +7467,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 33:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:202: COMMA_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:202: COMMA_TOK
     	    {
     	        /* 1:202: COMMA_TOK */
     	        mCOMMA_TOK(ctx );
@@ -7481,7 +7481,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 34:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:212: DOT_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:212: DOT_TOK
     	    {
     	        /* 1:212: DOT_TOK */
     	        mDOT_TOK(ctx );
@@ -7495,7 +7495,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 35:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:220: LPAREN_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:220: LPAREN_TOK
     	    {
     	        /* 1:220: LPAREN_TOK */
     	        mLPAREN_TOK(ctx );
@@ -7509,7 +7509,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 36:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:231: RPAREN_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:231: RPAREN_TOK
     	    {
     	        /* 1:231: RPAREN_TOK */
     	        mRPAREN_TOK(ctx );
@@ -7523,7 +7523,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 37:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:242: LBRACK_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:242: LBRACK_TOK
     	    {
     	        /* 1:242: LBRACK_TOK */
     	        mLBRACK_TOK(ctx );
@@ -7537,7 +7537,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 38:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:253: RBRACK_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:253: RBRACK_TOK
     	    {
     	        /* 1:253: RBRACK_TOK */
     	        mRBRACK_TOK(ctx );
@@ -7551,7 +7551,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 39:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:264: COLON_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:264: COLON_TOK
     	    {
     	        /* 1:264: COLON_TOK */
     	        mCOLON_TOK(ctx );
@@ -7565,7 +7565,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 40:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:274: GREATER_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:274: GREATER_TOK
     	    {
     	        /* 1:274: GREATER_TOK */
     	        mGREATER_TOK(ctx );
@@ -7579,7 +7579,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 41:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:286: OR_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:286: OR_TOK
     	    {
     	        /* 1:286: OR_TOK */
     	        mOR_TOK(ctx );
@@ -7593,7 +7593,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 42:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:293: NOT_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:293: NOT_TOK
     	    {
     	        /* 1:293: NOT_TOK */
     	        mNOT_TOK(ctx );
@@ -7607,7 +7607,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 43:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:301: BANG_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:301: BANG_TOK
     	    {
     	        /* 1:301: BANG_TOK */
     	        mBANG_TOK(ctx );
@@ -7621,7 +7621,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 44:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:310: MARK_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:310: MARK_TOK
     	    {
     	        /* 1:310: MARK_TOK */
     	        mMARK_TOK(ctx );
@@ -7635,7 +7635,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 45:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:319: AND_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:319: AND_TOK
     	    {
     	        /* 1:319: AND_TOK */
     	        mAND_TOK(ctx );
@@ -7649,7 +7649,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 46:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:327: IFF_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:327: IFF_TOK
     	    {
     	        /* 1:327: IFF_TOK */
     	        mIFF_TOK(ctx );
@@ -7663,7 +7663,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 47:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:335: IMPLIES_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:335: IMPLIES_TOK
     	    {
     	        /* 1:335: IMPLIES_TOK */
     	        mIMPLIES_TOK(ctx );
@@ -7677,7 +7677,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 48:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:347: REVIMPLIES_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:347: REVIMPLIES_TOK
     	    {
     	        /* 1:347: REVIMPLIES_TOK */
     	        mREVIMPLIES_TOK(ctx );
@@ -7691,7 +7691,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 49:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:362: REVIFF_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:362: REVIFF_TOK
     	    {
     	        /* 1:362: REVIFF_TOK */
     	        mREVIFF_TOK(ctx );
@@ -7705,7 +7705,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 50:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:373: REVOR_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:373: REVOR_TOK
     	    {
     	        /* 1:373: REVOR_TOK */
     	        mREVOR_TOK(ctx );
@@ -7719,7 +7719,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 51:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:383: REVAND_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:383: REVAND_TOK
     	    {
     	        /* 1:383: REVAND_TOK */
     	        mREVAND_TOK(ctx );
@@ -7733,7 +7733,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 52:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:394: TIMES_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:394: TIMES_TOK
     	    {
     	        /* 1:394: TIMES_TOK */
     	        mTIMES_TOK(ctx );
@@ -7747,7 +7747,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 53:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:404: PLUS_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:404: PLUS_TOK
     	    {
     	        /* 1:404: PLUS_TOK */
     	        mPLUS_TOK(ctx );
@@ -7761,7 +7761,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 54:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:413: MINUS_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:413: MINUS_TOK
     	    {
     	        /* 1:413: MINUS_TOK */
     	        mMINUS_TOK(ctx );
@@ -7775,7 +7775,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 55:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:423: TRUE_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:423: TRUE_TOK
     	    {
     	        /* 1:423: TRUE_TOK */
     	        mTRUE_TOK(ctx );
@@ -7789,7 +7789,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 56:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:432: FALSE_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:432: FALSE_TOK
     	    {
     	        /* 1:432: FALSE_TOK */
     	        mFALSE_TOK(ctx );
@@ -7803,7 +7803,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 57:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:442: EQUAL_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:442: EQUAL_TOK
     	    {
     	        /* 1:442: EQUAL_TOK */
     	        mEQUAL_TOK(ctx );
@@ -7817,7 +7817,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 58:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:452: DISEQUAL_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:452: DISEQUAL_TOK
     	    {
     	        /* 1:452: DISEQUAL_TOK */
     	        mDISEQUAL_TOK(ctx );
@@ -7831,7 +7831,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 59:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:465: CNF_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:465: CNF_TOK
     	    {
     	        /* 1:465: CNF_TOK */
     	        mCNF_TOK(ctx );
@@ -7845,7 +7845,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 60:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:473: FOF_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:473: FOF_TOK
     	    {
     	        /* 1:473: FOF_TOK */
     	        mFOF_TOK(ctx );
@@ -7859,7 +7859,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 61:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:481: THF_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:481: THF_TOK
     	    {
     	        /* 1:481: THF_TOK */
     	        mTHF_TOK(ctx );
@@ -7873,7 +7873,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 62:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:489: TFF_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:489: TFF_TOK
     	    {
     	        /* 1:489: TFF_TOK */
     	        mTFF_TOK(ctx );
@@ -7887,7 +7887,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 63:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:497: TYPE_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:497: TYPE_TOK
     	    {
     	        /* 1:497: TYPE_TOK */
     	        mTYPE_TOK(ctx );
@@ -7901,7 +7901,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 64:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:506: INCLUDE_TOK
+    	    // ../../../../src/parser/tptp/Tptp.g:1:506: INCLUDE_TOK
     	    {
     	        /* 1:506: INCLUDE_TOK */
     	        mINCLUDE_TOK(ctx );
@@ -7915,7 +7915,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 65:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:518: DEFINED_SYMBOL
+    	    // ../../../../src/parser/tptp/Tptp.g:1:518: DEFINED_SYMBOL
     	    {
     	        /* 1:518: DEFINED_SYMBOL */
     	        mDEFINED_SYMBOL(ctx );
@@ -7929,7 +7929,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 66:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:533: WHITESPACE
+    	    // ../../../../src/parser/tptp/Tptp.g:1:533: WHITESPACE
     	    {
     	        /* 1:533: WHITESPACE */
     	        mWHITESPACE(ctx );
@@ -7943,7 +7943,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 67:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:544: DISTINCT_OBJECT
+    	    // ../../../../src/parser/tptp/Tptp.g:1:544: DISTINCT_OBJECT
     	    {
     	        /* 1:544: DISTINCT_OBJECT */
     	        mDISTINCT_OBJECT(ctx );
@@ -7957,7 +7957,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 68:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:560: LOWER_WORD_SINGLE_QUOTED
+    	    // ../../../../src/parser/tptp/Tptp.g:1:560: LOWER_WORD_SINGLE_QUOTED
     	    {
     	        /* 1:560: LOWER_WORD_SINGLE_QUOTED */
     	        mLOWER_WORD_SINGLE_QUOTED(ctx );
@@ -7971,7 +7971,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 69:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:585: SINGLE_QUOTED
+    	    // ../../../../src/parser/tptp/Tptp.g:1:585: SINGLE_QUOTED
     	    {
     	        /* 1:585: SINGLE_QUOTED */
     	        mSINGLE_QUOTED(ctx );
@@ -7985,7 +7985,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 70:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:599: UPPER_WORD
+    	    // ../../../../src/parser/tptp/Tptp.g:1:599: UPPER_WORD
     	    {
     	        /* 1:599: UPPER_WORD */
     	        mUPPER_WORD(ctx );
@@ -7999,7 +7999,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 71:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:610: LOWER_WORD
+    	    // ../../../../src/parser/tptp/Tptp.g:1:610: LOWER_WORD
     	    {
     	        /* 1:610: LOWER_WORD */
     	        mLOWER_WORD(ctx );
@@ -8013,7 +8013,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 72:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:621: NUMBER
+    	    // ../../../../src/parser/tptp/Tptp.g:1:621: NUMBER
     	    {
     	        /* 1:621: NUMBER */
     	        mNUMBER(ctx );
@@ -8027,7 +8027,7 @@ mTokens(pTptpLexer ctx)
     	    }
     	    break;
     	case 73:
-    	    // ../../../../../../src/parser/tptp/Tptp.g:1:628: COMMENT
+    	    // ../../../../src/parser/tptp/Tptp.g:1:628: COMMENT
     	    {
     	        /* 1:628: COMMENT */
     	        mCOMMENT(ctx );
diff --git a/src/parser/tptp/TptpLexer.h b/src/parser/tptp/TptpLexer.h
index 0e42505..08cb2de 100644
--- a/src/parser/tptp/TptpLexer.h
+++ b/src/parser/tptp/TptpLexer.h
@@ -1,8 +1,8 @@
 /** \file
  *  This C header file was generated by $ANTLR version 3.4
  *
- *     -  From the grammar source file : ../../../../../../src/parser/tptp/Tptp.g
- *     -                            On : 2017-03-16 01:03:04
+ *     -  From the grammar source file : ../../../../src/parser/tptp/Tptp.g
+ *     -                            On : 2017-07-10 10:01:31
  *     -                 for the lexer : TptpLexerLexer
  *
  * Editing it, at least manually, is not wise.
diff --git a/src/parser/tptp/TptpParser.c b/src/parser/tptp/TptpParser.c
index ea07fb1..04ad9a6 100644
--- a/src/parser/tptp/TptpParser.c
+++ b/src/parser/tptp/TptpParser.c
@@ -1,8 +1,8 @@
 /** \file
  *  This C source file was generated by $ANTLR version 3.4
  *
- *     -  From the grammar source file : ../../../../../../src/parser/tptp/Tptp.g
- *     -                            On : 2017-03-16 01:03:04
+ *     -  From the grammar source file : ../../../../src/parser/tptp/Tptp.g
+ *     -                            On : 2017-07-10 10:01:31
  *     -                for the parser : TptpParserParser
  *
  * Editing it, at least manually, is not wise.
@@ -46,10 +46,11 @@
  */
 
 /**
- ** This file is part of CVC4.
- ** Copyright (c) 2009-2014  New York University and The University of Iowa
- ** See the file COPYING in the top-level source directory for licensing
- ** information.
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.
  **/
 
 /* End of Header action.
@@ -468,7 +469,7 @@ static	void ANTLR3_CDECL freeScope(void * scope)
 
 /** \brief Name of the grammar file that generated this code
  */
-static const char fileName[] = "../../../../../../src/parser/tptp/Tptp.g";
+static const char fileName[] = "../../../../src/parser/tptp/Tptp.g";
 
 /** \brief Return the name of the grammar file that generated this code.
  */
@@ -1612,7 +1613,7 @@ static  ANTLR3_BITSET_LIST FOLLOW_SINGLE_QUOTED_in_atomicWord3542	= { FOLLOW_SIN
  */
 /**
  * $ANTLR start parseExpr
- * ../../../../../../src/parser/tptp/Tptp.g:141:1: parseExpr returns [CVC4::parser::tptp::myExpr expr] : ( cnfFormula[expr] | EOF );
+ * ../../../../src/parser/tptp/Tptp.g:142:1: parseExpr returns [CVC4::parser::tptp::myExpr expr] : ( cnfFormula[expr] | EOF );
  */
 static CVC4::parser::tptp::myExpr
 parseExpr(pTptpParser ctx)
@@ -1625,7 +1626,7 @@ parseExpr(pTptpParser ctx)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:142:3: ( cnfFormula[expr] | EOF )
+            //  ../../../../src/parser/tptp/Tptp.g:143:3: ( cnfFormula[expr] | EOF )
 
             ANTLR3_UINT32 alt1;
 
@@ -1702,7 +1703,7 @@ parseExpr(pTptpParser ctx)
             switch (alt1)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:142:5: cnfFormula[expr]
+        	    // ../../../../src/parser/tptp/Tptp.g:143:5: cnfFormula[expr]
         	    {
         	        FOLLOWPUSH(FOLLOW_cnfFormula_in_parseExpr114);
         	        cnfFormula(ctx, expr);
@@ -1717,7 +1718,7 @@ parseExpr(pTptpParser ctx)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:143:5: EOF
+        	    // ../../../../src/parser/tptp/Tptp.g:144:5: EOF
         	    {
         	         MATCHT(EOF, &FOLLOW_EOF_in_parseExpr121);
         	        if  (HASEXCEPTION())
@@ -1749,7 +1750,7 @@ parseExpr(pTptpParser ctx)
 
 /**
  * $ANTLR start parseCommand
- * ../../../../../../src/parser/tptp/Tptp.g:150:1: parseCommand returns [CVC4::Command* cmd = NULL] : ( CNF_TOK LPAREN_TOK nameN[name] COMMA_TOK formulaRole[fr] COMMA_TOK cnfFormula[expr] ( COMMA_TOK ( anything )* )? RPAREN_TOK DOT_TOK | FOF_TOK LPAREN_TOK nameN[name] COMMA_TOK formulaRole[fr] COMMA_TOK fofFormula[expr] ( COMMA_TOK ( anything )* )? RPAREN_TOK DOT_TOK | TFF_TOK LPAREN_TOK nameN[name] COMMA_TOK ( TYPE_TOK COMMA_TOK tffTypedAtom[cmd] | formulaRole[fr] COMMA_TOK tffFormula[e [...]
+ * ../../../../src/parser/tptp/Tptp.g:151:1: parseCommand returns [CVC4::Command* cmd = NULL] : ( CNF_TOK LPAREN_TOK nameN[name] COMMA_TOK formulaRole[fr] COMMA_TOK cnfFormula[expr] ( COMMA_TOK ( anything )* )? RPAREN_TOK DOT_TOK | FOF_TOK LPAREN_TOK nameN[name] COMMA_TOK formulaRole[fr] COMMA_TOK fofFormula[expr] ( COMMA_TOK ( anything )* )? RPAREN_TOK DOT_TOK | TFF_TOK LPAREN_TOK nameN[name] COMMA_TOK ( TYPE_TOK COMMA_TOK tffTypedAtom[cmd] | formulaRole[fr] COMMA_TOK tffFormula[expr] ( [...]
  */
 static CVC4::Command*
 parseCommand(pTptpParser ctx)
@@ -1769,7 +1770,7 @@ parseCommand(pTptpParser ctx)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:157:3: ( CNF_TOK LPAREN_TOK nameN[name] COMMA_TOK formulaRole[fr] COMMA_TOK cnfFormula[expr] ( COMMA_TOK ( anything )* )? RPAREN_TOK DOT_TOK | FOF_TOK LPAREN_TOK nameN[name] COMMA_TOK formulaRole[fr] COMMA_TOK fofFormula[expr] ( COMMA_TOK ( anything )* )? RPAREN_TOK DOT_TOK | TFF_TOK LPAREN_TOK nameN[name] COMMA_TOK ( TYPE_TOK COMMA_TOK tffTypedAtom[cmd] | formulaRole[fr] COMMA_TOK tffFormula[expr] ( COMMA_TOK ( anything )* )? ) RP [...]
+            //  ../../../../src/parser/tptp/Tptp.g:158:3: ( CNF_TOK LPAREN_TOK nameN[name] COMMA_TOK formulaRole[fr] COMMA_TOK cnfFormula[expr] ( COMMA_TOK ( anything )* )? RPAREN_TOK DOT_TOK | FOF_TOK LPAREN_TOK nameN[name] COMMA_TOK formulaRole[fr] COMMA_TOK fofFormula[expr] ( COMMA_TOK ( anything )* )? RPAREN_TOK DOT_TOK | TFF_TOK LPAREN_TOK nameN[name] COMMA_TOK ( TYPE_TOK COMMA_TOK tffTypedAtom[cmd] | formulaRole[fr] COMMA_TOK tffFormula[expr] ( COMMA_TOK ( anything )* )? ) RPAREN_T [...]
 
             ANTLR3_UINT32 alt11;
 
@@ -1818,7 +1819,7 @@ parseCommand(pTptpParser ctx)
             switch (alt11)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:157:5: CNF_TOK LPAREN_TOK nameN[name] COMMA_TOK formulaRole[fr] COMMA_TOK cnfFormula[expr] ( COMMA_TOK ( anything )* )? RPAREN_TOK DOT_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:158:5: CNF_TOK LPAREN_TOK nameN[name] COMMA_TOK formulaRole[fr] COMMA_TOK cnfFormula[expr] ( COMMA_TOK ( anything )* )? RPAREN_TOK DOT_TOK
         	    {
         	         MATCHT(CNF_TOK, &FOLLOW_CNF_TOK_in_parseCommand146);
         	        if  (HASEXCEPTION())
@@ -1893,7 +1894,7 @@ parseCommand(pTptpParser ctx)
         	        }
 
 
-        	        // ../../../../../../src/parser/tptp/Tptp.g:166:5: ( COMMA_TOK ( anything )* )?
+        	        // ../../../../src/parser/tptp/Tptp.g:167:5: ( COMMA_TOK ( anything )* )?
         	        {
         	            int alt3=2;
         	            switch ( LA(1) )
@@ -1908,7 +1909,7 @@ parseCommand(pTptpParser ctx)
         	            switch (alt3)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:166:6: COMMA_TOK ( anything )*
+        	        	    // ../../../../src/parser/tptp/Tptp.g:167:6: COMMA_TOK ( anything )*
         	        	    {
         	        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_parseCommand180);
         	        	        if  (HASEXCEPTION())
@@ -1917,7 +1918,7 @@ parseCommand(pTptpParser ctx)
         	        	        }
 
 
-        	        	        // ../../../../../../src/parser/tptp/Tptp.g:166:16: ( anything )*
+        	        	        // ../../../../src/parser/tptp/Tptp.g:167:16: ( anything )*
 
         	        	        for (;;)
         	        	        {
@@ -1970,7 +1971,7 @@ parseCommand(pTptpParser ctx)
         	        	            switch (alt2)
         	        	            {
         	        	        	case 1:
-        	        	        	    // ../../../../../../src/parser/tptp/Tptp.g:166:16: anything
+        	        	        	    // ../../../../src/parser/tptp/Tptp.g:167:16: anything
         	        	        	    {
         	        	        	        FOLLOWPUSH(FOLLOW_anything_in_parseCommand182);
         	        	        	        anything(ctx);
@@ -2023,7 +2024,7 @@ parseCommand(pTptpParser ctx)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:170:5: FOF_TOK LPAREN_TOK nameN[name] COMMA_TOK formulaRole[fr] COMMA_TOK fofFormula[expr] ( COMMA_TOK ( anything )* )? RPAREN_TOK DOT_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:171:5: FOF_TOK LPAREN_TOK nameN[name] COMMA_TOK formulaRole[fr] COMMA_TOK fofFormula[expr] ( COMMA_TOK ( anything )* )? RPAREN_TOK DOT_TOK
         	    {
         	         MATCHT(FOF_TOK, &FOLLOW_FOF_TOK_in_parseCommand201);
         	        if  (HASEXCEPTION())
@@ -2088,7 +2089,7 @@ parseCommand(pTptpParser ctx)
         	        }
 
 
-        	        // ../../../../../../src/parser/tptp/Tptp.g:172:22: ( COMMA_TOK ( anything )* )?
+        	        // ../../../../src/parser/tptp/Tptp.g:173:22: ( COMMA_TOK ( anything )* )?
         	        {
         	            int alt5=2;
         	            switch ( LA(1) )
@@ -2103,7 +2104,7 @@ parseCommand(pTptpParser ctx)
         	            switch (alt5)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:172:23: COMMA_TOK ( anything )*
+        	        	    // ../../../../src/parser/tptp/Tptp.g:173:23: COMMA_TOK ( anything )*
         	        	    {
         	        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_parseCommand229);
         	        	        if  (HASEXCEPTION())
@@ -2112,7 +2113,7 @@ parseCommand(pTptpParser ctx)
         	        	        }
 
 
-        	        	        // ../../../../../../src/parser/tptp/Tptp.g:172:33: ( anything )*
+        	        	        // ../../../../src/parser/tptp/Tptp.g:173:33: ( anything )*
 
         	        	        for (;;)
         	        	        {
@@ -2165,7 +2166,7 @@ parseCommand(pTptpParser ctx)
         	        	            switch (alt4)
         	        	            {
         	        	        	case 1:
-        	        	        	    // ../../../../../../src/parser/tptp/Tptp.g:172:33: anything
+        	        	        	    // ../../../../src/parser/tptp/Tptp.g:173:33: anything
         	        	        	    {
         	        	        	        FOLLOWPUSH(FOLLOW_anything_in_parseCommand231);
         	        	        	        anything(ctx);
@@ -2218,7 +2219,7 @@ parseCommand(pTptpParser ctx)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:176:5: TFF_TOK LPAREN_TOK nameN[name] COMMA_TOK ( TYPE_TOK COMMA_TOK tffTypedAtom[cmd] | formulaRole[fr] COMMA_TOK tffFormula[expr] ( COMMA_TOK ( anything )* )? ) RPAREN_TOK DOT_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:177:5: TFF_TOK LPAREN_TOK nameN[name] COMMA_TOK ( TYPE_TOK COMMA_TOK tffTypedAtom[cmd] | formulaRole[fr] COMMA_TOK tffFormula[expr] ( COMMA_TOK ( anything )* )? ) RPAREN_TOK DOT_TOK
         	    {
         	         MATCHT(TFF_TOK, &FOLLOW_TFF_TOK_in_parseCommand250);
         	        if  (HASEXCEPTION())
@@ -2251,7 +2252,7 @@ parseCommand(pTptpParser ctx)
         	        }
 
 
-        	        // ../../../../../../src/parser/tptp/Tptp.g:177:5: ( TYPE_TOK COMMA_TOK tffTypedAtom[cmd] | formulaRole[fr] COMMA_TOK tffFormula[expr] ( COMMA_TOK ( anything )* )? )
+        	        // ../../../../src/parser/tptp/Tptp.g:178:5: ( TYPE_TOK COMMA_TOK tffTypedAtom[cmd] | formulaRole[fr] COMMA_TOK tffFormula[expr] ( COMMA_TOK ( anything )* )? )
         	        {
         	            int alt8=2;
         	            switch ( LA(1) )
@@ -2282,7 +2283,7 @@ parseCommand(pTptpParser ctx)
         	            switch (alt8)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:177:7: TYPE_TOK COMMA_TOK tffTypedAtom[cmd]
+        	        	    // ../../../../src/parser/tptp/Tptp.g:178:7: TYPE_TOK COMMA_TOK tffTypedAtom[cmd]
         	        	    {
         	        	         MATCHT(TYPE_TOK, &FOLLOW_TYPE_TOK_in_parseCommand265);
         	        	        if  (HASEXCEPTION())
@@ -2311,7 +2312,7 @@ parseCommand(pTptpParser ctx)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:178:7: formulaRole[fr] COMMA_TOK tffFormula[expr] ( COMMA_TOK ( anything )* )?
+        	        	    // ../../../../src/parser/tptp/Tptp.g:179:7: formulaRole[fr] COMMA_TOK tffFormula[expr] ( COMMA_TOK ( anything )* )?
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_formulaRole_in_parseCommand278);
         	        	        formulaRole(ctx, fr);
@@ -2345,7 +2346,7 @@ parseCommand(pTptpParser ctx)
         	        	        }
 
 
-        	        	        // ../../../../../../src/parser/tptp/Tptp.g:180:24: ( COMMA_TOK ( anything )* )?
+        	        	        // ../../../../src/parser/tptp/Tptp.g:181:24: ( COMMA_TOK ( anything )* )?
         	        	        {
         	        	            int alt7=2;
         	        	            switch ( LA(1) )
@@ -2360,7 +2361,7 @@ parseCommand(pTptpParser ctx)
         	        	            switch (alt7)
         	        	            {
         	        	        	case 1:
-        	        	        	    // ../../../../../../src/parser/tptp/Tptp.g:180:25: COMMA_TOK ( anything )*
+        	        	        	    // ../../../../src/parser/tptp/Tptp.g:181:25: COMMA_TOK ( anything )*
         	        	        	    {
         	        	        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_parseCommand301);
         	        	        	        if  (HASEXCEPTION())
@@ -2369,7 +2370,7 @@ parseCommand(pTptpParser ctx)
         	        	        	        }
 
 
-        	        	        	        // ../../../../../../src/parser/tptp/Tptp.g:180:35: ( anything )*
+        	        	        	        // ../../../../src/parser/tptp/Tptp.g:181:35: ( anything )*
 
         	        	        	        for (;;)
         	        	        	        {
@@ -2422,7 +2423,7 @@ parseCommand(pTptpParser ctx)
         	        	        	            switch (alt6)
         	        	        	            {
         	        	        	        	case 1:
-        	        	        	        	    // ../../../../../../src/parser/tptp/Tptp.g:180:35: anything
+        	        	        	        	    // ../../../../src/parser/tptp/Tptp.g:181:35: anything
         	        	        	        	    {
         	        	        	        	        FOLLOWPUSH(FOLLOW_anything_in_parseCommand303);
         	        	        	        	        anything(ctx);
@@ -2481,7 +2482,7 @@ parseCommand(pTptpParser ctx)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:185:5: INCLUDE_TOK LPAREN_TOK unquotedFileName[name] ( COMMA_TOK LBRACK_TOK nameN[inclSymbol] ( COMMA_TOK nameN[inclSymbol] )* RBRACK_TOK )? RPAREN_TOK DOT_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:186:5: INCLUDE_TOK LPAREN_TOK unquotedFileName[name] ( COMMA_TOK LBRACK_TOK nameN[inclSymbol] ( COMMA_TOK nameN[inclSymbol] )* RBRACK_TOK )? RPAREN_TOK DOT_TOK
         	    {
         	         MATCHT(INCLUDE_TOK, &FOLLOW_INCLUDE_TOK_in_parseCommand330);
         	        if  (HASEXCEPTION())
@@ -2507,7 +2508,7 @@ parseCommand(pTptpParser ctx)
         	        }
 
 
-        	        // ../../../../../../src/parser/tptp/Tptp.g:186:5: ( COMMA_TOK LBRACK_TOK nameN[inclSymbol] ( COMMA_TOK nameN[inclSymbol] )* RBRACK_TOK )?
+        	        // ../../../../src/parser/tptp/Tptp.g:187:5: ( COMMA_TOK LBRACK_TOK nameN[inclSymbol] ( COMMA_TOK nameN[inclSymbol] )* RBRACK_TOK )?
         	        {
         	            int alt10=2;
         	            switch ( LA(1) )
@@ -2522,7 +2523,7 @@ parseCommand(pTptpParser ctx)
         	            switch (alt10)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:186:7: COMMA_TOK LBRACK_TOK nameN[inclSymbol] ( COMMA_TOK nameN[inclSymbol] )* RBRACK_TOK
+        	        	    // ../../../../src/parser/tptp/Tptp.g:187:7: COMMA_TOK LBRACK_TOK nameN[inclSymbol] ( COMMA_TOK nameN[inclSymbol] )* RBRACK_TOK
         	        	    {
         	        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_parseCommand343);
         	        	        if  (HASEXCEPTION())
@@ -2548,7 +2549,7 @@ parseCommand(pTptpParser ctx)
         	        	        }
 
 
-        	        	        // ../../../../../../src/parser/tptp/Tptp.g:187:7: ( COMMA_TOK nameN[inclSymbol] )*
+        	        	        // ../../../../src/parser/tptp/Tptp.g:188:7: ( COMMA_TOK nameN[inclSymbol] )*
 
         	        	        for (;;)
         	        	        {
@@ -2566,7 +2567,7 @@ parseCommand(pTptpParser ctx)
         	        	            switch (alt9)
         	        	            {
         	        	        	case 1:
-        	        	        	    // ../../../../../../src/parser/tptp/Tptp.g:187:9: COMMA_TOK nameN[inclSymbol]
+        	        	        	    // ../../../../src/parser/tptp/Tptp.g:188:9: COMMA_TOK nameN[inclSymbol]
         	        	        	    {
         	        	        	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_parseCommand358);
         	        	        	        if  (HASEXCEPTION())
@@ -2646,7 +2647,7 @@ parseCommand(pTptpParser ctx)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:205:5: EOF
+        	    // ../../../../src/parser/tptp/Tptp.g:206:5: EOF
         	    {
         	         MATCHT(EOF, &FOLLOW_EOF_in_parseCommand389);
         	        if  (HASEXCEPTION())
@@ -2701,7 +2702,7 @@ parseCommand(pTptpParser ctx)
 
 /**
  * $ANTLR start formulaRole
- * ../../../../../../src/parser/tptp/Tptp.g:228:1: formulaRole[CVC4::parser::Tptp::FormulaRole& role] : LOWER_WORD ;
+ * ../../../../src/parser/tptp/Tptp.g:229:1: formulaRole[CVC4::parser::Tptp::FormulaRole& role] : LOWER_WORD ;
  */
 static void
 formulaRole(pTptpParser ctx, CVC4::parser::Tptp::FormulaRole& role)
@@ -2714,8 +2715,8 @@ formulaRole(pTptpParser ctx, CVC4::parser::Tptp::FormulaRole& role)
     LOWER_WORD1       = NULL;
 
     {
-        // ../../../../../../src/parser/tptp/Tptp.g:229:3: ( LOWER_WORD )
-        // ../../../../../../src/parser/tptp/Tptp.g:229:5: LOWER_WORD
+        // ../../../../src/parser/tptp/Tptp.g:230:3: ( LOWER_WORD )
+        // ../../../../src/parser/tptp/Tptp.g:230:5: LOWER_WORD
         {
             LOWER_WORD1 = (pANTLR3_COMMON_TOKEN) MATCHT(LOWER_WORD, &FOLLOW_LOWER_WORD_in_formulaRole411);
             if  (HASEXCEPTION())
@@ -2766,7 +2767,7 @@ formulaRole(pTptpParser ctx, CVC4::parser::Tptp::FormulaRole& role)
 
 /**
  * $ANTLR start cnfFormula
- * ../../../../../../src/parser/tptp/Tptp.g:256:1: cnfFormula[CVC4::Expr& expr] : ( LPAREN_TOK cnfDisjunction[expr] RPAREN_TOK | cnfDisjunction[expr] );
+ * ../../../../src/parser/tptp/Tptp.g:257:1: cnfFormula[CVC4::Expr& expr] : ( LPAREN_TOK cnfDisjunction[expr] RPAREN_TOK | cnfDisjunction[expr] );
  */
 static void
 cnfFormula(pTptpParser ctx, CVC4::Expr& expr)
@@ -2776,7 +2777,7 @@ cnfFormula(pTptpParser ctx, CVC4::Expr& expr)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:257:3: ( LPAREN_TOK cnfDisjunction[expr] RPAREN_TOK | cnfDisjunction[expr] )
+            //  ../../../../src/parser/tptp/Tptp.g:258:3: ( LPAREN_TOK cnfDisjunction[expr] RPAREN_TOK | cnfDisjunction[expr] )
 
             ANTLR3_UINT32 alt12;
 
@@ -2852,7 +2853,7 @@ cnfFormula(pTptpParser ctx, CVC4::Expr& expr)
             switch (alt12)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:257:5: LPAREN_TOK cnfDisjunction[expr] RPAREN_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:258:5: LPAREN_TOK cnfDisjunction[expr] RPAREN_TOK
         	    {
         	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_cnfFormula439);
         	        if  (HASEXCEPTION())
@@ -2881,7 +2882,7 @@ cnfFormula(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:258:5: cnfDisjunction[expr]
+        	    // ../../../../src/parser/tptp/Tptp.g:259:5: cnfDisjunction[expr]
         	    {
         	        FOLLOWPUSH(FOLLOW_cnfDisjunction_in_cnfFormula450);
         	        cnfDisjunction(ctx, expr);
@@ -2916,7 +2917,7 @@ cnfFormula(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start cnfDisjunction
- * ../../../../../../src/parser/tptp/Tptp.g:262:1: cnfDisjunction[CVC4::Expr& expr] : cnfLiteral[expr] ( OR_TOK cnfLiteral[expr] )* ;
+ * ../../../../src/parser/tptp/Tptp.g:263:1: cnfDisjunction[CVC4::Expr& expr] : cnfLiteral[expr] ( OR_TOK cnfLiteral[expr] )* ;
  */
 static void
 cnfDisjunction(pTptpParser ctx, CVC4::Expr& expr)
@@ -2928,8 +2929,8 @@ cnfDisjunction(pTptpParser ctx, CVC4::Expr& expr)
      */
 
     {
-        // ../../../../../../src/parser/tptp/Tptp.g:266:3: ( cnfLiteral[expr] ( OR_TOK cnfLiteral[expr] )* )
-        // ../../../../../../src/parser/tptp/Tptp.g:266:5: cnfLiteral[expr] ( OR_TOK cnfLiteral[expr] )*
+        // ../../../../src/parser/tptp/Tptp.g:267:3: ( cnfLiteral[expr] ( OR_TOK cnfLiteral[expr] )* )
+        // ../../../../src/parser/tptp/Tptp.g:267:5: cnfLiteral[expr] ( OR_TOK cnfLiteral[expr] )*
         {
             FOLLOWPUSH(FOLLOW_cnfLiteral_in_cnfDisjunction469);
             cnfLiteral(ctx, expr);
@@ -2946,7 +2947,7 @@ cnfDisjunction(pTptpParser ctx, CVC4::Expr& expr)
             }
 
 
-            // ../../../../../../src/parser/tptp/Tptp.g:267:5: ( OR_TOK cnfLiteral[expr] )*
+            // ../../../../src/parser/tptp/Tptp.g:268:5: ( OR_TOK cnfLiteral[expr] )*
 
             for (;;)
             {
@@ -2964,7 +2965,7 @@ cnfDisjunction(pTptpParser ctx, CVC4::Expr& expr)
                 switch (alt13)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/tptp/Tptp.g:267:7: OR_TOK cnfLiteral[expr]
+            	    // ../../../../src/parser/tptp/Tptp.g:268:7: OR_TOK cnfLiteral[expr]
             	    {
             	         MATCHT(OR_TOK, &FOLLOW_OR_TOK_in_cnfDisjunction480);
             	        if  (HASEXCEPTION())
@@ -3027,7 +3028,7 @@ cnfDisjunction(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start cnfLiteral
- * ../../../../../../src/parser/tptp/Tptp.g:274:1: cnfLiteral[CVC4::Expr& expr] : ( atomicFormula[expr] | NOT_TOK atomicFormula[expr] );
+ * ../../../../src/parser/tptp/Tptp.g:275:1: cnfLiteral[CVC4::Expr& expr] : ( atomicFormula[expr] | NOT_TOK atomicFormula[expr] );
  */
 static void
 cnfLiteral(pTptpParser ctx, CVC4::Expr& expr)
@@ -3037,7 +3038,7 @@ cnfLiteral(pTptpParser ctx, CVC4::Expr& expr)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:275:3: ( atomicFormula[expr] | NOT_TOK atomicFormula[expr] )
+            //  ../../../../src/parser/tptp/Tptp.g:276:3: ( atomicFormula[expr] | NOT_TOK atomicFormula[expr] )
 
             ANTLR3_UINT32 alt14;
 
@@ -3112,7 +3113,7 @@ cnfLiteral(pTptpParser ctx, CVC4::Expr& expr)
             switch (alt14)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:275:5: atomicFormula[expr]
+        	    // ../../../../src/parser/tptp/Tptp.g:276:5: atomicFormula[expr]
         	    {
         	        FOLLOWPUSH(FOLLOW_atomicFormula_in_cnfLiteral506);
         	        atomicFormula(ctx, expr);
@@ -3127,7 +3128,7 @@ cnfLiteral(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:276:5: NOT_TOK atomicFormula[expr]
+        	    // ../../../../src/parser/tptp/Tptp.g:277:5: NOT_TOK atomicFormula[expr]
         	    {
         	         MATCHT(NOT_TOK, &FOLLOW_NOT_TOK_in_cnfLiteral513);
         	        if  (HASEXCEPTION())
@@ -3174,7 +3175,7 @@ cnfLiteral(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start atomicFormula
- * ../../../../../../src/parser/tptp/Tptp.g:280:1: atomicFormula[CVC4::Expr& expr] : ( atomicWord[name] ( LPAREN_TOK arguments[args] RPAREN_TOK )? ( equalOp[equal] term[expr2] |) | definedFun[expr] LPAREN_TOK arguments[args] RPAREN_TOK equalOp[equal] term[expr2] | ( simpleTerm[expr] | letTerm[expr] | conditionalTerm[expr] ) equalOp[equal] term[expr2] | definedPred[expr] LPAREN_TOK arguments[args] RPAREN_TOK | definedProp[expr] );
+ * ../../../../src/parser/tptp/Tptp.g:281:1: atomicFormula[CVC4::Expr& expr] : ( atomicWord[name] ( LPAREN_TOK arguments[args] RPAREN_TOK )? ( equalOp[equal] term[expr2] |) | definedFun[expr] LPAREN_TOK arguments[args] RPAREN_TOK equalOp[equal] term[expr2] | ( simpleTerm[expr] | letTerm[expr] | conditionalTerm[expr] ) equalOp[equal] term[expr2] | definedPred[expr] LPAREN_TOK arguments[args] RPAREN_TOK | definedProp[expr] );
  */
 static void
 atomicFormula(pTptpParser ctx, CVC4::Expr& expr)
@@ -3190,7 +3191,7 @@ atomicFormula(pTptpParser ctx, CVC4::Expr& expr)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:287:3: ( atomicWord[name] ( LPAREN_TOK arguments[args] RPAREN_TOK )? ( equalOp[equal] term[expr2] |) | definedFun[expr] LPAREN_TOK arguments[args] RPAREN_TOK equalOp[equal] term[expr2] | ( simpleTerm[expr] | letTerm[expr] | conditionalTerm[expr] ) equalOp[equal] term[expr2] | definedPred[expr] LPAREN_TOK arguments[args] RPAREN_TOK | definedProp[expr] )
+            //  ../../../../src/parser/tptp/Tptp.g:288:3: ( atomicWord[name] ( LPAREN_TOK arguments[args] RPAREN_TOK )? ( equalOp[equal] term[expr2] |) | definedFun[expr] LPAREN_TOK arguments[args] RPAREN_TOK equalOp[equal] term[expr2] | ( simpleTerm[expr] | letTerm[expr] | conditionalTerm[expr] ) equalOp[equal] term[expr2] | definedPred[expr] LPAREN_TOK arguments[args] RPAREN_TOK | definedProp[expr] )
 
             ANTLR3_UINT32 alt18;
 
@@ -3276,7 +3277,7 @@ atomicFormula(pTptpParser ctx, CVC4::Expr& expr)
             switch (alt18)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:287:5: atomicWord[name] ( LPAREN_TOK arguments[args] RPAREN_TOK )? ( equalOp[equal] term[expr2] |)
+        	    // ../../../../src/parser/tptp/Tptp.g:288:5: atomicWord[name] ( LPAREN_TOK arguments[args] RPAREN_TOK )? ( equalOp[equal] term[expr2] |)
         	    {
         	        FOLLOWPUSH(FOLLOW_atomicWord_in_atomicFormula538);
         	        atomicWord(ctx, name);
@@ -3288,7 +3289,7 @@ atomicFormula(pTptpParser ctx, CVC4::Expr& expr)
         	        }
 
 
-        	        // ../../../../../../src/parser/tptp/Tptp.g:287:22: ( LPAREN_TOK arguments[args] RPAREN_TOK )?
+        	        // ../../../../src/parser/tptp/Tptp.g:288:22: ( LPAREN_TOK arguments[args] RPAREN_TOK )?
         	        {
         	            int alt15=2;
         	            switch ( LA(1) )
@@ -3303,7 +3304,7 @@ atomicFormula(pTptpParser ctx, CVC4::Expr& expr)
         	            switch (alt15)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:287:23: LPAREN_TOK arguments[args] RPAREN_TOK
+        	        	    // ../../../../src/parser/tptp/Tptp.g:288:23: LPAREN_TOK arguments[args] RPAREN_TOK
         	        	    {
         	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_atomicFormula542);
         	        	        if  (HASEXCEPTION())
@@ -3335,7 +3336,7 @@ atomicFormula(pTptpParser ctx, CVC4::Expr& expr)
         	            }
         	        }
 
-        	        // ../../../../../../src/parser/tptp/Tptp.g:288:5: ( equalOp[equal] term[expr2] |)
+        	        // ../../../../src/parser/tptp/Tptp.g:289:5: ( equalOp[equal] term[expr2] |)
         	        {
         	            int alt16=2;
         	            switch ( LA(1) )
@@ -3377,7 +3378,7 @@ atomicFormula(pTptpParser ctx, CVC4::Expr& expr)
         	            switch (alt16)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:288:7: equalOp[equal] term[expr2]
+        	        	    // ../../../../src/parser/tptp/Tptp.g:289:7: equalOp[equal] term[expr2]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_equalOp_in_atomicFormula557);
         	        	        equalOp(ctx, equal);
@@ -3411,7 +3412,7 @@ atomicFormula(pTptpParser ctx, CVC4::Expr& expr)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:294:7: 
+        	        	    // ../../../../src/parser/tptp/Tptp.g:295:7: 
         	        	    {
         	        	        {
         	        	             // predicate
@@ -3429,7 +3430,7 @@ atomicFormula(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:298:5: definedFun[expr] LPAREN_TOK arguments[args] RPAREN_TOK equalOp[equal] term[expr2]
+        	    // ../../../../src/parser/tptp/Tptp.g:299:5: definedFun[expr] LPAREN_TOK arguments[args] RPAREN_TOK equalOp[equal] term[expr2]
         	    {
         	        FOLLOWPUSH(FOLLOW_definedFun_in_atomicFormula589);
         	        definedFun(ctx, expr);
@@ -3496,9 +3497,9 @@ atomicFormula(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:304:5: ( simpleTerm[expr] | letTerm[expr] | conditionalTerm[expr] ) equalOp[equal] term[expr2]
+        	    // ../../../../src/parser/tptp/Tptp.g:305:5: ( simpleTerm[expr] | letTerm[expr] | conditionalTerm[expr] ) equalOp[equal] term[expr2]
         	    {
-        	        // ../../../../../../src/parser/tptp/Tptp.g:304:5: ( simpleTerm[expr] | letTerm[expr] | conditionalTerm[expr] )
+        	        // ../../../../src/parser/tptp/Tptp.g:305:5: ( simpleTerm[expr] | letTerm[expr] | conditionalTerm[expr] )
         	        {
         	            int alt17=3;
         	            switch ( LA(1) )
@@ -3537,7 +3538,7 @@ atomicFormula(pTptpParser ctx, CVC4::Expr& expr)
         	            switch (alt17)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:304:6: simpleTerm[expr]
+        	        	    // ../../../../src/parser/tptp/Tptp.g:305:6: simpleTerm[expr]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_simpleTerm_in_atomicFormula620);
         	        	        simpleTerm(ctx, expr);
@@ -3552,7 +3553,7 @@ atomicFormula(pTptpParser ctx, CVC4::Expr& expr)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:304:25: letTerm[expr]
+        	        	    // ../../../../src/parser/tptp/Tptp.g:305:25: letTerm[expr]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_letTerm_in_atomicFormula625);
         	        	        letTerm(ctx, expr);
@@ -3567,7 +3568,7 @@ atomicFormula(pTptpParser ctx, CVC4::Expr& expr)
         	        	    }
         	        	    break;
         	        	case 3:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:304:41: conditionalTerm[expr]
+        	        	    // ../../../../src/parser/tptp/Tptp.g:305:41: conditionalTerm[expr]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_conditionalTerm_in_atomicFormula630);
         	        	        conditionalTerm(ctx, expr);
@@ -3616,7 +3617,7 @@ atomicFormula(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:310:5: definedPred[expr] LPAREN_TOK arguments[args] RPAREN_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:311:5: definedPred[expr] LPAREN_TOK arguments[args] RPAREN_TOK
         	    {
         	        FOLLOWPUSH(FOLLOW_definedPred_in_atomicFormula654);
         	        definedPred(ctx, expr);
@@ -3660,7 +3661,7 @@ atomicFormula(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:312:5: definedProp[expr]
+        	    // ../../../../src/parser/tptp/Tptp.g:313:5: definedProp[expr]
         	    {
         	        FOLLOWPUSH(FOLLOW_definedProp_in_atomicFormula674);
         	        definedProp(ctx, expr);
@@ -3695,7 +3696,7 @@ atomicFormula(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start definedProp
- * ../../../../../../src/parser/tptp/Tptp.g:317:1: definedProp[CVC4::Expr& expr] : ( TRUE_TOK | FALSE_TOK );
+ * ../../../../src/parser/tptp/Tptp.g:318:1: definedProp[CVC4::Expr& expr] : ( TRUE_TOK | FALSE_TOK );
  */
 static void
 definedProp(pTptpParser ctx, CVC4::Expr& expr)
@@ -3705,7 +3706,7 @@ definedProp(pTptpParser ctx, CVC4::Expr& expr)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:318:3: ( TRUE_TOK | FALSE_TOK )
+            //  ../../../../src/parser/tptp/Tptp.g:319:3: ( TRUE_TOK | FALSE_TOK )
 
             ANTLR3_UINT32 alt19;
 
@@ -3739,7 +3740,7 @@ definedProp(pTptpParser ctx, CVC4::Expr& expr)
             switch (alt19)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:318:5: TRUE_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:319:5: TRUE_TOK
         	    {
         	         MATCHT(TRUE_TOK, &FOLLOW_TRUE_TOK_in_definedProp691);
         	        if  (HASEXCEPTION())
@@ -3756,7 +3757,7 @@ definedProp(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:319:5: FALSE_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:320:5: FALSE_TOK
         	    {
         	         MATCHT(FALSE_TOK, &FOLLOW_FALSE_TOK_in_definedProp699);
         	        if  (HASEXCEPTION())
@@ -3793,7 +3794,7 @@ definedProp(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start definedPred
- * ../../../../../../src/parser/tptp/Tptp.g:322:1: definedPred[CVC4::Expr& expr] : ( '$less' | '$lesseq' | '$greater' | '$greatereq' | '$is_rat' | '$is_int' | '$distinct' );
+ * ../../../../src/parser/tptp/Tptp.g:323:1: definedPred[CVC4::Expr& expr] : ( '$less' | '$lesseq' | '$greater' | '$greatereq' | '$is_rat' | '$is_int' | '$distinct' );
  */
 static void
 definedPred(pTptpParser ctx, CVC4::Expr& expr)
@@ -3803,7 +3804,7 @@ definedPred(pTptpParser ctx, CVC4::Expr& expr)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:323:3: ( '$less' | '$lesseq' | '$greater' | '$greatereq' | '$is_rat' | '$is_int' | '$distinct' )
+            //  ../../../../src/parser/tptp/Tptp.g:324:3: ( '$less' | '$lesseq' | '$greater' | '$greatereq' | '$is_rat' | '$is_int' | '$distinct' )
 
             ANTLR3_UINT32 alt20;
 
@@ -3862,7 +3863,7 @@ definedPred(pTptpParser ctx, CVC4::Expr& expr)
             switch (alt20)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:323:5: '$less'
+        	    // ../../../../src/parser/tptp/Tptp.g:324:5: '$less'
         	    {
         	         MATCHT(66, &FOLLOW_66_in_definedPred716);
         	        if  (HASEXCEPTION())
@@ -3879,7 +3880,7 @@ definedPred(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:324:5: '$lesseq'
+        	    // ../../../../src/parser/tptp/Tptp.g:325:5: '$lesseq'
         	    {
         	         MATCHT(67, &FOLLOW_67_in_definedPred724);
         	        if  (HASEXCEPTION())
@@ -3896,7 +3897,7 @@ definedPred(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:325:5: '$greater'
+        	    // ../../../../src/parser/tptp/Tptp.g:326:5: '$greater'
         	    {
         	         MATCHT(60, &FOLLOW_60_in_definedPred732);
         	        if  (HASEXCEPTION())
@@ -3913,7 +3914,7 @@ definedPred(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:326:5: '$greatereq'
+        	    // ../../../../src/parser/tptp/Tptp.g:327:5: '$greatereq'
         	    {
         	         MATCHT(61, &FOLLOW_61_in_definedPred740);
         	        if  (HASEXCEPTION())
@@ -3930,7 +3931,7 @@ definedPred(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:327:5: '$is_rat'
+        	    // ../../../../src/parser/tptp/Tptp.g:328:5: '$is_rat'
         	    {
         	         MATCHT(63, &FOLLOW_63_in_definedPred748);
         	        if  (HASEXCEPTION())
@@ -3950,7 +3951,7 @@ definedPred(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:332:5: '$is_int'
+        	    // ../../../../src/parser/tptp/Tptp.g:333:5: '$is_int'
         	    {
         	         MATCHT(62, &FOLLOW_62_in_definedPred761);
         	        if  (HASEXCEPTION())
@@ -3967,7 +3968,7 @@ definedPred(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 7:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:333:5: '$distinct'
+        	    // ../../../../src/parser/tptp/Tptp.g:334:5: '$distinct'
         	    {
         	         MATCHT(58, &FOLLOW_58_in_definedPred769);
         	        if  (HASEXCEPTION())
@@ -4004,7 +4005,7 @@ definedPred(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start definedFun
- * ../../../../../../src/parser/tptp/Tptp.g:336:1: definedFun[CVC4::Expr& expr] : ( '$uminus' | '$sum' | '$difference' | '$product' | '$quotient' | ( '$quotient_e' | '$remainder_e' ) | ( '$quotient_t' | '$remainder_t' ) | ( '$quotient_f' | '$remainder_f' ) | '$floor' | '$ceiling' | '$truncate' | '$round' | '$to_int' | '$to_rat' | '$to_real' );
+ * ../../../../src/parser/tptp/Tptp.g:337:1: definedFun[CVC4::Expr& expr] : ( '$uminus' | '$sum' | '$difference' | '$product' | '$quotient' | ( '$quotient_e' | '$remainder_e' ) | ( '$quotient_t' | '$remainder_t' ) | ( '$quotient_f' | '$remainder_f' ) | '$floor' | '$ceiling' | '$truncate' | '$round' | '$to_int' | '$to_rat' | '$to_real' );
  */
 static void
 definedFun(pTptpParser ctx, CVC4::Expr& expr)
@@ -4017,7 +4018,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:340:3: ( '$uminus' | '$sum' | '$difference' | '$product' | '$quotient' | ( '$quotient_e' | '$remainder_e' ) | ( '$quotient_t' | '$remainder_t' ) | ( '$quotient_f' | '$remainder_f' ) | '$floor' | '$ceiling' | '$truncate' | '$round' | '$to_int' | '$to_rat' | '$to_real' )
+            //  ../../../../src/parser/tptp/Tptp.g:341:3: ( '$uminus' | '$sum' | '$difference' | '$product' | '$quotient' | ( '$quotient_e' | '$remainder_e' ) | ( '$quotient_t' | '$remainder_t' ) | ( '$quotient_f' | '$remainder_f' ) | '$floor' | '$ceiling' | '$truncate' | '$round' | '$to_int' | '$to_rat' | '$to_real' )
 
             ANTLR3_UINT32 alt24;
 
@@ -4119,7 +4120,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
             switch (alt24)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:340:5: '$uminus'
+        	    // ../../../../src/parser/tptp/Tptp.g:341:5: '$uminus'
         	    {
         	         MATCHT(87, &FOLLOW_87_in_definedFun790);
         	        if  (HASEXCEPTION())
@@ -4136,7 +4137,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:341:5: '$sum'
+        	    // ../../../../src/parser/tptp/Tptp.g:342:5: '$sum'
         	    {
         	         MATCHT(81, &FOLLOW_81_in_definedFun798);
         	        if  (HASEXCEPTION())
@@ -4153,7 +4154,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:342:5: '$difference'
+        	    // ../../../../src/parser/tptp/Tptp.g:343:5: '$difference'
         	    {
         	         MATCHT(57, &FOLLOW_57_in_definedFun806);
         	        if  (HASEXCEPTION())
@@ -4170,7 +4171,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:343:5: '$product'
+        	    // ../../../../src/parser/tptp/Tptp.g:344:5: '$product'
         	    {
         	         MATCHT(72, &FOLLOW_72_in_definedFun814);
         	        if  (HASEXCEPTION())
@@ -4187,7 +4188,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:344:5: '$quotient'
+        	    // ../../../../src/parser/tptp/Tptp.g:345:5: '$quotient'
         	    {
         	         MATCHT(73, &FOLLOW_73_in_definedFun822);
         	        if  (HASEXCEPTION())
@@ -4204,9 +4205,9 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:345:5: ( '$quotient_e' | '$remainder_e' )
+        	    // ../../../../src/parser/tptp/Tptp.g:346:5: ( '$quotient_e' | '$remainder_e' )
         	    {
-        	        // ../../../../../../src/parser/tptp/Tptp.g:345:5: ( '$quotient_e' | '$remainder_e' )
+        	        // ../../../../src/parser/tptp/Tptp.g:346:5: ( '$quotient_e' | '$remainder_e' )
         	        {
         	            int alt21=2;
         	            switch ( LA(1) )
@@ -4237,7 +4238,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	            switch (alt21)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:345:7: '$quotient_e'
+        	        	    // ../../../../src/parser/tptp/Tptp.g:346:7: '$quotient_e'
         	        	    {
         	        	         MATCHT(74, &FOLLOW_74_in_definedFun832);
         	        	        if  (HASEXCEPTION())
@@ -4254,7 +4255,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:346:7: '$remainder_e'
+        	        	    // ../../../../src/parser/tptp/Tptp.g:347:7: '$remainder_e'
         	        	    {
         	        	         MATCHT(77, &FOLLOW_77_in_definedFun842);
         	        	        if  (HASEXCEPTION())
@@ -4283,7 +4284,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	                                                  MK_EXPR(CVC4::kind::TO_INTEGER, expr),
         	                                                  MK_EXPR(CVC4::kind::UMINUS, MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::UMINUS, expr))));
         	                  if(remainder) {
-        	                    expr = MK_EXPR(CVC4::kind::MINUS, n, MK_EXPR(CVC4::kind::MULT, expr, d));
+        	                    expr = MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::MINUS, n, MK_EXPR(CVC4::kind::MULT, expr, d)));
         	                  }
         	                  expr = MK_EXPR(CVC4::kind::LAMBDA, formals, expr);
         	                
@@ -4293,9 +4294,9 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 7:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:360:5: ( '$quotient_t' | '$remainder_t' )
+        	    // ../../../../src/parser/tptp/Tptp.g:361:5: ( '$quotient_t' | '$remainder_t' )
         	    {
-        	        // ../../../../../../src/parser/tptp/Tptp.g:360:5: ( '$quotient_t' | '$remainder_t' )
+        	        // ../../../../src/parser/tptp/Tptp.g:361:5: ( '$quotient_t' | '$remainder_t' )
         	        {
         	            int alt22=2;
         	            switch ( LA(1) )
@@ -4326,7 +4327,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	            switch (alt22)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:360:7: '$quotient_t'
+        	        	    // ../../../../src/parser/tptp/Tptp.g:361:7: '$quotient_t'
         	        	    {
         	        	         MATCHT(76, &FOLLOW_76_in_definedFun864);
         	        	        if  (HASEXCEPTION())
@@ -4343,7 +4344,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:361:7: '$remainder_t'
+        	        	    // ../../../../src/parser/tptp/Tptp.g:362:7: '$remainder_t'
         	        	    {
         	        	         MATCHT(79, &FOLLOW_79_in_definedFun874);
         	        	        if  (HASEXCEPTION())
@@ -4372,7 +4373,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	                                                  MK_EXPR(CVC4::kind::TO_INTEGER, expr),
         	                                                  MK_EXPR(CVC4::kind::UMINUS, MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::UMINUS, expr))));
         	                  if(remainder) {
-        	                    expr = MK_EXPR(CVC4::kind::MINUS, n, MK_EXPR(CVC4::kind::MULT, expr, d));
+        	                    expr = MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::MINUS, n, MK_EXPR(CVC4::kind::MULT, expr, d)));
         	                  }
         	                  expr = MK_EXPR(CVC4::kind::LAMBDA, formals, expr);
         	                
@@ -4382,9 +4383,9 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 8:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:375:5: ( '$quotient_f' | '$remainder_f' )
+        	    // ../../../../src/parser/tptp/Tptp.g:376:5: ( '$quotient_f' | '$remainder_f' )
         	    {
-        	        // ../../../../../../src/parser/tptp/Tptp.g:375:5: ( '$quotient_f' | '$remainder_f' )
+        	        // ../../../../src/parser/tptp/Tptp.g:376:5: ( '$quotient_f' | '$remainder_f' )
         	        {
         	            int alt23=2;
         	            switch ( LA(1) )
@@ -4415,7 +4416,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	            switch (alt23)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:375:7: '$quotient_f'
+        	        	    // ../../../../src/parser/tptp/Tptp.g:376:7: '$quotient_f'
         	        	    {
         	        	         MATCHT(75, &FOLLOW_75_in_definedFun896);
         	        	        if  (HASEXCEPTION())
@@ -4432,7 +4433,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:376:7: '$remainder_f'
+        	        	    // ../../../../src/parser/tptp/Tptp.g:377:7: '$remainder_f'
         	        	    {
         	        	         MATCHT(78, &FOLLOW_78_in_definedFun906);
         	        	        if  (HASEXCEPTION())
@@ -4459,7 +4460,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	                  expr = MK_EXPR(CVC4::kind::DIVISION_TOTAL, n, d);
         	                  expr = MK_EXPR(CVC4::kind::TO_INTEGER, expr);
         	                  if(remainder) {
-        	                    expr = MK_EXPR(CVC4::kind::MINUS, n, MK_EXPR(CVC4::kind::MULT, expr, d));
+        	                    expr = MK_EXPR(CVC4::kind::TO_INTEGER, MK_EXPR(CVC4::kind::MINUS, n, MK_EXPR(CVC4::kind::MULT, expr, d)));
         	                  }
         	                  expr = MK_EXPR(CVC4::kind::LAMBDA, formals, expr);
         	                
@@ -4469,7 +4470,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 9:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:388:5: '$floor'
+        	    // ../../../../src/parser/tptp/Tptp.g:389:5: '$floor'
         	    {
         	         MATCHT(59, &FOLLOW_59_in_definedFun926);
         	        if  (HASEXCEPTION())
@@ -4486,7 +4487,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 10:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:389:5: '$ceiling'
+        	    // ../../../../src/parser/tptp/Tptp.g:390:5: '$ceiling'
         	    {
         	         MATCHT(56, &FOLLOW_56_in_definedFun934);
         	        if  (HASEXCEPTION())
@@ -4507,7 +4508,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 11:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:395:5: '$truncate'
+        	    // ../../../../src/parser/tptp/Tptp.g:396:5: '$truncate'
         	    {
         	         MATCHT(86, &FOLLOW_86_in_definedFun946);
         	        if  (HASEXCEPTION())
@@ -4530,7 +4531,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 12:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:403:5: '$round'
+        	    // ../../../../src/parser/tptp/Tptp.g:404:5: '$round'
         	    {
         	         MATCHT(80, &FOLLOW_80_in_definedFun958);
         	        if  (HASEXCEPTION())
@@ -4560,7 +4561,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 13:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:418:5: '$to_int'
+        	    // ../../../../src/parser/tptp/Tptp.g:419:5: '$to_int'
         	    {
         	         MATCHT(83, &FOLLOW_83_in_definedFun970);
         	        if  (HASEXCEPTION())
@@ -4577,7 +4578,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 14:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:419:5: '$to_rat'
+        	    // ../../../../src/parser/tptp/Tptp.g:420:5: '$to_rat'
         	    {
         	         MATCHT(84, &FOLLOW_84_in_definedFun978);
         	        if  (HASEXCEPTION())
@@ -4594,7 +4595,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 15:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:420:5: '$to_real'
+        	    // ../../../../src/parser/tptp/Tptp.g:421:5: '$to_real'
         	    {
         	         MATCHT(85, &FOLLOW_85_in_definedFun986);
         	        if  (HASEXCEPTION())
@@ -4631,7 +4632,7 @@ definedFun(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start equalOp
- * ../../../../../../src/parser/tptp/Tptp.g:426:1: equalOp[bool& equal] : ( EQUAL_TOK | DISEQUAL_TOK );
+ * ../../../../src/parser/tptp/Tptp.g:427:1: equalOp[bool& equal] : ( EQUAL_TOK | DISEQUAL_TOK );
  */
 static void
 equalOp(pTptpParser ctx, bool& equal)
@@ -4641,7 +4642,7 @@ equalOp(pTptpParser ctx, bool& equal)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:427:3: ( EQUAL_TOK | DISEQUAL_TOK )
+            //  ../../../../src/parser/tptp/Tptp.g:428:3: ( EQUAL_TOK | DISEQUAL_TOK )
 
             ANTLR3_UINT32 alt25;
 
@@ -4675,7 +4676,7 @@ equalOp(pTptpParser ctx, bool& equal)
             switch (alt25)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:427:5: EQUAL_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:428:5: EQUAL_TOK
         	    {
         	         MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_equalOp1005);
         	        if  (HASEXCEPTION())
@@ -4692,7 +4693,7 @@ equalOp(pTptpParser ctx, bool& equal)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:428:5: DISEQUAL_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:429:5: DISEQUAL_TOK
         	    {
         	         MATCHT(DISEQUAL_TOK, &FOLLOW_DISEQUAL_TOK_in_equalOp1016);
         	        if  (HASEXCEPTION())
@@ -4729,7 +4730,7 @@ equalOp(pTptpParser ctx, bool& equal)
 
 /**
  * $ANTLR start term
- * ../../../../../../src/parser/tptp/Tptp.g:431:1: term[CVC4::Expr& expr] : ( functionTerm[expr] | conditionalTerm[expr] | simpleTerm[expr] | letTerm[expr] );
+ * ../../../../src/parser/tptp/Tptp.g:432:1: term[CVC4::Expr& expr] : ( functionTerm[expr] | conditionalTerm[expr] | simpleTerm[expr] | letTerm[expr] );
  */
 static void
 term(pTptpParser ctx, CVC4::Expr& expr)
@@ -4739,7 +4740,7 @@ term(pTptpParser ctx, CVC4::Expr& expr)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:432:3: ( functionTerm[expr] | conditionalTerm[expr] | simpleTerm[expr] | letTerm[expr] )
+            //  ../../../../src/parser/tptp/Tptp.g:433:3: ( functionTerm[expr] | conditionalTerm[expr] | simpleTerm[expr] | letTerm[expr] )
 
             ANTLR3_UINT32 alt26;
 
@@ -4812,7 +4813,7 @@ term(pTptpParser ctx, CVC4::Expr& expr)
             switch (alt26)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:432:5: functionTerm[expr]
+        	    // ../../../../src/parser/tptp/Tptp.g:433:5: functionTerm[expr]
         	    {
         	        FOLLOWPUSH(FOLLOW_functionTerm_in_term1032);
         	        functionTerm(ctx, expr);
@@ -4827,7 +4828,7 @@ term(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:433:5: conditionalTerm[expr]
+        	    // ../../../../src/parser/tptp/Tptp.g:434:5: conditionalTerm[expr]
         	    {
         	        FOLLOWPUSH(FOLLOW_conditionalTerm_in_term1039);
         	        conditionalTerm(ctx, expr);
@@ -4842,7 +4843,7 @@ term(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:434:5: simpleTerm[expr]
+        	    // ../../../../src/parser/tptp/Tptp.g:435:5: simpleTerm[expr]
         	    {
         	        FOLLOWPUSH(FOLLOW_simpleTerm_in_term1046);
         	        simpleTerm(ctx, expr);
@@ -4857,7 +4858,7 @@ term(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:435:5: letTerm[expr]
+        	    // ../../../../src/parser/tptp/Tptp.g:436:5: letTerm[expr]
         	    {
         	        FOLLOWPUSH(FOLLOW_letTerm_in_term1053);
         	        letTerm(ctx, expr);
@@ -4892,7 +4893,7 @@ term(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start letTerm
- * ../../../../../../src/parser/tptp/Tptp.g:438:1: letTerm[CVC4::Expr& expr] : ( '$let_ft' LPAREN_TOK tffLetFormulaDefn[lhs, rhs] COMMA_TOK term[expr] RPAREN_TOK | '$let_tt' LPAREN_TOK tffLetTermDefn[lhs, rhs] COMMA_TOK term[expr] RPAREN_TOK );
+ * ../../../../src/parser/tptp/Tptp.g:439:1: letTerm[CVC4::Expr& expr] : ( '$let_ft' LPAREN_TOK tffLetFormulaDefn[lhs, rhs] COMMA_TOK term[expr] RPAREN_TOK | '$let_tt' LPAREN_TOK tffLetTermDefn[lhs, rhs] COMMA_TOK term[expr] RPAREN_TOK );
  */
 static void
 letTerm(pTptpParser ctx, CVC4::Expr& expr)
@@ -4905,7 +4906,7 @@ letTerm(pTptpParser ctx, CVC4::Expr& expr)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:442:3: ( '$let_ft' LPAREN_TOK tffLetFormulaDefn[lhs, rhs] COMMA_TOK term[expr] RPAREN_TOK | '$let_tt' LPAREN_TOK tffLetTermDefn[lhs, rhs] COMMA_TOK term[expr] RPAREN_TOK )
+            //  ../../../../src/parser/tptp/Tptp.g:443:3: ( '$let_ft' LPAREN_TOK tffLetFormulaDefn[lhs, rhs] COMMA_TOK term[expr] RPAREN_TOK | '$let_tt' LPAREN_TOK tffLetTermDefn[lhs, rhs] COMMA_TOK term[expr] RPAREN_TOK )
 
             ANTLR3_UINT32 alt27;
 
@@ -4939,7 +4940,7 @@ letTerm(pTptpParser ctx, CVC4::Expr& expr)
             switch (alt27)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:442:5: '$let_ft' LPAREN_TOK tffLetFormulaDefn[lhs, rhs] COMMA_TOK term[expr] RPAREN_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:443:5: '$let_ft' LPAREN_TOK tffLetFormulaDefn[lhs, rhs] COMMA_TOK term[expr] RPAREN_TOK
         	    {
         	         MATCHT(69, &FOLLOW_69_in_letTerm1073);
         	        if  (HASEXCEPTION())
@@ -5004,7 +5005,7 @@ letTerm(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:449:5: '$let_tt' LPAREN_TOK tffLetTermDefn[lhs, rhs] COMMA_TOK term[expr] RPAREN_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:450:5: '$let_tt' LPAREN_TOK tffLetTermDefn[lhs, rhs] COMMA_TOK term[expr] RPAREN_TOK
         	    {
         	         MATCHT(71, &FOLLOW_71_in_letTerm1111);
         	        if  (HASEXCEPTION())
@@ -5089,7 +5090,7 @@ letTerm(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start simpleTerm
- * ../../../../../../src/parser/tptp/Tptp.g:459:1: simpleTerm[CVC4::Expr& expr] : ( variable[expr] | NUMBER | DISTINCT_OBJECT );
+ * ../../../../src/parser/tptp/Tptp.g:460:1: simpleTerm[CVC4::Expr& expr] : ( variable[expr] | NUMBER | DISTINCT_OBJECT );
  */
 static void
 simpleTerm(pTptpParser ctx, CVC4::Expr& expr)
@@ -5103,7 +5104,7 @@ simpleTerm(pTptpParser ctx, CVC4::Expr& expr)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:460:3: ( variable[expr] | NUMBER | DISTINCT_OBJECT )
+            //  ../../../../src/parser/tptp/Tptp.g:461:3: ( variable[expr] | NUMBER | DISTINCT_OBJECT )
 
             ANTLR3_UINT32 alt28;
 
@@ -5142,7 +5143,7 @@ simpleTerm(pTptpParser ctx, CVC4::Expr& expr)
             switch (alt28)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:460:5: variable[expr]
+        	    // ../../../../src/parser/tptp/Tptp.g:461:5: variable[expr]
         	    {
         	        FOLLOWPUSH(FOLLOW_variable_in_simpleTerm1159);
         	        variable(ctx, expr);
@@ -5157,7 +5158,7 @@ simpleTerm(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:461:5: NUMBER
+        	    // ../../../../src/parser/tptp/Tptp.g:462:5: NUMBER
         	    {
         	         MATCHT(NUMBER, &FOLLOW_NUMBER_in_simpleTerm1166);
         	        if  (HASEXCEPTION())
@@ -5174,7 +5175,7 @@ simpleTerm(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:462:5: DISTINCT_OBJECT
+        	    // ../../../../src/parser/tptp/Tptp.g:463:5: DISTINCT_OBJECT
         	    {
         	        DISTINCT_OBJECT2 = (pANTLR3_COMMON_TOKEN) MATCHT(DISTINCT_OBJECT, &FOLLOW_DISTINCT_OBJECT_in_simpleTerm1174);
         	        if  (HASEXCEPTION())
@@ -5211,7 +5212,7 @@ simpleTerm(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start functionTerm
- * ../../../../../../src/parser/tptp/Tptp.g:465:1: functionTerm[CVC4::Expr& expr] : ( plainTerm[expr] | definedFun[expr] LPAREN_TOK arguments[args] RPAREN_TOK );
+ * ../../../../src/parser/tptp/Tptp.g:466:1: functionTerm[CVC4::Expr& expr] : ( plainTerm[expr] | definedFun[expr] LPAREN_TOK arguments[args] RPAREN_TOK );
  */
 static void
 functionTerm(pTptpParser ctx, CVC4::Expr& expr)
@@ -5224,7 +5225,7 @@ functionTerm(pTptpParser ctx, CVC4::Expr& expr)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:469:3: ( plainTerm[expr] | definedFun[expr] LPAREN_TOK arguments[args] RPAREN_TOK )
+            //  ../../../../src/parser/tptp/Tptp.g:470:3: ( plainTerm[expr] | definedFun[expr] LPAREN_TOK arguments[args] RPAREN_TOK )
 
             ANTLR3_UINT32 alt29;
 
@@ -5283,7 +5284,7 @@ functionTerm(pTptpParser ctx, CVC4::Expr& expr)
             switch (alt29)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:469:5: plainTerm[expr]
+        	    // ../../../../src/parser/tptp/Tptp.g:470:5: plainTerm[expr]
         	    {
         	        FOLLOWPUSH(FOLLOW_plainTerm_in_functionTerm1195);
         	        plainTerm(ctx, expr);
@@ -5298,7 +5299,7 @@ functionTerm(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:470:5: definedFun[expr] LPAREN_TOK arguments[args] RPAREN_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:471:5: definedFun[expr] LPAREN_TOK arguments[args] RPAREN_TOK
         	    {
         	        FOLLOWPUSH(FOLLOW_definedFun_in_functionTerm1202);
         	        definedFun(ctx, expr);
@@ -5362,7 +5363,7 @@ functionTerm(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start conditionalTerm
- * ../../../../../../src/parser/tptp/Tptp.g:475:1: conditionalTerm[CVC4::Expr& expr] : '$ite_t' LPAREN_TOK tffLogicFormula[expr] COMMA_TOK term[expr2] COMMA_TOK term[expr3] RPAREN_TOK ;
+ * ../../../../src/parser/tptp/Tptp.g:476:1: conditionalTerm[CVC4::Expr& expr] : '$ite_t' LPAREN_TOK tffLogicFormula[expr] COMMA_TOK term[expr2] COMMA_TOK term[expr3] RPAREN_TOK ;
  */
 static void
 conditionalTerm(pTptpParser ctx, CVC4::Expr& expr)
@@ -5374,8 +5375,8 @@ conditionalTerm(pTptpParser ctx, CVC4::Expr& expr)
      */
 
     {
-        // ../../../../../../src/parser/tptp/Tptp.g:479:3: ( '$ite_t' LPAREN_TOK tffLogicFormula[expr] COMMA_TOK term[expr2] COMMA_TOK term[expr3] RPAREN_TOK )
-        // ../../../../../../src/parser/tptp/Tptp.g:479:5: '$ite_t' LPAREN_TOK tffLogicFormula[expr] COMMA_TOK term[expr2] COMMA_TOK term[expr3] RPAREN_TOK
+        // ../../../../src/parser/tptp/Tptp.g:480:3: ( '$ite_t' LPAREN_TOK tffLogicFormula[expr] COMMA_TOK term[expr2] COMMA_TOK term[expr3] RPAREN_TOK )
+        // ../../../../src/parser/tptp/Tptp.g:480:5: '$ite_t' LPAREN_TOK tffLogicFormula[expr] COMMA_TOK term[expr2] COMMA_TOK term[expr3] RPAREN_TOK
         {
              MATCHT(65, &FOLLOW_65_in_conditionalTerm1236);
             if  (HASEXCEPTION())
@@ -5467,7 +5468,7 @@ conditionalTerm(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start plainTerm
- * ../../../../../../src/parser/tptp/Tptp.g:483:1: plainTerm[CVC4::Expr& expr] : atomicWord[name] ( LPAREN_TOK arguments[args] RPAREN_TOK )? ;
+ * ../../../../src/parser/tptp/Tptp.g:484:1: plainTerm[CVC4::Expr& expr] : atomicWord[name] ( LPAREN_TOK arguments[args] RPAREN_TOK )? ;
  */
 static void
 plainTerm(pTptpParser ctx, CVC4::Expr& expr)
@@ -5480,8 +5481,8 @@ plainTerm(pTptpParser ctx, CVC4::Expr& expr)
      */
 
     {
-        // ../../../../../../src/parser/tptp/Tptp.g:488:3: ( atomicWord[name] ( LPAREN_TOK arguments[args] RPAREN_TOK )? )
-        // ../../../../../../src/parser/tptp/Tptp.g:488:5: atomicWord[name] ( LPAREN_TOK arguments[args] RPAREN_TOK )?
+        // ../../../../src/parser/tptp/Tptp.g:489:3: ( atomicWord[name] ( LPAREN_TOK arguments[args] RPAREN_TOK )? )
+        // ../../../../src/parser/tptp/Tptp.g:489:5: atomicWord[name] ( LPAREN_TOK arguments[args] RPAREN_TOK )?
         {
             FOLLOWPUSH(FOLLOW_atomicWord_in_plainTerm1278);
             atomicWord(ctx, name);
@@ -5493,7 +5494,7 @@ plainTerm(pTptpParser ctx, CVC4::Expr& expr)
             }
 
 
-            // ../../../../../../src/parser/tptp/Tptp.g:488:22: ( LPAREN_TOK arguments[args] RPAREN_TOK )?
+            // ../../../../src/parser/tptp/Tptp.g:489:22: ( LPAREN_TOK arguments[args] RPAREN_TOK )?
             {
                 int alt30=2;
                 switch ( LA(1) )
@@ -5508,7 +5509,7 @@ plainTerm(pTptpParser ctx, CVC4::Expr& expr)
                 switch (alt30)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/tptp/Tptp.g:488:23: LPAREN_TOK arguments[args] RPAREN_TOK
+            	    // ../../../../src/parser/tptp/Tptp.g:489:23: LPAREN_TOK arguments[args] RPAREN_TOK
             	    {
             	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_plainTerm1282);
             	        if  (HASEXCEPTION())
@@ -5567,7 +5568,7 @@ plainTerm(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start arguments
- * ../../../../../../src/parser/tptp/Tptp.g:494:1: arguments[std::vector<CVC4::Expr>& args] : term[expr] ( COMMA_TOK term[expr] )* ;
+ * ../../../../src/parser/tptp/Tptp.g:495:1: arguments[std::vector<CVC4::Expr>& args] : term[expr] ( COMMA_TOK term[expr] )* ;
  */
 static void
 arguments(pTptpParser ctx, std::vector<CVC4::Expr>& args)
@@ -5579,8 +5580,8 @@ arguments(pTptpParser ctx, std::vector<CVC4::Expr>& args)
      */
 
     {
-        // ../../../../../../src/parser/tptp/Tptp.g:498:3: ( term[expr] ( COMMA_TOK term[expr] )* )
-        // ../../../../../../src/parser/tptp/Tptp.g:499:3: term[expr] ( COMMA_TOK term[expr] )*
+        // ../../../../src/parser/tptp/Tptp.g:499:3: ( term[expr] ( COMMA_TOK term[expr] )* )
+        // ../../../../src/parser/tptp/Tptp.g:500:3: term[expr] ( COMMA_TOK term[expr] )*
         {
             FOLLOWPUSH(FOLLOW_term_in_arguments1316);
             term(ctx, expr);
@@ -5597,7 +5598,7 @@ arguments(pTptpParser ctx, std::vector<CVC4::Expr>& args)
             }
 
 
-            // ../../../../../../src/parser/tptp/Tptp.g:499:40: ( COMMA_TOK term[expr] )*
+            // ../../../../src/parser/tptp/Tptp.g:500:40: ( COMMA_TOK term[expr] )*
 
             for (;;)
             {
@@ -5615,7 +5616,7 @@ arguments(pTptpParser ctx, std::vector<CVC4::Expr>& args)
                 switch (alt31)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/tptp/Tptp.g:499:42: COMMA_TOK term[expr]
+            	    // ../../../../src/parser/tptp/Tptp.g:500:42: COMMA_TOK term[expr]
             	    {
             	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_arguments1323);
             	        if  (HASEXCEPTION())
@@ -5670,7 +5671,7 @@ arguments(pTptpParser ctx, std::vector<CVC4::Expr>& args)
 
 /**
  * $ANTLR start variable
- * ../../../../../../src/parser/tptp/Tptp.g:502:1: variable[CVC4::Expr& expr] : UPPER_WORD ;
+ * ../../../../src/parser/tptp/Tptp.g:503:1: variable[CVC4::Expr& expr] : UPPER_WORD ;
  */
 static void
 variable(pTptpParser ctx, CVC4::Expr& expr)
@@ -5683,8 +5684,8 @@ variable(pTptpParser ctx, CVC4::Expr& expr)
     UPPER_WORD3       = NULL;
 
     {
-        // ../../../../../../src/parser/tptp/Tptp.g:503:3: ( UPPER_WORD )
-        // ../../../../../../src/parser/tptp/Tptp.g:503:5: UPPER_WORD
+        // ../../../../src/parser/tptp/Tptp.g:504:3: ( UPPER_WORD )
+        // ../../../../src/parser/tptp/Tptp.g:504:5: UPPER_WORD
         {
             UPPER_WORD3 = (pANTLR3_COMMON_TOKEN) MATCHT(UPPER_WORD, &FOLLOW_UPPER_WORD_in_variable1345);
             if  (HASEXCEPTION())
@@ -5726,7 +5727,7 @@ variable(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start fofFormula
- * ../../../../../../src/parser/tptp/Tptp.g:517:1: fofFormula[CVC4::Expr& expr] : fofLogicFormula[expr] ;
+ * ../../../../src/parser/tptp/Tptp.g:518:1: fofFormula[CVC4::Expr& expr] : fofLogicFormula[expr] ;
  */
 static void
 fofFormula(pTptpParser ctx, CVC4::Expr& expr)
@@ -5735,8 +5736,8 @@ fofFormula(pTptpParser ctx, CVC4::Expr& expr)
      */
 
     {
-        // ../../../../../../src/parser/tptp/Tptp.g:517:30: ( fofLogicFormula[expr] )
-        // ../../../../../../src/parser/tptp/Tptp.g:517:32: fofLogicFormula[expr]
+        // ../../../../src/parser/tptp/Tptp.g:518:30: ( fofLogicFormula[expr] )
+        // ../../../../src/parser/tptp/Tptp.g:518:32: fofLogicFormula[expr]
         {
             FOLLOWPUSH(FOLLOW_fofLogicFormula_in_fofFormula1369);
             fofLogicFormula(ctx, expr);
@@ -5768,7 +5769,7 @@ fofFormula(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start fofLogicFormula
- * ../../../../../../src/parser/tptp/Tptp.g:519:1: fofLogicFormula[CVC4::Expr& expr] : fofUnitaryFormula[expr] ( ( fofBinaryNonAssoc[na] fofUnitaryFormula[expr2] ) | ( ( AND_TOK fofUnitaryFormula[expr] )+ ) | ( ( OR_TOK fofUnitaryFormula[expr] )+ ) )? ;
+ * ../../../../src/parser/tptp/Tptp.g:520:1: fofLogicFormula[CVC4::Expr& expr] : fofUnitaryFormula[expr] ( ( fofBinaryNonAssoc[na] fofUnitaryFormula[expr2] ) | ( ( AND_TOK fofUnitaryFormula[expr] )+ ) | ( ( OR_TOK fofUnitaryFormula[expr] )+ ) )? ;
  */
 static void
 fofLogicFormula(pTptpParser ctx, CVC4::Expr& expr)
@@ -5782,8 +5783,8 @@ fofLogicFormula(pTptpParser ctx, CVC4::Expr& expr)
      */
 
     {
-        // ../../../../../../src/parser/tptp/Tptp.g:525:3: ( fofUnitaryFormula[expr] ( ( fofBinaryNonAssoc[na] fofUnitaryFormula[expr2] ) | ( ( AND_TOK fofUnitaryFormula[expr] )+ ) | ( ( OR_TOK fofUnitaryFormula[expr] )+ ) )? )
-        // ../../../../../../src/parser/tptp/Tptp.g:525:5: fofUnitaryFormula[expr] ( ( fofBinaryNonAssoc[na] fofUnitaryFormula[expr2] ) | ( ( AND_TOK fofUnitaryFormula[expr] )+ ) | ( ( OR_TOK fofUnitaryFormula[expr] )+ ) )?
+        // ../../../../src/parser/tptp/Tptp.g:526:3: ( fofUnitaryFormula[expr] ( ( fofBinaryNonAssoc[na] fofUnitaryFormula[expr2] ) | ( ( AND_TOK fofUnitaryFormula[expr] )+ ) | ( ( OR_TOK fofUnitaryFormula[expr] )+ ) )? )
+        // ../../../../src/parser/tptp/Tptp.g:526:5: fofUnitaryFormula[expr] ( ( fofBinaryNonAssoc[na] fofUnitaryFormula[expr2] ) | ( ( AND_TOK fofUnitaryFormula[expr] )+ ) | ( ( OR_TOK fofUnitaryFormula[expr] )+ ) )?
         {
             FOLLOWPUSH(FOLLOW_fofUnitaryFormula_in_fofLogicFormula1387);
             fofUnitaryFormula(ctx, expr);
@@ -5795,7 +5796,7 @@ fofLogicFormula(pTptpParser ctx, CVC4::Expr& expr)
             }
 
 
-            // ../../../../../../src/parser/tptp/Tptp.g:526:5: ( ( fofBinaryNonAssoc[na] fofUnitaryFormula[expr2] ) | ( ( AND_TOK fofUnitaryFormula[expr] )+ ) | ( ( OR_TOK fofUnitaryFormula[expr] )+ ) )?
+            // ../../../../src/parser/tptp/Tptp.g:527:5: ( ( fofBinaryNonAssoc[na] fofUnitaryFormula[expr2] ) | ( ( AND_TOK fofUnitaryFormula[expr] )+ ) | ( ( OR_TOK fofUnitaryFormula[expr] )+ ) )?
             {
                 int alt34=4;
                 switch ( LA(1) )
@@ -5825,10 +5826,10 @@ fofLogicFormula(pTptpParser ctx, CVC4::Expr& expr)
                 switch (alt34)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/tptp/Tptp.g:527:7: ( fofBinaryNonAssoc[na] fofUnitaryFormula[expr2] )
+            	    // ../../../../src/parser/tptp/Tptp.g:528:7: ( fofBinaryNonAssoc[na] fofUnitaryFormula[expr2] )
             	    {
-            	        // ../../../../../../src/parser/tptp/Tptp.g:527:7: ( fofBinaryNonAssoc[na] fofUnitaryFormula[expr2] )
-            	        // ../../../../../../src/parser/tptp/Tptp.g:527:9: fofBinaryNonAssoc[na] fofUnitaryFormula[expr2]
+            	        // ../../../../src/parser/tptp/Tptp.g:528:7: ( fofBinaryNonAssoc[na] fofUnitaryFormula[expr2] )
+            	        // ../../../../src/parser/tptp/Tptp.g:528:9: fofBinaryNonAssoc[na] fofUnitaryFormula[expr2]
             	        {
             	            FOLLOWPUSH(FOLLOW_fofBinaryNonAssoc_in_fofLogicFormula1405);
             	            fofBinaryNonAssoc(ctx, na);
@@ -5881,17 +5882,17 @@ fofLogicFormula(pTptpParser ctx, CVC4::Expr& expr)
             	    }
             	    break;
             	case 2:
-            	    // ../../../../../../src/parser/tptp/Tptp.g:551:7: ( ( AND_TOK fofUnitaryFormula[expr] )+ )
+            	    // ../../../../src/parser/tptp/Tptp.g:552:7: ( ( AND_TOK fofUnitaryFormula[expr] )+ )
             	    {
-            	        // ../../../../../../src/parser/tptp/Tptp.g:551:7: ( ( AND_TOK fofUnitaryFormula[expr] )+ )
-            	        // ../../../../../../src/parser/tptp/Tptp.g:551:9: ( AND_TOK fofUnitaryFormula[expr] )+
+            	        // ../../../../src/parser/tptp/Tptp.g:552:7: ( ( AND_TOK fofUnitaryFormula[expr] )+ )
+            	        // ../../../../src/parser/tptp/Tptp.g:552:9: ( AND_TOK fofUnitaryFormula[expr] )+
             	        {
             	            {
             	                 args.push_back(expr); 
             	            }
 
 
-            	            // ../../../../../../src/parser/tptp/Tptp.g:552:9: ( AND_TOK fofUnitaryFormula[expr] )+
+            	            // ../../../../src/parser/tptp/Tptp.g:553:9: ( AND_TOK fofUnitaryFormula[expr] )+
             	            {
             	                int cnt32=0;
 
@@ -5911,7 +5912,7 @@ fofLogicFormula(pTptpParser ctx, CVC4::Expr& expr)
             	            	switch (alt32)
             	            	{
             	            	    case 1:
-            	            	        // ../../../../../../src/parser/tptp/Tptp.g:552:11: AND_TOK fofUnitaryFormula[expr]
+            	            	        // ../../../../src/parser/tptp/Tptp.g:553:11: AND_TOK fofUnitaryFormula[expr]
             	            	        {
             	            	             MATCHT(AND_TOK, &FOLLOW_AND_TOK_in_fofLogicFormula1456);
             	            	            if  (HASEXCEPTION())
@@ -5969,17 +5970,17 @@ fofLogicFormula(pTptpParser ctx, CVC4::Expr& expr)
             	    }
             	    break;
             	case 3:
-            	    // ../../../../../../src/parser/tptp/Tptp.g:556:7: ( ( OR_TOK fofUnitaryFormula[expr] )+ )
+            	    // ../../../../src/parser/tptp/Tptp.g:557:7: ( ( OR_TOK fofUnitaryFormula[expr] )+ )
             	    {
-            	        // ../../../../../../src/parser/tptp/Tptp.g:556:7: ( ( OR_TOK fofUnitaryFormula[expr] )+ )
-            	        // ../../../../../../src/parser/tptp/Tptp.g:556:9: ( OR_TOK fofUnitaryFormula[expr] )+
+            	        // ../../../../src/parser/tptp/Tptp.g:557:7: ( ( OR_TOK fofUnitaryFormula[expr] )+ )
+            	        // ../../../../src/parser/tptp/Tptp.g:557:9: ( OR_TOK fofUnitaryFormula[expr] )+
             	        {
             	            {
             	                 args.push_back(expr); 
             	            }
 
 
-            	            // ../../../../../../src/parser/tptp/Tptp.g:557:9: ( OR_TOK fofUnitaryFormula[expr] )+
+            	            // ../../../../src/parser/tptp/Tptp.g:558:9: ( OR_TOK fofUnitaryFormula[expr] )+
             	            {
             	                int cnt33=0;
 
@@ -5999,7 +6000,7 @@ fofLogicFormula(pTptpParser ctx, CVC4::Expr& expr)
             	            	switch (alt33)
             	            	{
             	            	    case 1:
-            	            	        // ../../../../../../src/parser/tptp/Tptp.g:557:11: OR_TOK fofUnitaryFormula[expr]
+            	            	        // ../../../../src/parser/tptp/Tptp.g:558:11: OR_TOK fofUnitaryFormula[expr]
             	            	        {
             	            	             MATCHT(OR_TOK, &FOLLOW_OR_TOK_in_fofLogicFormula1511);
             	            	            if  (HASEXCEPTION())
@@ -6080,7 +6081,7 @@ fofLogicFormula(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start fofUnitaryFormula
- * ../../../../../../src/parser/tptp/Tptp.g:563:1: fofUnitaryFormula[CVC4::Expr& expr] : ( atomicFormula[expr] | LPAREN_TOK fofLogicFormula[expr] RPAREN_TOK | NOT_TOK fofUnitaryFormula[expr] | folQuantifier[kind] LBRACK_TOK ( bindvariable[expr] ( COMMA_TOK bindvariable[expr] )* ) RBRACK_TOK COLON_TOK fofUnitaryFormula[expr] );
+ * ../../../../src/parser/tptp/Tptp.g:564:1: fofUnitaryFormula[CVC4::Expr& expr] : ( atomicFormula[expr] | LPAREN_TOK fofLogicFormula[expr] RPAREN_TOK | NOT_TOK fofUnitaryFormula[expr] | folQuantifier[kind] LBRACK_TOK ( bindvariable[expr] ( COMMA_TOK bindvariable[expr] )* ) RBRACK_TOK COLON_TOK fofUnitaryFormula[expr] );
  */
 static void
 fofUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
@@ -6094,7 +6095,7 @@ fofUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:568:3: ( atomicFormula[expr] | LPAREN_TOK fofLogicFormula[expr] RPAREN_TOK | NOT_TOK fofUnitaryFormula[expr] | folQuantifier[kind] LBRACK_TOK ( bindvariable[expr] ( COMMA_TOK bindvariable[expr] )* ) RBRACK_TOK COLON_TOK fofUnitaryFormula[expr] )
+            //  ../../../../src/parser/tptp/Tptp.g:569:3: ( atomicFormula[expr] | LPAREN_TOK fofLogicFormula[expr] RPAREN_TOK | NOT_TOK fofUnitaryFormula[expr] | folQuantifier[kind] LBRACK_TOK ( bindvariable[expr] ( COMMA_TOK bindvariable[expr] )* ) RBRACK_TOK COLON_TOK fofUnitaryFormula[expr] )
 
             ANTLR3_UINT32 alt36;
 
@@ -6180,7 +6181,7 @@ fofUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
             switch (alt36)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:568:5: atomicFormula[expr]
+        	    // ../../../../src/parser/tptp/Tptp.g:569:5: atomicFormula[expr]
         	    {
         	        FOLLOWPUSH(FOLLOW_atomicFormula_in_fofUnitaryFormula1563);
         	        atomicFormula(ctx, expr);
@@ -6195,7 +6196,7 @@ fofUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:569:5: LPAREN_TOK fofLogicFormula[expr] RPAREN_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:570:5: LPAREN_TOK fofLogicFormula[expr] RPAREN_TOK
         	    {
         	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_fofUnitaryFormula1570);
         	        if  (HASEXCEPTION())
@@ -6224,7 +6225,7 @@ fofUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:570:5: NOT_TOK fofUnitaryFormula[expr]
+        	    // ../../../../src/parser/tptp/Tptp.g:571:5: NOT_TOK fofUnitaryFormula[expr]
         	    {
         	         MATCHT(NOT_TOK, &FOLLOW_NOT_TOK_in_fofUnitaryFormula1581);
         	        if  (HASEXCEPTION())
@@ -6251,7 +6252,7 @@ fofUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:572:5: folQuantifier[kind] LBRACK_TOK ( bindvariable[expr] ( COMMA_TOK bindvariable[expr] )* ) RBRACK_TOK COLON_TOK fofUnitaryFormula[expr]
+        	    // ../../../../src/parser/tptp/Tptp.g:573:5: folQuantifier[kind] LBRACK_TOK ( bindvariable[expr] ( COMMA_TOK bindvariable[expr] )* ) RBRACK_TOK COLON_TOK fofUnitaryFormula[expr]
         	    {
         	        FOLLOWPUSH(FOLLOW_folQuantifier_in_fofUnitaryFormula1597);
         	        folQuantifier(ctx, kind);
@@ -6275,8 +6276,8 @@ fofUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
         	        }
 
 
-        	        // ../../../../../../src/parser/tptp/Tptp.g:573:5: ( bindvariable[expr] ( COMMA_TOK bindvariable[expr] )* )
-        	        // ../../../../../../src/parser/tptp/Tptp.g:573:7: bindvariable[expr] ( COMMA_TOK bindvariable[expr] )*
+        	        // ../../../../src/parser/tptp/Tptp.g:574:5: ( bindvariable[expr] ( COMMA_TOK bindvariable[expr] )* )
+        	        // ../../../../src/parser/tptp/Tptp.g:574:7: bindvariable[expr] ( COMMA_TOK bindvariable[expr] )*
         	        {
         	            FOLLOWPUSH(FOLLOW_bindvariable_in_fofUnitaryFormula1610);
         	            bindvariable(ctx, expr);
@@ -6293,7 +6294,7 @@ fofUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
         	            }
 
 
-        	            // ../../../../../../src/parser/tptp/Tptp.g:574:7: ( COMMA_TOK bindvariable[expr] )*
+        	            // ../../../../src/parser/tptp/Tptp.g:575:7: ( COMMA_TOK bindvariable[expr] )*
 
         	            for (;;)
         	            {
@@ -6311,7 +6312,7 @@ fofUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
         	                switch (alt35)
         	                {
         	            	case 1:
-        	            	    // ../../../../../../src/parser/tptp/Tptp.g:574:9: COMMA_TOK bindvariable[expr]
+        	            	    // ../../../../src/parser/tptp/Tptp.g:575:9: COMMA_TOK bindvariable[expr]
         	            	    {
         	            	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_fofUnitaryFormula1623);
         	            	        if  (HASEXCEPTION())
@@ -6403,7 +6404,7 @@ fofUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start bindvariable
- * ../../../../../../src/parser/tptp/Tptp.g:581:1: bindvariable[CVC4::Expr& expr] : UPPER_WORD ;
+ * ../../../../src/parser/tptp/Tptp.g:582:1: bindvariable[CVC4::Expr& expr] : UPPER_WORD ;
  */
 static void
 bindvariable(pTptpParser ctx, CVC4::Expr& expr)
@@ -6416,8 +6417,8 @@ bindvariable(pTptpParser ctx, CVC4::Expr& expr)
     UPPER_WORD4       = NULL;
 
     {
-        // ../../../../../../src/parser/tptp/Tptp.g:582:3: ( UPPER_WORD )
-        // ../../../../../../src/parser/tptp/Tptp.g:582:5: UPPER_WORD
+        // ../../../../src/parser/tptp/Tptp.g:583:3: ( UPPER_WORD )
+        // ../../../../src/parser/tptp/Tptp.g:583:5: UPPER_WORD
         {
             UPPER_WORD4 = (pANTLR3_COMMON_TOKEN) MATCHT(UPPER_WORD, &FOLLOW_UPPER_WORD_in_bindvariable1664);
             if  (HASEXCEPTION())
@@ -6453,7 +6454,7 @@ bindvariable(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start fofBinaryNonAssoc
- * ../../../../../../src/parser/tptp/Tptp.g:588:1: fofBinaryNonAssoc[CVC4::parser::tptp::NonAssoc& na] : ( IFF_TOK | REVIFF_TOK | REVOR_TOK | REVAND_TOK | IMPLIES_TOK | REVIMPLIES_TOK );
+ * ../../../../src/parser/tptp/Tptp.g:589:1: fofBinaryNonAssoc[CVC4::parser::tptp::NonAssoc& na] : ( IFF_TOK | REVIFF_TOK | REVOR_TOK | REVAND_TOK | IMPLIES_TOK | REVIMPLIES_TOK );
  */
 static void
 fofBinaryNonAssoc(pTptpParser ctx, CVC4::parser::tptp::NonAssoc& na)
@@ -6463,7 +6464,7 @@ fofBinaryNonAssoc(pTptpParser ctx, CVC4::parser::tptp::NonAssoc& na)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:589:3: ( IFF_TOK | REVIFF_TOK | REVOR_TOK | REVAND_TOK | IMPLIES_TOK | REVIMPLIES_TOK )
+            //  ../../../../src/parser/tptp/Tptp.g:590:3: ( IFF_TOK | REVIFF_TOK | REVOR_TOK | REVAND_TOK | IMPLIES_TOK | REVIMPLIES_TOK )
 
             ANTLR3_UINT32 alt37;
 
@@ -6517,7 +6518,7 @@ fofBinaryNonAssoc(pTptpParser ctx, CVC4::parser::tptp::NonAssoc& na)
             switch (alt37)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:589:5: IFF_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:590:5: IFF_TOK
         	    {
         	         MATCHT(IFF_TOK, &FOLLOW_IFF_TOK_in_fofBinaryNonAssoc1684);
         	        if  (HASEXCEPTION())
@@ -6534,7 +6535,7 @@ fofBinaryNonAssoc(pTptpParser ctx, CVC4::parser::tptp::NonAssoc& na)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:590:5: REVIFF_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:591:5: REVIFF_TOK
         	    {
         	         MATCHT(REVIFF_TOK, &FOLLOW_REVIFF_TOK_in_fofBinaryNonAssoc1697);
         	        if  (HASEXCEPTION())
@@ -6551,7 +6552,7 @@ fofBinaryNonAssoc(pTptpParser ctx, CVC4::parser::tptp::NonAssoc& na)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:591:5: REVOR_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:592:5: REVOR_TOK
         	    {
         	         MATCHT(REVOR_TOK, &FOLLOW_REVOR_TOK_in_fofBinaryNonAssoc1707);
         	        if  (HASEXCEPTION())
@@ -6568,7 +6569,7 @@ fofBinaryNonAssoc(pTptpParser ctx, CVC4::parser::tptp::NonAssoc& na)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:592:5: REVAND_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:593:5: REVAND_TOK
         	    {
         	         MATCHT(REVAND_TOK, &FOLLOW_REVAND_TOK_in_fofBinaryNonAssoc1718);
         	        if  (HASEXCEPTION())
@@ -6585,7 +6586,7 @@ fofBinaryNonAssoc(pTptpParser ctx, CVC4::parser::tptp::NonAssoc& na)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:593:5: IMPLIES_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:594:5: IMPLIES_TOK
         	    {
         	         MATCHT(IMPLIES_TOK, &FOLLOW_IMPLIES_TOK_in_fofBinaryNonAssoc1728);
         	        if  (HASEXCEPTION())
@@ -6602,7 +6603,7 @@ fofBinaryNonAssoc(pTptpParser ctx, CVC4::parser::tptp::NonAssoc& na)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:594:5: REVIMPLIES_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:595:5: REVIMPLIES_TOK
         	    {
         	         MATCHT(REVIMPLIES_TOK, &FOLLOW_REVIMPLIES_TOK_in_fofBinaryNonAssoc1739);
         	        if  (HASEXCEPTION())
@@ -6639,7 +6640,7 @@ fofBinaryNonAssoc(pTptpParser ctx, CVC4::parser::tptp::NonAssoc& na)
 
 /**
  * $ANTLR start folQuantifier
- * ../../../../../../src/parser/tptp/Tptp.g:597:1: folQuantifier[CVC4::Kind& kind] : ( BANG_TOK | MARK_TOK );
+ * ../../../../src/parser/tptp/Tptp.g:598:1: folQuantifier[CVC4::Kind& kind] : ( BANG_TOK | MARK_TOK );
  */
 static void
 folQuantifier(pTptpParser ctx, CVC4::Kind& kind)
@@ -6649,7 +6650,7 @@ folQuantifier(pTptpParser ctx, CVC4::Kind& kind)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:598:3: ( BANG_TOK | MARK_TOK )
+            //  ../../../../src/parser/tptp/Tptp.g:599:3: ( BANG_TOK | MARK_TOK )
 
             ANTLR3_UINT32 alt38;
 
@@ -6683,7 +6684,7 @@ folQuantifier(pTptpParser ctx, CVC4::Kind& kind)
             switch (alt38)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:598:5: BANG_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:599:5: BANG_TOK
         	    {
         	         MATCHT(BANG_TOK, &FOLLOW_BANG_TOK_in_folQuantifier1755);
         	        if  (HASEXCEPTION())
@@ -6700,7 +6701,7 @@ folQuantifier(pTptpParser ctx, CVC4::Kind& kind)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:599:5: MARK_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:600:5: MARK_TOK
         	    {
         	         MATCHT(MARK_TOK, &FOLLOW_MARK_TOK_in_folQuantifier1763);
         	        if  (HASEXCEPTION())
@@ -6737,7 +6738,7 @@ folQuantifier(pTptpParser ctx, CVC4::Kind& kind)
 
 /**
  * $ANTLR start tffFormula
- * ../../../../../../src/parser/tptp/Tptp.g:604:1: tffFormula[CVC4::Expr& expr] : tffLogicFormula[expr] ;
+ * ../../../../src/parser/tptp/Tptp.g:605:1: tffFormula[CVC4::Expr& expr] : tffLogicFormula[expr] ;
  */
 static void
 tffFormula(pTptpParser ctx, CVC4::Expr& expr)
@@ -6746,8 +6747,8 @@ tffFormula(pTptpParser ctx, CVC4::Expr& expr)
      */
 
     {
-        // ../../../../../../src/parser/tptp/Tptp.g:604:30: ( tffLogicFormula[expr] )
-        // ../../../../../../src/parser/tptp/Tptp.g:604:32: tffLogicFormula[expr]
+        // ../../../../src/parser/tptp/Tptp.g:605:30: ( tffLogicFormula[expr] )
+        // ../../../../src/parser/tptp/Tptp.g:605:32: tffLogicFormula[expr]
         {
             FOLLOWPUSH(FOLLOW_tffLogicFormula_in_tffFormula1781);
             tffLogicFormula(ctx, expr);
@@ -6779,7 +6780,7 @@ tffFormula(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start tffTypedAtom
- * ../../../../../../src/parser/tptp/Tptp.g:606:1: tffTypedAtom[CVC4::Command*& cmd] : ( LPAREN_TOK tffTypedAtom[cmd] RPAREN_TOK | nameN[name] COLON_TOK ( '$tType' | parseType[type] ) );
+ * ../../../../src/parser/tptp/Tptp.g:607:1: tffTypedAtom[CVC4::Command*& cmd] : ( LPAREN_TOK tffTypedAtom[cmd] RPAREN_TOK | nameN[name] COLON_TOK ( '$tType' | parseType[type] ) );
  */
 static void
 tffTypedAtom(pTptpParser ctx, CVC4::Command*& cmd)
@@ -6794,7 +6795,7 @@ tffTypedAtom(pTptpParser ctx, CVC4::Command*& cmd)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:612:3: ( LPAREN_TOK tffTypedAtom[cmd] RPAREN_TOK | nameN[name] COLON_TOK ( '$tType' | parseType[type] ) )
+            //  ../../../../src/parser/tptp/Tptp.g:613:3: ( LPAREN_TOK tffTypedAtom[cmd] RPAREN_TOK | nameN[name] COLON_TOK ( '$tType' | parseType[type] ) )
 
             ANTLR3_UINT32 alt40;
 
@@ -6837,7 +6838,7 @@ tffTypedAtom(pTptpParser ctx, CVC4::Command*& cmd)
             switch (alt40)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:612:5: LPAREN_TOK tffTypedAtom[cmd] RPAREN_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:613:5: LPAREN_TOK tffTypedAtom[cmd] RPAREN_TOK
         	    {
         	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_tffTypedAtom1798);
         	        if  (HASEXCEPTION())
@@ -6866,7 +6867,7 @@ tffTypedAtom(pTptpParser ctx, CVC4::Command*& cmd)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:613:5: nameN[name] COLON_TOK ( '$tType' | parseType[type] )
+        	    // ../../../../src/parser/tptp/Tptp.g:614:5: nameN[name] COLON_TOK ( '$tType' | parseType[type] )
         	    {
         	        FOLLOWPUSH(FOLLOW_nameN_in_tffTypedAtom1809);
         	        nameN(ctx, name);
@@ -6885,7 +6886,7 @@ tffTypedAtom(pTptpParser ctx, CVC4::Command*& cmd)
         	        }
 
 
-        	        // ../../../../../../src/parser/tptp/Tptp.g:614:5: ( '$tType' | parseType[type] )
+        	        // ../../../../src/parser/tptp/Tptp.g:615:5: ( '$tType' | parseType[type] )
         	        {
         	            int alt39=2;
         	            switch ( LA(1) )
@@ -6926,7 +6927,7 @@ tffTypedAtom(pTptpParser ctx, CVC4::Command*& cmd)
         	            switch (alt39)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:614:7: '$tType'
+        	        	    // ../../../../src/parser/tptp/Tptp.g:615:7: '$tType'
         	        	    {
         	        	         MATCHT(82, &FOLLOW_82_in_tffTypedAtom1820);
         	        	        if  (HASEXCEPTION())
@@ -6954,7 +6955,7 @@ tffTypedAtom(pTptpParser ctx, CVC4::Command*& cmd)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:627:7: parseType[type]
+        	        	    // ../../../../src/parser/tptp/Tptp.g:628:7: parseType[type]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_parseType_in_tffTypedAtom1836);
         	        	        parseType(ctx, type);
@@ -7022,7 +7023,7 @@ tffTypedAtom(pTptpParser ctx, CVC4::Command*& cmd)
 
 /**
  * $ANTLR start tffLogicFormula
- * ../../../../../../src/parser/tptp/Tptp.g:654:1: tffLogicFormula[CVC4::Expr& expr] : tffUnitaryFormula[expr] ( ( fofBinaryNonAssoc[na] tffUnitaryFormula[expr2] ) | ( ( AND_TOK tffUnitaryFormula[expr] )+ ) | ( ( OR_TOK tffUnitaryFormula[expr] )+ ) )? ;
+ * ../../../../src/parser/tptp/Tptp.g:655:1: tffLogicFormula[CVC4::Expr& expr] : tffUnitaryFormula[expr] ( ( fofBinaryNonAssoc[na] tffUnitaryFormula[expr2] ) | ( ( AND_TOK tffUnitaryFormula[expr] )+ ) | ( ( OR_TOK tffUnitaryFormula[expr] )+ ) )? ;
  */
 static void
 tffLogicFormula(pTptpParser ctx, CVC4::Expr& expr)
@@ -7036,8 +7037,8 @@ tffLogicFormula(pTptpParser ctx, CVC4::Expr& expr)
      */
 
     {
-        // ../../../../../../src/parser/tptp/Tptp.g:660:3: ( tffUnitaryFormula[expr] ( ( fofBinaryNonAssoc[na] tffUnitaryFormula[expr2] ) | ( ( AND_TOK tffUnitaryFormula[expr] )+ ) | ( ( OR_TOK tffUnitaryFormula[expr] )+ ) )? )
-        // ../../../../../../src/parser/tptp/Tptp.g:660:5: tffUnitaryFormula[expr] ( ( fofBinaryNonAssoc[na] tffUnitaryFormula[expr2] ) | ( ( AND_TOK tffUnitaryFormula[expr] )+ ) | ( ( OR_TOK tffUnitaryFormula[expr] )+ ) )?
+        // ../../../../src/parser/tptp/Tptp.g:661:3: ( tffUnitaryFormula[expr] ( ( fofBinaryNonAssoc[na] tffUnitaryFormula[expr2] ) | ( ( AND_TOK tffUnitaryFormula[expr] )+ ) | ( ( OR_TOK tffUnitaryFormula[expr] )+ ) )? )
+        // ../../../../src/parser/tptp/Tptp.g:661:5: tffUnitaryFormula[expr] ( ( fofBinaryNonAssoc[na] tffUnitaryFormula[expr2] ) | ( ( AND_TOK tffUnitaryFormula[expr] )+ ) | ( ( OR_TOK tffUnitaryFormula[expr] )+ ) )?
         {
             FOLLOWPUSH(FOLLOW_tffUnitaryFormula_in_tffLogicFormula1870);
             tffUnitaryFormula(ctx, expr);
@@ -7049,7 +7050,7 @@ tffLogicFormula(pTptpParser ctx, CVC4::Expr& expr)
             }
 
 
-            // ../../../../../../src/parser/tptp/Tptp.g:661:5: ( ( fofBinaryNonAssoc[na] tffUnitaryFormula[expr2] ) | ( ( AND_TOK tffUnitaryFormula[expr] )+ ) | ( ( OR_TOK tffUnitaryFormula[expr] )+ ) )?
+            // ../../../../src/parser/tptp/Tptp.g:662:5: ( ( fofBinaryNonAssoc[na] tffUnitaryFormula[expr2] ) | ( ( AND_TOK tffUnitaryFormula[expr] )+ ) | ( ( OR_TOK tffUnitaryFormula[expr] )+ ) )?
             {
                 int alt43=4;
                 switch ( LA(1) )
@@ -7079,10 +7080,10 @@ tffLogicFormula(pTptpParser ctx, CVC4::Expr& expr)
                 switch (alt43)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/tptp/Tptp.g:662:7: ( fofBinaryNonAssoc[na] tffUnitaryFormula[expr2] )
+            	    // ../../../../src/parser/tptp/Tptp.g:663:7: ( fofBinaryNonAssoc[na] tffUnitaryFormula[expr2] )
             	    {
-            	        // ../../../../../../src/parser/tptp/Tptp.g:662:7: ( fofBinaryNonAssoc[na] tffUnitaryFormula[expr2] )
-            	        // ../../../../../../src/parser/tptp/Tptp.g:662:9: fofBinaryNonAssoc[na] tffUnitaryFormula[expr2]
+            	        // ../../../../src/parser/tptp/Tptp.g:663:7: ( fofBinaryNonAssoc[na] tffUnitaryFormula[expr2] )
+            	        // ../../../../src/parser/tptp/Tptp.g:663:9: fofBinaryNonAssoc[na] tffUnitaryFormula[expr2]
             	        {
             	            FOLLOWPUSH(FOLLOW_fofBinaryNonAssoc_in_tffLogicFormula1888);
             	            fofBinaryNonAssoc(ctx, na);
@@ -7135,17 +7136,17 @@ tffLogicFormula(pTptpParser ctx, CVC4::Expr& expr)
             	    }
             	    break;
             	case 2:
-            	    // ../../../../../../src/parser/tptp/Tptp.g:686:7: ( ( AND_TOK tffUnitaryFormula[expr] )+ )
+            	    // ../../../../src/parser/tptp/Tptp.g:687:7: ( ( AND_TOK tffUnitaryFormula[expr] )+ )
             	    {
-            	        // ../../../../../../src/parser/tptp/Tptp.g:686:7: ( ( AND_TOK tffUnitaryFormula[expr] )+ )
-            	        // ../../../../../../src/parser/tptp/Tptp.g:686:9: ( AND_TOK tffUnitaryFormula[expr] )+
+            	        // ../../../../src/parser/tptp/Tptp.g:687:7: ( ( AND_TOK tffUnitaryFormula[expr] )+ )
+            	        // ../../../../src/parser/tptp/Tptp.g:687:9: ( AND_TOK tffUnitaryFormula[expr] )+
             	        {
             	            {
             	                 args.push_back(expr); 
             	            }
 
 
-            	            // ../../../../../../src/parser/tptp/Tptp.g:687:9: ( AND_TOK tffUnitaryFormula[expr] )+
+            	            // ../../../../src/parser/tptp/Tptp.g:688:9: ( AND_TOK tffUnitaryFormula[expr] )+
             	            {
             	                int cnt41=0;
 
@@ -7165,7 +7166,7 @@ tffLogicFormula(pTptpParser ctx, CVC4::Expr& expr)
             	            	switch (alt41)
             	            	{
             	            	    case 1:
-            	            	        // ../../../../../../src/parser/tptp/Tptp.g:687:11: AND_TOK tffUnitaryFormula[expr]
+            	            	        // ../../../../src/parser/tptp/Tptp.g:688:11: AND_TOK tffUnitaryFormula[expr]
             	            	        {
             	            	             MATCHT(AND_TOK, &FOLLOW_AND_TOK_in_tffLogicFormula1939);
             	            	            if  (HASEXCEPTION())
@@ -7223,17 +7224,17 @@ tffLogicFormula(pTptpParser ctx, CVC4::Expr& expr)
             	    }
             	    break;
             	case 3:
-            	    // ../../../../../../src/parser/tptp/Tptp.g:691:7: ( ( OR_TOK tffUnitaryFormula[expr] )+ )
+            	    // ../../../../src/parser/tptp/Tptp.g:692:7: ( ( OR_TOK tffUnitaryFormula[expr] )+ )
             	    {
-            	        // ../../../../../../src/parser/tptp/Tptp.g:691:7: ( ( OR_TOK tffUnitaryFormula[expr] )+ )
-            	        // ../../../../../../src/parser/tptp/Tptp.g:691:9: ( OR_TOK tffUnitaryFormula[expr] )+
+            	        // ../../../../src/parser/tptp/Tptp.g:692:7: ( ( OR_TOK tffUnitaryFormula[expr] )+ )
+            	        // ../../../../src/parser/tptp/Tptp.g:692:9: ( OR_TOK tffUnitaryFormula[expr] )+
             	        {
             	            {
             	                 args.push_back(expr); 
             	            }
 
 
-            	            // ../../../../../../src/parser/tptp/Tptp.g:692:9: ( OR_TOK tffUnitaryFormula[expr] )+
+            	            // ../../../../src/parser/tptp/Tptp.g:693:9: ( OR_TOK tffUnitaryFormula[expr] )+
             	            {
             	                int cnt42=0;
 
@@ -7253,7 +7254,7 @@ tffLogicFormula(pTptpParser ctx, CVC4::Expr& expr)
             	            	switch (alt42)
             	            	{
             	            	    case 1:
-            	            	        // ../../../../../../src/parser/tptp/Tptp.g:692:11: OR_TOK tffUnitaryFormula[expr]
+            	            	        // ../../../../src/parser/tptp/Tptp.g:693:11: OR_TOK tffUnitaryFormula[expr]
             	            	        {
             	            	             MATCHT(OR_TOK, &FOLLOW_OR_TOK_in_tffLogicFormula1994);
             	            	            if  (HASEXCEPTION())
@@ -7334,7 +7335,7 @@ tffLogicFormula(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start tffUnitaryFormula
- * ../../../../../../src/parser/tptp/Tptp.g:698:1: tffUnitaryFormula[CVC4::Expr& expr] : ( atomicFormula[expr] | LPAREN_TOK tffLogicFormula[expr] RPAREN_TOK | NOT_TOK tffUnitaryFormula[expr] | folQuantifier[kind] LBRACK_TOK ( tffbindvariable[expr] ( COMMA_TOK tffbindvariable[expr] )* ) RBRACK_TOK COLON_TOK tffUnitaryFormula[expr] | '$ite_f' LPAREN_TOK tffLogicFormula[expr] COMMA_TOK tffLogicFormula[lhs] COMMA_TOK tffLogicFormula[rhs] RPAREN_TOK | '$let_tf' LPAREN_TOK tffLetTermDefn[lhs,  [...]
+ * ../../../../src/parser/tptp/Tptp.g:699:1: tffUnitaryFormula[CVC4::Expr& expr] : ( atomicFormula[expr] | LPAREN_TOK tffLogicFormula[expr] RPAREN_TOK | NOT_TOK tffUnitaryFormula[expr] | folQuantifier[kind] LBRACK_TOK ( tffbindvariable[expr] ( COMMA_TOK tffbindvariable[expr] )* ) RBRACK_TOK COLON_TOK tffUnitaryFormula[expr] | '$ite_f' LPAREN_TOK tffLogicFormula[expr] COMMA_TOK tffLogicFormula[lhs] COMMA_TOK tffLogicFormula[rhs] RPAREN_TOK | '$let_tf' LPAREN_TOK tffLetTermDefn[lhs, rhs] C [...]
  */
 static void
 tffUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
@@ -7349,7 +7350,7 @@ tffUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:704:3: ( atomicFormula[expr] | LPAREN_TOK tffLogicFormula[expr] RPAREN_TOK | NOT_TOK tffUnitaryFormula[expr] | folQuantifier[kind] LBRACK_TOK ( tffbindvariable[expr] ( COMMA_TOK tffbindvariable[expr] )* ) RBRACK_TOK COLON_TOK tffUnitaryFormula[expr] | '$ite_f' LPAREN_TOK tffLogicFormula[expr] COMMA_TOK tffLogicFormula[lhs] COMMA_TOK tffLogicFormula[rhs] RPAREN_TOK | '$let_tf' LPAREN_TOK tffLetTermDefn[lhs, rhs] COMMA_TOK tffFormula [...]
+            //  ../../../../src/parser/tptp/Tptp.g:705:3: ( atomicFormula[expr] | LPAREN_TOK tffLogicFormula[expr] RPAREN_TOK | NOT_TOK tffUnitaryFormula[expr] | folQuantifier[kind] LBRACK_TOK ( tffbindvariable[expr] ( COMMA_TOK tffbindvariable[expr] )* ) RBRACK_TOK COLON_TOK tffUnitaryFormula[expr] | '$ite_f' LPAREN_TOK tffLogicFormula[expr] COMMA_TOK tffLogicFormula[lhs] COMMA_TOK tffLogicFormula[rhs] RPAREN_TOK | '$let_tf' LPAREN_TOK tffLetTermDefn[lhs, rhs] COMMA_TOK tffFormula[expr] [...]
 
             ANTLR3_UINT32 alt45;
 
@@ -7450,7 +7451,7 @@ tffUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
             switch (alt45)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:704:5: atomicFormula[expr]
+        	    // ../../../../src/parser/tptp/Tptp.g:705:5: atomicFormula[expr]
         	    {
         	        FOLLOWPUSH(FOLLOW_atomicFormula_in_tffUnitaryFormula2046);
         	        atomicFormula(ctx, expr);
@@ -7465,7 +7466,7 @@ tffUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:705:5: LPAREN_TOK tffLogicFormula[expr] RPAREN_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:706:5: LPAREN_TOK tffLogicFormula[expr] RPAREN_TOK
         	    {
         	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_tffUnitaryFormula2053);
         	        if  (HASEXCEPTION())
@@ -7494,7 +7495,7 @@ tffUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:706:5: NOT_TOK tffUnitaryFormula[expr]
+        	    // ../../../../src/parser/tptp/Tptp.g:707:5: NOT_TOK tffUnitaryFormula[expr]
         	    {
         	         MATCHT(NOT_TOK, &FOLLOW_NOT_TOK_in_tffUnitaryFormula2064);
         	        if  (HASEXCEPTION())
@@ -7521,7 +7522,7 @@ tffUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:708:5: folQuantifier[kind] LBRACK_TOK ( tffbindvariable[expr] ( COMMA_TOK tffbindvariable[expr] )* ) RBRACK_TOK COLON_TOK tffUnitaryFormula[expr]
+        	    // ../../../../src/parser/tptp/Tptp.g:709:5: folQuantifier[kind] LBRACK_TOK ( tffbindvariable[expr] ( COMMA_TOK tffbindvariable[expr] )* ) RBRACK_TOK COLON_TOK tffUnitaryFormula[expr]
         	    {
         	        FOLLOWPUSH(FOLLOW_folQuantifier_in_tffUnitaryFormula2080);
         	        folQuantifier(ctx, kind);
@@ -7545,8 +7546,8 @@ tffUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
         	        }
 
 
-        	        // ../../../../../../src/parser/tptp/Tptp.g:709:5: ( tffbindvariable[expr] ( COMMA_TOK tffbindvariable[expr] )* )
-        	        // ../../../../../../src/parser/tptp/Tptp.g:709:7: tffbindvariable[expr] ( COMMA_TOK tffbindvariable[expr] )*
+        	        // ../../../../src/parser/tptp/Tptp.g:710:5: ( tffbindvariable[expr] ( COMMA_TOK tffbindvariable[expr] )* )
+        	        // ../../../../src/parser/tptp/Tptp.g:710:7: tffbindvariable[expr] ( COMMA_TOK tffbindvariable[expr] )*
         	        {
         	            FOLLOWPUSH(FOLLOW_tffbindvariable_in_tffUnitaryFormula2093);
         	            tffbindvariable(ctx, expr);
@@ -7563,7 +7564,7 @@ tffUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
         	            }
 
 
-        	            // ../../../../../../src/parser/tptp/Tptp.g:710:7: ( COMMA_TOK tffbindvariable[expr] )*
+        	            // ../../../../src/parser/tptp/Tptp.g:711:7: ( COMMA_TOK tffbindvariable[expr] )*
 
         	            for (;;)
         	            {
@@ -7581,7 +7582,7 @@ tffUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
         	                switch (alt44)
         	                {
         	            	case 1:
-        	            	    // ../../../../../../src/parser/tptp/Tptp.g:710:9: COMMA_TOK tffbindvariable[expr]
+        	            	    // ../../../../src/parser/tptp/Tptp.g:711:9: COMMA_TOK tffbindvariable[expr]
         	            	    {
         	            	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_tffUnitaryFormula2106);
         	            	        if  (HASEXCEPTION())
@@ -7653,7 +7654,7 @@ tffUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:715:5: '$ite_f' LPAREN_TOK tffLogicFormula[expr] COMMA_TOK tffLogicFormula[lhs] COMMA_TOK tffLogicFormula[rhs] RPAREN_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:716:5: '$ite_f' LPAREN_TOK tffLogicFormula[expr] COMMA_TOK tffLogicFormula[lhs] COMMA_TOK tffLogicFormula[rhs] RPAREN_TOK
         	    {
         	         MATCHT(64, &FOLLOW_64_in_tffUnitaryFormula2139);
         	        if  (HASEXCEPTION())
@@ -7728,7 +7729,7 @@ tffUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:717:5: '$let_tf' LPAREN_TOK tffLetTermDefn[lhs, rhs] COMMA_TOK tffFormula[expr] RPAREN_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:718:5: '$let_tf' LPAREN_TOK tffLetTermDefn[lhs, rhs] COMMA_TOK tffFormula[expr] RPAREN_TOK
         	    {
         	         MATCHT(70, &FOLLOW_70_in_tffUnitaryFormula2168);
         	        if  (HASEXCEPTION())
@@ -7793,7 +7794,7 @@ tffUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
         	    }
         	    break;
         	case 7:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:724:5: '$let_ff' LPAREN_TOK tffLetFormulaDefn[lhs, rhs] COMMA_TOK tffFormula[expr] RPAREN_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:725:5: '$let_ff' LPAREN_TOK tffLetFormulaDefn[lhs, rhs] COMMA_TOK tffFormula[expr] RPAREN_TOK
         	    {
         	         MATCHT(68, &FOLLOW_68_in_tffUnitaryFormula2206);
         	        if  (HASEXCEPTION())
@@ -7878,7 +7879,7 @@ tffUnitaryFormula(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start tffLetTermDefn
- * ../../../../../../src/parser/tptp/Tptp.g:733:1: tffLetTermDefn[CVC4::Expr& lhs, CVC4::Expr& rhs] : ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )* tffLetTermBinding[bvlist, lhs, rhs] ;
+ * ../../../../src/parser/tptp/Tptp.g:734:1: tffLetTermDefn[CVC4::Expr& lhs, CVC4::Expr& rhs] : ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )* tffLetTermBinding[bvlist, lhs, rhs] ;
  */
 static void
 tffLetTermDefn(pTptpParser ctx, CVC4::Expr& lhs, CVC4::Expr& rhs)
@@ -7890,10 +7891,10 @@ tffLetTermDefn(pTptpParser ctx, CVC4::Expr& lhs, CVC4::Expr& rhs)
      */
 
     {
-        // ../../../../../../src/parser/tptp/Tptp.g:737:3: ( ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )* tffLetTermBinding[bvlist, lhs, rhs] )
-        // ../../../../../../src/parser/tptp/Tptp.g:737:5: ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )* tffLetTermBinding[bvlist, lhs, rhs]
+        // ../../../../src/parser/tptp/Tptp.g:738:3: ( ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )* tffLetTermBinding[bvlist, lhs, rhs] )
+        // ../../../../src/parser/tptp/Tptp.g:738:5: ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )* tffLetTermBinding[bvlist, lhs, rhs]
         {
-            // ../../../../../../src/parser/tptp/Tptp.g:737:5: ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )*
+            // ../../../../src/parser/tptp/Tptp.g:738:5: ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )*
 
             for (;;)
             {
@@ -7911,7 +7912,7 @@ tffLetTermDefn(pTptpParser ctx, CVC4::Expr& lhs, CVC4::Expr& rhs)
                 switch (alt46)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/tptp/Tptp.g:737:6: BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK
+            	    // ../../../../src/parser/tptp/Tptp.g:738:6: BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK
             	    {
             	         MATCHT(BANG_TOK, &FOLLOW_BANG_TOK_in_tffLetTermDefn2258);
             	        if  (HASEXCEPTION())
@@ -7992,7 +7993,7 @@ tffLetTermDefn(pTptpParser ctx, CVC4::Expr& lhs, CVC4::Expr& rhs)
 
 /**
  * $ANTLR start tffLetTermBinding
- * ../../../../../../src/parser/tptp/Tptp.g:741:1: tffLetTermBinding[std::vector<CVC4::Expr>& bvlist, CVC4::Expr& lhs, CVC4::Expr& rhs] : ( term[lhs] EQUAL_TOK term[rhs] | LPAREN_TOK tffLetTermBinding[bvlist, lhs, rhs] RPAREN_TOK );
+ * ../../../../src/parser/tptp/Tptp.g:742:1: tffLetTermBinding[std::vector<CVC4::Expr>& bvlist, CVC4::Expr& lhs, CVC4::Expr& rhs] : ( term[lhs] EQUAL_TOK term[rhs] | LPAREN_TOK tffLetTermBinding[bvlist, lhs, rhs] RPAREN_TOK );
  */
 static void
 tffLetTermBinding(pTptpParser ctx, std::vector<CVC4::Expr>& bvlist, CVC4::Expr& lhs, CVC4::Expr& rhs)
@@ -8002,7 +8003,7 @@ tffLetTermBinding(pTptpParser ctx, std::vector<CVC4::Expr>& bvlist, CVC4::Expr&
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:742:3: ( term[lhs] EQUAL_TOK term[rhs] | LPAREN_TOK tffLetTermBinding[bvlist, lhs, rhs] RPAREN_TOK )
+            //  ../../../../src/parser/tptp/Tptp.g:743:3: ( term[lhs] EQUAL_TOK term[rhs] | LPAREN_TOK tffLetTermBinding[bvlist, lhs, rhs] RPAREN_TOK )
 
             ANTLR3_UINT32 alt47;
 
@@ -8068,7 +8069,7 @@ tffLetTermBinding(pTptpParser ctx, std::vector<CVC4::Expr>& bvlist, CVC4::Expr&
             switch (alt47)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:742:5: term[lhs] EQUAL_TOK term[rhs]
+        	    // ../../../../src/parser/tptp/Tptp.g:743:5: term[lhs] EQUAL_TOK term[rhs]
         	    {
         	        FOLLOWPUSH(FOLLOW_term_in_tffLetTermBinding2290);
         	        term(ctx, lhs);
@@ -8108,7 +8109,7 @@ tffLetTermBinding(pTptpParser ctx, std::vector<CVC4::Expr>& bvlist, CVC4::Expr&
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:747:5: LPAREN_TOK tffLetTermBinding[bvlist, lhs, rhs] RPAREN_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:748:5: LPAREN_TOK tffLetTermBinding[bvlist, lhs, rhs] RPAREN_TOK
         	    {
         	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_tffLetTermBinding2308);
         	        if  (HASEXCEPTION())
@@ -8157,7 +8158,7 @@ tffLetTermBinding(pTptpParser ctx, std::vector<CVC4::Expr>& bvlist, CVC4::Expr&
 
 /**
  * $ANTLR start tffLetFormulaDefn
- * ../../../../../../src/parser/tptp/Tptp.g:750:1: tffLetFormulaDefn[CVC4::Expr& lhs, CVC4::Expr& rhs] : ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )* tffLetFormulaBinding[bvlist, lhs, rhs] ;
+ * ../../../../src/parser/tptp/Tptp.g:751:1: tffLetFormulaDefn[CVC4::Expr& lhs, CVC4::Expr& rhs] : ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )* tffLetFormulaBinding[bvlist, lhs, rhs] ;
  */
 static void
 tffLetFormulaDefn(pTptpParser ctx, CVC4::Expr& lhs, CVC4::Expr& rhs)
@@ -8169,10 +8170,10 @@ tffLetFormulaDefn(pTptpParser ctx, CVC4::Expr& lhs, CVC4::Expr& rhs)
      */
 
     {
-        // ../../../../../../src/parser/tptp/Tptp.g:754:3: ( ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )* tffLetFormulaBinding[bvlist, lhs, rhs] )
-        // ../../../../../../src/parser/tptp/Tptp.g:754:5: ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )* tffLetFormulaBinding[bvlist, lhs, rhs]
+        // ../../../../src/parser/tptp/Tptp.g:755:3: ( ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )* tffLetFormulaBinding[bvlist, lhs, rhs] )
+        // ../../../../src/parser/tptp/Tptp.g:755:5: ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )* tffLetFormulaBinding[bvlist, lhs, rhs]
         {
-            // ../../../../../../src/parser/tptp/Tptp.g:754:5: ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )*
+            // ../../../../src/parser/tptp/Tptp.g:755:5: ( BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK )*
 
             for (;;)
             {
@@ -8190,7 +8191,7 @@ tffLetFormulaDefn(pTptpParser ctx, CVC4::Expr& lhs, CVC4::Expr& rhs)
                 switch (alt48)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/tptp/Tptp.g:754:6: BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK
+            	    // ../../../../src/parser/tptp/Tptp.g:755:6: BANG_TOK LBRACK_TOK tffVariableList[bvlist] RBRACK_TOK COLON_TOK
             	    {
             	         MATCHT(BANG_TOK, &FOLLOW_BANG_TOK_in_tffLetFormulaDefn2333);
             	        if  (HASEXCEPTION())
@@ -8271,7 +8272,7 @@ tffLetFormulaDefn(pTptpParser ctx, CVC4::Expr& lhs, CVC4::Expr& rhs)
 
 /**
  * $ANTLR start tffLetFormulaBinding
- * ../../../../../../src/parser/tptp/Tptp.g:758:1: tffLetFormulaBinding[std::vector<CVC4::Expr>& bvlist, CVC4::Expr& lhs, CVC4::Expr& rhs] : ( atomicFormula[lhs] IFF_TOK tffUnitaryFormula[rhs] | LPAREN_TOK tffLetFormulaBinding[bvlist, lhs, rhs] RPAREN_TOK );
+ * ../../../../src/parser/tptp/Tptp.g:759:1: tffLetFormulaBinding[std::vector<CVC4::Expr>& bvlist, CVC4::Expr& lhs, CVC4::Expr& rhs] : ( atomicFormula[lhs] IFF_TOK tffUnitaryFormula[rhs] | LPAREN_TOK tffLetFormulaBinding[bvlist, lhs, rhs] RPAREN_TOK );
  */
 static void
 tffLetFormulaBinding(pTptpParser ctx, std::vector<CVC4::Expr>& bvlist, CVC4::Expr& lhs, CVC4::Expr& rhs)
@@ -8281,7 +8282,7 @@ tffLetFormulaBinding(pTptpParser ctx, std::vector<CVC4::Expr>& bvlist, CVC4::Exp
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:759:3: ( atomicFormula[lhs] IFF_TOK tffUnitaryFormula[rhs] | LPAREN_TOK tffLetFormulaBinding[bvlist, lhs, rhs] RPAREN_TOK )
+            //  ../../../../src/parser/tptp/Tptp.g:760:3: ( atomicFormula[lhs] IFF_TOK tffUnitaryFormula[rhs] | LPAREN_TOK tffLetFormulaBinding[bvlist, lhs, rhs] RPAREN_TOK )
 
             ANTLR3_UINT32 alt49;
 
@@ -8356,7 +8357,7 @@ tffLetFormulaBinding(pTptpParser ctx, std::vector<CVC4::Expr>& bvlist, CVC4::Exp
             switch (alt49)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:759:5: atomicFormula[lhs] IFF_TOK tffUnitaryFormula[rhs]
+        	    // ../../../../src/parser/tptp/Tptp.g:760:5: atomicFormula[lhs] IFF_TOK tffUnitaryFormula[rhs]
         	    {
         	        FOLLOWPUSH(FOLLOW_atomicFormula_in_tffLetFormulaBinding2365);
         	        atomicFormula(ctx, lhs);
@@ -8396,7 +8397,7 @@ tffLetFormulaBinding(pTptpParser ctx, std::vector<CVC4::Expr>& bvlist, CVC4::Exp
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:764:5: LPAREN_TOK tffLetFormulaBinding[bvlist, lhs, rhs] RPAREN_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:765:5: LPAREN_TOK tffLetFormulaBinding[bvlist, lhs, rhs] RPAREN_TOK
         	    {
         	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_tffLetFormulaBinding2383);
         	        if  (HASEXCEPTION())
@@ -8445,7 +8446,7 @@ tffLetFormulaBinding(pTptpParser ctx, std::vector<CVC4::Expr>& bvlist, CVC4::Exp
 
 /**
  * $ANTLR start tffbindvariable
- * ../../../../../../src/parser/tptp/Tptp.g:767:1: tffbindvariable[CVC4::Expr& expr] : UPPER_WORD ( COLON_TOK parseType[type] )? ;
+ * ../../../../src/parser/tptp/Tptp.g:768:1: tffbindvariable[CVC4::Expr& expr] : UPPER_WORD ( COLON_TOK parseType[type] )? ;
  */
 static void
 tffbindvariable(pTptpParser ctx, CVC4::Expr& expr)
@@ -8461,8 +8462,8 @@ tffbindvariable(pTptpParser ctx, CVC4::Expr& expr)
     UPPER_WORD5       = NULL;
 
     {
-        // ../../../../../../src/parser/tptp/Tptp.g:771:3: ( UPPER_WORD ( COLON_TOK parseType[type] )? )
-        // ../../../../../../src/parser/tptp/Tptp.g:771:5: UPPER_WORD ( COLON_TOK parseType[type] )?
+        // ../../../../src/parser/tptp/Tptp.g:772:3: ( UPPER_WORD ( COLON_TOK parseType[type] )? )
+        // ../../../../src/parser/tptp/Tptp.g:772:5: UPPER_WORD ( COLON_TOK parseType[type] )?
         {
             UPPER_WORD5 = (pANTLR3_COMMON_TOKEN) MATCHT(UPPER_WORD, &FOLLOW_UPPER_WORD_in_tffbindvariable2407);
             if  (HASEXCEPTION())
@@ -8471,7 +8472,7 @@ tffbindvariable(pTptpParser ctx, CVC4::Expr& expr)
             }
 
 
-            // ../../../../../../src/parser/tptp/Tptp.g:772:5: ( COLON_TOK parseType[type] )?
+            // ../../../../src/parser/tptp/Tptp.g:773:5: ( COLON_TOK parseType[type] )?
             {
                 int alt50=2;
                 switch ( LA(1) )
@@ -8486,7 +8487,7 @@ tffbindvariable(pTptpParser ctx, CVC4::Expr& expr)
                 switch (alt50)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/tptp/Tptp.g:772:7: COLON_TOK parseType[type]
+            	    // ../../../../src/parser/tptp/Tptp.g:773:7: COLON_TOK parseType[type]
             	    {
             	         MATCHT(COLON_TOK, &FOLLOW_COLON_TOK_in_tffbindvariable2415);
             	        if  (HASEXCEPTION())
@@ -8538,7 +8539,7 @@ tffbindvariable(pTptpParser ctx, CVC4::Expr& expr)
 
 /**
  * $ANTLR start tffVariableList
- * ../../../../../../src/parser/tptp/Tptp.g:780:1: tffVariableList[std::vector<CVC4::Expr>& bvlist] : tffbindvariable[e] ( COMMA_TOK tffbindvariable[e] )* ;
+ * ../../../../src/parser/tptp/Tptp.g:781:1: tffVariableList[std::vector<CVC4::Expr>& bvlist] : tffbindvariable[e] ( COMMA_TOK tffbindvariable[e] )* ;
  */
 static void
 tffVariableList(pTptpParser ctx, std::vector<CVC4::Expr>& bvlist)
@@ -8550,8 +8551,8 @@ tffVariableList(pTptpParser ctx, std::vector<CVC4::Expr>& bvlist)
      */
 
     {
-        // ../../../../../../src/parser/tptp/Tptp.g:784:3: ( tffbindvariable[e] ( COMMA_TOK tffbindvariable[e] )* )
-        // ../../../../../../src/parser/tptp/Tptp.g:784:5: tffbindvariable[e] ( COMMA_TOK tffbindvariable[e] )*
+        // ../../../../src/parser/tptp/Tptp.g:785:3: ( tffbindvariable[e] ( COMMA_TOK tffbindvariable[e] )* )
+        // ../../../../src/parser/tptp/Tptp.g:785:5: tffbindvariable[e] ( COMMA_TOK tffbindvariable[e] )*
         {
             FOLLOWPUSH(FOLLOW_tffbindvariable_in_tffVariableList2448);
             tffbindvariable(ctx, e);
@@ -8568,7 +8569,7 @@ tffVariableList(pTptpParser ctx, std::vector<CVC4::Expr>& bvlist)
             }
 
 
-            // ../../../../../../src/parser/tptp/Tptp.g:785:5: ( COMMA_TOK tffbindvariable[e] )*
+            // ../../../../src/parser/tptp/Tptp.g:786:5: ( COMMA_TOK tffbindvariable[e] )*
 
             for (;;)
             {
@@ -8586,7 +8587,7 @@ tffVariableList(pTptpParser ctx, std::vector<CVC4::Expr>& bvlist)
                 switch (alt51)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/tptp/Tptp.g:785:7: COMMA_TOK tffbindvariable[e]
+            	    // ../../../../src/parser/tptp/Tptp.g:786:7: COMMA_TOK tffbindvariable[e]
             	    {
             	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_tffVariableList2459);
             	        if  (HASEXCEPTION())
@@ -8641,7 +8642,7 @@ tffVariableList(pTptpParser ctx, std::vector<CVC4::Expr>& bvlist)
 
 /**
  * $ANTLR start parseType
- * ../../../../../../src/parser/tptp/Tptp.g:788:1: parseType[CVC4::Type& type] : ( simpleType[type] | ( simpleType[type] | LPAREN_TOK simpleType[type] ( TIMES_TOK simpleType[type] )+ RPAREN_TOK ) GREATER_TOK simpleType[type] );
+ * ../../../../src/parser/tptp/Tptp.g:789:1: parseType[CVC4::Type& type] : ( simpleType[type] | ( simpleType[type] | LPAREN_TOK simpleType[type] ( TIMES_TOK simpleType[type] )+ RPAREN_TOK ) GREATER_TOK simpleType[type] );
  */
 static void
 parseType(pTptpParser ctx, CVC4::Type& type)
@@ -8654,7 +8655,7 @@ parseType(pTptpParser ctx, CVC4::Type& type)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:792:3: ( simpleType[type] | ( simpleType[type] | LPAREN_TOK simpleType[type] ( TIMES_TOK simpleType[type] )+ RPAREN_TOK ) GREATER_TOK simpleType[type] )
+            //  ../../../../src/parser/tptp/Tptp.g:793:3: ( simpleType[type] | ( simpleType[type] | LPAREN_TOK simpleType[type] ( TIMES_TOK simpleType[type] )+ RPAREN_TOK ) GREATER_TOK simpleType[type] )
 
             ANTLR3_UINT32 alt54;
 
@@ -8993,7 +8994,7 @@ parseType(pTptpParser ctx, CVC4::Type& type)
             switch (alt54)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:792:5: simpleType[type]
+        	    // ../../../../src/parser/tptp/Tptp.g:793:5: simpleType[type]
         	    {
         	        FOLLOWPUSH(FOLLOW_simpleType_in_parseType2486);
         	        simpleType(ctx, type);
@@ -9008,9 +9009,9 @@ parseType(pTptpParser ctx, CVC4::Type& type)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:793:5: ( simpleType[type] | LPAREN_TOK simpleType[type] ( TIMES_TOK simpleType[type] )+ RPAREN_TOK ) GREATER_TOK simpleType[type]
+        	    // ../../../../src/parser/tptp/Tptp.g:794:5: ( simpleType[type] | LPAREN_TOK simpleType[type] ( TIMES_TOK simpleType[type] )+ RPAREN_TOK ) GREATER_TOK simpleType[type]
         	    {
-        	        // ../../../../../../src/parser/tptp/Tptp.g:793:5: ( simpleType[type] | LPAREN_TOK simpleType[type] ( TIMES_TOK simpleType[type] )+ RPAREN_TOK )
+        	        // ../../../../src/parser/tptp/Tptp.g:794:5: ( simpleType[type] | LPAREN_TOK simpleType[type] ( TIMES_TOK simpleType[type] )+ RPAREN_TOK )
         	        {
         	            int alt53=2;
         	            switch ( LA(1) )
@@ -9050,7 +9051,7 @@ parseType(pTptpParser ctx, CVC4::Type& type)
         	            switch (alt53)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:793:7: simpleType[type]
+        	        	    // ../../../../src/parser/tptp/Tptp.g:794:7: simpleType[type]
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_simpleType_in_parseType2495);
         	        	        simpleType(ctx, type);
@@ -9070,7 +9071,7 @@ parseType(pTptpParser ctx, CVC4::Type& type)
         	        	    }
         	        	    break;
         	        	case 2:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:794:7: LPAREN_TOK simpleType[type] ( TIMES_TOK simpleType[type] )+ RPAREN_TOK
+        	        	    // ../../../../src/parser/tptp/Tptp.g:795:7: LPAREN_TOK simpleType[type] ( TIMES_TOK simpleType[type] )+ RPAREN_TOK
         	        	    {
         	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_parseType2506);
         	        	        if  (HASEXCEPTION())
@@ -9094,7 +9095,7 @@ parseType(pTptpParser ctx, CVC4::Type& type)
         	        	        }
 
 
-        	        	        // ../../../../../../src/parser/tptp/Tptp.g:795:7: ( TIMES_TOK simpleType[type] )+
+        	        	        // ../../../../src/parser/tptp/Tptp.g:796:7: ( TIMES_TOK simpleType[type] )+
         	        	        {
         	        	            int cnt52=0;
 
@@ -9114,7 +9115,7 @@ parseType(pTptpParser ctx, CVC4::Type& type)
         	        	        	switch (alt52)
         	        	        	{
         	        	        	    case 1:
-        	        	        	        // ../../../../../../src/parser/tptp/Tptp.g:795:9: TIMES_TOK simpleType[type]
+        	        	        	        // ../../../../src/parser/tptp/Tptp.g:796:9: TIMES_TOK simpleType[type]
         	        	        	        {
         	        	        	             MATCHT(TIMES_TOK, &FOLLOW_TIMES_TOK_in_parseType2521);
         	        	        	            if  (HASEXCEPTION())
@@ -9221,7 +9222,7 @@ parseType(pTptpParser ctx, CVC4::Type& type)
 
 /**
  * $ANTLR start simpleType
- * ../../../../../../src/parser/tptp/Tptp.g:805:1: simpleType[CVC4::Type& type] : ( DEFINED_SYMBOL | atomicWord[name] );
+ * ../../../../src/parser/tptp/Tptp.g:806:1: simpleType[CVC4::Type& type] : ( DEFINED_SYMBOL | atomicWord[name] );
  */
 static void
 simpleType(pTptpParser ctx, CVC4::Type& type)
@@ -9238,7 +9239,7 @@ simpleType(pTptpParser ctx, CVC4::Type& type)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:809:3: ( DEFINED_SYMBOL | atomicWord[name] )
+            //  ../../../../src/parser/tptp/Tptp.g:810:3: ( DEFINED_SYMBOL | atomicWord[name] )
 
             ANTLR3_UINT32 alt55;
 
@@ -9280,7 +9281,7 @@ simpleType(pTptpParser ctx, CVC4::Type& type)
             switch (alt55)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:809:5: DEFINED_SYMBOL
+        	    // ../../../../src/parser/tptp/Tptp.g:810:5: DEFINED_SYMBOL
         	    {
         	        DEFINED_SYMBOL6 = (pANTLR3_COMMON_TOKEN) MATCHT(DEFINED_SYMBOL, &FOLLOW_DEFINED_SYMBOL_in_simpleType2578);
         	        if  (HASEXCEPTION())
@@ -9305,7 +9306,7 @@ simpleType(pTptpParser ctx, CVC4::Type& type)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:819:5: atomicWord[name]
+        	    // ../../../../src/parser/tptp/Tptp.g:820:5: atomicWord[name]
         	    {
         	        FOLLOWPUSH(FOLLOW_atomicWord_in_simpleType2590);
         	        atomicWord(ctx, name);
@@ -9345,7 +9346,7 @@ simpleType(pTptpParser ctx, CVC4::Type& type)
 
 /**
  * $ANTLR start anything
- * ../../../../../../src/parser/tptp/Tptp.g:826:1: anything : ( LPAREN_TOK ( anything )* RPAREN_TOK | LBRACK_TOK ( anything )* RBRACK_TOK | COMMA_TOK | DOT_TOK | COLON_TOK | OR_TOK | NOT_TOK | BANG_TOK | MARK_TOK | AND_TOK | IFF_TOK | IMPLIES_TOK | REVIMPLIES_TOK | REVIFF_TOK | REVOR_TOK | REVAND_TOK | TIMES_TOK | PLUS_TOK | MINUS_TOK | TRUE_TOK | FALSE_TOK | EQUAL_TOK | DISEQUAL_TOK | CNF_TOK | FOF_TOK | THF_TOK | TFF_TOK | TYPE_TOK | INCLUDE_TOK | DISTINCT_OBJECT | UPPER_WORD | LOWER_W [...]
+ * ../../../../src/parser/tptp/Tptp.g:827:1: anything : ( LPAREN_TOK ( anything )* RPAREN_TOK | LBRACK_TOK ( anything )* RBRACK_TOK | COMMA_TOK | DOT_TOK | COLON_TOK | OR_TOK | NOT_TOK | BANG_TOK | MARK_TOK | AND_TOK | IFF_TOK | IMPLIES_TOK | REVIMPLIES_TOK | REVIFF_TOK | REVOR_TOK | REVAND_TOK | TIMES_TOK | PLUS_TOK | MINUS_TOK | TRUE_TOK | FALSE_TOK | EQUAL_TOK | DISEQUAL_TOK | CNF_TOK | FOF_TOK | THF_TOK | TFF_TOK | TYPE_TOK | INCLUDE_TOK | DISTINCT_OBJECT | UPPER_WORD | LOWER_WORD |  [...]
  */
 static void
 anything(pTptpParser ctx)
@@ -9355,7 +9356,7 @@ anything(pTptpParser ctx)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:827:3: ( LPAREN_TOK ( anything )* RPAREN_TOK | LBRACK_TOK ( anything )* RBRACK_TOK | COMMA_TOK | DOT_TOK | COLON_TOK | OR_TOK | NOT_TOK | BANG_TOK | MARK_TOK | AND_TOK | IFF_TOK | IMPLIES_TOK | REVIMPLIES_TOK | REVIFF_TOK | REVOR_TOK | REVAND_TOK | TIMES_TOK | PLUS_TOK | MINUS_TOK | TRUE_TOK | FALSE_TOK | EQUAL_TOK | DISEQUAL_TOK | CNF_TOK | FOF_TOK | THF_TOK | TFF_TOK | TYPE_TOK | INCLUDE_TOK | DISTINCT_OBJECT | UPPER_WORD | LOWER [...]
+            //  ../../../../src/parser/tptp/Tptp.g:828:3: ( LPAREN_TOK ( anything )* RPAREN_TOK | LBRACK_TOK ( anything )* RBRACK_TOK | COMMA_TOK | DOT_TOK | COLON_TOK | OR_TOK | NOT_TOK | BANG_TOK | MARK_TOK | AND_TOK | IFF_TOK | IMPLIES_TOK | REVIMPLIES_TOK | REVIFF_TOK | REVOR_TOK | REVAND_TOK | TIMES_TOK | PLUS_TOK | MINUS_TOK | TRUE_TOK | FALSE_TOK | EQUAL_TOK | DISEQUAL_TOK | CNF_TOK | FOF_TOK | THF_TOK | TFF_TOK | TYPE_TOK | INCLUDE_TOK | DISTINCT_OBJECT | UPPER_WORD | LOWER_WORD  [...]
 
             ANTLR3_UINT32 alt58;
 
@@ -9559,7 +9560,7 @@ anything(pTptpParser ctx)
             switch (alt58)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:827:5: LPAREN_TOK ( anything )* RPAREN_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:828:5: LPAREN_TOK ( anything )* RPAREN_TOK
         	    {
         	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_anything2615);
         	        if  (HASEXCEPTION())
@@ -9568,7 +9569,7 @@ anything(pTptpParser ctx)
         	        }
 
 
-        	        // ../../../../../../src/parser/tptp/Tptp.g:827:16: ( anything )*
+        	        // ../../../../src/parser/tptp/Tptp.g:828:16: ( anything )*
 
         	        for (;;)
         	        {
@@ -9621,7 +9622,7 @@ anything(pTptpParser ctx)
         	            switch (alt56)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:827:16: anything
+        	        	    // ../../../../src/parser/tptp/Tptp.g:828:16: anything
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_anything_in_anything2617);
         	        	        anything(ctx);
@@ -9654,7 +9655,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:828:5: LBRACK_TOK ( anything )* RBRACK_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:829:5: LBRACK_TOK ( anything )* RBRACK_TOK
         	    {
         	         MATCHT(LBRACK_TOK, &FOLLOW_LBRACK_TOK_in_anything2626);
         	        if  (HASEXCEPTION())
@@ -9663,7 +9664,7 @@ anything(pTptpParser ctx)
         	        }
 
 
-        	        // ../../../../../../src/parser/tptp/Tptp.g:828:16: ( anything )*
+        	        // ../../../../src/parser/tptp/Tptp.g:829:16: ( anything )*
 
         	        for (;;)
         	        {
@@ -9716,7 +9717,7 @@ anything(pTptpParser ctx)
         	            switch (alt57)
         	            {
         	        	case 1:
-        	        	    // ../../../../../../src/parser/tptp/Tptp.g:828:16: anything
+        	        	    // ../../../../src/parser/tptp/Tptp.g:829:16: anything
         	        	    {
         	        	        FOLLOWPUSH(FOLLOW_anything_in_anything2628);
         	        	        anything(ctx);
@@ -9749,7 +9750,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:829:5: COMMA_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:830:5: COMMA_TOK
         	    {
         	         MATCHT(COMMA_TOK, &FOLLOW_COMMA_TOK_in_anything2637);
         	        if  (HASEXCEPTION())
@@ -9761,7 +9762,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:830:5: DOT_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:831:5: DOT_TOK
         	    {
         	         MATCHT(DOT_TOK, &FOLLOW_DOT_TOK_in_anything2643);
         	        if  (HASEXCEPTION())
@@ -9773,7 +9774,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:831:5: COLON_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:832:5: COLON_TOK
         	    {
         	         MATCHT(COLON_TOK, &FOLLOW_COLON_TOK_in_anything2649);
         	        if  (HASEXCEPTION())
@@ -9785,7 +9786,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:832:5: OR_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:833:5: OR_TOK
         	    {
         	         MATCHT(OR_TOK, &FOLLOW_OR_TOK_in_anything2655);
         	        if  (HASEXCEPTION())
@@ -9797,7 +9798,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 7:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:833:5: NOT_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:834:5: NOT_TOK
         	    {
         	         MATCHT(NOT_TOK, &FOLLOW_NOT_TOK_in_anything2661);
         	        if  (HASEXCEPTION())
@@ -9809,7 +9810,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 8:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:834:5: BANG_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:835:5: BANG_TOK
         	    {
         	         MATCHT(BANG_TOK, &FOLLOW_BANG_TOK_in_anything2667);
         	        if  (HASEXCEPTION())
@@ -9821,7 +9822,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 9:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:835:5: MARK_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:836:5: MARK_TOK
         	    {
         	         MATCHT(MARK_TOK, &FOLLOW_MARK_TOK_in_anything2673);
         	        if  (HASEXCEPTION())
@@ -9833,7 +9834,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 10:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:836:5: AND_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:837:5: AND_TOK
         	    {
         	         MATCHT(AND_TOK, &FOLLOW_AND_TOK_in_anything2679);
         	        if  (HASEXCEPTION())
@@ -9845,7 +9846,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 11:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:837:5: IFF_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:838:5: IFF_TOK
         	    {
         	         MATCHT(IFF_TOK, &FOLLOW_IFF_TOK_in_anything2685);
         	        if  (HASEXCEPTION())
@@ -9857,7 +9858,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 12:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:838:5: IMPLIES_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:839:5: IMPLIES_TOK
         	    {
         	         MATCHT(IMPLIES_TOK, &FOLLOW_IMPLIES_TOK_in_anything2691);
         	        if  (HASEXCEPTION())
@@ -9869,7 +9870,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 13:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:839:5: REVIMPLIES_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:840:5: REVIMPLIES_TOK
         	    {
         	         MATCHT(REVIMPLIES_TOK, &FOLLOW_REVIMPLIES_TOK_in_anything2697);
         	        if  (HASEXCEPTION())
@@ -9881,7 +9882,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 14:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:840:5: REVIFF_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:841:5: REVIFF_TOK
         	    {
         	         MATCHT(REVIFF_TOK, &FOLLOW_REVIFF_TOK_in_anything2703);
         	        if  (HASEXCEPTION())
@@ -9893,7 +9894,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 15:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:841:5: REVOR_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:842:5: REVOR_TOK
         	    {
         	         MATCHT(REVOR_TOK, &FOLLOW_REVOR_TOK_in_anything2709);
         	        if  (HASEXCEPTION())
@@ -9905,7 +9906,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 16:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:842:5: REVAND_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:843:5: REVAND_TOK
         	    {
         	         MATCHT(REVAND_TOK, &FOLLOW_REVAND_TOK_in_anything2715);
         	        if  (HASEXCEPTION())
@@ -9917,7 +9918,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 17:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:843:5: TIMES_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:844:5: TIMES_TOK
         	    {
         	         MATCHT(TIMES_TOK, &FOLLOW_TIMES_TOK_in_anything2721);
         	        if  (HASEXCEPTION())
@@ -9929,7 +9930,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 18:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:844:5: PLUS_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:845:5: PLUS_TOK
         	    {
         	         MATCHT(PLUS_TOK, &FOLLOW_PLUS_TOK_in_anything2727);
         	        if  (HASEXCEPTION())
@@ -9941,7 +9942,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 19:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:845:5: MINUS_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:846:5: MINUS_TOK
         	    {
         	         MATCHT(MINUS_TOK, &FOLLOW_MINUS_TOK_in_anything2733);
         	        if  (HASEXCEPTION())
@@ -9953,7 +9954,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 20:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:846:5: TRUE_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:847:5: TRUE_TOK
         	    {
         	         MATCHT(TRUE_TOK, &FOLLOW_TRUE_TOK_in_anything2739);
         	        if  (HASEXCEPTION())
@@ -9965,7 +9966,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 21:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:847:5: FALSE_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:848:5: FALSE_TOK
         	    {
         	         MATCHT(FALSE_TOK, &FOLLOW_FALSE_TOK_in_anything2745);
         	        if  (HASEXCEPTION())
@@ -9977,7 +9978,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 22:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:848:5: EQUAL_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:849:5: EQUAL_TOK
         	    {
         	         MATCHT(EQUAL_TOK, &FOLLOW_EQUAL_TOK_in_anything2751);
         	        if  (HASEXCEPTION())
@@ -9989,7 +9990,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 23:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:849:5: DISEQUAL_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:850:5: DISEQUAL_TOK
         	    {
         	         MATCHT(DISEQUAL_TOK, &FOLLOW_DISEQUAL_TOK_in_anything2757);
         	        if  (HASEXCEPTION())
@@ -10001,7 +10002,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 24:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:850:5: CNF_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:851:5: CNF_TOK
         	    {
         	         MATCHT(CNF_TOK, &FOLLOW_CNF_TOK_in_anything2763);
         	        if  (HASEXCEPTION())
@@ -10013,7 +10014,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 25:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:851:5: FOF_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:852:5: FOF_TOK
         	    {
         	         MATCHT(FOF_TOK, &FOLLOW_FOF_TOK_in_anything2769);
         	        if  (HASEXCEPTION())
@@ -10025,7 +10026,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 26:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:852:5: THF_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:853:5: THF_TOK
         	    {
         	         MATCHT(THF_TOK, &FOLLOW_THF_TOK_in_anything2775);
         	        if  (HASEXCEPTION())
@@ -10037,7 +10038,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 27:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:853:5: TFF_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:854:5: TFF_TOK
         	    {
         	         MATCHT(TFF_TOK, &FOLLOW_TFF_TOK_in_anything2781);
         	        if  (HASEXCEPTION())
@@ -10049,7 +10050,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 28:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:854:5: TYPE_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:855:5: TYPE_TOK
         	    {
         	         MATCHT(TYPE_TOK, &FOLLOW_TYPE_TOK_in_anything2787);
         	        if  (HASEXCEPTION())
@@ -10061,7 +10062,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 29:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:855:5: INCLUDE_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:856:5: INCLUDE_TOK
         	    {
         	         MATCHT(INCLUDE_TOK, &FOLLOW_INCLUDE_TOK_in_anything2793);
         	        if  (HASEXCEPTION())
@@ -10073,7 +10074,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 30:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:856:5: DISTINCT_OBJECT
+        	    // ../../../../src/parser/tptp/Tptp.g:857:5: DISTINCT_OBJECT
         	    {
         	         MATCHT(DISTINCT_OBJECT, &FOLLOW_DISTINCT_OBJECT_in_anything2799);
         	        if  (HASEXCEPTION())
@@ -10085,7 +10086,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 31:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:857:5: UPPER_WORD
+        	    // ../../../../src/parser/tptp/Tptp.g:858:5: UPPER_WORD
         	    {
         	         MATCHT(UPPER_WORD, &FOLLOW_UPPER_WORD_in_anything2805);
         	        if  (HASEXCEPTION())
@@ -10097,7 +10098,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 32:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:858:5: LOWER_WORD
+        	    // ../../../../src/parser/tptp/Tptp.g:859:5: LOWER_WORD
         	    {
         	         MATCHT(LOWER_WORD, &FOLLOW_LOWER_WORD_in_anything2811);
         	        if  (HASEXCEPTION())
@@ -10109,7 +10110,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 33:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:859:5: LOWER_WORD_SINGLE_QUOTED
+        	    // ../../../../src/parser/tptp/Tptp.g:860:5: LOWER_WORD_SINGLE_QUOTED
         	    {
         	         MATCHT(LOWER_WORD_SINGLE_QUOTED, &FOLLOW_LOWER_WORD_SINGLE_QUOTED_in_anything2817);
         	        if  (HASEXCEPTION())
@@ -10121,7 +10122,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 34:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:860:5: SINGLE_QUOTED
+        	    // ../../../../src/parser/tptp/Tptp.g:861:5: SINGLE_QUOTED
         	    {
         	         MATCHT(SINGLE_QUOTED, &FOLLOW_SINGLE_QUOTED_in_anything2823);
         	        if  (HASEXCEPTION())
@@ -10133,7 +10134,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 35:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:861:5: NUMBER
+        	    // ../../../../src/parser/tptp/Tptp.g:862:5: NUMBER
         	    {
         	         MATCHT(NUMBER, &FOLLOW_NUMBER_in_anything2829);
         	        if  (HASEXCEPTION())
@@ -10145,7 +10146,7 @@ anything(pTptpParser ctx)
         	    }
         	    break;
         	case 36:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:862:5: DEFINED_SYMBOL
+        	    // ../../../../src/parser/tptp/Tptp.g:863:5: DEFINED_SYMBOL
         	    {
         	         MATCHT(DEFINED_SYMBOL, &FOLLOW_DEFINED_SYMBOL_in_anything2835);
         	        if  (HASEXCEPTION())
@@ -10177,7 +10178,7 @@ anything(pTptpParser ctx)
 
 /**
  * $ANTLR start unquotedFileName
- * ../../../../../../src/parser/tptp/Tptp.g:944:1: unquotedFileName[std::string& name] : (s= LOWER_WORD_SINGLE_QUOTED |s= SINGLE_QUOTED ) ;
+ * ../../../../src/parser/tptp/Tptp.g:945:1: unquotedFileName[std::string& name] : (s= LOWER_WORD_SINGLE_QUOTED |s= SINGLE_QUOTED ) ;
  */
 static void
 unquotedFileName(pTptpParser ctx, std::string& name)
@@ -10190,10 +10191,10 @@ unquotedFileName(pTptpParser ctx, std::string& name)
     s       = NULL;
 
     {
-        // ../../../../../../src/parser/tptp/Tptp.g:945:2: ( (s= LOWER_WORD_SINGLE_QUOTED |s= SINGLE_QUOTED ) )
-        // ../../../../../../src/parser/tptp/Tptp.g:945:4: (s= LOWER_WORD_SINGLE_QUOTED |s= SINGLE_QUOTED )
+        // ../../../../src/parser/tptp/Tptp.g:946:2: ( (s= LOWER_WORD_SINGLE_QUOTED |s= SINGLE_QUOTED ) )
+        // ../../../../src/parser/tptp/Tptp.g:946:4: (s= LOWER_WORD_SINGLE_QUOTED |s= SINGLE_QUOTED )
         {
-            // ../../../../../../src/parser/tptp/Tptp.g:945:4: (s= LOWER_WORD_SINGLE_QUOTED |s= SINGLE_QUOTED )
+            // ../../../../src/parser/tptp/Tptp.g:946:4: (s= LOWER_WORD_SINGLE_QUOTED |s= SINGLE_QUOTED )
             {
                 int alt59=2;
                 switch ( LA(1) )
@@ -10224,7 +10225,7 @@ unquotedFileName(pTptpParser ctx, std::string& name)
                 switch (alt59)
                 {
             	case 1:
-            	    // ../../../../../../src/parser/tptp/Tptp.g:945:5: s= LOWER_WORD_SINGLE_QUOTED
+            	    // ../../../../src/parser/tptp/Tptp.g:946:5: s= LOWER_WORD_SINGLE_QUOTED
             	    {
             	        s = (pANTLR3_COMMON_TOKEN) MATCHT(LOWER_WORD_SINGLE_QUOTED, &FOLLOW_LOWER_WORD_SINGLE_QUOTED_in_unquotedFileName3414);
             	        if  (HASEXCEPTION())
@@ -10236,7 +10237,7 @@ unquotedFileName(pTptpParser ctx, std::string& name)
             	    }
             	    break;
             	case 2:
-            	    // ../../../../../../src/parser/tptp/Tptp.g:945:34: s= SINGLE_QUOTED
+            	    // ../../../../src/parser/tptp/Tptp.g:946:34: s= SINGLE_QUOTED
             	    {
             	        s = (pANTLR3_COMMON_TOKEN) MATCHT(SINGLE_QUOTED, &FOLLOW_SINGLE_QUOTED_in_unquotedFileName3420);
             	        if  (HASEXCEPTION())
@@ -10278,7 +10279,7 @@ unquotedFileName(pTptpParser ctx, std::string& name)
 
 /**
  * $ANTLR start nameN
- * ../../../../../../src/parser/tptp/Tptp.g:951:1: nameN[std::string& name] : ( atomicWord[name] | NUMBER );
+ * ../../../../src/parser/tptp/Tptp.g:952:1: nameN[std::string& name] : ( atomicWord[name] | NUMBER );
  */
 static void
 nameN(pTptpParser ctx, std::string& name)
@@ -10292,7 +10293,7 @@ nameN(pTptpParser ctx, std::string& name)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:952:2: ( atomicWord[name] | NUMBER )
+            //  ../../../../src/parser/tptp/Tptp.g:953:2: ( atomicWord[name] | NUMBER )
 
             ANTLR3_UINT32 alt60;
 
@@ -10334,7 +10335,7 @@ nameN(pTptpParser ctx, std::string& name)
             switch (alt60)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:952:4: atomicWord[name]
+        	    // ../../../../src/parser/tptp/Tptp.g:953:4: atomicWord[name]
         	    {
         	        FOLLOWPUSH(FOLLOW_atomicWord_in_nameN3439);
         	        atomicWord(ctx, name);
@@ -10349,7 +10350,7 @@ nameN(pTptpParser ctx, std::string& name)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:953:4: NUMBER
+        	    // ../../../../src/parser/tptp/Tptp.g:954:4: NUMBER
         	    {
         	        NUMBER7 = (pANTLR3_COMMON_TOKEN) MATCHT(NUMBER, &FOLLOW_NUMBER_in_nameN3445);
         	        if  (HASEXCEPTION())
@@ -10386,7 +10387,7 @@ nameN(pTptpParser ctx, std::string& name)
 
 /**
  * $ANTLR start atomicWord
- * ../../../../../../src/parser/tptp/Tptp.g:957:1: atomicWord[std::string& name] : ( FOF_TOK | CNF_TOK | THF_TOK | TFF_TOK | TYPE_TOK | INCLUDE_TOK | LOWER_WORD | LOWER_WORD_SINGLE_QUOTED | SINGLE_QUOTED );
+ * ../../../../src/parser/tptp/Tptp.g:958:1: atomicWord[std::string& name] : ( FOF_TOK | CNF_TOK | THF_TOK | TFF_TOK | TYPE_TOK | INCLUDE_TOK | LOWER_WORD | LOWER_WORD_SINGLE_QUOTED | SINGLE_QUOTED );
  */
 static void
 atomicWord(pTptpParser ctx, std::string& name)
@@ -10404,7 +10405,7 @@ atomicWord(pTptpParser ctx, std::string& name)
 
     {
         {
-            //  ../../../../../../src/parser/tptp/Tptp.g:958:2: ( FOF_TOK | CNF_TOK | THF_TOK | TFF_TOK | TYPE_TOK | INCLUDE_TOK | LOWER_WORD | LOWER_WORD_SINGLE_QUOTED | SINGLE_QUOTED )
+            //  ../../../../src/parser/tptp/Tptp.g:959:2: ( FOF_TOK | CNF_TOK | THF_TOK | TFF_TOK | TYPE_TOK | INCLUDE_TOK | LOWER_WORD | LOWER_WORD_SINGLE_QUOTED | SINGLE_QUOTED )
 
             ANTLR3_UINT32 alt61;
 
@@ -10473,7 +10474,7 @@ atomicWord(pTptpParser ctx, std::string& name)
             switch (alt61)
             {
         	case 1:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:958:4: FOF_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:959:4: FOF_TOK
         	    {
         	         MATCHT(FOF_TOK, &FOLLOW_FOF_TOK_in_atomicWord3461);
         	        if  (HASEXCEPTION())
@@ -10490,7 +10491,7 @@ atomicWord(pTptpParser ctx, std::string& name)
         	    }
         	    break;
         	case 2:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:959:4: CNF_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:960:4: CNF_TOK
         	    {
         	         MATCHT(CNF_TOK, &FOLLOW_CNF_TOK_in_atomicWord3472);
         	        if  (HASEXCEPTION())
@@ -10507,7 +10508,7 @@ atomicWord(pTptpParser ctx, std::string& name)
         	    }
         	    break;
         	case 3:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:960:4: THF_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:961:4: THF_TOK
         	    {
         	         MATCHT(THF_TOK, &FOLLOW_THF_TOK_in_atomicWord3483);
         	        if  (HASEXCEPTION())
@@ -10524,7 +10525,7 @@ atomicWord(pTptpParser ctx, std::string& name)
         	    }
         	    break;
         	case 4:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:961:4: TFF_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:962:4: TFF_TOK
         	    {
         	         MATCHT(TFF_TOK, &FOLLOW_TFF_TOK_in_atomicWord3494);
         	        if  (HASEXCEPTION())
@@ -10541,7 +10542,7 @@ atomicWord(pTptpParser ctx, std::string& name)
         	    }
         	    break;
         	case 5:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:962:4: TYPE_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:963:4: TYPE_TOK
         	    {
         	         MATCHT(TYPE_TOK, &FOLLOW_TYPE_TOK_in_atomicWord3505);
         	        if  (HASEXCEPTION())
@@ -10558,7 +10559,7 @@ atomicWord(pTptpParser ctx, std::string& name)
         	    }
         	    break;
         	case 6:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:963:4: INCLUDE_TOK
+        	    // ../../../../src/parser/tptp/Tptp.g:964:4: INCLUDE_TOK
         	    {
         	         MATCHT(INCLUDE_TOK, &FOLLOW_INCLUDE_TOK_in_atomicWord3515);
         	        if  (HASEXCEPTION())
@@ -10575,7 +10576,7 @@ atomicWord(pTptpParser ctx, std::string& name)
         	    }
         	    break;
         	case 7:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:964:4: LOWER_WORD
+        	    // ../../../../src/parser/tptp/Tptp.g:965:4: LOWER_WORD
         	    {
         	        LOWER_WORD8 = (pANTLR3_COMMON_TOKEN) MATCHT(LOWER_WORD, &FOLLOW_LOWER_WORD_in_atomicWord3522);
         	        if  (HASEXCEPTION())
@@ -10592,7 +10593,7 @@ atomicWord(pTptpParser ctx, std::string& name)
         	    }
         	    break;
         	case 8:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:965:4: LOWER_WORD_SINGLE_QUOTED
+        	    // ../../../../src/parser/tptp/Tptp.g:966:4: LOWER_WORD_SINGLE_QUOTED
         	    {
         	        LOWER_WORD_SINGLE_QUOTED9 = (pANTLR3_COMMON_TOKEN) MATCHT(LOWER_WORD_SINGLE_QUOTED, &FOLLOW_LOWER_WORD_SINGLE_QUOTED_in_atomicWord3530);
         	        if  (HASEXCEPTION())
@@ -10612,7 +10613,7 @@ atomicWord(pTptpParser ctx, std::string& name)
         	    }
         	    break;
         	case 9:
-        	    // ../../../../../../src/parser/tptp/Tptp.g:970:4: SINGLE_QUOTED
+        	    // ../../../../src/parser/tptp/Tptp.g:971:4: SINGLE_QUOTED
         	    {
         	        SINGLE_QUOTED10 = (pANTLR3_COMMON_TOKEN) MATCHT(SINGLE_QUOTED, &FOLLOW_SINGLE_QUOTED_in_atomicWord3542);
         	        if  (HASEXCEPTION())
diff --git a/src/parser/tptp/TptpParser.h b/src/parser/tptp/TptpParser.h
index df98eb5..8a71717 100644
--- a/src/parser/tptp/TptpParser.h
+++ b/src/parser/tptp/TptpParser.h
@@ -1,8 +1,8 @@
 /** \file
  *  This C header file was generated by $ANTLR version 3.4
  *
- *     -  From the grammar source file : ../../../../../../src/parser/tptp/Tptp.g
- *     -                            On : 2017-03-16 01:03:04
+ *     -  From the grammar source file : ../../../../src/parser/tptp/Tptp.g
+ *     -                            On : 2017-07-10 10:01:31
  *     -                for the parser : TptpParserParser
  *
  * Editing it, at least manually, is not wise.
@@ -221,10 +221,11 @@ typedef struct TptpParser_Ctx_struct TptpParser, * pTptpParser;
 
 
 /**
- ** This file is part of CVC4.
- ** Copyright (c) 2009-2014  New York University and The University of Iowa
- ** See the file COPYING in the top-level source directory for licensing
- ** information.
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.
  **/
 
 
diff --git a/src/parser/tptp/tptp.cpp b/src/parser/tptp/tptp.cpp
index dcb23d3..64eeddd 100644
--- a/src/parser/tptp/tptp.cpp
+++ b/src/parser/tptp/tptp.cpp
@@ -2,9 +2,9 @@
 /*! \file tptp.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Francois Bobot, Morgan Deters, Tim King
+ **   Francois Bobot, Morgan Deters, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/tptp/tptp.h b/src/parser/tptp/tptp.h
index 2a2a509..f137a9d 100644
--- a/src/parser/tptp/tptp.h
+++ b/src/parser/tptp/tptp.h
@@ -2,9 +2,9 @@
 /*! \file tptp.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Francois Bobot, Morgan Deters, Tim King
+ **   Francois Bobot, Morgan Deters, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/tptp/tptp_input.cpp b/src/parser/tptp/tptp_input.cpp
index 42337b4..5464e10 100644
--- a/src/parser/tptp/tptp_input.cpp
+++ b/src/parser/tptp/tptp_input.cpp
@@ -2,9 +2,9 @@
 /*! \file tptp_input.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Francois Bobot, Tim King, Morgan Deters
+ **   Francois Bobot, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/parser/tptp/tptp_input.h b/src/parser/tptp/tptp_input.h
index 28bf182..a1f7064 100644
--- a/src/parser/tptp/tptp_input.h
+++ b/src/parser/tptp/tptp_input.h
@@ -2,9 +2,9 @@
 /*! \file tptp_input.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Francois Bobot, Tim King, Morgan Deters
+ **   Francois Bobot, Paul Meng, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/printer/ast/ast_printer.cpp b/src/printer/ast/ast_printer.cpp
index e15d876..35b3991 100644
--- a/src/printer/ast/ast_printer.cpp
+++ b/src/printer/ast/ast_printer.cpp
@@ -2,9 +2,9 @@
 /*! \file ast_printer.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Liana Hadarean
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/printer/ast/ast_printer.h b/src/printer/ast/ast_printer.h
index ef123d1..29c3981 100644
--- a/src/printer/ast/ast_printer.h
+++ b/src/printer/ast/ast_printer.h
@@ -2,9 +2,9 @@
 /*! \file ast_printer.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/printer/cvc/cvc_printer.cpp b/src/printer/cvc/cvc_printer.cpp
index 981e88a..03029f2 100644
--- a/src/printer/cvc/cvc_printer.cpp
+++ b/src/printer/cvc/cvc_printer.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Dejan Jovanovic, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -90,8 +90,6 @@ void CvcPrinter::toStream(std::ostream& out, TNode n, int depth, bool types, boo
     string s;
     if(n.getAttribute(expr::VarNameAttr(), s)) {
       out << s;
-    }else if( n.getKind() == kind::UNIVERSE_SET ){
-      out << "UNIVERSE :: " << n.getType();
     } else {
       if(n.getKind() == kind::VARIABLE) {
         out << "var_";
@@ -107,6 +105,15 @@ void CvcPrinter::toStream(std::ostream& out, TNode n, int depth, bool types, boo
     }
     return;
   }
+  if(n.isNullaryOp()) {
+    if( n.getKind() == kind::UNIVERSE_SET ){
+      out << "UNIVERSE :: " << n.getType();
+    }else{
+      //unknown printer
+      out << n.getKind();
+    }
+    return;
+  }
 
   // constants
   if(n.getMetaKind() == kind::metakind::CONSTANT) {
@@ -497,6 +504,7 @@ void CvcPrinter::toStream(std::ostream& out, TNode n, int depth, bool types, boo
       opType = INFIX;
       break;
     case kind::MULT:
+    case kind::NONLINEAR_MULT:
       op << '*';
       opType = INFIX;
       break;
@@ -783,7 +791,7 @@ void CvcPrinter::toStream(std::ostream& out, TNode n, int depth, bool types, boo
       opType = INFIX;
       break;
     case kind::COMPLEMENT:
-      op << "NOT";
+      op << "~";
       opType = PREFIX;
       break;
     case kind::PRODUCT:
@@ -802,6 +810,14 @@ void CvcPrinter::toStream(std::ostream& out, TNode n, int depth, bool types, boo
       op << "TCLOSURE";
       opType = PREFIX;
       break;
+    case kind::IDEN:
+      op << "IDEN";
+      opType = PREFIX;
+      break;
+    case kind::JOIN_IMAGE:
+      op << "JOIN_IMAGE";
+      opType = INFIX;
+      break;
     case kind::SINGLETON:
       out << "{";
       toStream(out, n[0], depth, types, false);
@@ -810,7 +826,7 @@ void CvcPrinter::toStream(std::ostream& out, TNode n, int depth, bool types, boo
       break;
     case kind::INSERT: {
       if(bracket) {
-	out << '(';
+        out << '(';
       }
       out << '{';
       size_t i = 0;
@@ -822,7 +838,7 @@ void CvcPrinter::toStream(std::ostream& out, TNode n, int depth, bool types, boo
       out << "} | ";
       toStream(out, n[i], depth, types, true);
       if(bracket) {
-	out << ')';
+        out << ')';
       }
       return;
       break;
diff --git a/src/printer/cvc/cvc_printer.h b/src/printer/cvc/cvc_printer.h
index fd25013..54ff3ea 100644
--- a/src/printer/cvc/cvc_printer.h
+++ b/src/printer/cvc/cvc_printer.h
@@ -2,9 +2,9 @@
 /*! \file cvc_printer.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Dejan Jovanovic
+ **   Morgan Deters, Paul Meng, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/printer/dagification_visitor.cpp b/src/printer/dagification_visitor.cpp
index c52f0ed..f2bb461 100644
--- a/src/printer/dagification_visitor.cpp
+++ b/src/printer/dagification_visitor.cpp
@@ -2,9 +2,9 @@
 /*! \file dagification_visitor.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Andrew Reynolds
+ **   Morgan Deters, Paul Meng, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/printer/dagification_visitor.h b/src/printer/dagification_visitor.h
index c79ec51..1f89d36 100644
--- a/src/printer/dagification_visitor.h
+++ b/src/printer/dagification_visitor.h
@@ -2,9 +2,9 @@
 /*! \file dagification_visitor.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/printer/printer.cpp b/src/printer/printer.cpp
index c715312..5e349d1 100644
--- a/src/printer/printer.cpp
+++ b/src/printer/printer.cpp
@@ -2,9 +2,9 @@
 /*! \file printer.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Clark Barrett
+ **   Morgan Deters, Tim King, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -43,6 +43,9 @@ Printer* Printer::makePrinter(OutputLanguage lang) throw() {
 
   case LANG_SMTLIB_V2_5:
     return new printer::smt2::Smt2Printer();
+    
+  case LANG_SMTLIB_V2_6:
+    return new printer::smt2::Smt2Printer(printer::smt2::smt2_6_variant);
 
   case LANG_TPTP:
     return new printer::tptp::TptpPrinter();
diff --git a/src/printer/printer.h b/src/printer/printer.h
index a6156ad..ec1f926 100644
--- a/src/printer/printer.h
+++ b/src/printer/printer.h
@@ -2,9 +2,9 @@
 /*! \file printer.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Andrew Reynolds
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/printer/smt1/smt1_printer.cpp b/src/printer/smt1/smt1_printer.cpp
index 7fde074..b67274c 100644
--- a/src/printer/smt1/smt1_printer.cpp
+++ b/src/printer/smt1/smt1_printer.cpp
@@ -2,9 +2,9 @@
 /*! \file smt1_printer.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Andrew Reynolds
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/printer/smt1/smt1_printer.h b/src/printer/smt1/smt1_printer.h
index d8101d9..920bd64 100644
--- a/src/printer/smt1/smt1_printer.h
+++ b/src/printer/smt1/smt1_printer.h
@@ -2,9 +2,9 @@
 /*! \file smt1_printer.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/printer/smt2/smt2_printer.cpp b/src/printer/smt2/smt2_printer.cpp
index 2b7da63..923574f 100644
--- a/src/printer/smt2/smt2_printer.cpp
+++ b/src/printer/smt2/smt2_printer.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Andrew Reynolds, Martin Brain
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -61,14 +61,14 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
       theory::SubstitutionMap::const_iterator i_end = lets.end();
       for(; i != i_end; ++ i) {
         out << "(let ((";
-        toStream(out, (*i).second, toDepth, types);
+        toStream(out, (*i).second, toDepth, types, TypeNode::null());
         out << ' ';
-        toStream(out, (*i).first, toDepth, types);
+        toStream(out, (*i).first, toDepth, types, TypeNode::null());
         out << ")) ";
       }
     }
     Node body = dv.getDagifiedBody();
-    toStream(out, body, toDepth, types);
+    toStream(out, body, toDepth, types, TypeNode::null());
     if(!lets.empty()) {
       theory::SubstitutionMap::const_iterator i = lets.begin();
       theory::SubstitutionMap::const_iterator i_end = lets.end();
@@ -77,7 +77,7 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
       }
     }
   } else {
-    toStream(out, n, toDepth, types);
+    toStream(out, n, toDepth, types, TypeNode::null());
   }
 }
 
@@ -107,39 +107,47 @@ static bool stringifyRegexp(Node n, stringstream& ss) {
   return true;
 }
 
+// force_nt is the type that n must have
 void Smt2Printer::toStream(std::ostream& out, TNode n,
-                           int toDepth, bool types) const throw() {
+                           int toDepth, bool types, TypeNode force_nt) const throw() {
   // null
   if(n.getKind() == kind::NULL_EXPR) {
     out << "null";
     return;
   }
 
+  if( !force_nt.isNull() && n.getKind()!=kind::CONST_RATIONAL ){
+    if( n.getType()!=force_nt ){
+      if( force_nt.isReal() ){
+        out << "(" << smtKindString( force_nt.isInteger() ? kind::TO_INTEGER : kind::TO_REAL) << " ";
+        toStream(out, n, toDepth, types, TypeNode::null());
+        out << ")";
+      }else{            
+        Node nn = NodeManager::currentNM()->mkNode(kind::APPLY_TYPE_ASCRIPTION,
+                                                   NodeManager::currentNM()->mkConst(AscriptionType(force_nt.toType())), n );
+        toStream(out, nn, toDepth, types, TypeNode::null());                                 
+      }
+      return;  
+    }
+  }
+
   // variable
   if(n.isVar()) {
-    if( n.getKind() == kind::SEP_NIL ){
-      out << "(as sep.nil " << n.getType() << ")";
-      return;
-    }else if( n.getKind() == kind::UNIVERSE_SET ){
-      out << "(as univset " << n.getType() << ")";
-      return;
-    }else{
-      string s;
-      if(n.getAttribute(expr::VarNameAttr(), s)) {
-        out << maybeQuoteSymbol(s);
+    string s;
+    if(n.getAttribute(expr::VarNameAttr(), s)) {
+      out << maybeQuoteSymbol(s);
+    } else {
+      if(n.getKind() == kind::VARIABLE) {
+        out << "var_";
       } else {
-        if(n.getKind() == kind::VARIABLE) {
-          out << "var_";
-        } else {
-          out << n.getKind() << '_';
-        }
-        out << n.getId();
-      }
-      if(types) {
-        // print the whole type, but not *its* type
-        out << ":";
-        n.getType().toStream(out, language::output::LANG_SMTLIB_V2_5);
+        out << n.getKind() << '_';
       }
+      out << n.getId();
+    }
+    if(types) {
+      // print the whole type, but not *its* type
+      out << ":";
+      n.getType().toStream(out, language::output::LANG_SMTLIB_V2_5);
     }
 
     return;
@@ -224,10 +232,10 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
         if(r < 0) {
           out << "-" << -r;
         }else{
-          toStreamRational(out, r, false);
+          toStreamRational(out, r, !force_nt.isNull() && !force_nt.isInteger());
         }
       }else{
-        toStreamRational(out, r, false);
+        toStreamRational(out, r, !force_nt.isNull() && !force_nt.isInteger());
       }
       // Rational r = n.getConst<Rational>();
       // if(r < 0) {
@@ -302,7 +310,7 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
     case kind::EMPTYSET:
       out << "(as emptyset " << n.getConst<EmptySet>().getType() << ")";
       break;
-  
+
     default:
       // fall back on whatever operator<< does on underlying type; we
       // might luck out and be SMT-LIB v2 compliant
@@ -322,16 +330,18 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
     }
     if(n.getNumChildren() != 0) {
       for(unsigned i = 0; i < n.getNumChildren(); ++i) {
-	out << ' ';
-	toStream(out, n[i], toDepth, types);
+	      out << ' ';
+	      toStream(out, n[i], toDepth, types, TypeNode::null());
       }
       out << ')';
     }
     return;
   }
-  
+
   bool stillNeedToPrintParams = true;
   bool forceBinary = false; // force N-ary to binary when outputing children
+  bool parametricTypeChildren = false;   // parametric operators that are (op t1 ... tn) where t1...tn must have same type
+  bool typeChildren = false;  // operators (op t1...tn) where at least one of t1...tn may require a type cast e.g. Int -> Real
   // operator
   if(n.getNumChildren() != 0 &&
      n.getKind() != kind::INST_PATTERN_LIST &&
@@ -342,7 +352,10 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
     // builtin theory
   case kind::APPLY: break;
   case kind::EQUAL:
-  case kind::DISTINCT: out << smtKindString(k) << " "; break;
+  case kind::DISTINCT: 
+    out << smtKindString(k) << " "; 
+    parametricTypeChildren = true;
+    break;
   case kind::CHAIN: break;
   case kind::FUNCTION_TYPE:
     for(size_t i = 0; i < n.getNumChildren() - 1; ++i) {
@@ -364,11 +377,12 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
   case kind::ITE: out << smtKindString(k) << " "; break;
 
     // uf theory
-  case kind::APPLY_UF: break;
+  case kind::APPLY_UF: typeChildren = true; break;
 
     // arith theory
   case kind::PLUS:
   case kind::MULT:
+  case kind::NONLINEAR_MULT:
   case kind::MINUS:
   case kind::UMINUS:
   case kind::LT:
@@ -385,7 +399,10 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
   case kind::IS_INTEGER:
   case kind::TO_INTEGER:
   case kind::TO_REAL:
-  case kind::POW: out << smtKindString(k) << " "; break;
+  case kind::POW: 
+    parametricTypeChildren = true;
+    out << smtKindString(k) << " "; 
+    break;
 
   case kind::DIVISIBLE:
     out << "(_ divisible " << n.getOperator().getConst<Divisible>().k << ")";
@@ -394,7 +411,7 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
 
     // arrays theory
   case kind::SELECT:
-  case kind::STORE:
+  case kind::STORE: typeChildren = true;
   case kind::PARTIAL_SELECT_0:
   case kind::PARTIAL_SELECT_1:
   case kind::ARRAY_TYPE: out << smtKindString(k) << " "; break;
@@ -404,7 +421,7 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
     if(d_variant == z3str_variant) {
       out << "Concat ";
       for(unsigned i = 0; i < n.getNumChildren(); ++i) {
-        toStream(out, n[i], -1, types);
+        toStream(out, n[i], -1, types, TypeNode::null());
         if(i + 1 < n.getNumChildren()) {
           out << ' ';
         }
@@ -423,10 +440,10 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
     stringstream ss;
     if(d_variant == z3str_variant && stringifyRegexp(n[1], ss)) {
       out << "= ";
-      toStream(out, n[0], -1, types);
+      toStream(out, n[0], -1, types, TypeNode::null());
       out << " ";
       Node str = NodeManager::currentNM()->mkConst(String(ss.str()));
-      toStream(out, str, -1, types);
+      toStream(out, str, -1, types, TypeNode::null());
       out << ")";
       return;
     }
@@ -515,10 +532,14 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
   case kind::INTERSECTION:
   case kind::SETMINUS:
   case kind::SUBSET:
-  case kind::MEMBER:
+    parametricTypeChildren = true;
+    out << smtKindString(k) << " "; 
+    break;
+  case kind::MEMBER: typeChildren = true;
   case kind::SET_TYPE:
-  case kind::SINGLETON: 
+  case kind::SINGLETON:
   case kind::COMPLEMENT:out << smtKindString(k) << " "; break;
+  case kind::UNIVERSE_SET:out << "(as univset " << n.getType() << ")";break;
 
     // fp theory
   case kind::FLOATINGPOINT_FP:
@@ -581,24 +602,26 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
         return;
       }
       out << "(as ";
-      toStream(out, n[0], toDepth < 0 ? toDepth : toDepth - 1, types);
+      toStream(out, n[0], toDepth < 0 ? toDepth : toDepth - 1, types, TypeNode::null());
       out << ' ' << (t.isFunctionLike() ? t.getRangeType() : t) << ')';
       return;
     }
     break;
-  case kind::APPLY_CONSTRUCTOR:
+  case kind::APPLY_CONSTRUCTOR: typeChildren = true;
   case kind::APPLY_TESTER:
   case kind::APPLY_SELECTOR:
   case kind::APPLY_SELECTOR_TOTAL:
   case kind::PARAMETRIC_DATATYPE:
     break;
-    
-  //separation
+
+  //separation logic
   case kind::SEP_EMP:
   case kind::SEP_PTO:
   case kind::SEP_STAR:
   case kind::SEP_WAND:out << smtKindString(k) << " "; break;
 
+  case kind::SEP_NIL:out << "(as sep.nil " << n.getType() << ")";break;
+
     // quantifiers
   case kind::FORALL:
   case kind::EXISTS:
@@ -664,7 +687,7 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
     if(toDepth != 0) {
       if( d_variant==sygus_variant && n.getKind()==kind::APPLY_CONSTRUCTOR ){
         std::stringstream ss;
-        toStream(ss, n.getOperator(), toDepth < 0 ? toDepth : toDepth - 1, types);
+        toStream(ss, n.getOperator(), toDepth < 0 ? toDepth : toDepth - 1, types, TypeNode::null());
         std::string tmp = ss.str();
         size_t pos = 0;
         if((pos = tmp.find("__Enum__", pos)) != std::string::npos){
@@ -674,10 +697,16 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
       }else if( n.getKind()==kind::APPLY_TESTER ){
         unsigned cindex = Datatype::indexOf(n.getOperator().toExpr());
         const Datatype& dt = Datatype::datatypeOf(n.getOperator().toExpr());
-        out << "is-";
-        toStream(out, Node::fromExpr(dt[cindex].getConstructor()), toDepth < 0 ? toDepth : toDepth - 1, types);
+        if( d_variant==smt2_6_variant ){
+          out << "(_ is ";
+          toStream(out, Node::fromExpr(dt[cindex].getConstructor()), toDepth < 0 ? toDepth : toDepth - 1, types, TypeNode::null());
+          out << ")";
+        }else{
+          out << "is-";
+          toStream(out, Node::fromExpr(dt[cindex].getConstructor()), toDepth < 0 ? toDepth : toDepth - 1, types, TypeNode::null());
+        }
       }else{
-        toStream(out, n.getOperator(), toDepth < 0 ? toDepth : toDepth - 1, types);
+        toStream(out, n.getOperator(), toDepth < 0 ? toDepth : toDepth - 1, types, TypeNode::null());
       }
     } else {
       out << "(...)";
@@ -687,9 +716,63 @@ void Smt2Printer::toStream(std::ostream& out, TNode n,
     }
   }
   stringstream parens;
+  
+  // calculate the child type casts
+  std::map< unsigned, TypeNode > force_child_type;
+  if( parametricTypeChildren ){
+    if( n.getNumChildren()>1 ){
+      TypeNode force_ct = n[0].getType();
+      bool do_force = false;
+      for(size_t i = 1; i < n.getNumChildren(); ++i ) {
+        TypeNode ct = n[i].getType();
+        if( ct!=force_ct ){
+          force_ct = TypeNode::leastCommonTypeNode( force_ct, ct );
+          do_force = true;
+        }
+      }
+      if( do_force ){
+        for(size_t i = 0; i < n.getNumChildren(); ++i ) {
+          force_child_type[i] = force_ct;
+        }
+      }
+    }
+  // operators that may require type casting
+  }else if( typeChildren ){
+    if(n.getKind()==kind::SELECT){
+      TypeNode indexType = TypeNode::leastCommonTypeNode( n[0].getType().getArrayIndexType(), n[1].getType() );
+      TypeNode elemType = n[0].getType().getArrayConstituentType();
+      force_child_type[0] = NodeManager::currentNM()->mkArrayType( indexType, elemType );
+      force_child_type[1] = indexType;
+    }else if(n.getKind()==kind::STORE){
+      TypeNode indexType = TypeNode::leastCommonTypeNode( n[0].getType().getArrayIndexType(), n[1].getType() );
+      TypeNode elemType = TypeNode::leastCommonTypeNode( n[0].getType().getArrayConstituentType(), n[2].getType() );
+      force_child_type[0] = NodeManager::currentNM()->mkArrayType( indexType, elemType );
+      force_child_type[1] = indexType;
+      force_child_type[2] = elemType;
+    }else if(n.getKind()==kind::MEMBER){
+      TypeNode elemType = TypeNode::leastCommonTypeNode( n[0].getType(), n[1].getType().getSetElementType() );
+      force_child_type[0] = elemType;
+      force_child_type[1] = NodeManager::currentNM()->mkSetType( elemType );
+    }else{
+      // APPLY_UF, APPLY_CONSTRUCTOR, etc.
+      Assert( n.hasOperator() );
+      TypeNode opt = n.getOperator().getType();
+      Assert( opt.getNumChildren() == n.getNumChildren() + 1 );
+      for(size_t i = 0; i < n.getNumChildren(); ++i ) {
+        force_child_type[i] = opt[i];
+      }
+    }
+  }
+  
   for(size_t i = 0, c = 1; i < n.getNumChildren(); ) {
     if(toDepth != 0) {
-      toStream(out, n[i], toDepth < 0 ? toDepth : toDepth - c, types);
+      Node cn = n[i];
+      std::map< unsigned, TypeNode >::iterator itfc = force_child_type.find( i );
+      if( itfc!=force_child_type.end() ){
+        toStream(out, cn, toDepth < 0 ? toDepth : toDepth - c, types, itfc->second);
+      }else{
+        toStream(out, cn, toDepth < 0 ? toDepth : toDepth - c, types, TypeNode::null());
+      }
     } else {
       out << "(...)";
     }
@@ -732,7 +815,8 @@ static string smtKindString(Kind k) throw() {
 
     // arith theory
   case kind::PLUS: return "+";
-  case kind::MULT: return "*";
+  case kind::MULT:
+  case kind::NONLINEAR_MULT: return "*";
   case kind::MINUS: return "-";
   case kind::UMINUS: return "-";
   case kind::LT: return "<";
@@ -874,13 +958,13 @@ static string smtKindString(Kind k) throw() {
   case kind::REGEXP_OPT: return "re.opt";
   case kind::REGEXP_RANGE: return "re.range";
   case kind::REGEXP_LOOP: return "re.loop";
-  
+
   //sep theory
   case kind::SEP_STAR: return "sep";
   case kind::SEP_PTO: return "pto";
   case kind::SEP_WAND: return "wand";
   case kind::SEP_EMP: return "emp";
-    
+
   default:
     ; /* fall through */
   }
@@ -1018,7 +1102,7 @@ void Smt2Printer::toStream(std::ostream& out, const Command* c,
      tryToStream<GetInfoCommand>(out, c) ||
      tryToStream<SetOptionCommand>(out, c) ||
      tryToStream<GetOptionCommand>(out, c) ||
-     tryToStream<DatatypeDeclarationCommand>(out, c) ||
+     tryToStream<DatatypeDeclarationCommand>(out, c, d_variant) ||
      tryToStream<CommentCommand>(out, c, d_variant) ||
      tryToStream<EmptyCommand>(out, c) ||
      tryToStream<EchoCommand>(out, c, d_variant)) {
@@ -1061,10 +1145,12 @@ void Smt2Printer::toStream(std::ostream& out, const UnsatCore& core, const std::
   out << "(" << std::endl;
   for(UnsatCore::const_iterator i = core.begin(); i != core.end(); ++i) {
     map<Expr, string>::const_iterator j = names.find(*i);
-    if(j == names.end()) {
+    if (j != names.end()) {
+      // Named assertions always get printed
+      out << maybeQuoteSymbol((*j).second) << endl;
+    } else if (options::dumpUnsatCoresFull()) {
+      // Unnamed assertions only get printed if the option is set
       out << *i << endl;
-    } else {
-      out << (*j).second << endl;
     }
   }
   out << ")" << endl;
@@ -1103,8 +1189,11 @@ void Smt2Printer::toStream(std::ostream& out, const Model& m, const Command* c)
 
     std::map< TypeNode, std::vector< Node > >::const_iterator tn_iterator = type_reps.find( tn );
     if( options::modelUninterpDtEnum() && tn.isSort() && tn_iterator != type_reps.end() ){
-      out << "(declare-datatypes () ((" << dynamic_cast<const DeclareTypeCommand*>(c)->getSymbol() << " ";
-
+      if(d_variant == smt2_6_variant) {
+        out << "(declare-datatypes ((" << dynamic_cast<const DeclareTypeCommand*>(c)->getSymbol() << " 0)) (";
+      }else{
+        out << "(declare-datatypes () ((" << dynamic_cast<const DeclareTypeCommand*>(c)->getSymbol() << " ";
+      }
       for( size_t i=0, N = tn_iterator->second.size(); i < N; i++ ){
         out << "(" << (*tn_iterator).second[i] << ")";
       }
@@ -1457,32 +1546,61 @@ static void toStream(std::ostream& out, const GetOptionCommand* c) throw() {
   out << "(get-option :" << c->getFlag() << ")";
 }
 
-static void toStream(std::ostream& out, const DatatypeDeclarationCommand* c) throw() {
+static void toStream(std::ostream& out, const Datatype & d) {
+  for(Datatype::const_iterator ctor = d.begin(), ctor_end = d.end();
+      ctor != ctor_end; ++ctor){
+    if( ctor!=d.begin() ) out << " ";
+    out << "(" << maybeQuoteSymbol(ctor->getName());
+
+    for(DatatypeConstructor::const_iterator arg = ctor->begin(), arg_end = ctor->end();
+        arg != arg_end; ++arg){
+      out << " (" << arg->getSelector() << " "
+          << static_cast<SelectorType>(arg->getType()).getRangeType() << ")";
+    }
+    out << ")";
+  }
+}
+
+static void toStream(std::ostream& out, const DatatypeDeclarationCommand* c, Variant v) throw() {
   const vector<DatatypeType>& datatypes = c->getDatatypes();
-  out << "(declare-datatypes () (";
-  for(vector<DatatypeType>::const_iterator i = datatypes.begin(),
-        i_end = datatypes.end();
-      i != i_end;
-      ++i) {
-
-    const Datatype & d = i->getDatatype();
-
-    out << "(" << maybeQuoteSymbol(d.getName()) << " ";
-    for(Datatype::const_iterator ctor = d.begin(), ctor_end = d.end();
-        ctor != ctor_end; ++ctor){
-      if( ctor!=d.begin() ) out << " ";
-      out << "(" << maybeQuoteSymbol(ctor->getName());
-
-      for(DatatypeConstructor::const_iterator arg = ctor->begin(), arg_end = ctor->end();
-          arg != arg_end; ++arg){
-        out << " (" << arg->getSelector() << " "
-            << static_cast<SelectorType>(arg->getType()).getRangeType() << ")";
-      }
-      out << ")";
+  out << "(declare-";
+  Assert( !datatypes.empty() );
+  if( datatypes[0].getDatatype().isCodatatype() ){
+    out << "co";
+  }
+  out << "datatypes";
+  if(v == smt2_6_variant) {
+    out << " (";
+    for(vector<DatatypeType>::const_iterator i = datatypes.begin(),
+          i_end = datatypes.end();
+        i != i_end; ++i) {
+      const Datatype & d = i->getDatatype();
+      out << "(" << maybeQuoteSymbol(d.getName());
+      out << " " << d.getNumParameters() << ")";
+    }
+    out << ") (";
+    for(vector<DatatypeType>::const_iterator i = datatypes.begin(),
+          i_end = datatypes.end();
+        i != i_end; ++i) {
+      const Datatype & d = i->getDatatype();
+      out << "(";
+      toStream( out, d );
+      out << ")" << endl;
+    }
+    out << ")";
+  }else{
+    out << " () (";
+    for(vector<DatatypeType>::const_iterator i = datatypes.begin(),
+          i_end = datatypes.end();
+        i != i_end; ++i) {
+      const Datatype & d = i->getDatatype();
+      out << "(" << maybeQuoteSymbol(d.getName()) << " ";
+      toStream( out, d );
+      out << ")" << endl;
     }
-    out << ")" << endl;
+    out << ")";
   }
-  out << "))";
+  out << ")";
 }
 
 static void toStream(std::ostream& out, const CommentCommand* c, Variant v) throw() {
diff --git a/src/printer/smt2/smt2_printer.h b/src/printer/smt2/smt2_printer.h
index 0354a57..f6438ae 100644
--- a/src/printer/smt2/smt2_printer.h
+++ b/src/printer/smt2/smt2_printer.h
@@ -2,9 +2,9 @@
 /*! \file smt2_printer.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Andrew Reynolds
+ **   Morgan Deters, Paul Meng, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -30,6 +30,7 @@ namespace smt2 {
 enum Variant {
   no_variant,
   smt2_0_variant, // old-style 2.0 syntax, when it makes a difference
+  smt2_6_variant, // new-style 2.6 syntax, when it makes a difference
   z3str_variant, // old-style 2.0 and also z3str syntax
   sygus_variant  // variant for sygus
 };/* enum Variant */
@@ -37,7 +38,7 @@ enum Variant {
 class Smt2Printer : public CVC4::Printer {
   Variant d_variant;
 
-  void toStream(std::ostream& out, TNode n, int toDepth, bool types) const throw();
+  void toStream(std::ostream& out, TNode n, int toDepth, bool types, TypeNode nt) const throw();
   void toStream(std::ostream& out, const Model& m, const Command* c) const throw();
 public:
   Smt2Printer(Variant variant = no_variant) : d_variant(variant) { }
diff --git a/src/printer/tptp/tptp_printer.cpp b/src/printer/tptp/tptp_printer.cpp
index 1be98ff..5fc9b7e 100644
--- a/src/printer/tptp/tptp_printer.cpp
+++ b/src/printer/tptp/tptp_printer.cpp
@@ -2,9 +2,9 @@
 /*! \file tptp_printer.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/printer/tptp/tptp_printer.h b/src/printer/tptp/tptp_printer.h
index aac69d0..7c8ddbd 100644
--- a/src/printer/tptp/tptp_printer.h
+++ b/src/printer/tptp/tptp_printer.h
@@ -2,9 +2,9 @@
 /*! \file tptp_printer.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/proof/arith_proof.cpp b/src/proof/arith_proof.cpp
index 0f0c14e..03de1ca 100644
--- a/src/proof/arith_proof.cpp
+++ b/src/proof/arith_proof.cpp
@@ -2,9 +2,9 @@
 /*! \file arith_proof.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Guy Katz
+ **   Guy Katz, Andrew Reynolds, Andres Noetzli
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/proof/arith_proof.h b/src/proof/arith_proof.h
index 0898548..a3868fe 100644
--- a/src/proof/arith_proof.h
+++ b/src/proof/arith_proof.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Guy Katz, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/proof/array_proof.cpp b/src/proof/array_proof.cpp
index af158f3..e5b7e64 100644
--- a/src/proof/array_proof.cpp
+++ b/src/proof/array_proof.cpp
@@ -2,9 +2,9 @@
 /*! \file array_proof.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Guy Katz
+ **   Guy Katz, Andrew Reynolds, Andres Noetzli
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -15,9 +15,10 @@
 
 **/
 
-#include "proof/theory_proof.h"
-#include "proof/proof_manager.h"
 #include "proof/array_proof.h"
+#include "proof/proof_manager.h"
+#include "proof/simplify_boolean_node.h"
+#include "proof/theory_proof.h"
 #include "theory/arrays/theory_arrays.h"
 #include <stack>
 
@@ -147,6 +148,9 @@ Node ProofArray::toStreamRecLFSC(std::ostream& out,
 
     size_t i = 0;
     while (i < pf->d_children.size()) {
+      if (pf->d_children[i]->d_id != theory::eq::MERGED_THROUGH_CONGRUENCE)
+        pf->d_children[i]->d_node = simplifyBooleanNode(pf->d_children[i]->d_node);
+
       // Look for the negative clause, with which we will form a contradiction.
       if(!pf->d_children[i]->d_node.isNull() && pf->d_children[i]->d_node.getKind() == kind::NOT) {
         Assert(neg < 0);
@@ -318,6 +322,8 @@ Node ProofArray::toStreamRecLFSC(std::ostream& out,
     pf->debug_print("mgd", 0, &d_proofPrinter);
     std::stack<const theory::eq::EqProof*> stk;
     for(const theory::eq::EqProof* pf2 = pf; pf2->d_id == theory::eq::MERGED_THROUGH_CONGRUENCE; pf2 = pf2->d_children[0]) {
+      Debug("mgd") << "Looking at pf2 with d_node: " << pf2->d_node << std::endl;
+
       Assert(!pf2->d_node.isNull());
       Assert(pf2->d_node.getKind() == kind::PARTIAL_APPLY_UF ||
              pf2->d_node.getKind() == kind::BUILTIN ||
@@ -601,6 +607,9 @@ Node ProofArray::toStreamRecLFSC(std::ostream& out,
     Debug("mgd") << "\ndoing trans proof[[\n";
     pf->debug_print("mgd", 0, &d_proofPrinter);
     Debug("mgd") << "\n";
+
+    pf->d_children[0]->d_node = simplifyBooleanNode(pf->d_children[0]->d_node);
+
     Node n1 = toStreamRecLFSC(ss, tp, pf->d_children[0], tb + 1, map);
     Debug("mgd") << "\ndoing trans proof, got n1 " << n1 << "\n";
     if(tb == 1) {
@@ -617,6 +626,13 @@ Node ProofArray::toStreamRecLFSC(std::ostream& out,
       std::stringstream ss1(ss.str()), ss2;
       ss.str("");
 
+      // In congruences, we can have something like a[x] - it's important to keep these,
+      // and not turn them into (a[x]=true), because that will mess up the congruence application
+      // later.
+
+      if (pf->d_children[i]->d_id != theory::eq::MERGED_THROUGH_CONGRUENCE)
+        pf->d_children[i]->d_node = simplifyBooleanNode(pf->d_children[i]->d_node);
+
       // It is possible that we've already converted the i'th child to stream. If so,
       // use previously stored result. Otherwise, convert and store.
       Node n2;
@@ -1166,6 +1182,13 @@ void ArrayProof::registerTerm(Expr term) {
     d_declarations.insert(term);
   }
 
+  if (term.getKind() == kind::SELECT && term.getType().isBoolean()) {
+    // Ensure cnf literals
+    Node asNode(term);
+    ProofManager::currentPM()->ensureLiteral(eqNode(term, NodeManager::currentNM()->mkConst(true)));
+    ProofManager::currentPM()->ensureLiteral(eqNode(term, NodeManager::currentNM()->mkConst(false)));
+  }
+
   // recursively declare all other terms
   for (unsigned i = 0; i < term.getNumChildren(); ++i) {
     // could belong to other theories
diff --git a/src/proof/array_proof.h b/src/proof/array_proof.h
index eaf2f47..507b65f 100644
--- a/src/proof/array_proof.h
+++ b/src/proof/array_proof.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Guy Katz, Liana Hadarean, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/proof/bitvector_proof.cpp b/src/proof/bitvector_proof.cpp
index 926dae9..5c660b2 100644
--- a/src/proof/bitvector_proof.cpp
+++ b/src/proof/bitvector_proof.cpp
@@ -2,9 +2,9 @@
 /*! \file bitvector_proof.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Guy Katz, Tim King
+ **   Guy Katz, Liana Hadarean, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -47,7 +47,7 @@ BitVectorProof::BitVectorProof(theory::bv::TheoryBV* bv, TheoryProofEngine* proo
 
 void BitVectorProof::initSatProof(CVC4::BVMinisat::Solver* solver) {
   Assert (d_resolutionProof == NULL);
-  d_resolutionProof = new LFSCBVSatProof(solver, "bb", true);
+  d_resolutionProof = new LFSCBVSatProof(solver, &d_fakeContext, "bb", true);
 }
 
 void BitVectorProof::initCnfProof(prop::CnfStream* cnfStream,
diff --git a/src/proof/bitvector_proof.h b/src/proof/bitvector_proof.h
index 6b952e3..4c390e8 100644
--- a/src/proof/bitvector_proof.h
+++ b/src/proof/bitvector_proof.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Guy Katz, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -85,6 +85,7 @@ protected:
   std::map<Expr,std::string> d_constantLetMap;
   bool d_useConstantLetification;
 
+  context::Context d_fakeContext;
 public:
   BitVectorProof(theory::bv::TheoryBV* bv, TheoryProofEngine* proofEngine);
 
diff --git a/src/proof/clause_id.h b/src/proof/clause_id.h
index c66f8c9..309a235 100644
--- a/src/proof/clause_id.h
+++ b/src/proof/clause_id.h
@@ -2,9 +2,9 @@
 /*! \file clause_id.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/proof/cnf_proof.cpp b/src/proof/cnf_proof.cpp
index d1a228e..ff73a46 100644
--- a/src/proof/cnf_proof.cpp
+++ b/src/proof/cnf_proof.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Guy Katz, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/proof/cnf_proof.h b/src/proof/cnf_proof.h
index 788526b..0cc0bf9 100644
--- a/src/proof/cnf_proof.h
+++ b/src/proof/cnf_proof.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Guy Katz, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/proof/lemma_proof.cpp b/src/proof/lemma_proof.cpp
index fb7df45..ee5604f 100644
--- a/src/proof/lemma_proof.cpp
+++ b/src/proof/lemma_proof.cpp
@@ -1,11 +1,16 @@
 /*********************                                                        */
-/*! \file lemma_proof.h
-** \verbatim
-**
-** \brief A class for recoding the steps required in order to prove a theory lemma.
-**
-** A class for recoding the steps required in order to prove a theory lemma.
-**
+/*! \file lemma_proof.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Guy Katz
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** A class for recoding the steps required in order to prove a theory lemma.
+
 **/
 
 #include "proof/lemma_proof.h"
diff --git a/src/proof/lemma_proof.h b/src/proof/lemma_proof.h
index 9c838ce..9d9f11d 100644
--- a/src/proof/lemma_proof.h
+++ b/src/proof/lemma_proof.h
@@ -1,11 +1,16 @@
 /*********************                                                        */
 /*! \file lemma_proof.h
-** \verbatim
-**
-** \brief A class for recoding the steps required in order to prove a theory lemma.
-**
-** A class for recoding the steps required in order to prove a theory lemma.
-**
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Guy Katz
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** A class for recoding the steps required in order to prove a theory lemma. 
+
 **/
 
 #include "cvc4_private.h"
diff --git a/src/proof/proof.h b/src/proof/proof.h
index af72ccf..cb76949 100644
--- a/src/proof/proof.h
+++ b/src/proof/proof.h
@@ -2,9 +2,9 @@
 /*! \file proof.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Tim King, Morgan Deters
+ **   Liana Hadarean, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/proof/proof_manager.cpp b/src/proof/proof_manager.cpp
index ddd2029..ba327f5 100644
--- a/src/proof/proof_manager.cpp
+++ b/src/proof/proof_manager.cpp
@@ -2,9 +2,9 @@
 /*! \file proof_manager.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Guy Katz, Morgan Deters
+ **   Guy Katz, Liana Hadarean, Andres Noetzli
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -56,17 +56,18 @@ std::string append(const std::string& str, uint64_t num) {
   return os.str();
 }
 
-ProofManager::ProofManager(ProofFormat format):
+ProofManager::ProofManager(context::Context* context, ProofFormat format):
+  d_context(context),
   d_satProof(NULL),
   d_cnfProof(NULL),
   d_theoryProof(NULL),
   d_inputFormulas(),
-  d_inputCoreFormulas(),
-  d_outputCoreFormulas(),
+  d_inputCoreFormulas(context),
+  d_outputCoreFormulas(context),
   d_nextId(0),
   d_fullProof(NULL),
   d_format(format),
-  d_deps()
+  d_deps(context)
 {
 }
 
@@ -134,14 +135,14 @@ ArithProof* ProofManager::getArithProof() {
 }
 
 SkolemizationManager* ProofManager::getSkolemizationManager() {
-  Assert (options::proof());
+  Assert (options::proof() || options::unsatCores());
   return &(currentPM()->d_skolemizationManager);
 }
 
 void ProofManager::initSatProof(Minisat::Solver* solver) {
   Assert (currentPM()->d_satProof == NULL);
   Assert(currentPM()->d_format == LFSC);
-  currentPM()->d_satProof = new LFSCCoreSatProof(solver, "");
+  currentPM()->d_satProof = new LFSCCoreSatProof(solver, d_context, "");
 }
 
 void ProofManager::initCnfProof(prop::CnfStream* cnfStream,
@@ -243,6 +244,10 @@ std::string ProofManager::getLitName(TNode lit,
   return litName;
 }
 
+bool ProofManager::hasLitName(TNode lit) {
+  return currentPM()->d_cnfProof->hasLiteral(lit);
+}
+
 std::string ProofManager::sanitize(TNode node) {
   Assert (node.isVar() || node.isConst());
 
@@ -289,13 +294,45 @@ void ProofManager::traceDeps(TNode n, ExprSet* coreAssertions) {
   }
 }
 
+void ProofManager::traceDeps(TNode n, CDExprSet* coreAssertions) {
+  Debug("cores") << "trace deps " << n << std::endl;
+  if ((n.isConst() && n == NodeManager::currentNM()->mkConst<bool>(true)) ||
+      (n.getKind() == kind::NOT && n[0] == NodeManager::currentNM()->mkConst<bool>(false))) {
+    return;
+  }
+  if(d_inputCoreFormulas.find(n.toExpr()) != d_inputCoreFormulas.end()) {
+    // originating formula was in core set
+    Debug("cores") << " -- IN INPUT CORE LIST!" << std::endl;
+    coreAssertions->insert(n.toExpr());
+  } else {
+    Debug("cores") << " -- NOT IN INPUT CORE LIST!" << std::endl;
+    if(d_deps.find(n) == d_deps.end()) {
+      if (options::allowEmptyDependencies()) {
+        Debug("cores") << " -- Could not track cause assertion. Failing silently." << std::endl;
+        return;
+      }
+      InternalError("Cannot trace dependence information back to input assertion:\n`%s'", n.toString().c_str());
+    }
+    Assert(d_deps.find(n) != d_deps.end());
+    std::vector<Node> deps = (*d_deps.find(n)).second;
+
+    for(std::vector<Node>::const_iterator i = deps.begin(); i != deps.end(); ++i) {
+      Debug("cores") << " + tracing deps: " << n << " -deps-on- " << *i << std::endl;
+      if( !(*i).isNull() ){
+        traceDeps(*i, coreAssertions);
+      }
+    }
+  }
+}
+
 void ProofManager::traceUnsatCore() {
   Assert (options::unsatCores());
-  constructSatProof();
+  d_satProof->refreshProof();
   IdToSatClause used_lemmas;
   IdToSatClause used_inputs;
   d_satProof->collectClausesUsed(used_inputs,
                                  used_lemmas);
+
   IdToSatClause::const_iterator it = used_inputs.begin();
   for(; it != used_inputs.end(); ++it) {
     Node node = d_cnfProof->getAssertionForClause(it->first);
@@ -316,6 +353,17 @@ bool ProofManager::unsatCoreAvailable() const {
   return d_satProof->derivedEmptyClause();
 }
 
+std::vector<Expr> ProofManager::extractUnsatCore() {
+  std::vector<Expr> result;
+  output_core_iterator it = begin_unsat_core();
+  output_core_iterator end = end_unsat_core();
+  while ( it != end ) {
+    result.push_back(*it);
+    ++it;
+  }
+  return result;
+}
+
 void ProofManager::constructSatProof() {
   if (!d_satProof->proofConstructed()) {
     d_satProof->constructProof();
@@ -472,8 +520,9 @@ void ProofManager::addDependence(TNode n, TNode dep) {
     if( !dep.isNull() && d_deps.find(dep) == d_deps.end()) {
       Debug("cores") << "WHERE DID " << dep << " come from ??" << std::endl;
     }
-    //Assert(d_deps.find(dep) != d_deps.end());
-    d_deps[n].push_back(dep);
+    std::vector<Node> deps = d_deps[n].get();
+    deps.push_back(dep);
+    d_deps[n].set(deps);
   }
 }
 
@@ -875,6 +924,11 @@ void ProofManager::addRewriteFilter(const std::string &original, const std::stri
   d_rewriteFilters[original] = substitute;
 }
 
+bool ProofManager::haveRewriteFilter(TNode lit) {
+  std::string litName = getLitName(currentPM()->d_cnfProof->getLiteral(lit));
+  return d_rewriteFilters.find(litName) != d_rewriteFilters.end();
+}
+
 void ProofManager::clearRewriteFilters() {
   d_rewriteFilters.clear();
 }
@@ -1002,4 +1056,8 @@ void ProofManager::printGlobalLetMap(std::set<Node>& atoms,
   out << std::endl << std::endl;
 }
 
+void ProofManager::ensureLiteral(Node node) {
+  d_cnfProof->ensureLiteral(node);
+}
+
 } /* CVC4  namespace */
diff --git a/src/proof/proof_manager.h b/src/proof/proof_manager.h
index fa7224d..2510b77 100644
--- a/src/proof/proof_manager.h
+++ b/src/proof/proof_manager.h
@@ -2,9 +2,9 @@
 /*! \file proof_manager.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Morgan Deters, Guy Katz
+ **   Liana Hadarean, Guy Katz, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -22,6 +22,8 @@
 #include <iosfwd>
 #include <map>
 #include "expr/node.h"
+#include "context/cdhashset.h"
+#include "context/cdhashmap.h"
 #include "proof/clause_id.h"
 #include "proof/proof.h"
 #include "proof/proof_utils.h"
@@ -95,9 +97,11 @@ enum ProofFormat {
 std::string append(const std::string& str, uint64_t num);
 
 typedef __gnu_cxx::hash_map < ClauseId, prop::SatClause* > IdToSatClause;
-typedef __gnu_cxx::hash_set<Expr, ExprHashFunction > ExprSet;
+typedef __gnu_cxx::hash_set<Expr, ExprHashFunction> ExprSet;
+typedef context::CDHashSet<Expr, ExprHashFunction> CDExprSet;
 typedef __gnu_cxx::hash_set<Node, NodeHashFunction > NodeSet;
 typedef __gnu_cxx::hash_map<Node, std::vector<Node>, NodeHashFunction > NodeToNodes;
+typedef context::CDHashMap<Node, std::vector<Node>, NodeHashFunction > CDNodeToNodes;
 typedef std::hash_set<ClauseId> IdHashSet;
 
 enum ProofRule {
@@ -139,6 +143,8 @@ private:
 };
 
 class ProofManager {
+  context::Context* d_context;
+
   CoreSatProof*  d_satProof;
   CnfProof*      d_cnfProof;
   TheoryProofEngine* d_theoryProof;
@@ -146,8 +152,8 @@ class ProofManager {
   // information that will need to be shared across proofs
   ExprSet    d_inputFormulas;
   std::map<Expr, std::string> d_inputFormulaToName;
-  ExprSet    d_inputCoreFormulas;
-  ExprSet    d_outputCoreFormulas;
+  CDExprSet    d_inputCoreFormulas;
+  CDExprSet    d_outputCoreFormulas;
 
   SkolemizationManager d_skolemizationManager;
 
@@ -156,7 +162,7 @@ class ProofManager {
   Proof* d_fullProof;
   ProofFormat d_format; // used for now only in debug builds
 
-  NodeToNodes d_deps;
+  CDNodeToNodes d_deps;
 
   std::set<Type> d_printedTypes;
 
@@ -169,13 +175,13 @@ protected:
   LogicInfo d_logic;
 
 public:
-  ProofManager(ProofFormat format = LFSC);
+  ProofManager(context::Context* context, ProofFormat format = LFSC);
   ~ProofManager();
 
   static ProofManager* currentPM();
 
   // initialization
-  static void         initSatProof(Minisat::Solver* solver);
+  void         initSatProof(Minisat::Solver* solver);
   static void         initCnfProof(CVC4::prop::CnfStream* cnfStream,
                                    context::Context* ctx);
   static void         initTheoryProofEngine();
@@ -206,6 +212,8 @@ public:
     return d_inputFormulas.find(assertion) != d_inputFormulas.end();
   }
 
+  void ensureLiteral(Node node);
+
 //---from Morgan---
   Node mkOp(TNode n);
   Node lookupOp(TNode n) const;
@@ -230,6 +238,7 @@ public:
   static std::string getAtomName(TNode atom, const std::string& prefix = "");
   static std::string getLitName(prop::SatLiteral lit, const std::string& prefix = "");
   static std::string getLitName(TNode lit, const std::string& prefix = "");
+  static bool hasLitName(TNode lit);
 
   // for SMT variable names that have spaces and other things
   static std::string sanitize(TNode var);
@@ -245,10 +254,15 @@ public:
 
   // trace dependences back to unsat core
   void traceDeps(TNode n, ExprSet* coreAssertions);
+  void traceDeps(TNode n, CDExprSet* coreAssertions);
   void traceUnsatCore();
-  assertions_iterator begin_unsat_core() const { return d_outputCoreFormulas.begin(); }
-  assertions_iterator end_unsat_core() const { return d_outputCoreFormulas.end(); }
+
+  typedef CDExprSet::const_iterator output_core_iterator;
+
+  output_core_iterator begin_unsat_core() const { return d_outputCoreFormulas.begin(); }
+  output_core_iterator end_unsat_core() const { return d_outputCoreFormulas.end(); }
   size_t size_unsat_core() const { return d_outputCoreFormulas.size(); }
+  std::vector<Expr> extractUnsatCore();
 
   bool unsatCoreAvailable() const;
   void getLemmasInUnsatCore(theory::TheoryId theory, std::vector<Node> &lemmas);
@@ -265,6 +279,7 @@ public:
 
   void addRewriteFilter(const std::string &original, const std::string &substitute);
   void clearRewriteFilters();
+  bool haveRewriteFilter(TNode lit);
 
   void addAssertionFilter(const Node& node, const std::string& rewritten);
 
diff --git a/src/proof/proof_output_channel.cpp b/src/proof/proof_output_channel.cpp
index c87ccd3..819cc01 100644
--- a/src/proof/proof_output_channel.cpp
+++ b/src/proof/proof_output_channel.cpp
@@ -1,10 +1,18 @@
 /*********************                                                        */
 /*! \file proof_output_channel.cpp
-** \verbatim
-** \brief [[ Add one-line brief description here ]]
-**
-** [[ Add lengthier description here ]]
-** \todo document this file
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Guy Katz, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** [[ Add lengthier description here ]]
+
+ ** \todo document this file
+
 **/
 
 #include "base/cvc4_assert.h"
diff --git a/src/proof/proof_output_channel.h b/src/proof/proof_output_channel.h
index b44689f..74d159b 100644
--- a/src/proof/proof_output_channel.h
+++ b/src/proof/proof_output_channel.h
@@ -1,6 +1,13 @@
 /*********************                                                        */
 /*! \file proof_output_channel.h
  ** \verbatim
+ ** Top contributors (to current version):
+ **   Guy Katz, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
  **
  **/
 
diff --git a/src/proof/proof_utils.cpp b/src/proof/proof_utils.cpp
index 3ace236..6e8ed01 100644
--- a/src/proof/proof_utils.cpp
+++ b/src/proof/proof_utils.cpp
@@ -2,9 +2,9 @@
 /*! \file proof_utils.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean
+ **   Liana Hadarean, Guy Katz, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/proof/proof_utils.h b/src/proof/proof_utils.h
index a759045..d7ac80f 100644
--- a/src/proof/proof_utils.h
+++ b/src/proof/proof_utils.h
@@ -2,9 +2,9 @@
 /*! \file proof_utils.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean
+ **   Liana Hadarean, Guy Katz, Andres Noetzli
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/proof/sat_proof.h b/src/proof/sat_proof.h
index 52e059e..7c96318 100644
--- a/src/proof/sat_proof.h
+++ b/src/proof/sat_proof.h
@@ -2,9 +2,9 @@
 /*! \file sat_proof.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Morgan Deters, Tim King
+ **   Tim King, Liana Hadarean, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -28,6 +28,8 @@
 #include <sstream>
 #include <vector>
 
+#include "context/cdhashmap.h"
+#include "context/cdmaybe.h"
 #include "expr/expr.h"
 #include "proof/clause_id.h"
 #include "proof/proof_manager.h"
@@ -101,9 +103,9 @@ class TSatProof {
   typedef std::set<typename Solver::TVar> VarSet;
   typedef std::hash_map<ClauseId, typename Solver::TCRef> IdCRefMap;
   typedef std::hash_map<typename Solver::TCRef, ClauseId> ClauseIdMap;
-  typedef std::hash_map<ClauseId, typename Solver::TLit> IdUnitMap;
-  typedef std::hash_map<int, ClauseId> UnitIdMap;
-  typedef std::hash_map<ClauseId, ResolutionChain*> IdResMap;
+  typedef context::CDHashMap<ClauseId, typename Solver::TLit> IdUnitMap;
+  typedef context::CDHashMap<int, ClauseId> UnitIdMap;
+  typedef context::CDHashMap<ClauseId, ResolutionChain*> IdResMap;
   typedef std::hash_map<ClauseId, uint64_t> IdProofRuleMap;
   typedef std::vector<ResolutionChain*> ResStack;
   typedef std::set<ClauseId> IdSet;
@@ -113,7 +115,8 @@ class TSatProof {
   typedef __gnu_cxx::hash_map<ClauseId, LitVector*> IdToConflicts;
 
  public:
-  TSatProof(Solver* solver, const std::string& name, bool checkRes = false);
+  TSatProof(Solver* solver, context::Context* context,
+            const std::string& name, bool checkRes = false);
   virtual ~TSatProof();
   void setCnfProof(CnfProof* cnf_proof);
 
@@ -198,6 +201,8 @@ class TSatProof {
    */
   void constructProof(ClauseId id);
   void constructProof() { constructProof(d_emptyClauseId); }
+  void refreshProof(ClauseId id);
+  void refreshProof() { refreshProof(d_emptyClauseId); }
   bool proofConstructed() const;
   void collectClauses(ClauseId id);
   bool derivedEmptyClause() const;
@@ -298,6 +303,7 @@ class TSatProof {
 
   // Internal data.
   typename Solver::Solver* d_solver;
+  context::Context* d_context;
   CnfProof* d_cnfProof;
 
   // clauses
@@ -344,8 +350,7 @@ class TSatProof {
   IdCRefMap d_temp_idClause;
 
   // unit conflict
-  ClauseId d_unitConflictId;
-  bool d_storedUnitConflict;
+  context::CDMaybe<ClauseId> d_unitConflictId;
 
   ClauseId d_trueLit;
   ClauseId d_falseLit;
@@ -389,9 +394,9 @@ template <class SatSolver>
 class LFSCSatProof : public TSatProof<SatSolver> {
  private:
  public:
-  LFSCSatProof(SatSolver* solver, const std::string& name,
-               bool checkRes = false)
-      : TSatProof<SatSolver>(solver, name, checkRes) {}
+  LFSCSatProof(SatSolver* solver, context::Context* context,
+               const std::string& name, bool checkRes = false)
+    : TSatProof<SatSolver>(solver, context, name, checkRes) {}
   virtual void printResolution(ClauseId id, std::ostream& out,
                                std::ostream& paren);
   virtual void printResolutions(std::ostream& out, std::ostream& paren);
diff --git a/src/proof/sat_proof_implementation.h b/src/proof/sat_proof_implementation.h
index 603559d..c115bab 100644
--- a/src/proof/sat_proof_implementation.h
+++ b/src/proof/sat_proof_implementation.h
@@ -2,9 +2,9 @@
 /*! \file sat_proof_implementation.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Guy Katz, Tim King
+ **   Liana Hadarean, Tim King, Guy Katz
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -196,28 +196,29 @@ void ProofProxy<Solver>::updateCRef(typename Solver::TCRef oldref,
 
 /// SatProof
 template <class Solver>
-TSatProof<Solver>::TSatProof(Solver* solver, const std::string& name,
-                             bool checkRes)
+TSatProof<Solver>::TSatProof(Solver* solver, context::Context* context,
+                             const std::string& name, bool checkRes)
     : d_solver(solver),
+      d_context(context),
       d_cnfProof(NULL),
       d_idClause(),
       d_clauseId(),
-      d_idUnit(),
+      d_idUnit(context),
+      d_unitId(context),
       d_deleted(),
       d_inputClauses(),
       d_lemmaClauses(),
       d_assumptions(),
       d_assumptionConflicts(),
       d_assumptionConflictsDebug(),
-      d_resolutionChains(),
+      d_resolutionChains(d_context),
       d_resStack(),
       d_checkRes(checkRes),
       d_emptyClauseId(ClauseIdEmpty),
       d_nullId(-2),
       d_temp_clauseId(),
       d_temp_idClause(),
-      d_unitConflictId(),
-      d_storedUnitConflict(false),
+      d_unitConflictId(context),
       d_trueLit(ClauseIdUndef),
       d_falseLit(ClauseIdUndef),
       d_name(name),
@@ -263,7 +264,7 @@ TSatProof<Solver>::~TSatProof() {
   ResolutionChainIterator resolution_it = d_resolutionChains.begin();
   ResolutionChainIterator resolution_it_end = d_resolutionChains.end();
   for (; resolution_it != resolution_it_end; ++resolution_it) {
-    ResChain<Solver>* current = resolution_it->second;
+    ResChain<Solver>* current = (*resolution_it).second;
     delete current;
   }
 
@@ -378,7 +379,7 @@ template <class Solver>
 ClauseId TSatProof<Solver>::getClauseIdForLiteral(
     typename Solver::TLit lit) const {
   Assert(hasClauseIdForLiteral(lit));
-  return d_unitId.find(toInt(lit))->second;
+  return (*d_unitId.find(toInt(lit))).second;
 }
 
 template <class Solver>
@@ -432,7 +433,7 @@ bool TSatProof<Solver>::isUnit(ClauseId id) const {
 template <class Solver>
 typename Solver::TLit TSatProof<Solver>::getUnit(ClauseId id) const {
   Assert(isUnit(id));
-  return d_idUnit.find(id)->second;
+  return (*d_idUnit.find(id)).second;
 }
 
 template <class Solver>
@@ -443,7 +444,7 @@ bool TSatProof<Solver>::isUnit(typename Solver::TLit lit) const {
 template <class Solver>
 ClauseId TSatProof<Solver>::getUnitId(typename Solver::TLit lit) const {
   Assert(isUnit(lit));
-  return d_unitId.find(toInt(lit))->second;
+  return (*d_unitId.find(toInt(lit))).second;
 }
 
 template <class Solver>
@@ -455,7 +456,7 @@ template <class Solver>
 const typename TSatProof<Solver>::ResolutionChain&
 TSatProof<Solver>::getResolutionChain(ClauseId id) const {
   Assert(hasResolutionChain(id));
-  const ResolutionChain* chain = d_resolutionChains.find(id)->second;
+  const ResolutionChain* chain = (*d_resolutionChains.find(id)).second;
   return *chain;
 }
 
@@ -535,6 +536,7 @@ ClauseId TSatProof<Solver>::registerClause(typename Solver::TCRef clause,
   typename ClauseIdMap::iterator it = d_clauseId.find(clause);
   if (it == d_clauseId.end()) {
     ClauseId newId = ProofManager::currentPM()->nextId();
+
     d_clauseId.insert(std::make_pair(clause, newId));
     d_idClause.insert(std::make_pair(newId, clause));
     if (kind == INPUT) {
@@ -568,8 +570,11 @@ ClauseId TSatProof<Solver>::registerUnitClause(typename Solver::TLit lit,
   typename UnitIdMap::iterator it = d_unitId.find(toInt(lit));
   if (it == d_unitId.end()) {
     ClauseId newId = ProofManager::currentPM()->nextId();
-    d_unitId.insert(std::make_pair(toInt(lit), newId));
-    d_idUnit.insert(std::make_pair(newId, lit));
+
+    if (d_unitId.find(toInt(lit)) == d_unitId.end())
+      d_unitId[toInt(lit)] = newId;
+    if (d_idUnit.find(newId) == d_idUnit.end())
+      d_idUnit[newId] = lit;
 
     if (kind == INPUT) {
       Assert(d_inputClauses.find(newId) == d_inputClauses.end());
@@ -719,13 +724,12 @@ void TSatProof<Solver>::registerResolution(ClauseId id, ResChain<Solver>* res) {
   // could be the case that a resolution chain for this clause already
   // exists (e.g. when removing units in addClause).
   if (hasResolutionChain(id)) {
-    ResChain<Solver>* current = d_resolutionChains.find(id)->second;
+    ResChain<Solver>* current = (*d_resolutionChains.find(id)).second;
     delete current;
-    d_resolutionChains.erase(id);
   }
-  Assert(!hasResolutionChain(id));
 
-  d_resolutionChains.insert(std::make_pair(id, res));
+  d_resolutionChains.insert(id, res);
+
   if (Debug.isOn("proof:sat")) {
     printRes(id);
   }
@@ -823,6 +827,7 @@ void TSatProof<Solver>::storeUnitResolution(typename Solver::TLit lit) {
 template <class Solver>
 ClauseId TSatProof<Solver>::resolveUnit(typename Solver::TLit lit) {
   // first check if we already have a resolution for lit
+
   if (isUnit(lit)) {
     ClauseId id = getClauseIdForLiteral(lit);
     Assert(hasResolutionChain(id) || isInputClause(id) || isLemmaClause(id));
@@ -861,12 +866,11 @@ template <class Solver>
 ClauseId TSatProof<Solver>::storeUnitConflict(
     typename Solver::TLit conflict_lit, ClauseKind kind) {
   Debug("cores") << "STORE UNIT CONFLICT" << std::endl;
-  Assert(!d_storedUnitConflict);
-  d_unitConflictId = registerUnitClause(conflict_lit, kind);
-  d_storedUnitConflict = true;
-  Debug("proof:sat:detailed") << "storeUnitConflict " << d_unitConflictId
+  Assert(!d_unitConflictId.isSet());
+  d_unitConflictId.set(registerUnitClause(conflict_lit, kind));
+  Debug("proof:sat:detailed") << "storeUnitConflict " << d_unitConflictId.get()
                               << "\n";
-  return d_unitConflictId;
+  return d_unitConflictId.get();
 }
 
 template <class Solver>
@@ -875,38 +879,37 @@ void TSatProof<Solver>::finalizeProof(typename Solver::TCRef conflict_ref) {
   Assert(conflict_ref != Solver::TCRef_Undef);
   ClauseId conflict_id;
   if (conflict_ref == Solver::TCRef_Lazy) {
-    Assert(d_storedUnitConflict);
-    conflict_id = d_unitConflictId;
+    Assert(d_unitConflictId.isSet());
+    conflict_id = d_unitConflictId.get();
 
     ResChain<Solver>* res = new ResChain<Solver>(conflict_id);
     typename Solver::TLit lit = d_idUnit[conflict_id];
     ClauseId res_id = resolveUnit(~lit);
     res->addStep(lit, res_id, !sign(lit));
-
     registerResolution(d_emptyClauseId, res);
-
     return;
+
   } else {
-    Assert(!d_storedUnitConflict);
+    Assert(!d_unitConflictId.isSet());
     conflict_id = registerClause(conflict_ref, LEARNT);  // FIXME
   }
 
   if (Debug.isOn("proof:sat")) {
     Debug("proof:sat") << "proof::finalizeProof Final Conflict ";
     print(conflict_id);
+    Debug("proof:sat") << std::endl;
   }
 
   ResChain<Solver>* res = new ResChain<Solver>(conflict_id);
   // Here, the call to resolveUnit() can reallocate memory in the
   // clause allocator.  So reload conflict ptr each time.
-  size_t conflict_size = getClause(conflict_ref).size();
-  for (size_t i = 0; i < conflict_size; ++i) {
+  for (size_t i = 0; i < getClause(conflict_ref).size(); ++i) {
     const typename Solver::TClause& conflict = getClause(conflict_ref);
     typename Solver::TLit lit = conflict[i];
     ClauseId res_id = resolveUnit(~lit);
     res->addStep(lit, res_id, !sign(lit));
-    conflict_size = conflict.size();
   }
+
   registerResolution(d_emptyClauseId, res);
 }
 
@@ -963,6 +966,30 @@ void TSatProof<Solver>::constructProof(ClauseId conflict) {
 }
 
 template <class Solver>
+void TSatProof<Solver>::refreshProof(ClauseId conflict) {
+  IdToSatClause::const_iterator seen_lemma_it = d_seenLemmas.begin();
+  IdToSatClause::const_iterator seen_lemma_end = d_seenLemmas.end();
+
+  for (; seen_lemma_it != seen_lemma_end; ++seen_lemma_it) {
+    if (d_deletedTheoryLemmas.find(seen_lemma_it->first) == d_deletedTheoryLemmas.end())
+      delete seen_lemma_it->second;
+  }
+
+  IdToSatClause::const_iterator seen_input_it = d_seenInputs.begin();
+  IdToSatClause::const_iterator seen_input_end = d_seenInputs.end();
+
+  for (; seen_input_it != seen_input_end; ++seen_input_it) {
+    delete seen_input_it->second;
+  }
+
+  d_seenInputs.clear();
+  d_seenLemmas.clear();
+  d_seenLearnt.clear();
+
+  collectClauses(conflict);
+}
+
+template <class Solver>
 bool TSatProof<Solver>::proofConstructed() const {
   return d_satProofConstructed;
 }
diff --git a/src/proof/simplify_boolean_node.cpp b/src/proof/simplify_boolean_node.cpp
new file mode 100644
index 0000000..9aef51d
--- /dev/null
+++ b/src/proof/simplify_boolean_node.cpp
@@ -0,0 +1,183 @@
+/*********************                                                        */
+/*! \file simplify_boolean_node.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Guy Katz
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Simplifying a boolean node, needed for constructing LFSC proofs.
+ **
+ **/
+
+#include "cvc4_private.h"
+
+#include "proof_manager.h"
+
+namespace CVC4 {
+
+inline static Node eqNode(TNode n1, TNode n2) {
+  return NodeManager::currentNM()->mkNode(kind::EQUAL, n1, n2);
+}
+
+Node simplifyBooleanNode(const Node &n) {
+  if (n.isNull())
+    return n;
+
+  // Only simplify boolean nodes
+  if (!n.getType().isBoolean())
+    return n;
+
+  // Sometimes we get sent intermediate nodes that we shouldn't simplify.
+  // If a node doesn't have a literal, it's clearly intermediate - ignore.
+  if (!ProofManager::hasLitName(n))
+    return n;
+
+  // If we already simplified the node, ignore.
+  if (ProofManager::currentPM()->haveRewriteFilter(n.negate()))
+    return n;
+
+
+  std::string litName = ProofManager::getLitName(n.negate());
+  Node falseNode = NodeManager::currentNM()->mkConst(false);
+  Node trueNode = NodeManager::currentNM()->mkConst(true);
+  Node simplified = n;
+
+  // (not (= false b)), (not (= true b)))
+  if ((n.getKind() == kind::NOT) && (n[0].getKind() == kind::EQUAL) &&
+      (n[0][0].getKind() == kind::BOOLEAN_TERM_VARIABLE || n[0][1].getKind() == kind::BOOLEAN_TERM_VARIABLE)) {
+    Node lhs = n[0][0];
+    Node rhs = n[0][1];
+
+    if (lhs == falseNode) {
+      Assert(rhs != falseNode);
+      Assert(rhs.getKind() == kind::BOOLEAN_TERM_VARIABLE);
+      // (not (= false b)) --> true = b
+
+      simplified = eqNode(trueNode, rhs);
+
+      std::string simplifiedLitName = ProofManager::getLitName(simplified.negate());
+      std::stringstream newLitName;
+      newLitName << "(pred_not_iff_f _ " << litName << ")";
+      ProofManager::currentPM()->addRewriteFilter(simplifiedLitName, newLitName.str());
+
+    } else if (rhs == falseNode) {
+      Assert(lhs != falseNode);
+      Assert(lhs.getKind() == kind::BOOLEAN_TERM_VARIABLE);
+      // (not (= b false)) --> b = true
+
+      simplified = eqNode(lhs, trueNode);
+      std::string simplifiedLitName = ProofManager::getLitName(simplified.negate());
+      std::stringstream newLitName;
+      newLitName << "(pred_not_iff_f_2 _ " << litName << ")";
+      ProofManager::currentPM()->addRewriteFilter(simplifiedLitName, newLitName.str());
+
+    } else if (lhs == trueNode) {
+      Assert(rhs != trueNode);
+      Assert(rhs.getKind() == kind::BOOLEAN_TERM_VARIABLE);
+      // (not (= true b)) --> b = false
+
+      simplified = eqNode(falseNode, rhs);
+      std::string simplifiedLitName = ProofManager::getLitName(simplified.negate());
+      std::stringstream newLitName;
+      newLitName << "(pred_not_iff_t _ " << litName << ")";
+      ProofManager::currentPM()->addRewriteFilter(simplifiedLitName, newLitName.str());
+
+    } else if (rhs == trueNode) {
+      Assert(lhs != trueNode);
+      Assert(lhs.getKind() == kind::BOOLEAN_TERM_VARIABLE);
+      // (not (= b true)) --> b = false
+
+      simplified = eqNode(lhs, falseNode);
+      std::string simplifiedLitName = ProofManager::getLitName(simplified.negate());
+      std::stringstream newLitName;
+      newLitName << "(pred_not_iff_t_2 _ " << litName << ")";
+      ProofManager::currentPM()->addRewriteFilter(simplifiedLitName, newLitName.str());
+    }
+
+  } else if ((n.getKind() == kind::EQUAL) &&
+             (n[0].getKind() == kind::BOOLEAN_TERM_VARIABLE || n[1].getKind() == kind::BOOLEAN_TERM_VARIABLE)) {
+    Node lhs = n[0];
+    Node rhs = n[1];
+
+    if (lhs == falseNode) {
+      Assert(rhs != falseNode);
+      Assert(rhs.getKind() == kind::BOOLEAN_TERM_VARIABLE);
+      // (= false b)
+
+      std::stringstream newLitName;
+      newLitName << "(pred_iff_f _ " << litName << ")";
+      ProofManager::currentPM()->addRewriteFilter(litName, newLitName.str());
+
+    } else if (rhs == falseNode) {
+      Assert(lhs != falseNode);
+      Assert(lhs.getKind() == kind::BOOLEAN_TERM_VARIABLE);
+      // (= b false))
+
+      std::stringstream newLitName;
+      newLitName << "(pred_iff_f_2 _ " << litName << ")";
+      ProofManager::currentPM()->addRewriteFilter(litName, newLitName.str());
+
+    } else if (lhs == trueNode) {
+      Assert(rhs != trueNode);
+      Assert(rhs.getKind() == kind::BOOLEAN_TERM_VARIABLE);
+      // (= true b)
+
+      std::stringstream newLitName;
+      newLitName << "(pred_iff_t _ " << litName << ")";
+      ProofManager::currentPM()->addRewriteFilter(litName, newLitName.str());
+
+    } else if (rhs == trueNode) {
+      Assert(lhs != trueNode);
+      Assert(lhs.getKind() == kind::BOOLEAN_TERM_VARIABLE);
+      // (= b true)
+
+
+      std::stringstream newLitName;
+      newLitName << "(pred_iff_t_2 _ " << litName << ")";
+      ProofManager::currentPM()->addRewriteFilter(litName, newLitName.str());
+    }
+
+  } else if ((n.getKind() == kind::NOT) && (n[0].getKind() == kind::BOOLEAN_TERM_VARIABLE)) {
+    // (not b) --> b = false
+    simplified = eqNode(n[0], falseNode);
+    std::string simplifiedLitName = ProofManager::getLitName(simplified.negate());
+    std::stringstream newLitName;
+    newLitName << "(pred_eq_f _ " << litName << ")";
+    ProofManager::currentPM()->addRewriteFilter(simplifiedLitName, newLitName.str());
+
+  } else if (n.getKind() == kind::BOOLEAN_TERM_VARIABLE) {
+    // (b) --> b = true
+    simplified = eqNode(n, trueNode);
+    std::string simplifiedLitName = ProofManager::getLitName(simplified.negate());
+    std::stringstream newLitName;
+    newLitName << "(pred_eq_t _ " << litName << ")";
+    ProofManager::currentPM()->addRewriteFilter(simplifiedLitName, newLitName.str());
+
+  } else if ((n.getKind() == kind::NOT) && (n[0].getKind() == kind::SELECT)) {
+    // not(a[x]) --> a[x] = false
+    simplified = eqNode(n[0], falseNode);
+    std::string simplifiedLitName = ProofManager::getLitName(simplified.negate());
+    std::stringstream newLitName;
+    newLitName << "(pred_eq_f _ " << litName << ")";
+    ProofManager::currentPM()->addRewriteFilter(simplifiedLitName, newLitName.str());
+
+  } else if (n.getKind() == kind::SELECT) {
+    // a[x] --> a[x] = true
+    simplified = eqNode(n, trueNode);
+    std::string simplifiedLitName = ProofManager::getLitName(simplified.negate());
+    std::stringstream newLitName;
+    newLitName << "(pred_eq_t _ " << litName << ")";
+    ProofManager::currentPM()->addRewriteFilter(simplifiedLitName, newLitName.str());
+  }
+
+  if (simplified != n)
+    Debug("pf::simplify") << "simplifyBooleanNode: " << n << " --> " << simplified << std::endl;
+
+  return simplified;
+}
+
+}/* CVC4 namespace */
diff --git a/src/theory/arith/theory_arith_private_forward.h b/src/proof/simplify_boolean_node.h
similarity index 54%
copy from src/theory/arith/theory_arith_private_forward.h
copy to src/proof/simplify_boolean_node.h
index ffab816..15eac29 100644
--- a/src/theory/arith/theory_arith_private_forward.h
+++ b/src/proof/simplify_boolean_node.h
@@ -1,31 +1,27 @@
 /*********************                                                        */
-/*! \file theory_arith_private_forward.h
+/*! \file simplify_boolean_node.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Guy Katz
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
  **
- ** \brief [[ Add one-line brief description here ]]
+ ** \brief Simplifying a boolean node, needed for constructing LFSC proofs.
  **
- ** [[ Add lengthier description here ]]
- ** \todo document this file
  **/
 
-
 #include "cvc4_private.h"
 
-#pragma once
+#ifndef __CVC4__SIMPLIFY_BOOLEAN_NODE_H
+#define __CVC4__SIMPLIFY_BOOLEAN_NODE_H
 
 namespace CVC4 {
-namespace theory {
-namespace arith {
 
-class TheoryArithPrivate;
+Node simplifyBooleanNode(const Node &n);
 
-}/* CVC4::theory::arith namespace */
-}/* CVC4::theory namespace */
 }/* CVC4 namespace */
+
+#endif /* __CVC4__SIMPLIFY_BOOLEAN_NODE_H */
diff --git a/src/proof/skolemization_manager.cpp b/src/proof/skolemization_manager.cpp
index 12fea82..2234b7b 100644
--- a/src/proof/skolemization_manager.cpp
+++ b/src/proof/skolemization_manager.cpp
@@ -2,9 +2,9 @@
 /*! \file skolemization_manager.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Guy Katz
+ **   Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/proof/skolemization_manager.h b/src/proof/skolemization_manager.h
index b026e21..02aa6b6 100644
--- a/src/proof/skolemization_manager.h
+++ b/src/proof/skolemization_manager.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Guy Katz
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/proof/theory_proof.cpp b/src/proof/theory_proof.cpp
index e245117..7dee924 100644
--- a/src/proof/theory_proof.cpp
+++ b/src/proof/theory_proof.cpp
@@ -2,9 +2,9 @@
 /*! \file theory_proof.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Guy Katz, Morgan Deters
+ **   Guy Katz, Liana Hadarean, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -118,7 +118,12 @@ TheoryProof* TheoryProofEngine::getTheoryProof(theory::TheoryId id) {
     id = theory::THEORY_UF;
   }
 
-  Assert (d_theoryProofTable.find(id) != d_theoryProofTable.end());
+  if (d_theoryProofTable.find(id) == d_theoryProofTable.end()) {
+    std::stringstream ss;
+    ss << "Error! Proofs not yet supported for the following theory: " << id << std::endl;
+    InternalError(ss.str().c_str());
+  }
+
   return d_theoryProofTable[id];
 }
 
@@ -1092,6 +1097,20 @@ void BooleanProof::registerTerm(Expr term) {
   }
 }
 
+void LFSCBooleanProof::printConstantDisequalityProof(std::ostream& os, Expr c1, Expr c2, const ProofLetMap &globalLetMap) {
+  Node falseNode = NodeManager::currentNM()->mkConst(false);
+  Node trueNode = NodeManager::currentNM()->mkConst(true);
+
+  Assert(c1 == falseNode.toExpr() || c1 == trueNode.toExpr());
+  Assert(c2 == falseNode.toExpr() || c2 == trueNode.toExpr());
+  Assert(c1 != c2);
+
+  if (c1 == trueNode.toExpr())
+    os << "t_t_neq_f";
+  else
+    os << "(negsymm _ _ _ t_t_neq_f)";
+}
+
 void LFSCBooleanProof::printOwnedTerm(Expr term, std::ostream& os, const ProofLetMap& map) {
   Assert (term.getType().isBoolean());
   if (term.isVariable()) {
diff --git a/src/proof/theory_proof.h b/src/proof/theory_proof.h
index bbdb7d6..541e4ce 100644
--- a/src/proof/theory_proof.h
+++ b/src/proof/theory_proof.h
@@ -2,9 +2,9 @@
 /*! \file theory_proof.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Guy Katz, Tim King
+ **   Guy Katz, Liana Hadarean, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -332,6 +332,7 @@ public:
   virtual void printAliasingDeclarations(std::ostream& os, std::ostream& paren, const ProofLetMap &globalLetMap);
 
   bool printsAsBool(const Node &n);
+  void printConstantDisequalityProof(std::ostream& os, Expr c1, Expr c2, const ProofLetMap &globalLetMap);
 };
 
 } /* CVC4 namespace */
diff --git a/src/proof/uf_proof.cpp b/src/proof/uf_proof.cpp
index c38fa14..a24f586 100644
--- a/src/proof/uf_proof.cpp
+++ b/src/proof/uf_proof.cpp
@@ -2,9 +2,9 @@
 /*! \file uf_proof.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Guy Katz
+ **   Liana Hadarean, Guy Katz, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -15,8 +15,9 @@
 
 **/
 
-#include "proof/theory_proof.h"
 #include "proof/proof_manager.h"
+#include "proof/simplify_boolean_node.h"
+#include "proof/theory_proof.h"
 #include "proof/uf_proof.h"
 #include "theory/uf/theory_uf.h"
 #include <stack>
@@ -110,10 +111,14 @@ Node ProofUF::toStreamRecLFSC(std::ostream& out, TheoryProof * tp, theory::eq::E
     subTrans.d_node = pf->d_node;
 
     size_t i = 0;
+
     while (i < pf->d_children.size()) {
+      pf->d_children[i]->d_node = simplifyBooleanNode(pf->d_children[i]->d_node);
+
       // Look for the negative clause, with which we will form a contradiction.
       if(!pf->d_children[i]->d_node.isNull() && pf->d_children[i]->d_node.getKind() == kind::NOT) {
         Assert(neg < 0);
+        Node node = pf->d_children[i]->d_node[0];
         neg = i;
         ++i;
       }
@@ -128,8 +133,8 @@ Node ProofUF::toStreamRecLFSC(std::ostream& out, TheoryProof * tp, theory::eq::E
         Debug("pf::uf") << "Collecting congruence sequence" << std::endl;
         for (count = 0;
              i + count < pf->d_children.size() &&
-             pf->d_children[i + count]->d_id==theory::eq::MERGED_THROUGH_CONGRUENCE &&
-             pf->d_children[i + count]->d_node.isNull();
+               pf->d_children[i + count]->d_id==theory::eq::MERGED_THROUGH_CONGRUENCE &&
+               pf->d_children[i + count]->d_node.isNull();
              ++count) {
           Debug("pf::uf") << "Found a congruence: " << std::endl;
           pf->d_children[i+count]->debug_print("pf::uf");
@@ -154,13 +159,16 @@ Node ProofUF::toStreamRecLFSC(std::ostream& out, TheoryProof * tp, theory::eq::E
           targetAppearsAfter = false;
         }
 
-        // Assert that we have precisely one target clause.
-        Assert(targetAppearsBefore != targetAppearsAfter);
+        // Assert that we have precisely at least one possible clause.
+        Assert(targetAppearsBefore || targetAppearsAfter);
+
+        // If both are valid, assume the one after the sequence is correct
+        if (targetAppearsAfter && targetAppearsBefore)
+          targetAppearsBefore = false;
 
         // Begin breaking up the congruences and ordering the equalities correctly.
         std::vector<theory::eq::EqProof *> orderedEqualities;
 
-
         // Insert target clause first.
         if (targetAppearsBefore) {
           orderedEqualities.push_back(pf->d_children[i - 1]);
@@ -176,7 +184,7 @@ Node ProofUF::toStreamRecLFSC(std::ostream& out, TheoryProof * tp, theory::eq::E
             if (pf->d_children[i + j]->d_children[0]->d_id != theory::eq::MERGED_THROUGH_REFLEXIVITY)
               orderedEqualities.insert(orderedEqualities.begin(), pf->d_children[i + j]->d_children[0]);
             if (pf->d_children[i + j]->d_children[1]->d_id != theory::eq::MERGED_THROUGH_REFLEXIVITY)
-            orderedEqualities.insert(orderedEqualities.end(), pf->d_children[i + j]->d_children[1]);
+              orderedEqualities.insert(orderedEqualities.end(), pf->d_children[i + j]->d_children[1]);
           }
         } else {
           for (unsigned j = 0; j < count; ++j) {
@@ -231,6 +239,7 @@ Node ProofUF::toStreamRecLFSC(std::ostream& out, TheoryProof * tp, theory::eq::E
     if (disequalityFound) {
       Node n2 = pf->d_children[neg]->d_node;
       Assert(n2.getKind() == kind::NOT);
+
       Debug("pf::uf") << "n2 is " << n2[0] << std::endl;
 
       if (n2[0].getNumChildren() > 0) { Debug("pf::uf") << "\nn2[0]: " << n2[0][0] << std::endl; }
@@ -248,6 +257,8 @@ Node ProofUF::toStreamRecLFSC(std::ostream& out, TheoryProof * tp, theory::eq::E
           out << ss.str();
         }
         out << "(pred_eq_f _ " << ProofManager::getLitName(n2[0]) << ")) t_t_neq_f))" << std::endl;
+      } else if (n2[0].getKind() == kind::BOOLEAN_TERM_VARIABLE) {
+        out << ss.str() << " " << ProofManager::getLitName(n2[0]) << "))";
       } else {
         Assert((n1[0] == n2[0][0] && n1[1] == n2[0][1]) || (n1[1] == n2[0][0] && n1[0] == n2[0][1]));
         if(n1[1] == n2[0][0]) {
@@ -308,8 +319,8 @@ Node ProofUF::toStreamRecLFSC(std::ostream& out, TheoryProof * tp, theory::eq::E
       Debug("pf::uf") << "SIDE IS 1\n";
       //}
       if(!match(pf2->d_node, n1[1])) {
-      Debug("pf::uf") << "IN BAD CASE, our first subproof is\n";
-      pf2->d_children[0]->debug_print("pf::uf");
+        Debug("pf::uf") << "IN BAD CASE, our first subproof is\n";
+        pf2->d_children[0]->debug_print("pf::uf");
       }
       Assert(match(pf2->d_node, n1[1]));
       side = 1;
@@ -352,7 +363,7 @@ Node ProofUF::toStreamRecLFSC(std::ostream& out, TheoryProof * tp, theory::eq::E
     out << ")";
     while(!stk.empty()) {
       if(tb == 1) {
-      Debug("pf::uf") << "\nMORE TO DO\n";
+        Debug("pf::uf") << "\nMORE TO DO\n";
       }
       pf2 = stk.top();
       stk.pop();
@@ -410,7 +421,7 @@ Node ProofUF::toStreamRecLFSC(std::ostream& out, TheoryProof * tp, theory::eq::E
     }
     Node n = (side == 0 ? eqNode(n1, n2) : eqNode(n2, n1));
     if(tb == 1) {
-    Debug("pf::uf") << "\ncong proved: " << n << "\n";
+      Debug("pf::uf") << "\ncong proved: " << n << "\n";
     }
     return n;
   }
@@ -436,6 +447,9 @@ Node ProofUF::toStreamRecLFSC(std::ostream& out, TheoryProof * tp, theory::eq::E
     Debug("pf::uf") << "\ndoing trans proof[[\n";
     pf->debug_print("pf::uf");
     Debug("pf::uf") << "\n";
+
+    pf->d_children[0]->d_node = simplifyBooleanNode(pf->d_children[0]->d_node);
+
     Node n1 = toStreamRecLFSC(ss, tp, pf->d_children[0], tb + 1, map);
     Debug("pf::uf") << "\ndoing trans proof, got n1 " << n1 << "\n";
     if(tb == 1) {
@@ -452,6 +466,8 @@ Node ProofUF::toStreamRecLFSC(std::ostream& out, TheoryProof * tp, theory::eq::E
       std::stringstream ss1(ss.str()), ss2;
       ss.str("");
 
+      pf->d_children[i]->d_node = simplifyBooleanNode(pf->d_children[i]->d_node);
+
       // It is possible that we've already converted the i'th child to stream. If so,
       // use previously stored result. Otherwise, convert and store.
       Node n2;
@@ -524,7 +540,7 @@ Node ProofUF::toStreamRecLFSC(std::ostream& out, TheoryProof * tp, theory::eq::E
                   ss << " (symm _ _ _ " << ss1.str() << ")" << ss1.str();
                 } else {
                   Debug("pf::uf") << "Error: identical equalities over, but hands don't match what we're proving."
-                                     << std::endl;
+                                  << std::endl;
                   Assert(false);
                 }
               } else {
@@ -595,18 +611,18 @@ Node ProofUF::toStreamRecLFSC(std::ostream& out, TheoryProof * tp, theory::eq::E
         // Both elements of the transitivity rule are equalities/iffs
       {
         if(n1[0] == n2[0]) {
-            if(tb == 1) { Debug("pf::uf") << "case 1\n"; }
-            n1 = eqNode(n1[1], n2[1]);
-            ss << "(symm _ _ _ " << ss1.str() << ") " << ss2.str();
+          if(tb == 1) { Debug("pf::uf") << "case 1\n"; }
+          n1 = eqNode(n1[1], n2[1]);
+          ss << "(symm _ _ _ " << ss1.str() << ") " << ss2.str();
         } else if(n1[1] == n2[1]) {
           if(tb == 1) { Debug("pf::uf") << "case 2\n"; }
           n1 = eqNode(n1[0], n2[0]);
           ss << ss1.str() << " (symm _ _ _ " << ss2.str() << ")";
         } else if(n1[0] == n2[1]) {
-            if(tb == 1) { Debug("pf::uf") << "case 3\n"; }
-            n1 = eqNode(n2[0], n1[1]);
-            ss << ss2.str() << " " << ss1.str();
-            if(tb == 1) { Debug("pf::uf") << "++ proved " << n1 << "\n"; }
+          if(tb == 1) { Debug("pf::uf") << "case 3\n"; }
+          n1 = eqNode(n2[0], n1[1]);
+          ss << ss2.str() << " " << ss1.str();
+          if(tb == 1) { Debug("pf::uf") << "++ proved " << n1 << "\n"; }
         } else if(n1[1] == n2[0]) {
           if(tb == 1) { Debug("pf::uf") << "case 4\n"; }
           n1 = eqNode(n1[0], n2[1]);
@@ -646,9 +662,6 @@ Node ProofUF::toStreamRecLFSC(std::ostream& out, TheoryProof * tp, theory::eq::E
       } else {
         // Both n1 and n2 are predicates.
         // We want to prove b1 = b2, and we know that ((b1), (b2)) or ((not b1), (not b2))
-        Debug("gk::temp") << "Two-predicate case. pf->d_node = " << pf->d_node
-                          << ", n1 = " << n1 << ", n2 = " << n2 << std::endl;
-
         if (n1.getKind() == kind::NOT) {
           Assert(n2.getKind() == kind::NOT);
           Assert(pf->d_node[0] == n1[0] || pf->d_node[0] == n2[0]);
@@ -687,7 +700,6 @@ Node ProofUF::toStreamRecLFSC(std::ostream& out, TheoryProof * tp, theory::eq::E
 
       ss << ")";
     }
-
     out << ss.str();
     Debug("pf::uf") << "\n++ trans proof done, have proven " << n1 << std::endl;
     return n1;
@@ -724,6 +736,14 @@ void UFProof::registerTerm(Expr term) {
 
   if (term.isVariable()) {
     d_declarations.insert(term);
+
+
+    if (term.getKind() == kind::BOOLEAN_TERM_VARIABLE) {
+      // Ensure cnf literals
+      Node asNode(term);
+      ProofManager::currentPM()->ensureLiteral(eqNode(term, NodeManager::currentNM()->mkConst(true)));
+      ProofManager::currentPM()->ensureLiteral(eqNode(term, NodeManager::currentNM()->mkConst(false)));
+    }
   }
 
   // recursively declare all other terms
@@ -756,6 +776,7 @@ void LFSCUFProof::printOwnedTerm(Expr term, std::ostream& os, const ProofLetMap&
   }
   os << func << " ";
   for (unsigned i = 0; i < term.getNumChildren(); ++i) {
+
     bool convertToBool = (term[i].getType().isBoolean() && !d_proofEngine->printsAsBool(term[i]));
     if (convertToBool) os << "(f_to_b ";
     d_proofEngine->printBoundTerm(term[i], os, map);
@@ -839,13 +860,25 @@ void LFSCUFProof::printAliasingDeclarations(std::ostream& os, std::ostream& pare
   // Nothing to do here at this point.
 }
 
-bool LFSCUFProof::printsAsBool(const Node &n)
-{
-  Debug("gk::temp") << "\nUF printsAsBool: " << n << std::endl;
+bool LFSCUFProof::printsAsBool(const Node &n) {
   if (n.getKind() == kind::BOOLEAN_TERM_VARIABLE)
     return true;
 
   return false;
 }
 
+void LFSCUFProof::printConstantDisequalityProof(std::ostream& os, Expr c1, Expr c2, const ProofLetMap &globalLetMap) {
+  Node falseNode = NodeManager::currentNM()->mkConst(false);
+  Node trueNode = NodeManager::currentNM()->mkConst(true);
+
+  Assert(c1 == falseNode.toExpr() || c1 == trueNode.toExpr());
+  Assert(c2 == falseNode.toExpr() || c2 == trueNode.toExpr());
+  Assert(c1 != c2);
+
+  if (c1 == trueNode.toExpr())
+    os << "t_t_neq_f";
+  else
+    os << "(symm _ _ _ t_t_neq_f)";
+}
+
 } /* namespace CVC4 */
diff --git a/src/proof/uf_proof.h b/src/proof/uf_proof.h
index 221a50f..1fb1c46 100644
--- a/src/proof/uf_proof.h
+++ b/src/proof/uf_proof.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Guy Katz, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -73,6 +73,8 @@ public:
   virtual void printAliasingDeclarations(std::ostream& os, std::ostream& paren, const ProofLetMap &globalLetMap);
 
   bool printsAsBool(const Node &n);
+
+  void printConstantDisequalityProof(std::ostream& os, Expr c1, Expr c2, const ProofLetMap &globalLetMap);
 };
 
 
diff --git a/src/proof/unsat_core.cpp b/src/proof/unsat_core.cpp
index 4c940e4..b056e0e 100644
--- a/src/proof/unsat_core.cpp
+++ b/src/proof/unsat_core.cpp
@@ -2,9 +2,9 @@
 /*! \file unsat_core.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Clark Barrett
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/proof/unsat_core.h b/src/proof/unsat_core.h
index a238f0a..6f03dfa 100644
--- a/src/proof/unsat_core.h
+++ b/src/proof/unsat_core.h
@@ -2,9 +2,9 @@
 /*! \file unsat_core.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Liana Hadarean
+ **   Morgan Deters, Paul Meng, Liana Hadarean
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -45,8 +45,7 @@ class CVC4_PUBLIC UnsatCore {
 public:
   UnsatCore() : d_smt(NULL) {}
 
-  template <class T>
-  UnsatCore(SmtEngine* smt, T begin, T end) : d_smt(smt), d_core(begin, end) {
+  UnsatCore(SmtEngine* smt, std::vector<Expr> core) : d_smt(smt), d_core(core) {
     initMessage();
   }
 
diff --git a/src/prop/bvminisat/Makefile b/src/prop/bvminisat/Makefile
index 972a2e6..c35648e 100644
--- a/src/prop/bvminisat/Makefile
+++ b/src/prop/bvminisat/Makefile
@@ -14,7 +14,7 @@
 
 
 
-VPATH = ../../../../../../src/prop/bvminisat
+VPATH = ../../../../src/prop/bvminisat
 am__is_gnu_make = { \
   if test -z '$(MAKELEVEL)'; then \
     false; \
@@ -208,17 +208,17 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ABC_HOME = 
 ABC_LDFLAGS = 
 ABC_LIBS = 
-ACLOCAL = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/missing aclocal-1.15
+ACLOCAL = ${SHELL} /barrett/scratch/preiner/src/CVC4/config/missing aclocal-1.15
 AMTAR = $${TAR-tar}
 AM_DEFAULT_VERBOSITY = 0
-ANTLR = /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/antlr-3.4/bin/antlr3
+ANTLR = /barrett/scratch/preiner/src/CVC4/antlr-3.4/bin/antlr3
 ANTLR_HOME = 
-ANTLR_INCLUDES = -I/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/antlr-3.4/include
-ANTLR_LDFLAGS = -L/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/antlr-3.4/lib -lantlr3c
+ANTLR_INCLUDES = -I/barrett/scratch/preiner/src/CVC4/antlr-3.4/include
+ANTLR_LDFLAGS = -L/barrett/scratch/preiner/src/CVC4/antlr-3.4/lib -lantlr3c
 AR = ar
-AUTOCONF = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/missing autoconf
-AUTOHEADER = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/missing autoheader
-AUTOMAKE = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/missing automake-1.15
+AUTOCONF = ${SHELL} /barrett/scratch/preiner/src/CVC4/config/missing autoconf
+AUTOHEADER = ${SHELL} /barrett/scratch/preiner/src/CVC4/config/missing autoheader
+AUTOMAKE = ${SHELL} /barrett/scratch/preiner/src/CVC4/config/missing automake-1.15
 AWK = mawk
 BOOST_CPPFLAGS =  -pthread
 BOOST_LDPATH = /usr/local/lib
@@ -232,29 +232,30 @@ BOOST_THREAD_LIBS = -lboost_thread -lboost_system -pthread
 BOOST_THREAD_WIN32_LDFLAGS = 
 BOOST_THREAD_WIN32_LDPATH = 
 BOOST_THREAD_WIN32_LIBS = 
-BUILDING_SHARED = 1
-BUILDING_STATIC = 0
+BUILDING_SHARED = 0
+BUILDING_STATIC = 1
 CAMLP4O = 
 CC = gcc
 CCDEPMODE = depmode=gcc3
 CFLAGS = -O3 -ggdb3 -Wno-deprecated -fexceptions
 CLN_CFLAGS = 
 CLN_LIBS = 
+COVERAGE_ON = 
 CPP = gcc -E
-CPPFLAGS =  -pthread -DCVC4_PROOF -DCVC4_STATISTICS_ON -DNDEBUG -DCVC4_DUMPING
+CPPFLAGS =  -pthread -DCVC4_PROOF -DCVC4_STATISTICS_ON -DNDEBUG -DCVC4_DUMPING -DCVC4_PORTFOLIO
 CRYPTOMINISAT_HOME = 
 CRYPTOMINISAT_LDFLAGS = 
 CRYPTOMINISAT_LIBS = 
 CSHARP_CPPFLAGS = 
-CVC4_BINDINGS_LIBRARY_VERSION = 3:0:0
+CVC4_BINDINGS_LIBRARY_VERSION = 4:0:0
 CVC4_BUILD_LIBCOMPAT = yes
-CVC4_COMPAT_LIBRARY_VERSION = 3:0:0
+CVC4_COMPAT_LIBRARY_VERSION = 4:0:0
 CVC4_HAS_THREADS = 1
 CVC4_JAVA_MODULE_EXT = .so
 CVC4_LANGUAGE_BINDINGS = 
-CVC4_LIBRARY_VERSION = 3:0:0
+CVC4_LIBRARY_VERSION = 4:0:0
 CVC4_NEED_INT64_T_OVERLOADS = 0
-CVC4_PARSER_LIBRARY_VERSION = 3:0:0
+CVC4_PARSER_LIBRARY_VERSION = 4:0:0
 CVC4_TLS = __thread
 CVC4_TLS_SUPPORTED = 1
 CVC4_USE_CLN_IMP = 0
@@ -276,27 +277,27 @@ DOXYGEN_PAPER_SIZE =
 DSYMUTIL = 
 DUMPBIN = 
 DX_CONFIG = config/doxygen.cfg
-DX_DOCDIR = ../../../doc/doxygen
-DX_DOT = /usr/bin/dot
+DX_DOCDIR = ../doc/doxygen
+DX_DOT = 
 DX_DOXYGEN = /usr/bin/doxygen
 DX_DVIPS = 
-DX_EGREP = /bin/egrep
-DX_ENV =  SRCDIR='../../..' PROJECT='cvc4' DOCDIR='../../../doc/doxygen' VERSION='1.5-prerelease' PERL_PATH='/usr/bin/perl' HAVE_DOT='YES' DOT_PATH='/usr/bin' GENERATE_MAN='NO' GENERATE_RTF='NO' GENERATE_XML='NO' GENERATE_HTMLHELP='NO' GENERATE_CHI='NO' GENERATE_HTML='YES' GENERATE_LATEX='YES'
+DX_EGREP = 
+DX_ENV =  SRCDIR='..' PROJECT='cvc4' DOCDIR='../doc/doxygen' VERSION='1.5' PERL_PATH='/usr/bin/perl' HAVE_DOT='NO' GENERATE_MAN='NO' GENERATE_RTF='NO' GENERATE_XML='NO' GENERATE_HTMLHELP='NO' GENERATE_CHI='NO' GENERATE_HTML='YES' GENERATE_LATEX='NO'
 DX_FLAG_DX_CURRENT_FEATURE = 
 DX_FLAG_chi = 0
 DX_FLAG_chm = 0
 DX_FLAG_doc = 1
-DX_FLAG_dot = 1
+DX_FLAG_dot = 0
 DX_FLAG_html = 1
 DX_FLAG_man = 0
-DX_FLAG_pdf = 1
+DX_FLAG_pdf = 0
 DX_FLAG_ps = 0
 DX_FLAG_rtf = 0
 DX_FLAG_xml = 0
 DX_HHC = 
 DX_LATEX = 
-DX_MAKEINDEX = /usr/bin/makeindex
-DX_PDFLATEX = /usr/bin/pdflatex
+DX_MAKEINDEX = 
+DX_PDFLATEX = 
 DX_PERL = /usr/bin/perl
 DX_PROJECT = cvc4
 ECHO_C = 
@@ -331,9 +332,9 @@ LN_S = ln -s
 LTLIBOBJS =  ${LIBOBJDIR}strtok_r$U.lo ${LIBOBJDIR}ffs$U.lo
 LT_SYS_LIBRARY_PATH = 
 MAINT = 
-MAKEINFO = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/missing makeinfo
+MAKEINFO = ${SHELL} /barrett/scratch/preiner/src/CVC4/config/missing makeinfo
 MANIFEST_TOOL = :
-MAN_DATE = March 2017
+MAN_DATE = July 2017
 MKDIR_P = /bin/mkdir -p
 NM = /usr/bin/nm -B
 NMEDIT = 
@@ -347,10 +348,10 @@ OTOOL64 =
 PACKAGE = cvc4
 PACKAGE_BUGREPORT = cvc-bugs at cs.nyu.edu
 PACKAGE_NAME = cvc4
-PACKAGE_STRING = cvc4 1.5-prerelease
+PACKAGE_STRING = cvc4 1.5
 PACKAGE_TARNAME = cvc4
 PACKAGE_URL = 
-PACKAGE_VERSION = 1.5-prerelease
+PACKAGE_VERSION = 1.5
 PATH_SEPARATOR = :
 PERL = perl
 PERL_CPPFLAGS = 
@@ -371,7 +372,7 @@ RUN_REGRESSION_ARGS = --proof
 SED = /bin/sed
 SET_MAKE = 
 SHELL = /bin/bash
-STATIC_BINARY = 0
+STATIC_BINARY = 1
 STRIP = strip
 SWIG = swig
 TCL_CPPFLAGS = 
@@ -379,17 +380,17 @@ TESTS_ENVIRONMENT =
 TEST_CPPFLAGS = 
 TEST_CXXFLAGS = 
 TEST_LDFLAGS = 
-VERSION = 1.5-prerelease
+VERSION = 1.5
 WERROR = -Werror
 WNO_CONVERSION_NULL = -Wno-conversion-null
 WNO_PARENTHESES = -Wno-parentheses
 WNO_TAUTOLOGICAL_COMPARE = -Wno-tautological-compare
 WNO_UNINITIALIZED = -Wno-uninitialized
 WNO_UNUSED_VARIABLE = -Wno-unused-variable
-abs_builddir = /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/builds/x86_64-pc-linux-gnu/production/src/prop/bvminisat
-abs_srcdir = /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/builds/x86_64-pc-linux-gnu/production/../../../src/prop/bvminisat
-abs_top_builddir = /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/builds/x86_64-pc-linux-gnu/production
-abs_top_srcdir = /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/builds/x86_64-pc-linux-gnu/production/../../..
+abs_builddir = /barrett/scratch/preiner/src/CVC4/release-1.5/src/prop/bvminisat
+abs_srcdir = /barrett/scratch/preiner/src/CVC4/release-1.5/../src/prop/bvminisat
+abs_top_builddir = /barrett/scratch/preiner/src/CVC4/release-1.5
+abs_top_srcdir = /barrett/scratch/preiner/src/CVC4/release-1.5/..
 ac_ct_AR = ar
 ac_ct_CC = gcc
 ac_ct_CXX = g++
@@ -407,7 +408,7 @@ build_os = linux-gnu
 build_vendor = pc
 builddir = .
 cvc4_LDFLAGS = 
-cvc4_config_cmdline = --with-antlr-dir=/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/antlr-3.4 ANTLR=/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/antlr-3.4/bin/antlr3
+cvc4_config_cmdline = --enable-static-binary --with-build=production --disable-shared --enable-unit-testing --with-portfolio CVC4_BSD_LICENSED_CODE_ONLY=1 --with-antlr-dir=/barrett/scratch/preiner/src/CVC4/antlr-3.4 ANTLR=/barrett/scratch/preiner/src/CVC4/antlr-3.4/bin/antlr3
 datadir = ${datarootdir}
 datarootdir = ${prefix}/share
 docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
@@ -421,7 +422,7 @@ host_vendor = pc
 htmldir = ${docdir}
 includedir = ${prefix}/include
 infodir = ${datarootdir}/info
-install_sh = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/install-sh
+install_sh = ${SHELL} /barrett/scratch/preiner/src/CVC4/config/install-sh
 libdir = ${exec_prefix}/lib
 libexecdir = ${exec_prefix}/libexec
 localedir = ${datarootdir}/locale
@@ -444,7 +445,7 @@ pythondir =
 runstatedir = ${localstatedir}/run
 sbindir = ${exec_prefix}/sbin
 sharedstatedir = ${prefix}/com
-srcdir = ../../../../../../src/prop/bvminisat
+srcdir = ../../../../src/prop/bvminisat
 subdirs =  proofs/lfsc_checker
 sysconfdir = ${prefix}/etc
 target = x86_64-pc-linux-gnu
@@ -454,13 +455,13 @@ target_os = linux-gnu
 target_vendor = pc
 top_build_prefix = ../../../
 top_builddir = ../../..
-top_srcdir = ../../../../../..
+top_srcdir = ../../../..
 zz_cvc4_use_personal_make_rules = 
 AM_CPPFLAGS = \
 	-D__BUILDING_CVC4LIB \
 	-D __STDC_LIMIT_MACROS \
 	-D __STDC_FORMAT_MACROS \
-	-I./../.. -I../../../../../../src/prop/bvminisat/../../include -I../../../../../../src/prop/bvminisat/ -I../../../../../../src/prop/bvminisat/../..
+	-I./../.. -I../../../../src/prop/bvminisat/../../include -I../../../../src/prop/bvminisat/ -I../../../../src/prop/bvminisat/../..
 
 AM_CXXFLAGS = -Wall -Wno-parentheses -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
 noinst_LTLIBRARIES = libbvminisat.la
diff --git a/src/prop/bvminisat/Makefile.in b/src/prop/bvminisat/Makefile.in
index 0de3903..21a827f 100644
--- a/src/prop/bvminisat/Makefile.in
+++ b/src/prop/bvminisat/Makefile.in
@@ -240,6 +240,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/src/prop/bvminisat/bvminisat.cpp b/src/prop/bvminisat/bvminisat.cpp
index 368a79b..21c41ef 100644
--- a/src/prop/bvminisat/bvminisat.cpp
+++ b/src/prop/bvminisat/bvminisat.cpp
@@ -1,15 +1,13 @@
 /*********************                                                        */
 /*! \file bvminisat.cpp
  ** \verbatim
- ** Original author: dejan
- ** Major contributors:
- ** Minor contributors (to current version):
- ** This file is part of the CVC4 prototype.
- ** Copyright (c) 2009-2014  The Analysis of Computer Systems Group (ACSys)
- ** Courant Institute of Mathematical Sciences
- ** New York University
- ** See the file COPYING in the top-level source directory for licensing
- ** information.\endverbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
  **
  ** \brief SAT Solver.
  **
diff --git a/src/prop/bvminisat/bvminisat.h b/src/prop/bvminisat/bvminisat.h
index 732bd03..54f4a9f 100644
--- a/src/prop/bvminisat/bvminisat.h
+++ b/src/prop/bvminisat/bvminisat.h
@@ -1,15 +1,13 @@
 /*********************                                                        */
 /*! \file bvminisat.h
  ** \verbatim
- ** Original author: dejan
- ** Major contributors:
- ** Minor contributors (to current version):
- ** This file is part of the CVC4 prototype.
- ** Copyright (c) 2009-2014  The Analysis of Computer Systems Group (ACSys)
- ** Courant Institute of Mathematical Sciences
- ** New York University
- ** See the file COPYING in the top-level source directory for licensing
- ** information.\endverbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
  **
  ** \brief SAT Solver.
  **
diff --git a/src/prop/cnf_stream.cpp b/src/prop/cnf_stream.cpp
index bc81980..3c918ec 100644
--- a/src/prop/cnf_stream.cpp
+++ b/src/prop/cnf_stream.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Dejan Jovanovic, Liana Hadarean, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/prop/cnf_stream.h b/src/prop/cnf_stream.h
index a965018..affcc29 100644
--- a/src/prop/cnf_stream.h
+++ b/src/prop/cnf_stream.h
@@ -2,9 +2,9 @@
 /*! \file cnf_stream.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Tim King
+ **   Tim King, Dejan Jovanovic, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/prop/cryptominisat.cpp b/src/prop/cryptominisat.cpp
index eff079c..6627e86 100644
--- a/src/prop/cryptominisat.cpp
+++ b/src/prop/cryptominisat.cpp
@@ -1,15 +1,13 @@
 /*********************                                                        */
 /*! \file cryptominisat.cpp
  ** \verbatim
- ** Original author: lianah
- ** Major contributors:
- ** Minor contributors (to current version):
- ** This file is part of the CVC4 prototype.
- ** Copyright (c) 2009-2014  The Analysis of Computer Systems Group (ACSys)
- ** Courant Institute of Mathematical Sciences
- ** New York University
- ** See the file COPYING in the top-level source directory for licensing
- ** information.\endverbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
  **
  ** \brief SAT Solver.
  **
diff --git a/src/prop/cryptominisat.h b/src/prop/cryptominisat.h
index 7ad861d..bb2f477 100644
--- a/src/prop/cryptominisat.h
+++ b/src/prop/cryptominisat.h
@@ -1,15 +1,13 @@
 /*********************                                                        */
 /*! \file cryptominisat.h
  ** \verbatim
- ** Original author: lianah
- ** Major contributors:
- ** Minor contributors (to current version):
- ** This file is part of the CVC4 prototype.
- ** Copyright (c) 2009-2014  The Analysis of Computer Systems Group (ACSys)
- ** Courant Institute of Mathematical Sciences
- ** New York University
- ** See the file COPYING in the top-level source directory for licensing
- ** information.\endverbatim
+ ** Top contributors (to current version):
+ **   Liana Hadarean, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
  **
  ** \brief SAT Solver.
  **
diff --git a/src/prop/minisat/Makefile b/src/prop/minisat/Makefile
index 3561cbc..9d95480 100644
--- a/src/prop/minisat/Makefile
+++ b/src/prop/minisat/Makefile
@@ -14,7 +14,7 @@
 
 
 
-VPATH = ../../../../../../src/prop/minisat
+VPATH = ../../../../src/prop/minisat
 am__is_gnu_make = { \
   if test -z '$(MAKELEVEL)'; then \
     false; \
@@ -208,17 +208,17 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ABC_HOME = 
 ABC_LDFLAGS = 
 ABC_LIBS = 
-ACLOCAL = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/missing aclocal-1.15
+ACLOCAL = ${SHELL} /barrett/scratch/preiner/src/CVC4/config/missing aclocal-1.15
 AMTAR = $${TAR-tar}
 AM_DEFAULT_VERBOSITY = 0
-ANTLR = /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/antlr-3.4/bin/antlr3
+ANTLR = /barrett/scratch/preiner/src/CVC4/antlr-3.4/bin/antlr3
 ANTLR_HOME = 
-ANTLR_INCLUDES = -I/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/antlr-3.4/include
-ANTLR_LDFLAGS = -L/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/antlr-3.4/lib -lantlr3c
+ANTLR_INCLUDES = -I/barrett/scratch/preiner/src/CVC4/antlr-3.4/include
+ANTLR_LDFLAGS = -L/barrett/scratch/preiner/src/CVC4/antlr-3.4/lib -lantlr3c
 AR = ar
-AUTOCONF = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/missing autoconf
-AUTOHEADER = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/missing autoheader
-AUTOMAKE = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/missing automake-1.15
+AUTOCONF = ${SHELL} /barrett/scratch/preiner/src/CVC4/config/missing autoconf
+AUTOHEADER = ${SHELL} /barrett/scratch/preiner/src/CVC4/config/missing autoheader
+AUTOMAKE = ${SHELL} /barrett/scratch/preiner/src/CVC4/config/missing automake-1.15
 AWK = mawk
 BOOST_CPPFLAGS =  -pthread
 BOOST_LDPATH = /usr/local/lib
@@ -232,29 +232,30 @@ BOOST_THREAD_LIBS = -lboost_thread -lboost_system -pthread
 BOOST_THREAD_WIN32_LDFLAGS = 
 BOOST_THREAD_WIN32_LDPATH = 
 BOOST_THREAD_WIN32_LIBS = 
-BUILDING_SHARED = 1
-BUILDING_STATIC = 0
+BUILDING_SHARED = 0
+BUILDING_STATIC = 1
 CAMLP4O = 
 CC = gcc
 CCDEPMODE = depmode=gcc3
 CFLAGS = -O3 -ggdb3 -Wno-deprecated -fexceptions
 CLN_CFLAGS = 
 CLN_LIBS = 
+COVERAGE_ON = 
 CPP = gcc -E
-CPPFLAGS =  -pthread -DCVC4_PROOF -DCVC4_STATISTICS_ON -DNDEBUG -DCVC4_DUMPING
+CPPFLAGS =  -pthread -DCVC4_PROOF -DCVC4_STATISTICS_ON -DNDEBUG -DCVC4_DUMPING -DCVC4_PORTFOLIO
 CRYPTOMINISAT_HOME = 
 CRYPTOMINISAT_LDFLAGS = 
 CRYPTOMINISAT_LIBS = 
 CSHARP_CPPFLAGS = 
-CVC4_BINDINGS_LIBRARY_VERSION = 3:0:0
+CVC4_BINDINGS_LIBRARY_VERSION = 4:0:0
 CVC4_BUILD_LIBCOMPAT = yes
-CVC4_COMPAT_LIBRARY_VERSION = 3:0:0
+CVC4_COMPAT_LIBRARY_VERSION = 4:0:0
 CVC4_HAS_THREADS = 1
 CVC4_JAVA_MODULE_EXT = .so
 CVC4_LANGUAGE_BINDINGS = 
-CVC4_LIBRARY_VERSION = 3:0:0
+CVC4_LIBRARY_VERSION = 4:0:0
 CVC4_NEED_INT64_T_OVERLOADS = 0
-CVC4_PARSER_LIBRARY_VERSION = 3:0:0
+CVC4_PARSER_LIBRARY_VERSION = 4:0:0
 CVC4_TLS = __thread
 CVC4_TLS_SUPPORTED = 1
 CVC4_USE_CLN_IMP = 0
@@ -276,27 +277,27 @@ DOXYGEN_PAPER_SIZE =
 DSYMUTIL = 
 DUMPBIN = 
 DX_CONFIG = config/doxygen.cfg
-DX_DOCDIR = ../../../doc/doxygen
-DX_DOT = /usr/bin/dot
+DX_DOCDIR = ../doc/doxygen
+DX_DOT = 
 DX_DOXYGEN = /usr/bin/doxygen
 DX_DVIPS = 
-DX_EGREP = /bin/egrep
-DX_ENV =  SRCDIR='../../..' PROJECT='cvc4' DOCDIR='../../../doc/doxygen' VERSION='1.5-prerelease' PERL_PATH='/usr/bin/perl' HAVE_DOT='YES' DOT_PATH='/usr/bin' GENERATE_MAN='NO' GENERATE_RTF='NO' GENERATE_XML='NO' GENERATE_HTMLHELP='NO' GENERATE_CHI='NO' GENERATE_HTML='YES' GENERATE_LATEX='YES'
+DX_EGREP = 
+DX_ENV =  SRCDIR='..' PROJECT='cvc4' DOCDIR='../doc/doxygen' VERSION='1.5' PERL_PATH='/usr/bin/perl' HAVE_DOT='NO' GENERATE_MAN='NO' GENERATE_RTF='NO' GENERATE_XML='NO' GENERATE_HTMLHELP='NO' GENERATE_CHI='NO' GENERATE_HTML='YES' GENERATE_LATEX='NO'
 DX_FLAG_DX_CURRENT_FEATURE = 
 DX_FLAG_chi = 0
 DX_FLAG_chm = 0
 DX_FLAG_doc = 1
-DX_FLAG_dot = 1
+DX_FLAG_dot = 0
 DX_FLAG_html = 1
 DX_FLAG_man = 0
-DX_FLAG_pdf = 1
+DX_FLAG_pdf = 0
 DX_FLAG_ps = 0
 DX_FLAG_rtf = 0
 DX_FLAG_xml = 0
 DX_HHC = 
 DX_LATEX = 
-DX_MAKEINDEX = /usr/bin/makeindex
-DX_PDFLATEX = /usr/bin/pdflatex
+DX_MAKEINDEX = 
+DX_PDFLATEX = 
 DX_PERL = /usr/bin/perl
 DX_PROJECT = cvc4
 ECHO_C = 
@@ -331,9 +332,9 @@ LN_S = ln -s
 LTLIBOBJS =  ${LIBOBJDIR}strtok_r$U.lo ${LIBOBJDIR}ffs$U.lo
 LT_SYS_LIBRARY_PATH = 
 MAINT = 
-MAKEINFO = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/missing makeinfo
+MAKEINFO = ${SHELL} /barrett/scratch/preiner/src/CVC4/config/missing makeinfo
 MANIFEST_TOOL = :
-MAN_DATE = March 2017
+MAN_DATE = July 2017
 MKDIR_P = /bin/mkdir -p
 NM = /usr/bin/nm -B
 NMEDIT = 
@@ -347,10 +348,10 @@ OTOOL64 =
 PACKAGE = cvc4
 PACKAGE_BUGREPORT = cvc-bugs at cs.nyu.edu
 PACKAGE_NAME = cvc4
-PACKAGE_STRING = cvc4 1.5-prerelease
+PACKAGE_STRING = cvc4 1.5
 PACKAGE_TARNAME = cvc4
 PACKAGE_URL = 
-PACKAGE_VERSION = 1.5-prerelease
+PACKAGE_VERSION = 1.5
 PATH_SEPARATOR = :
 PERL = perl
 PERL_CPPFLAGS = 
@@ -371,7 +372,7 @@ RUN_REGRESSION_ARGS = --proof
 SED = /bin/sed
 SET_MAKE = 
 SHELL = /bin/bash
-STATIC_BINARY = 0
+STATIC_BINARY = 1
 STRIP = strip
 SWIG = swig
 TCL_CPPFLAGS = 
@@ -379,17 +380,17 @@ TESTS_ENVIRONMENT =
 TEST_CPPFLAGS = 
 TEST_CXXFLAGS = 
 TEST_LDFLAGS = 
-VERSION = 1.5-prerelease
+VERSION = 1.5
 WERROR = -Werror
 WNO_CONVERSION_NULL = -Wno-conversion-null
 WNO_PARENTHESES = -Wno-parentheses
 WNO_TAUTOLOGICAL_COMPARE = -Wno-tautological-compare
 WNO_UNINITIALIZED = -Wno-uninitialized
 WNO_UNUSED_VARIABLE = -Wno-unused-variable
-abs_builddir = /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/builds/x86_64-pc-linux-gnu/production/src/prop/minisat
-abs_srcdir = /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/builds/x86_64-pc-linux-gnu/production/../../../src/prop/minisat
-abs_top_builddir = /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/builds/x86_64-pc-linux-gnu/production
-abs_top_srcdir = /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/builds/x86_64-pc-linux-gnu/production/../../..
+abs_builddir = /barrett/scratch/preiner/src/CVC4/release-1.5/src/prop/minisat
+abs_srcdir = /barrett/scratch/preiner/src/CVC4/release-1.5/../src/prop/minisat
+abs_top_builddir = /barrett/scratch/preiner/src/CVC4/release-1.5
+abs_top_srcdir = /barrett/scratch/preiner/src/CVC4/release-1.5/..
 ac_ct_AR = ar
 ac_ct_CC = gcc
 ac_ct_CXX = g++
@@ -407,7 +408,7 @@ build_os = linux-gnu
 build_vendor = pc
 builddir = .
 cvc4_LDFLAGS = 
-cvc4_config_cmdline = --with-antlr-dir=/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/antlr-3.4 ANTLR=/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/antlr-3.4/bin/antlr3
+cvc4_config_cmdline = --enable-static-binary --with-build=production --disable-shared --enable-unit-testing --with-portfolio CVC4_BSD_LICENSED_CODE_ONLY=1 --with-antlr-dir=/barrett/scratch/preiner/src/CVC4/antlr-3.4 ANTLR=/barrett/scratch/preiner/src/CVC4/antlr-3.4/bin/antlr3
 datadir = ${datarootdir}
 datarootdir = ${prefix}/share
 docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
@@ -421,7 +422,7 @@ host_vendor = pc
 htmldir = ${docdir}
 includedir = ${prefix}/include
 infodir = ${datarootdir}/info
-install_sh = ${SHELL} /barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/config/install-sh
+install_sh = ${SHELL} /barrett/scratch/preiner/src/CVC4/config/install-sh
 libdir = ${exec_prefix}/lib
 libexecdir = ${exec_prefix}/libexec
 localedir = ${datarootdir}/locale
@@ -444,7 +445,7 @@ pythondir =
 runstatedir = ${localstatedir}/run
 sbindir = ${exec_prefix}/sbin
 sharedstatedir = ${prefix}/com
-srcdir = ../../../../../../src/prop/minisat
+srcdir = ../../../../src/prop/minisat
 subdirs =  proofs/lfsc_checker
 sysconfdir = ${prefix}/etc
 target = x86_64-pc-linux-gnu
@@ -454,13 +455,13 @@ target_os = linux-gnu
 target_vendor = pc
 top_build_prefix = ../../../
 top_builddir = ../../..
-top_srcdir = ../../../../../..
+top_srcdir = ../../../..
 zz_cvc4_use_personal_make_rules = 
 AM_CPPFLAGS = \
 	-D__BUILDING_CVC4LIB \
 	-D __STDC_LIMIT_MACROS \
 	-D __STDC_FORMAT_MACROS \
-	-I./../.. -I../../../../../../src/prop/minisat/../../include -I../../../../../../src/prop/minisat/ -I../../../../../../src/prop/minisat/../..
+	-I./../.. -I../../../../src/prop/minisat/../../include -I../../../../src/prop/minisat/ -I../../../../src/prop/minisat/../..
 
 AM_CXXFLAGS = -Wall -Wno-parentheses -Wno-unknown-pragmas $(FLAG_VISIBILITY_HIDDEN)
 noinst_LTLIBRARIES = libminisat.la
diff --git a/src/prop/minisat/Makefile.in b/src/prop/minisat/Makefile.in
index f896bc0..19dde3f 100644
--- a/src/prop/minisat/Makefile.in
+++ b/src/prop/minisat/Makefile.in
@@ -240,6 +240,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/src/prop/minisat/core/Solver.cc b/src/prop/minisat/core/Solver.cc
index d898b66..0bf5d5d 100644
--- a/src/prop/minisat/core/Solver.cc
+++ b/src/prop/minisat/core/Solver.cc
@@ -131,7 +131,7 @@ Solver::Solver(CVC4::prop::TheoryProxy* proxy, CVC4::context::Context* context,
   , propagation_budget (-1)
   , asynch_interrupt   (false)
 {
-  PROOF(ProofManager::initSatProof(this);)
+  PROOF(ProofManager::currentPM()->initSatProof(this);)
 
   // Create the constant variables
   varTrue = newVar(true, false, false);
@@ -428,7 +428,10 @@ bool Solver::addClause_(vec<Lit>& ps, bool removable, ClauseId& id)
             }
           }
           return ok;
-        } else return ok;
+        } else {
+          PROOF(id = ClauseIdUndef;);
+          return ok;
+        }
       }
     }
 
diff --git a/src/prop/minisat/minisat.cpp b/src/prop/minisat/minisat.cpp
index a88a872..514338f 100644
--- a/src/prop/minisat/minisat.cpp
+++ b/src/prop/minisat/minisat.cpp
@@ -1,15 +1,13 @@
 /*********************                                                        */
 /*! \file minisat.cpp
  ** \verbatim
- ** Original author: dejan
- ** Major contributors:
- ** Minor contributors (to current version):
- ** This file is part of the CVC4 prototype.
- ** Copyright (c) 2009-2014  The Analysis of Computer Systems Group (ACSys)
- ** Courant Institute of Mathematical Sciences
- ** New York University
- ** See the file COPYING in the top-level source directory for licensing
- ** information.\endverbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
  **
  ** \brief SAT Solver.
  **
diff --git a/src/prop/minisat/minisat.h b/src/prop/minisat/minisat.h
index 1627a65..ca179fb 100644
--- a/src/prop/minisat/minisat.h
+++ b/src/prop/minisat/minisat.h
@@ -1,15 +1,13 @@
 /*********************                                                        */
 /*! \file minisat.h
  ** \verbatim
- ** Original author: dejan
- ** Major contributors:
- ** Minor contributors (to current version):
- ** This file is part of the CVC4 prototype.
- ** Copyright (c) 2009-2014  The Analysis of Computer Systems Group (ACSys)
- ** Courant Institute of Mathematical Sciences
- ** New York University
- ** See the file COPYING in the top-level source directory for licensing
- ** information.\endverbatim
+ ** Top contributors (to current version):
+ **   Dejan Jovanovic, Tim King, Morgan Deters
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
  **
  ** \brief SAT Solver.
  **
diff --git a/src/prop/prop_engine.cpp b/src/prop/prop_engine.cpp
index 6cdf17f..1a56fa1 100644
--- a/src/prop/prop_engine.cpp
+++ b/src/prop/prop_engine.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Dejan Jovanovic, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/prop/prop_engine.h b/src/prop/prop_engine.h
index f966def..4802ae5 100644
--- a/src/prop/prop_engine.h
+++ b/src/prop/prop_engine.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Dejan Jovanovic, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/prop/registrar.h b/src/prop/registrar.h
index bd80889..ec774e9 100644
--- a/src/prop/registrar.h
+++ b/src/prop/registrar.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Tim King, Liana Hadarean
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/prop/sat_solver.h b/src/prop/sat_solver.h
index 4afaea5..c790f59 100644
--- a/src/prop/sat_solver.h
+++ b/src/prop/sat_solver.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Dejan Jovanovic, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/prop/sat_solver_factory.cpp b/src/prop/sat_solver_factory.cpp
index 7fdc44e..27e2daf 100644
--- a/src/prop/sat_solver_factory.cpp
+++ b/src/prop/sat_solver_factory.cpp
@@ -2,9 +2,9 @@
 /*! \file sat_solver_factory.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Tim King, Morgan Deters
+ **   Dejan Jovanovic, Tim King, Liana Hadarean
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/prop/sat_solver_factory.h b/src/prop/sat_solver_factory.h
index a04bcaa..fac8c90 100644
--- a/src/prop/sat_solver_factory.h
+++ b/src/prop/sat_solver_factory.h
@@ -2,9 +2,9 @@
 /*! \file sat_solver_factory.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Tim King, Morgan Deters
+ **   Dejan Jovanovic, Tim King, Liana Hadarean
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/prop/sat_solver_types.h b/src/prop/sat_solver_types.h
index 557f9af..d2dbace 100644
--- a/src/prop/sat_solver_types.h
+++ b/src/prop/sat_solver_types.h
@@ -2,9 +2,9 @@
 /*! \file sat_solver_types.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Kshitij Bansal, Tim King
+ **   Dejan Jovanovic, Kshitij Bansal, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/prop/theory_proxy.cpp b/src/prop/theory_proxy.cpp
index 5f5eac7..8f74b71 100644
--- a/src/prop/theory_proxy.cpp
+++ b/src/prop/theory_proxy.cpp
@@ -2,9 +2,9 @@
 /*! \file theory_proxy.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Liana Hadarean
+ **   Morgan Deters, Tim King, Guy Katz
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/prop/theory_proxy.h b/src/prop/theory_proxy.h
index 88c6ca9..510a12e 100644
--- a/src/prop/theory_proxy.h
+++ b/src/prop/theory_proxy.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Morgan Deters, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt/command.cpp b/src/smt/command.cpp
index bd514e2..2ca8b1f 100644
--- a/src/smt/command.cpp
+++ b/src/smt/command.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Andrew Reynolds, Francois Bobot
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -105,7 +105,7 @@ bool Command::interrupted() const throw() {
   return d_commandStatus != NULL && dynamic_cast<const CommandInterrupted*>(d_commandStatus) != NULL;
 }
 
-void Command::invoke(SmtEngine* smtEngine, std::ostream& out) throw() {
+void Command::invoke(SmtEngine* smtEngine, std::ostream& out) {
   invoke(smtEngine);
   if(!(isMuted() && ok())) {
     printResult(out, smtEngine->getOption("command-verbosity:" + getCommandName()).getIntegerValue().toUnsignedInt());
@@ -127,7 +127,7 @@ void CommandStatus::toStream(std::ostream& out, OutputLanguage language) const t
   Printer::getPrinter(language)->toStream(out, this);
 }
 
-void Command::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+void Command::printResult(std::ostream& out, uint32_t verbosity) const {
   if(d_commandStatus != NULL) {
     if((!ok() && verbosity >= 1) || verbosity >= 2) {
       out << *d_commandStatus;
@@ -145,7 +145,7 @@ std::string EmptyCommand::getName() const throw() {
   return d_name;
 }
 
-void EmptyCommand::invoke(SmtEngine* smtEngine) throw() {
+void EmptyCommand::invoke(SmtEngine* smtEngine) {
   /* empty commands have no implementation */
   d_commandStatus = CommandSuccess::instance();
 }
@@ -172,12 +172,12 @@ std::string EchoCommand::getOutput() const throw() {
   return d_output;
 }
 
-void EchoCommand::invoke(SmtEngine* smtEngine) throw() {
+void EchoCommand::invoke(SmtEngine* smtEngine) {
   /* we don't have an output stream here, nothing to do */
   d_commandStatus = CommandSuccess::instance();
 }
 
-void EchoCommand::invoke(SmtEngine* smtEngine, std::ostream& out) throw() {
+void EchoCommand::invoke(SmtEngine* smtEngine, std::ostream& out) {
   out << d_output << std::endl;
   d_commandStatus = CommandSuccess::instance();
   printResult(out, smtEngine->getOption("command-verbosity:" + getCommandName()).getIntegerValue().toUnsignedInt());
@@ -205,7 +205,7 @@ Expr AssertCommand::getExpr() const throw() {
   return d_expr;
 }
 
-void AssertCommand::invoke(SmtEngine* smtEngine) throw() {
+void AssertCommand::invoke(SmtEngine* smtEngine) {
   try {
     smtEngine->assertFormula(d_expr, d_inUnsatCore);
     d_commandStatus = CommandSuccess::instance();
@@ -230,7 +230,7 @@ std::string AssertCommand::getCommandName() const throw() {
 
 /* class PushCommand */
 
-void PushCommand::invoke(SmtEngine* smtEngine) throw() {
+void PushCommand::invoke(SmtEngine* smtEngine) {
   try {
     smtEngine->push();
     d_commandStatus = CommandSuccess::instance();
@@ -255,7 +255,7 @@ std::string PushCommand::getCommandName() const throw() {
 
 /* class PopCommand */
 
-void PopCommand::invoke(SmtEngine* smtEngine) throw() {
+void PopCommand::invoke(SmtEngine* smtEngine) {
   try {
     smtEngine->pop();
     d_commandStatus = CommandSuccess::instance();
@@ -292,7 +292,7 @@ Expr CheckSatCommand::getExpr() const throw() {
   return d_expr;
 }
 
-void CheckSatCommand::invoke(SmtEngine* smtEngine) throw() {
+void CheckSatCommand::invoke(SmtEngine* smtEngine) {
   try {
     d_result = smtEngine->checkSat(d_expr);
     d_commandStatus = CommandSuccess::instance();
@@ -305,7 +305,7 @@ Result CheckSatCommand::getResult() const throw() {
   return d_result;
 }
 
-void CheckSatCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+void CheckSatCommand::printResult(std::ostream& out, uint32_t verbosity) const {
   if(! ok()) {
     this->Command::printResult(out, verbosity);
   } else {
@@ -339,7 +339,7 @@ Expr QueryCommand::getExpr() const throw() {
   return d_expr;
 }
 
-void QueryCommand::invoke(SmtEngine* smtEngine) throw() {
+void QueryCommand::invoke(SmtEngine* smtEngine) {
   try {
     d_result = smtEngine->query(d_expr);
     d_commandStatus = CommandSuccess::instance();
@@ -352,7 +352,7 @@ Result QueryCommand::getResult() const throw() {
   return d_result;
 }
 
-void QueryCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+void QueryCommand::printResult(std::ostream& out, uint32_t verbosity) const {
   if(! ok()) {
     this->Command::printResult(out, verbosity);
   } else {
@@ -391,7 +391,7 @@ Expr CheckSynthCommand::getExpr() const throw() {
   return d_expr;
 }
 
-void CheckSynthCommand::invoke(SmtEngine* smtEngine) throw() {
+void CheckSynthCommand::invoke(SmtEngine* smtEngine) {
   try {
     d_result = smtEngine->checkSynth(d_expr);
     d_commandStatus = CommandSuccess::instance();
@@ -404,7 +404,7 @@ Result CheckSynthCommand::getResult() const throw() {
   return d_result;
 }
 
-void CheckSynthCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+void CheckSynthCommand::printResult(std::ostream& out, uint32_t verbosity) const {
   if(! ok()) {
     this->Command::printResult(out, verbosity);
   } else {
@@ -431,7 +431,7 @@ std::string CheckSynthCommand::getCommandName() const throw() {
 
 /* class ResetCommand */
 
-void ResetCommand::invoke(SmtEngine* smtEngine) throw() {
+void ResetCommand::invoke(SmtEngine* smtEngine) {
   try {
     smtEngine->reset();
     d_commandStatus = CommandSuccess::instance();
@@ -454,7 +454,7 @@ std::string ResetCommand::getCommandName() const throw() {
 
 /* class ResetAssertionsCommand */
 
-void ResetAssertionsCommand::invoke(SmtEngine* smtEngine) throw() {
+void ResetAssertionsCommand::invoke(SmtEngine* smtEngine) {
   try {
     smtEngine->resetAssertions();
     d_commandStatus = CommandSuccess::instance();
@@ -477,7 +477,7 @@ std::string ResetAssertionsCommand::getCommandName() const throw() {
 
 /* class QuitCommand */
 
-void QuitCommand::invoke(SmtEngine* smtEngine) throw() {
+void QuitCommand::invoke(SmtEngine* smtEngine) {
   Dump("benchmark") << *this;
   d_commandStatus = CommandSuccess::instance();
 }
@@ -503,7 +503,7 @@ std::string CommentCommand::getComment() const throw() {
   return d_comment;
 }
 
-void CommentCommand::invoke(SmtEngine* smtEngine) throw() {
+void CommentCommand::invoke(SmtEngine* smtEngine) {
   Dump("benchmark") << *this;
   d_commandStatus = CommandSuccess::instance();
 }
@@ -540,7 +540,7 @@ void CommandSequence::clear() throw() {
   d_commandSequence.clear();
 }
 
-void CommandSequence::invoke(SmtEngine* smtEngine) throw() {
+void CommandSequence::invoke(SmtEngine* smtEngine) {
   for(; d_index < d_commandSequence.size(); ++d_index) {
     d_commandSequence[d_index]->invoke(smtEngine);
     if(! d_commandSequence[d_index]->ok()) {
@@ -555,7 +555,7 @@ void CommandSequence::invoke(SmtEngine* smtEngine) throw() {
   d_commandStatus = CommandSuccess::instance();
 }
 
-void CommandSequence::invoke(SmtEngine* smtEngine, std::ostream& out) throw() {
+void CommandSequence::invoke(SmtEngine* smtEngine, std::ostream& out) {
   for(; d_index < d_commandSequence.size(); ++d_index) {
     d_commandSequence[d_index]->invoke(smtEngine, out);
     if(! d_commandSequence[d_index]->ok()) {
@@ -654,7 +654,7 @@ void DeclareFunctionCommand::setPrintInModel( bool p ) {
   d_printInModelSetByUser = true;
 }
 
-void DeclareFunctionCommand::invoke(SmtEngine* smtEngine) throw() {
+void DeclareFunctionCommand::invoke(SmtEngine* smtEngine) {
   d_commandStatus = CommandSuccess::instance();
 }
 
@@ -694,7 +694,7 @@ Type DeclareTypeCommand::getType() const throw() {
   return d_type;
 }
 
-void DeclareTypeCommand::invoke(SmtEngine* smtEngine) throw() {
+void DeclareTypeCommand::invoke(SmtEngine* smtEngine) {
   d_commandStatus = CommandSuccess::instance();
 }
 
@@ -737,7 +737,7 @@ Type DefineTypeCommand::getType() const throw() {
   return d_type;
 }
 
-void DefineTypeCommand::invoke(SmtEngine* smtEngine) throw() {
+void DefineTypeCommand::invoke(SmtEngine* smtEngine) {
   d_commandStatus = CommandSuccess::instance();
 }
 
@@ -790,7 +790,7 @@ Expr DefineFunctionCommand::getFormula() const throw() {
   return d_formula;
 }
 
-void DefineFunctionCommand::invoke(SmtEngine* smtEngine) throw() {
+void DefineFunctionCommand::invoke(SmtEngine* smtEngine) {
   try {
     if(!d_func.isNull()) {
       smtEngine->defineFunction(d_func, d_formals, d_formula);
@@ -827,7 +827,7 @@ DefineNamedFunctionCommand::DefineNamedFunctionCommand(const std::string& id,
   DefineFunctionCommand(id, func, formals, formula) {
 }
 
-void DefineNamedFunctionCommand::invoke(SmtEngine* smtEngine) throw() {
+void DefineNamedFunctionCommand::invoke(SmtEngine* smtEngine) {
   this->DefineFunctionCommand::invoke(smtEngine);
   if(!d_func.isNull() && d_func.getType().isBoolean()) {
     smtEngine->addToAssignment(d_func.getExprManager()->mkExpr(kind::APPLY, d_func));
@@ -865,7 +865,7 @@ SetUserAttributeCommand::SetUserAttributeCommand( const std::string& attr, Expr
   d_attr( attr ), d_expr( expr ), d_str_value( value ){
 }
 
-void SetUserAttributeCommand::invoke(SmtEngine* smtEngine) throw(){
+void SetUserAttributeCommand::invoke(SmtEngine* smtEngine) {
   try {
     if(!d_expr.isNull()) {
       smtEngine->setUserAttribute( d_attr, d_expr, d_expr_values, d_str_value );
@@ -903,7 +903,7 @@ Expr SimplifyCommand::getTerm() const throw() {
   return d_term;
 }
 
-void SimplifyCommand::invoke(SmtEngine* smtEngine) throw() {
+void SimplifyCommand::invoke(SmtEngine* smtEngine) {
   try {
     d_result = smtEngine->simplify(d_term);
     d_commandStatus = CommandSuccess::instance();
@@ -918,7 +918,7 @@ Expr SimplifyCommand::getResult() const throw() {
   return d_result;
 }
 
-void SimplifyCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+void SimplifyCommand::printResult(std::ostream& out, uint32_t verbosity) const {
   if(! ok()) {
     this->Command::printResult(out, verbosity);
   } else {
@@ -952,7 +952,7 @@ Expr ExpandDefinitionsCommand::getTerm() const throw() {
   return d_term;
 }
 
-void ExpandDefinitionsCommand::invoke(SmtEngine* smtEngine) throw() {
+void ExpandDefinitionsCommand::invoke(SmtEngine* smtEngine) {
   d_result = smtEngine->expandDefinitions(d_term);
   d_commandStatus = CommandSuccess::instance();
 }
@@ -961,7 +961,7 @@ Expr ExpandDefinitionsCommand::getResult() const throw() {
   return d_result;
 }
 
-void ExpandDefinitionsCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+void ExpandDefinitionsCommand::printResult(std::ostream& out, uint32_t verbosity) const {
   if(! ok()) {
     this->Command::printResult(out, verbosity);
   } else {
@@ -1002,7 +1002,7 @@ const std::vector<Expr>& GetValueCommand::getTerms() const throw() {
   return d_terms;
 }
 
-void GetValueCommand::invoke(SmtEngine* smtEngine) throw() {
+void GetValueCommand::invoke(SmtEngine* smtEngine) {
   try {
     vector<Expr> result;
     ExprManager* em = smtEngine->getExprManager();
@@ -1034,7 +1034,7 @@ Expr GetValueCommand::getResult() const throw() {
   return d_result;
 }
 
-void GetValueCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+void GetValueCommand::printResult(std::ostream& out, uint32_t verbosity) const {
   if(! ok()) {
     this->Command::printResult(out, verbosity);
   } else {
@@ -1068,7 +1068,7 @@ std::string GetValueCommand::getCommandName() const throw() {
 GetAssignmentCommand::GetAssignmentCommand() throw() {
 }
 
-void GetAssignmentCommand::invoke(SmtEngine* smtEngine) throw() {
+void GetAssignmentCommand::invoke(SmtEngine* smtEngine) {
   try {
     d_result = smtEngine->getAssignment();
     d_commandStatus = CommandSuccess::instance();
@@ -1083,7 +1083,7 @@ SExpr GetAssignmentCommand::getResult() const throw() {
   return d_result;
 }
 
-void GetAssignmentCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+void GetAssignmentCommand::printResult(std::ostream& out, uint32_t verbosity) const {
   if(! ok()) {
     this->Command::printResult(out, verbosity);
   } else {
@@ -1112,7 +1112,7 @@ std::string GetAssignmentCommand::getCommandName() const throw() {
 GetModelCommand::GetModelCommand() throw() {
 }
 
-void GetModelCommand::invoke(SmtEngine* smtEngine) throw() {
+void GetModelCommand::invoke(SmtEngine* smtEngine) {
   try {
     d_result = smtEngine->getModel();
     d_smtEngine = smtEngine;
@@ -1130,7 +1130,7 @@ Model* GetModelCommand::getResult() const throw() {
 }
 */
 
-void GetModelCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+void GetModelCommand::printResult(std::ostream& out, uint32_t verbosity) const {
   if(! ok()) {
     this->Command::printResult(out, verbosity);
   } else {
@@ -1161,7 +1161,7 @@ std::string GetModelCommand::getCommandName() const throw() {
 GetProofCommand::GetProofCommand() throw() {
 }
 
-void GetProofCommand::invoke(SmtEngine* smtEngine) throw() {
+void GetProofCommand::invoke(SmtEngine* smtEngine) {
   try {
     d_smtEngine = smtEngine;
     d_result = smtEngine->getProof();
@@ -1177,7 +1177,7 @@ Proof* GetProofCommand::getResult() const throw() {
   return d_result;
 }
 
-void GetProofCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+void GetProofCommand::printResult(std::ostream& out, uint32_t verbosity) const {
   if(! ok()) {
     this->Command::printResult(out, verbosity);
   } else {
@@ -1209,7 +1209,7 @@ std::string GetProofCommand::getCommandName() const throw() {
 GetInstantiationsCommand::GetInstantiationsCommand() throw() {
 }
 
-void GetInstantiationsCommand::invoke(SmtEngine* smtEngine) throw() {
+void GetInstantiationsCommand::invoke(SmtEngine* smtEngine) {
   try {
     d_smtEngine = smtEngine;
     d_commandStatus = CommandSuccess::instance();
@@ -1222,7 +1222,7 @@ void GetInstantiationsCommand::invoke(SmtEngine* smtEngine) throw() {
 //  return d_result;
 //}
 
-void GetInstantiationsCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+void GetInstantiationsCommand::printResult(std::ostream& out, uint32_t verbosity) const {
   if(! ok()) {
     this->Command::printResult(out, verbosity);
   } else {
@@ -1253,7 +1253,7 @@ std::string GetInstantiationsCommand::getCommandName() const throw() {
 GetSynthSolutionCommand::GetSynthSolutionCommand() throw() {
 }
 
-void GetSynthSolutionCommand::invoke(SmtEngine* smtEngine) throw() {
+void GetSynthSolutionCommand::invoke(SmtEngine* smtEngine) {
   try {
     d_smtEngine = smtEngine;
     d_commandStatus = CommandSuccess::instance();
@@ -1262,7 +1262,7 @@ void GetSynthSolutionCommand::invoke(SmtEngine* smtEngine) throw() {
   }
 }
 
-void GetSynthSolutionCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+void GetSynthSolutionCommand::printResult(std::ostream& out, uint32_t verbosity) const {
   if(! ok()) {
     this->Command::printResult(out, verbosity);
   } else {
@@ -1303,7 +1303,7 @@ bool GetQuantifierEliminationCommand::getDoFull() const throw() {
   return d_doFull;
 }
 
-void GetQuantifierEliminationCommand::invoke(SmtEngine* smtEngine) throw() {
+void GetQuantifierEliminationCommand::invoke(SmtEngine* smtEngine) {
   try {
     d_result = smtEngine->doQuantifierElimination(d_expr, d_doFull);
     d_commandStatus = CommandSuccess::instance();
@@ -1316,7 +1316,7 @@ Expr GetQuantifierEliminationCommand::getResult() const throw() {
   return d_result;
 }
 
-void GetQuantifierEliminationCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+void GetQuantifierEliminationCommand::printResult(std::ostream& out, uint32_t verbosity) const {
   if(! ok()) {
     this->Command::printResult(out, verbosity);
   } else {
@@ -1348,7 +1348,7 @@ GetUnsatCoreCommand::GetUnsatCoreCommand() throw() {
 GetUnsatCoreCommand::GetUnsatCoreCommand(const std::map<Expr, std::string>& names) throw() : d_names(names) {
 }
 
-void GetUnsatCoreCommand::invoke(SmtEngine* smtEngine) throw() {
+void GetUnsatCoreCommand::invoke(SmtEngine* smtEngine) {
   try {
     d_result = smtEngine->getUnsatCore();
     d_commandStatus = CommandSuccess::instance();
@@ -1357,7 +1357,7 @@ void GetUnsatCoreCommand::invoke(SmtEngine* smtEngine) throw() {
   }
 }
 
-void GetUnsatCoreCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+void GetUnsatCoreCommand::printResult(std::ostream& out, uint32_t verbosity) const {
   if(! ok()) {
     this->Command::printResult(out, verbosity);
   } else {
@@ -1391,7 +1391,7 @@ std::string GetUnsatCoreCommand::getCommandName() const throw() {
 GetAssertionsCommand::GetAssertionsCommand() throw() {
 }
 
-void GetAssertionsCommand::invoke(SmtEngine* smtEngine) throw() {
+void GetAssertionsCommand::invoke(SmtEngine* smtEngine) {
   try {
     stringstream ss;
     const vector<Expr> v = smtEngine->getAssertions();
@@ -1409,7 +1409,7 @@ std::string GetAssertionsCommand::getResult() const throw() {
   return d_result;
 }
 
-void GetAssertionsCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+void GetAssertionsCommand::printResult(std::ostream& out, uint32_t verbosity) const {
   if(! ok()) {
     this->Command::printResult(out, verbosity);
   } else {
@@ -1443,7 +1443,7 @@ BenchmarkStatus SetBenchmarkStatusCommand::getStatus() const throw() {
   return d_status;
 }
 
-void SetBenchmarkStatusCommand::invoke(SmtEngine* smtEngine) throw() {
+void SetBenchmarkStatusCommand::invoke(SmtEngine* smtEngine) {
   try {
     stringstream ss;
     ss << d_status;
@@ -1477,7 +1477,7 @@ std::string SetBenchmarkLogicCommand::getLogic() const throw() {
   return d_logic;
 }
 
-void SetBenchmarkLogicCommand::invoke(SmtEngine* smtEngine) throw() {
+void SetBenchmarkLogicCommand::invoke(SmtEngine* smtEngine) {
   try {
     smtEngine->setLogic(d_logic);
     d_commandStatus = CommandSuccess::instance();
@@ -1513,7 +1513,7 @@ SExpr SetInfoCommand::getSExpr() const throw() {
   return d_sexpr;
 }
 
-void SetInfoCommand::invoke(SmtEngine* smtEngine) throw() {
+void SetInfoCommand::invoke(SmtEngine* smtEngine) {
   try {
     smtEngine->setInfo(d_flag, d_sexpr);
     d_commandStatus = CommandSuccess::instance();
@@ -1547,7 +1547,7 @@ std::string GetInfoCommand::getFlag() const throw() {
   return d_flag;
 }
 
-void GetInfoCommand::invoke(SmtEngine* smtEngine) throw() {
+void GetInfoCommand::invoke(SmtEngine* smtEngine) {
   try {
     vector<SExpr> v;
     v.push_back(SExpr(SExpr::Keyword(string(":") + d_flag)));
@@ -1570,7 +1570,7 @@ std::string GetInfoCommand::getResult() const throw() {
   return d_result;
 }
 
-void GetInfoCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+void GetInfoCommand::printResult(std::ostream& out, uint32_t verbosity) const {
   if(! ok()) {
     this->Command::printResult(out, verbosity);
   } else if(d_result != "") {
@@ -1609,7 +1609,7 @@ SExpr SetOptionCommand::getSExpr() const throw() {
   return d_sexpr;
 }
 
-void SetOptionCommand::invoke(SmtEngine* smtEngine) throw() {
+void SetOptionCommand::invoke(SmtEngine* smtEngine) {
   try {
     smtEngine->setOption(d_flag, d_sexpr);
     d_commandStatus = CommandSuccess::instance();
@@ -1642,7 +1642,7 @@ std::string GetOptionCommand::getFlag() const throw() {
   return d_flag;
 }
 
-void GetOptionCommand::invoke(SmtEngine* smtEngine) throw() {
+void GetOptionCommand::invoke(SmtEngine* smtEngine) {
   try {
     SExpr res = smtEngine->getOption(d_flag);
     d_result = res.toString();
@@ -1658,7 +1658,7 @@ std::string GetOptionCommand::getResult() const throw() {
   return d_result;
 }
 
-void GetOptionCommand::printResult(std::ostream& out, uint32_t verbosity) const throw() {
+void GetOptionCommand::printResult(std::ostream& out, uint32_t verbosity) const {
   if(! ok()) {
     this->Command::printResult(out, verbosity);
   } else if(d_result != "") {
@@ -1698,7 +1698,7 @@ DatatypeDeclarationCommand::getDatatypes() const throw() {
   return d_datatypes;
 }
 
-void DatatypeDeclarationCommand::invoke(SmtEngine* smtEngine) throw() {
+void DatatypeDeclarationCommand::invoke(SmtEngine* smtEngine) {
   d_commandStatus = CommandSuccess::instance();
 }
 
@@ -1749,7 +1749,7 @@ const RewriteRuleCommand::Triggers& RewriteRuleCommand::getTriggers() const thro
   return d_triggers;
 }
 
-void RewriteRuleCommand::invoke(SmtEngine* smtEngine) throw() {
+void RewriteRuleCommand::invoke(SmtEngine* smtEngine) {
   try {
     ExprManager* em = smtEngine->getExprManager();
     /** build vars list */
@@ -1861,7 +1861,7 @@ bool PropagateRuleCommand::isDeduction() const throw() {
   return d_deduction;
 }
 
-void PropagateRuleCommand::invoke(SmtEngine* smtEngine) throw() {
+void PropagateRuleCommand::invoke(SmtEngine* smtEngine) {
   try {
     ExprManager* em = smtEngine->getExprManager();
     /** build vars list */
diff --git a/src/smt/command.h b/src/smt/command.h
index db4efd8..36e6798 100644
--- a/src/smt/command.h
+++ b/src/smt/command.h
@@ -2,9 +2,9 @@
 /*! \file command.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Andrew Reynolds, Francois Bobot
+ **   Morgan Deters, Andrew Reynolds, Andres Noetzli
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -215,8 +215,8 @@ public:
 
   virtual ~Command() throw();
 
-  virtual void invoke(SmtEngine* smtEngine) throw() = 0;
-  virtual void invoke(SmtEngine* smtEngine, std::ostream& out) throw();
+  virtual void invoke(SmtEngine* smtEngine) = 0;
+  virtual void invoke(SmtEngine* smtEngine, std::ostream& out);
 
   virtual void toStream(std::ostream& out, int toDepth = -1, bool types = false, size_t dag = 1,
                         OutputLanguage language = language::output::LANG_AUTO) const throw();
@@ -255,7 +255,7 @@ public:
   /** Get the command status (it's NULL if we haven't run yet). */
   const CommandStatus* getCommandStatus() const throw() { return d_commandStatus; }
 
-  virtual void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  virtual void printResult(std::ostream& out, uint32_t verbosity = 2) const;
 
   /**
    * Maps this Command into one for a different ExprManager, using
@@ -299,7 +299,7 @@ public:
   EmptyCommand(std::string name = "") throw();
   ~EmptyCommand() throw() {}
   std::string getName() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -312,8 +312,8 @@ public:
   EchoCommand(std::string output = "") throw();
   ~EchoCommand() throw() {}
   std::string getOutput() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
-  void invoke(SmtEngine* smtEngine, std::ostream& out) throw();
+  void invoke(SmtEngine* smtEngine);
+  void invoke(SmtEngine* smtEngine, std::ostream& out);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -327,7 +327,7 @@ public:
   AssertCommand(const Expr& e, bool inUnsatCore = true) throw();
   ~AssertCommand() throw() {}
   Expr getExpr() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -336,7 +336,7 @@ public:
 class CVC4_PUBLIC PushCommand : public Command {
 public:
   ~PushCommand() throw() {}
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -345,7 +345,7 @@ public:
 class CVC4_PUBLIC PopCommand : public Command {
 public:
   ~PopCommand() throw() {}
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -357,7 +357,7 @@ protected:
 public:
   DeclarationDefinitionCommand(const std::string& id) throw();
   ~DeclarationDefinitionCommand() throw() {}
-  virtual void invoke(SmtEngine* smtEngine) throw() = 0;
+  virtual void invoke(SmtEngine* smtEngine) = 0;
   std::string getSymbol() const throw();
 };/* class DeclarationDefinitionCommand */
 
@@ -375,7 +375,7 @@ public:
   bool getPrintInModel() const throw();
   bool getPrintInModelSetByUser() const throw();
   void setPrintInModel( bool p );
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -390,7 +390,7 @@ public:
   ~DeclareTypeCommand() throw() {}
   size_t getArity() const throw();
   Type getType() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -406,7 +406,7 @@ public:
   ~DefineTypeCommand() throw() {}
   const std::vector<Type>& getParameters() const throw();
   Type getType() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -425,7 +425,7 @@ public:
   Expr getFunction() const throw();
   const std::vector<Expr>& getFormals() const throw();
   Expr getFormula() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -440,7 +440,7 @@ class CVC4_PUBLIC DefineNamedFunctionCommand : public DefineFunctionCommand {
 public:
   DefineNamedFunctionCommand(const std::string& id, Expr func,
                              const std::vector<Expr>& formals, Expr formula) throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
 };/* class DefineNamedFunctionCommand */
@@ -460,7 +460,7 @@ public:
   SetUserAttributeCommand( const std::string& attr, Expr expr, std::vector<Expr>& values ) throw();
   SetUserAttributeCommand( const std::string& attr, Expr expr, const std::string& value ) throw();
   ~SetUserAttributeCommand() throw() {}
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -476,9 +476,9 @@ public:
   CheckSatCommand(const Expr& expr, bool inUnsatCore = true) throw();
   ~CheckSatCommand() throw() {}
   Expr getExpr() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Result getResult() const throw();
-  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const;
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -493,9 +493,9 @@ public:
   QueryCommand(const Expr& e, bool inUnsatCore = true) throw();
   ~QueryCommand() throw() {}
   Expr getExpr() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Result getResult() const throw();
-  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const;
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -511,9 +511,9 @@ public:
   CheckSynthCommand(const Expr& expr, bool inUnsatCore = true) throw();
   ~CheckSynthCommand() throw() {}
   Expr getExpr() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Result getResult() const throw();
-  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const;
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -528,9 +528,9 @@ public:
   SimplifyCommand(Expr term) throw();
   ~SimplifyCommand() throw() {}
   Expr getTerm() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Expr getResult() const throw();
-  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const;
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -544,9 +544,9 @@ public:
   ExpandDefinitionsCommand(Expr term) throw();
   ~ExpandDefinitionsCommand() throw() {}
   Expr getTerm() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Expr getResult() const throw();
-  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const;
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -561,9 +561,9 @@ public:
   GetValueCommand(const std::vector<Expr>& terms) throw();
   ~GetValueCommand() throw() {}
   const std::vector<Expr>& getTerms() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Expr getResult() const throw();
-  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const;
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -575,9 +575,9 @@ protected:
 public:
   GetAssignmentCommand() throw();
   ~GetAssignmentCommand() throw() {}
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   SExpr getResult() const throw();
-  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const;
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -590,10 +590,10 @@ protected:
 public:
   GetModelCommand() throw();
   ~GetModelCommand() throw() {}
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   // Model is private to the library -- for now
   //Model* getResult() const throw();
-  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const;
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -606,9 +606,9 @@ protected:
 public:
   GetProofCommand() throw();
   ~GetProofCommand() throw() {}
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Proof* getResult() const throw();
-  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const;
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -621,9 +621,9 @@ protected:
 public:
   GetInstantiationsCommand() throw();
   ~GetInstantiationsCommand() throw() {}
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   //Instantiations* getResult() const throw();
-  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const;
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -635,8 +635,8 @@ protected:
 public:
   GetSynthSolutionCommand() throw();
   ~GetSynthSolutionCommand() throw() {}
-  void invoke(SmtEngine* smtEngine) throw();
-  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  void invoke(SmtEngine* smtEngine);
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const;
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -653,9 +653,9 @@ public:
   ~GetQuantifierEliminationCommand() throw() {}
   Expr getExpr() const throw();
   bool getDoFull() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Expr getResult() const throw();
-  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const;
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -669,8 +669,8 @@ public:
   GetUnsatCoreCommand() throw();
   GetUnsatCoreCommand(const std::map<Expr, std::string>& names) throw();
   ~GetUnsatCoreCommand() throw() {}
-  void invoke(SmtEngine* smtEngine) throw();
-  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  void invoke(SmtEngine* smtEngine);
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const;
   const UnsatCore& getUnsatCore() const throw();
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
@@ -683,9 +683,9 @@ protected:
 public:
   GetAssertionsCommand() throw();
   ~GetAssertionsCommand() throw() {}
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   std::string getResult() const throw();
-  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const;
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -698,7 +698,7 @@ public:
   SetBenchmarkStatusCommand(BenchmarkStatus status) throw();
   ~SetBenchmarkStatusCommand() throw() {}
   BenchmarkStatus getStatus() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -711,7 +711,7 @@ public:
   SetBenchmarkLogicCommand(std::string logic) throw();
   ~SetBenchmarkLogicCommand() throw() {}
   std::string getLogic() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -726,7 +726,7 @@ public:
   ~SetInfoCommand() throw() {}
   std::string getFlag() const throw();
   SExpr getSExpr() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -740,9 +740,9 @@ public:
   GetInfoCommand(std::string flag) throw();
   ~GetInfoCommand() throw() {}
   std::string getFlag() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   std::string getResult() const throw();
-  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const;
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -757,7 +757,7 @@ public:
   ~SetOptionCommand() throw() {}
   std::string getFlag() const throw();
   SExpr getSExpr() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -771,9 +771,9 @@ public:
   GetOptionCommand(std::string flag) throw();
   ~GetOptionCommand() throw() {}
   std::string getFlag() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   std::string getResult() const throw();
-  void printResult(std::ostream& out, uint32_t verbosity = 2) const throw();
+  void printResult(std::ostream& out, uint32_t verbosity = 2) const;
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -787,7 +787,7 @@ public:
   ~DatatypeDeclarationCommand() throw() {}
   DatatypeDeclarationCommand(const std::vector<DatatypeType>& datatypes) throw();
   const std::vector<DatatypeType>& getDatatypes() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -818,7 +818,7 @@ public:
   Expr getHead() const throw();
   Expr getBody() const throw();
   const Triggers& getTriggers() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -854,7 +854,7 @@ public:
   Expr getBody() const throw();
   const Triggers& getTriggers() const throw();
   bool isDeduction() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -864,7 +864,7 @@ class CVC4_PUBLIC ResetCommand : public Command {
 public:
   ResetCommand() throw() {}
   ~ResetCommand() throw() {}
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -874,7 +874,7 @@ class CVC4_PUBLIC ResetAssertionsCommand : public Command {
 public:
   ResetAssertionsCommand() throw() {}
   ~ResetAssertionsCommand() throw() {}
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -884,7 +884,7 @@ class CVC4_PUBLIC QuitCommand : public Command {
 public:
   QuitCommand() throw() {}
   ~QuitCommand() throw() {}
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -896,7 +896,7 @@ public:
   CommentCommand(std::string comment) throw();
   ~CommentCommand() throw() {}
   std::string getComment() const throw();
-  void invoke(SmtEngine* smtEngine) throw();
+  void invoke(SmtEngine* smtEngine);
   Command* exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap);
   Command* clone() const;
   std::string getCommandName() const throw();
@@ -915,8 +915,8 @@ public:
   void addCommand(Command* cmd) throw();
   void clear() throw();
 
-  void invoke(SmtEngine* smtEngine) throw();
-  void invoke(SmtEngine* smtEngine, std::ostream& out) throw();
+  void invoke(SmtEngine* smtEngine);
+  void invoke(SmtEngine* smtEngine, std::ostream& out);
 
   typedef std::vector<Command*>::iterator iterator;
   typedef std::vector<Command*>::const_iterator const_iterator;
diff --git a/src/smt/command_list.cpp b/src/smt/command_list.cpp
index 78e5914..5bbae5f 100644
--- a/src/smt/command_list.cpp
+++ b/src/smt/command_list.cpp
@@ -2,9 +2,9 @@
 /*! \file command_list.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt/command_list.h b/src/smt/command_list.h
index ea6b649..098b294 100644
--- a/src/smt/command_list.h
+++ b/src/smt/command_list.h
@@ -2,9 +2,9 @@
 /*! \file command_list.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt/dump.cpp b/src/smt/dump.cpp
index ce146da..7d7b689 100644
--- a/src/smt/dump.cpp
+++ b/src/smt/dump.cpp
@@ -2,9 +2,9 @@
 /*! \file dump.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters, Kshitij Bansal
+ **   Tim King, Clark Barrett, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt/dump.h b/src/smt/dump.h
index 2abfe54..3c4d146 100644
--- a/src/smt/dump.h
+++ b/src/smt/dump.h
@@ -2,9 +2,9 @@
 /*! \file dump.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt/logic_exception.h b/src/smt/logic_exception.h
index 93db29a..5d5b021 100644
--- a/src/smt/logic_exception.h
+++ b/src/smt/logic_exception.h
@@ -2,9 +2,9 @@
 /*! \file logic_exception.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt/logic_request.cpp b/src/smt/logic_request.cpp
index dc6a2d6..6f67393 100644
--- a/src/smt/logic_request.cpp
+++ b/src/smt/logic_request.cpp
@@ -2,9 +2,9 @@
 /*! \file logic_request.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt/logic_request.h b/src/smt/logic_request.h
index 7b41886..91f49bc 100644
--- a/src/smt/logic_request.h
+++ b/src/smt/logic_request.h
@@ -2,9 +2,9 @@
 /*! \file logic_request.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Martin Brain, Tim King
+ **   Martin Brain, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt/managed_ostreams.cpp b/src/smt/managed_ostreams.cpp
index cae6ac6..d4f23ac 100644
--- a/src/smt/managed_ostreams.cpp
+++ b/src/smt/managed_ostreams.cpp
@@ -2,9 +2,9 @@
 /*! \file managed_ostreams.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt/managed_ostreams.h b/src/smt/managed_ostreams.h
index 56c517a..3114821 100644
--- a/src/smt/managed_ostreams.h
+++ b/src/smt/managed_ostreams.h
@@ -2,9 +2,9 @@
 /*! \file managed_ostreams.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt/model.cpp b/src/smt/model.cpp
index a388623..7bfe307 100644
--- a/src/smt/model.cpp
+++ b/src/smt/model.cpp
@@ -2,9 +2,9 @@
 /*! \file model.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt/model.h b/src/smt/model.h
index fd31655..f379ae1 100644
--- a/src/smt/model.h
+++ b/src/smt/model.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -75,7 +75,7 @@ class ModelBuilder {
 public:
   ModelBuilder() { }
   virtual ~ModelBuilder() { }
-  virtual void buildModel(Model* m, bool fullModel) = 0;
+  virtual bool buildModel(Model* m) = 0;
 };/* class ModelBuilder */
 
 }/* CVC4 namespace */
diff --git a/src/smt/smt_engine.cpp b/src/smt/smt_engine.cpp
index 2aaf435..e9e21fb 100644
--- a/src/smt/smt_engine.cpp
+++ b/src/smt/smt_engine.cpp
@@ -2,9 +2,9 @@
 /*! \file smt_engine.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Clark Barrett, Tim King
+ **   Morgan Deters, Tim King, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -584,8 +584,10 @@ private:
    */
   void removeITEs();
 
+  Node realToInt(TNode n, NodeToNodeHashMap& cache, std::vector< Node >& var_eq);
   Node intToBV(TNode n, NodeToNodeHashMap& cache);
   Node intToBVMakeBinary(TNode n, NodeToNodeHashMap& cache);
+  Node purifyNlTerms(TNode n, NodeToNodeHashMap& cache, NodeToNodeHashMap& bcache, std::vector< Node >& var_eq, bool beneathMult = false);
 
   /**
    * Helper function to fix up assertion list to restore invariants needed after
@@ -604,7 +606,7 @@ private:
 
   // Convert booleans to bit-vectors of size 1
   void boolToBv();
-  
+
   // Abstract common structure over small domains to UF
   // return true if changes were made.
   void bvAbstraction();
@@ -891,7 +893,8 @@ public:
     Trace("rewriteApplyToConst") << "rewriteApplyToConst :: " << n << std::endl;
 
     if(n.getMetaKind() == kind::metakind::CONSTANT ||
-       n.getMetaKind() == kind::metakind::VARIABLE)
+       n.getMetaKind() == kind::metakind::VARIABLE ||
+       n.getMetaKind() == kind::metakind::NULLARY_OPERATOR)
     {
       return n;
     }
@@ -1012,7 +1015,7 @@ SmtEngine::SmtEngine(ExprManager* em) throw() :
   // being parsed from the input file. Because of this, we cannot trust
   // that options::proof() is set correctly yet.
 #ifdef CVC4_PROOF
-  d_proofManager = new ProofManager();
+  d_proofManager = new ProofManager(d_userContext);
 #endif
 
   // We have mutual dependency here, so we add the prop engine to the theory
@@ -1039,9 +1042,7 @@ SmtEngine::SmtEngine(ExprManager* em) throw() :
   d_context->push();
 
   d_definedFunctions = new(true) DefinedFunctionMap(d_userContext);
-  if( options::fmfFunWellDefined() || options::fmfFunWellDefinedRelevant() ){
-    d_fmfRecFunctionsDefined = new(true) NodeList(d_userContext);
-  }
+  d_fmfRecFunctionsDefined = new(true) NodeList(d_userContext);
   d_modelCommands = new(true) smt::CommandList(d_userContext);
 }
 
@@ -1188,10 +1189,7 @@ SmtEngine::~SmtEngine() throw() {
     }
 
     d_definedFunctions->deleteSelf();
-
-    if( d_fmfRecFunctionsDefined != NULL ){
-      d_fmfRecFunctionsDefined->deleteSelf();
-    }
+    d_fmfRecFunctionsDefined->deleteSelf();
 
     delete d_theoryEngine;
     d_theoryEngine = NULL;
@@ -1272,9 +1270,10 @@ void SmtEngine::setLogicInternal() throw() {
 void SmtEngine::setDefaults() {
   if(options::forceLogicString.wasSetByUser()) {
     d_logic = LogicInfo(options::forceLogicString());
-  }
-  else if (options::solveIntAsBV() > 0) {
+  }else if (options::solveIntAsBV() > 0) {
     d_logic = LogicInfo("QF_BV");
+  }else if (d_logic.getLogicString() == "QF_NRA" && options::solveRealAsInt()) {
+    d_logic = LogicInfo("QF_NIA");
   } else if ((d_logic.getLogicString() == "QF_UFBV" ||
               d_logic.getLogicString() == "QF_ABV") &&
              options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER) {
@@ -1604,7 +1603,7 @@ void SmtEngine::setDefaults() {
 
   // Turn on arith rewrite equalities only for pure arithmetic
   if(! options::arithRewriteEq.wasSetByUser()) {
-    bool arithRewriteEq = d_logic.isPure(THEORY_ARITH) && !d_logic.isQuantified();
+    bool arithRewriteEq = d_logic.isPure(THEORY_ARITH) && d_logic.isLinear() && !d_logic.isQuantified();
     Trace("smt") << "setting arith rewrite equalities " << arithRewriteEq << endl;
     options::arithRewriteEq.set(arithRewriteEq);
   }
@@ -1749,6 +1748,12 @@ void SmtEngine::setDefaults() {
       options::prenexQuant.set( quantifiers::PRENEX_QUANT_NONE );
     }
   }
+  if( options::mbqiMode()==quantifiers::MBQI_ABS ){
+    if( !d_logic.isPure(THEORY_UF) ){
+      //MBQI_ABS is only supported in pure quantified UF
+      options::mbqiMode.set( quantifiers::MBQI_FMC );
+    }
+  }
   if( options::ufssSymBreak() ){
     options::sortInference.set( true );
   }
@@ -1776,11 +1781,15 @@ void SmtEngine::setDefaults() {
     if( !options::quantDynamicSplit.wasSetByUser() ){
       options::quantDynamicSplit.set( quantifiers::QUANT_DSPLIT_MODE_DEFAULT );
     }
+    //do not eliminate extended arithmetic symbols from quantified formulas
+    if( !options::elimExtArithQuant.wasSetByUser() ){
+      options::elimExtArithQuant.set( false );
+    }
     if( !options::eMatching.wasSetByUser() ){
       options::eMatching.set( options::fmfInstEngine() );
     }
     if( !options::instWhenMode.wasSetByUser() ){
-      //instantiate only on last call  FIXME: remove?
+      //instantiate only on last call
       if( options::eMatching() ){
         options::instWhenMode.set( quantifiers::INST_WHEN_LAST_CALL );
       }
@@ -1843,8 +1852,11 @@ void SmtEngine::setDefaults() {
   }
   //counterexample-guided instantiation for non-sygus
   // enable if any possible quantifiers with arithmetic, datatypes or bitvectors
-  if( ( d_logic.isQuantified() && ( d_logic.isTheoryEnabled(THEORY_ARITH) || d_logic.isTheoryEnabled(THEORY_DATATYPES) || d_logic.isTheoryEnabled(THEORY_BV) ) ) ||
-      options::cbqiAll() ){
+  if( d_logic.isQuantified() && 
+      ( ( options::decisionMode()!=decision::DECISION_STRATEGY_INTERNAL &&
+          ( d_logic.isTheoryEnabled(THEORY_ARITH) || d_logic.isTheoryEnabled(THEORY_DATATYPES) || d_logic.isTheoryEnabled(THEORY_BV) ) ) ||
+        d_logic.isPure(THEORY_ARITH) || d_logic.isPure(THEORY_BV) ||
+        options::cbqiAll() ) ){
     if( !options::cbqi.wasSetByUser() ){
       options::cbqi.set( true );
     }
@@ -1866,6 +1878,9 @@ void SmtEngine::setDefaults() {
         //only instantiation should happen at last call when model is avaiable
         options::instWhenMode.set( quantifiers::INST_WHEN_LAST_CALL );
       }
+    }else{
+      //only supported in pure arithmetic
+      options::cbqiNestedQE.set(false);
     }
   }
   //implied options...
@@ -1877,11 +1892,14 @@ void SmtEngine::setDefaults() {
   if( options::qcfMode.wasSetByUser() || options::qcfTConstraint() ){
     options::quantConflictFind.set( true );
   }
-  if( options::cbqiNestedQE() ){
-    //only sound with prenex = disj_normal or normal
+  if( options::cbqi() && 
+      ( options::cbqiNestedQE() || options::decisionMode()==decision::DECISION_STRATEGY_INTERNAL ) ){
+    //only complete with prenex = disj_normal or normal
     if( options::prenexQuant()<=quantifiers::PRENEX_QUANT_DISJ_NORMAL ){
       options::prenexQuant.set( quantifiers::PRENEX_QUANT_DISJ_NORMAL );
     }
+  }
+  if( options::cbqiNestedQE() ){
     options::prenexQuantUser.set( true );
     if( !options::preSkolemQuant.wasSetByUser() ){
       options::preSkolemQuant.set( true );
@@ -1970,9 +1988,8 @@ void SmtEngine::setDefaults() {
     options::arraysLazyRIntro1.set(false);
   }
 
-  // Non-linear arithmetic does not support models
-  if (d_logic.isTheoryEnabled(THEORY_ARITH) &&
-      !d_logic.isLinear()) {
+  // Non-linear arithmetic does not support models unless nlExt is enabled
+  if (d_logic.isTheoryEnabled(THEORY_ARITH) && !d_logic.isLinear() && !options::nlExt() ) {
     if (options::produceModels()) {
       if(options::produceModels.wasSetByUser()) {
         throw OptionException("produce-model not supported with nonlinear arith");
@@ -1996,8 +2013,8 @@ void SmtEngine::setDefaults() {
     }
   }
 
-  if(options::incrementalSolving() && (options::proof() || options::unsatCores())) {
-    Warning() << "SmtEngine: turning off incremental solving mode (not yet supported with --proof or --produce-unsat-cores, try --tear-down-incremental instead)" << endl;
+  if(options::incrementalSolving() && options::proof()) {
+    Warning() << "SmtEngine: turning off incremental solving mode (not yet supported with --proof, try --tear-down-incremental instead)" << endl;
     setOption("incremental", SExpr("false"));
   }
 }
@@ -2057,7 +2074,7 @@ void SmtEngine::setInfo(const std::string& key, const CVC4::SExpr& value)
         value.getValue() == "2.0" ) {
       // supported SMT-LIB version
       if(!options::outputLanguage.wasSetByUser() &&
-         options::outputLanguage() == language::output::LANG_SMTLIB_V2_5) {
+         ( options::outputLanguage() == language::output::LANG_SMTLIB_V2_5 || options::outputLanguage() == language::output::LANG_SMTLIB_V2_6 )) {
         options::outputLanguage.set(language::output::LANG_SMTLIB_V2_0);
         *options::out() << language::SetLanguage(language::output::LANG_SMTLIB_V2_0);
       }
@@ -2071,6 +2088,15 @@ void SmtEngine::setInfo(const std::string& key, const CVC4::SExpr& value)
         *options::out() << language::SetLanguage(language::output::LANG_SMTLIB_V2_5);
       }
       return;
+    } else if( (value.isRational() && value.getRationalValue() == Rational(13, 5)) ||
+               value.getValue() == "2.6" ) {
+      // supported SMT-LIB version
+      if(!options::outputLanguage.wasSetByUser() &&
+         options::outputLanguage() == language::output::LANG_SMTLIB_V2_0) {
+        options::outputLanguage.set(language::output::LANG_SMTLIB_V2_6);
+        *options::out() << language::SetLanguage(language::output::LANG_SMTLIB_V2_6);
+      }
+      return;
     }
     Warning() << "Warning: unsupported smt-lib-version: " << value << endl;
     throw UnrecognizedOptionException();
@@ -2089,8 +2115,7 @@ void SmtEngine::setInfo(const std::string& key, const CVC4::SExpr& value)
   throw UnrecognizedOptionException();
 }
 
-CVC4::SExpr SmtEngine::getInfo(const std::string& key) const
-  throw(OptionException, ModalException) {
+CVC4::SExpr SmtEngine::getInfo(const std::string& key) const {
 
   SmtScope smts(this);
 
@@ -2296,7 +2321,7 @@ Node SmtEnginePrivate::expandDefinitions(TNode n, hash_map<Node, Node, NodeHashF
       }
 
       // otherwise expand it
-      bool doExpand = ( k == kind::APPLY && n.getOperator().getKind() != kind::LAMBDA );
+      bool doExpand = k == kind::APPLY;
       if( !doExpand ){
         if( options::macrosQuant() ){
           //expand if we have inferred an operator corresponds to a defined function
@@ -2304,35 +2329,47 @@ Node SmtEnginePrivate::expandDefinitions(TNode n, hash_map<Node, Node, NodeHashF
         }
       }
       if (doExpand) {
-        // application of a user-defined symbol
-        TNode func = n.getOperator();
-        SmtEngine::DefinedFunctionMap::const_iterator i = d_smt.d_definedFunctions->find(func);
-        if(i == d_smt.d_definedFunctions->end()) {
-          throw TypeCheckingException(n.toExpr(), string("Undefined function: `") + func.toString() + "'");
-        }
-        DefinedFunction def = (*i).second;
-        vector<Node> formals = def.getFormals();
-
-        if(Debug.isOn("expand")) {
-          Debug("expand") << "found: " << n << endl;
-          Debug("expand") << " func: " << func << endl;
-          string name = func.getAttribute(expr::VarNameAttr());
-          Debug("expand") << "     : \"" << name << "\"" << endl;
-        }
-        if(Debug.isOn("expand")) {
-          Debug("expand") << " defn: " << def.getFunction() << endl
-                          << "       [";
-          if(formals.size() > 0) {
-            copy( formals.begin(), formals.end() - 1,
-                  ostream_iterator<Node>(Debug("expand"), ", ") );
-            Debug("expand") << formals.back();
+        vector<Node> formals;
+        TNode fm;
+        if( n.getOperator().getKind() == kind::LAMBDA ){
+          TNode op = n.getOperator();
+          // lambda
+          for( unsigned i=0; i<op[0].getNumChildren(); i++ ){
+            formals.push_back( op[0][i] );
+          }
+          fm = op[1];
+        }else{
+          // application of a user-defined symbol
+          TNode func = n.getOperator();
+          SmtEngine::DefinedFunctionMap::const_iterator i = d_smt.d_definedFunctions->find(func);
+          if(i == d_smt.d_definedFunctions->end()) {
+            throw TypeCheckingException(n.toExpr(), string("Undefined function: `") + func.toString() + "'");
+          }
+          DefinedFunction def = (*i).second;
+          formals = def.getFormals();
+
+          if(Debug.isOn("expand")) {
+            Debug("expand") << "found: " << n << endl;
+            Debug("expand") << " func: " << func << endl;
+            string name = func.getAttribute(expr::VarNameAttr());
+            Debug("expand") << "     : \"" << name << "\"" << endl;
           }
-          Debug("expand") << "]" << endl
-                          << "       " << def.getFunction().getType() << endl
-                          << "       " << def.getFormula() << endl;
+          if(Debug.isOn("expand")) {
+            Debug("expand") << " defn: " << def.getFunction() << endl
+                            << "       [";
+            if(formals.size() > 0) {
+              copy( formals.begin(), formals.end() - 1,
+                    ostream_iterator<Node>(Debug("expand"), ", ") );
+              Debug("expand") << formals.back();
+            }
+            Debug("expand") << "]" << endl
+                            << "       " << def.getFunction().getType() << endl
+                            << "       " << def.getFormula() << endl;
+          }
+
+          fm = def.getFormula();
         }
 
-        TNode fm = def.getFormula();
         Node instance = fm.substitute(formals.begin(), formals.end(),
                                       n.begin(), n.end());
         Debug("expand") << "made : " << instance << endl;
@@ -2634,6 +2671,135 @@ Node SmtEnginePrivate::intToBV(TNode n, NodeMap& cache) {
   return cache[n_binary];
 }
 
+Node SmtEnginePrivate::realToInt(TNode n, NodeMap& cache, std::vector< Node >& var_eq) {
+  Trace("real-as-int-debug") << "Convert : " << n << std::endl;
+  NodeMap::iterator find = cache.find(n);
+  if (find != cache.end()) {
+    return (*find).second;
+  }else{
+    Node ret = n;
+    if( n.getNumChildren()>0 ){
+      if( n.getKind()==kind::EQUAL || n.getKind()==kind::GEQ || n.getKind()==kind::LT || n.getKind()==kind::GT || n.getKind()==kind::LEQ ){
+        ret = Rewriter::rewrite( n );
+        Trace("real-as-int-debug") << "Now looking at : " << ret << std::endl;
+        if( !ret.isConst() ){
+          Node ret_lit = ret.getKind()==kind::NOT ? ret[0] : ret;
+          bool ret_pol = ret.getKind()!=kind::NOT;
+          std::map< Node, Node > msum;
+          if( QuantArith::getMonomialSumLit( ret_lit, msum ) ){
+            //get common coefficient
+            std::vector< Node > coeffs;
+            for( std::map< Node, Node >::iterator itm = msum.begin(); itm != msum.end(); ++itm ){
+              Node v = itm->first;
+              Node c = itm->second;
+              if( !c.isNull() ){
+                Assert( c.isConst() );
+                coeffs.push_back( NodeManager::currentNM()->mkConst( Rational( c.getConst<Rational>().getDenominator() ) ) );
+              }
+            }
+            Node cc = coeffs.empty() ? Node::null() : ( coeffs.size()==1 ? coeffs[0] : Rewriter::rewrite( NodeManager::currentNM()->mkNode( kind::MULT, coeffs ) ) );
+            std::vector< Node > sum;
+            for( std::map< Node, Node >::iterator itm = msum.begin(); itm != msum.end(); ++itm ){
+              Node v = itm->first;
+              Node c = itm->second;
+              Node s;
+              if( c.isNull() ){
+                c = cc.isNull() ? NodeManager::currentNM()->mkConst( Rational( 1 ) ) : cc;
+              }else{
+                if( !cc.isNull() ){
+                  c = Rewriter::rewrite( NodeManager::currentNM()->mkNode( kind::MULT, c, cc ) );
+                }
+              }
+              Assert( c.getType().isInteger() );
+              if( v.isNull() ){
+                sum.push_back( c );
+              }else{
+                Node vv = realToInt( v, cache, var_eq );
+                if( vv.getType().isInteger() ){
+                  sum.push_back( NodeManager::currentNM()->mkNode( kind::MULT, c, vv ) );
+                }else{
+                  throw TypeCheckingException(v.toExpr(), string("Cannot translate to Int: ") + v.toString());
+                }
+              }
+            }
+            Node sumt = sum.empty() ? NodeManager::currentNM()->mkConst( Rational( 0 ) ) : ( sum.size()==1 ? sum[0] : NodeManager::currentNM()->mkNode( kind::PLUS, sum ) );
+            ret = NodeManager::currentNM()->mkNode( ret_lit.getKind(), sumt, NodeManager::currentNM()->mkConst( Rational( 0 ) ) );
+            if( !ret_pol ){
+              ret = ret.negate();
+            }
+            Trace("real-as-int") << "Convert : " << std::endl;
+            Trace("real-as-int") << "   " << n << std::endl;
+            Trace("real-as-int") << "   " << ret << std::endl;
+          }else{
+            throw TypeCheckingException(n.toExpr(), string("Cannot translate to Int: ") + n.toString());
+          }
+        }
+      }else{
+        bool childChanged = false;
+        std::vector< Node > children;
+        for( unsigned i=0; i<n.getNumChildren(); i++ ){
+          Node nc = realToInt( n[i], cache, var_eq );
+          childChanged = childChanged || nc!=n[i];
+          children.push_back( nc );
+        }
+        if( childChanged ){
+          ret = NodeManager::currentNM()->mkNode( n.getKind(), children );
+        }
+      }
+    }else{
+      if( n.isVar() ){
+        if( !n.getType().isInteger() ){
+          ret = NodeManager::currentNM()->mkSkolem("__realToInt_var", NodeManager::currentNM()->integerType(), "Variable introduced in realToInt pass");
+          var_eq.push_back( n.eqNode( ret ) );
+        }
+      }
+    }
+    cache[n] = ret;
+    return ret;
+  }
+}
+
+Node SmtEnginePrivate::purifyNlTerms(TNode n, NodeMap& cache, NodeMap& bcache, std::vector< Node >& var_eq, bool beneathMult) {
+  if( beneathMult ){
+    NodeMap::iterator find = bcache.find(n);
+    if (find != bcache.end()) {
+      return (*find).second;
+    }
+  }else{
+    NodeMap::iterator find = cache.find(n);
+    if (find != cache.end()) {
+      return (*find).second;
+    }
+  }
+  Node ret = n;
+  if( n.getNumChildren()>0 ){
+    if( beneathMult && n.getKind()!=kind::MULT ){
+      //new variable
+      ret = NodeManager::currentNM()->mkSkolem("__purifyNl_var", n.getType(), "Variable introduced in purifyNl pass");
+      Node np = purifyNlTerms( n, cache, bcache, var_eq, false );
+      var_eq.push_back( np.eqNode( ret ) );
+    }else{
+      bool beneathMultNew = beneathMult || n.getKind()==kind::MULT;
+      bool childChanged = false;
+      std::vector< Node > children;
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        Node nc = purifyNlTerms( n[i], cache, bcache, var_eq, beneathMultNew );
+        childChanged = childChanged || nc!=n[i];
+        children.push_back( nc );
+      }
+      if( childChanged ){
+        ret = NodeManager::currentNM()->mkNode( n.getKind(), children );
+      }
+    }
+  }
+  if( beneathMult ){
+    bcache[n] = ret;
+  }else{
+    cache[n] = ret;
+  }
+  return ret;
+}
+
 void SmtEnginePrivate::removeITEs() {
   d_smt.finalOptionsAreSet();
   spendResource(options::preprocessStep());
@@ -2841,39 +3007,44 @@ bool SmtEnginePrivate::nonClausalSimplify() {
         }
         break;
     }
+  }
 
 #ifdef CVC4_ASSERTIONS
-    // Check data structure invariants:
-    // 1. for each lhs of d_topLevelSubstitutions, does not appear anywhere in rhs of d_topLevelSubstitutions or anywhere in constantPropagations
-    // 2. each lhs of constantPropagations rewrites to itself
-    // 3. if l -> r is a constant propagation and l is a subterm of l' with l' -> r' another constant propagation, then l'[l/r] -> r' should be a
-    //    constant propagation too
-    // 4. each lhs of constantPropagations is different from each rhs
-    for (pos = newSubstitutions.begin(); pos != newSubstitutions.end(); ++pos) {
-      Assert((*pos).first.isVar());
-      Assert(d_topLevelSubstitutions.apply((*pos).first) == (*pos).first);
-      Assert(d_topLevelSubstitutions.apply((*pos).second) == (*pos).second);
-      Assert(newSubstitutions.apply(newSubstitutions.apply((*pos).second)) == newSubstitutions.apply((*pos).second));
-    }
-    for (pos = constantPropagations.begin(); pos != constantPropagations.end(); ++pos) {
-      Assert((*pos).second.isConst());
-      Assert(Rewriter::rewrite((*pos).first) == (*pos).first);
-      // Node newLeft = d_topLevelSubstitutions.apply((*pos).first);
-      // if (newLeft != (*pos).first) {
-      //   newLeft = Rewriter::rewrite(newLeft);
-      //   Assert(newLeft == (*pos).second ||
-      //          (constantPropagations.hasSubstitution(newLeft) && constantPropagations.apply(newLeft) == (*pos).second));
-      // }
-      // newLeft = constantPropagations.apply((*pos).first);
-      // if (newLeft != (*pos).first) {
-      //   newLeft = Rewriter::rewrite(newLeft);
-      //   Assert(newLeft == (*pos).second ||
-      //          (constantPropagations.hasSubstitution(newLeft) && constantPropagations.apply(newLeft) == (*pos).second));
-      // }
-      Assert(constantPropagations.apply((*pos).second) == (*pos).second);
-    }
-#endif /* CVC4_ASSERTIONS */
+  // NOTE: When debugging this code, consider moving this check inside of the
+  // loop over d_nonClausalLearnedLiterals. This check has been moved outside
+  // because it is costly for certain inputs (see bug 508).
+  //
+  // Check data structure invariants:
+  // 1. for each lhs of d_topLevelSubstitutions, does not appear anywhere in rhs of d_topLevelSubstitutions or anywhere in constantPropagations
+  // 2. each lhs of constantPropagations rewrites to itself
+  // 3. if l -> r is a constant propagation and l is a subterm of l' with l' -> r' another constant propagation, then l'[l/r] -> r' should be a
+  //    constant propagation too
+  // 4. each lhs of constantPropagations is different from each rhs
+  for (pos = newSubstitutions.begin(); pos != newSubstitutions.end(); ++pos) {
+    Assert((*pos).first.isVar());
+    Assert(d_topLevelSubstitutions.apply((*pos).first) == (*pos).first);
+    Assert(d_topLevelSubstitutions.apply((*pos).second) == (*pos).second);
+    Assert(newSubstitutions.apply(newSubstitutions.apply((*pos).second)) == newSubstitutions.apply((*pos).second));
   }
+  for (pos = constantPropagations.begin(); pos != constantPropagations.end(); ++pos) {
+    Assert((*pos).second.isConst());
+    Assert(Rewriter::rewrite((*pos).first) == (*pos).first);
+    // Node newLeft = d_topLevelSubstitutions.apply((*pos).first);
+    // if (newLeft != (*pos).first) {
+    //   newLeft = Rewriter::rewrite(newLeft);
+    //   Assert(newLeft == (*pos).second ||
+    //          (constantPropagations.hasSubstitution(newLeft) && constantPropagations.apply(newLeft) == (*pos).second));
+    // }
+    // newLeft = constantPropagations.apply((*pos).first);
+    // if (newLeft != (*pos).first) {
+    //   newLeft = Rewriter::rewrite(newLeft);
+    //   Assert(newLeft == (*pos).second ||
+    //          (constantPropagations.hasSubstitution(newLeft) && constantPropagations.apply(newLeft) == (*pos).second));
+    // }
+    Assert(constantPropagations.apply((*pos).second) == (*pos).second);
+  }
+#endif /* CVC4_ASSERTIONS */
+
   // Resize the learnt
   Trace("simplify") << "Resize non-clausal learned literals to " << j << std::endl;
   d_nonClausalLearnedLiterals.resize(j);
@@ -3841,6 +4012,20 @@ void SmtEnginePrivate::processAssertions() {
 
   Debug("smt") << " d_assertions     : " << d_assertions.size() << endl;
 
+  if( options::nlExtPurify() ){
+    hash_map<Node, Node, NodeHashFunction> cache;
+    hash_map<Node, Node, NodeHashFunction> bcache;
+    std::vector< Node > var_eq;
+    for (unsigned i = 0; i < d_assertions.size(); ++ i) {
+      d_assertions.replace(i, purifyNlTerms(d_assertions[i], cache, bcache, var_eq));
+    }
+    if( !var_eq.empty() ){
+      unsigned lastIndex = d_assertions.size()-1;
+      var_eq.insert( var_eq.begin(), d_assertions[lastIndex] );
+      d_assertions.replace(lastIndex, NodeManager::currentNM()->mkNode( kind::AND, var_eq ) );
+    }
+  }
+
   if( options::ceGuidedInst() ){
     //register sygus conjecture pre-rewrite (motivated by solution reconstruction)
     for (unsigned i = 0; i < d_assertions.size(); ++ i) {
@@ -3848,6 +4033,22 @@ void SmtEnginePrivate::processAssertions() {
     }
   }
 
+  if (options::solveRealAsInt()) {
+    Chat() << "converting reals to ints..." << endl;
+    hash_map<Node, Node, NodeHashFunction> cache;
+    std::vector< Node > var_eq;
+    for(unsigned i = 0; i < d_assertions.size(); ++ i) {
+      d_assertions.replace(i, realToInt(d_assertions[i], cache, var_eq));
+    }
+   /*
+    if( !var_eq.empty() ){
+      unsigned lastIndex = d_assertions.size()-1;
+      var_eq.insert( var_eq.begin(), d_assertions[lastIndex] );
+      d_assertions.replace(last_index, NodeManager::currentNM()->mkNode( kind::AND, var_eq ) );
+    }
+    */
+  }
+
   if (options::solveIntAsBV() > 0) {
     Chat() << "converting ints to bit-vectors..." << endl;
     hash_map<Node, Node, NodeHashFunction> cache;
@@ -3997,6 +4198,7 @@ void SmtEnginePrivate::processAssertions() {
     //fmf-fun : assume admissible functions, applying preprocessing reduction to FMF
     if( options::fmfFunWellDefined() ){
       quantifiers::FunDefFmf fdf;
+      Assert( d_smt.d_fmfRecFunctionsDefined!=NULL );
       //must carry over current definitions (for incremental)
       for( context::CDList<Node>::const_iterator fit = d_smt.d_fmfRecFunctionsDefined->begin();
            fit != d_smt.d_fmfRecFunctionsDefined->end(); ++fit ) {
@@ -4241,11 +4443,12 @@ void SmtEnginePrivate::addFormula(TNode n, bool inUnsatCore, bool inInput)
   }
 
   Trace("smt") << "SmtEnginePrivate::addFormula(" << n << "), inUnsatCore = " << inUnsatCore << ", inInput = " << inInput << endl;
+
   // Give it to proof manager
   PROOF(
     if( inInput ){
       // n is an input assertion
-      if (inUnsatCore || options::dumpUnsatCores() || options::checkUnsatCores() || options::fewerPreprocessingHoles()) {
+      if (inUnsatCore || options::unsatCores() || options::dumpUnsatCores() || options::checkUnsatCores() || options::fewerPreprocessingHoles()) {
 
         ProofManager::currentPM()->addCoreAssertion(n.toExpr());
       }
@@ -4335,7 +4538,7 @@ Result SmtEngine::checkSatisfiability(const Expr& ex, bool inUnsatCore, bool isQ
     Result r(Result::SAT_UNKNOWN, Result::UNKNOWN_REASON);
     r = isQuery ? check().asValidityResult() : check().asSatisfiabilityResult();
 
-    if (options::solveIntAsBV() > 0 &&r.asSatisfiabilityResult().isSat() == Result::UNSAT) {
+    if ( ( options::solveRealAsInt() || options::solveIntAsBV() > 0 ) && r.asSatisfiabilityResult().isSat() == Result::UNSAT) {
       r = Result(Result::SAT_UNKNOWN, Result::UNKNOWN_REASON);
     }
 
@@ -4589,7 +4792,7 @@ Expr SmtEngine::getValue(const Expr& ex) const throw(ModalException, TypeCheckin
   // used by the Model classes.  It's not clear to me exactly how these
   // two are different, but they need to be unified.  This ugly hack here
   // is to fix bug 554 until we can revamp boolean-terms and models [MGD]
-  
+
   //AJR : necessary?
   if(!n.getType().isFunction()) {
     n = Rewriter::rewrite(n);
@@ -4622,7 +4825,7 @@ Expr SmtEngine::getValue(const Expr& ex) const throw(ModalException, TypeCheckin
   return resultNode.toExpr();
 }
 
-bool SmtEngine::addToAssignment(const Expr& ex) throw() {
+bool SmtEngine::addToAssignment(const Expr& ex) {
   SmtScope smts(this);
   finalOptionsAreSet();
   doPendingPops();
@@ -4655,7 +4858,7 @@ bool SmtEngine::addToAssignment(const Expr& ex) throw() {
   return true;
 }
 
-CVC4::SExpr SmtEngine::getAssignment() throw(ModalException, UnsafeInterruptException) {
+CVC4::SExpr SmtEngine::getAssignment() {
   Trace("smt") << "SMT getAssignment()" << endl;
   SmtScope smts(this);
   finalOptionsAreSet();
@@ -4753,7 +4956,7 @@ void SmtEngine::addToModelCommandAndDump(const Command& c, uint32_t flags, bool
   }
 }
 
-Model* SmtEngine::getModel() throw(ModalException, UnsafeInterruptException) {
+Model* SmtEngine::getModel() {
   Trace("smt") << "SMT getModel()" << endl;
   SmtScope smts(this);
 
@@ -5015,7 +5218,7 @@ void SmtEngine::checkModel(bool hardFailure) {
   Notice() << "SmtEngine::checkModel(): all assertions checked out OK !" << endl;
 }
 
-UnsatCore SmtEngine::getUnsatCore() throw(ModalException, UnsafeInterruptException) {
+UnsatCore SmtEngine::getUnsatCore() {
   Trace("smt") << "SMT getUnsatCore()" << endl;
   SmtScope smts(this);
   finalOptionsAreSet();
@@ -5033,13 +5236,13 @@ UnsatCore SmtEngine::getUnsatCore() throw(ModalException, UnsafeInterruptExcepti
   }
 
   d_proofManager->traceUnsatCore();// just to trigger core creation
-  return UnsatCore(this, d_proofManager->begin_unsat_core(), d_proofManager->end_unsat_core());
+  return UnsatCore(this, d_proofManager->extractUnsatCore());
 #else /* IS_PROOFS_BUILD */
   throw ModalException("This build of CVC4 doesn't have proof support (required for unsat cores).");
 #endif /* IS_PROOFS_BUILD */
 }
 
-Proof* SmtEngine::getProof() throw(ModalException, UnsafeInterruptException) {
+Proof* SmtEngine::getProof() {
   Trace("smt") << "SMT getProof()" << endl;
   SmtScope smts(this);
   finalOptionsAreSet();
@@ -5175,7 +5378,7 @@ void SmtEngine::getInstantiationTermVectors( Expr q, std::vector< std::vector< E
   }
 }
 
-vector<Expr> SmtEngine::getAssertions() throw(ModalException) {
+vector<Expr> SmtEngine::getAssertions() {
   SmtScope smts(this);
   finalOptionsAreSet();
   doPendingPops();
@@ -5223,7 +5426,7 @@ void SmtEngine::push() throw(ModalException, LogicException, UnsafeInterruptExce
                        << d_userContext->getLevel() << endl;
 }
 
-void SmtEngine::pop() throw(ModalException, UnsafeInterruptException) {
+void SmtEngine::pop() {
   SmtScope smts(this);
   finalOptionsAreSet();
   Trace("smt") << "SMT pop()" << endl;
@@ -5376,6 +5579,10 @@ SExpr SmtEngine::getStatistic(std::string name) const throw() {
   return d_statisticsRegistry->getStatistic(name);
 }
 
+void SmtEngine::safeFlushStatistics(int fd) const {
+  d_statisticsRegistry->safeFlushInformation(fd);
+}
+
 void SmtEngine::setUserAttribute(const std::string& attr, Expr expr, std::vector<Expr> expr_values, std::string str_value) {
   SmtScope smts(this);
   std::vector<Node> node_values;
diff --git a/src/smt/smt_engine.h b/src/smt/smt_engine.h
index f1ce2e0..3df1dbe 100644
--- a/src/smt/smt_engine.h
+++ b/src/smt/smt_engine.h
@@ -2,9 +2,9 @@
 /*! \file smt_engine.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Andrew Reynolds
+ **   Morgan Deters, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -105,10 +105,6 @@ namespace theory {
   class TheoryModel;
 }/* CVC4::theory namespace */
 
-namespace stats {
-  StatisticsRegistry* getStatisticsRegistry(SmtEngine*);
-}/* CVC4::stats namespace */
-
 // TODO: SAT layer (esp. CNF- versus non-clausal solvers under the
 // hood): use a type parameter and have check() delegate, or subclass
 // SmtEngine and override check()?
@@ -356,7 +352,6 @@ class CVC4_PUBLIC SmtEngine {
   friend class ::CVC4::smt::SmtEnginePrivate;
   friend class ::CVC4::smt::SmtScope;
   friend class ::CVC4::smt::BooleanTermConverter;
-  friend ::CVC4::StatisticsRegistry* ::CVC4::stats::getStatisticsRegistry(SmtEngine*);
   friend ProofManager* ::CVC4::smt::currentProofManager();
   friend class ::CVC4::LogicRequest;
   // to access d_modelCommands
@@ -394,7 +389,7 @@ class CVC4_PUBLIC SmtEngine {
    * or INVALID query).  Only permitted if CVC4 was built with model
    * support and produce-models is on.
    */
-  Model* getModel() throw(ModalException, UnsafeInterruptException);
+  Model* getModel();
 
   // disallow copy/assignment
   SmtEngine(const SmtEngine&) CVC4_UNDEFINED;
@@ -443,8 +438,7 @@ public:
   /**
    * Query information about the SMT environment.
    */
-  CVC4::SExpr getInfo(const std::string& key) const
-    throw(OptionException, ModalException);
+  CVC4::SExpr getInfo(const std::string& key) const;
 
   /**
    * Set an aspect of the current SMT execution environment.
@@ -533,21 +527,21 @@ public:
    * this function returns true if the expression was added and false
    * if this request was ignored.
    */
-  bool addToAssignment(const Expr& e) throw();
+  bool addToAssignment(const Expr& e);
 
   /**
    * Get the assignment (only if immediately preceded by a SAT or
    * INVALID query).  Only permitted if the SmtEngine is set to
    * operate interactively and produce-assignments is on.
    */
-  CVC4::SExpr getAssignment() throw(ModalException, UnsafeInterruptException);
+  CVC4::SExpr getAssignment();
 
   /**
    * Get the last proof (only if immediately preceded by an UNSAT
    * or VALID query).  Only permitted if CVC4 was built with proof
    * support and produce-proofs is on.
    */
-  Proof* getProof() throw(ModalException, UnsafeInterruptException);
+  Proof* getProof();
 
   /**
    * Print all instantiations made by the quantifiers module.
@@ -580,13 +574,13 @@ public:
    * UNSAT or VALID query).  Only permitted if CVC4 was built with
    * unsat-core support and produce-unsat-cores is on.
    */
-  UnsatCore getUnsatCore() throw(ModalException, UnsafeInterruptException);
+  UnsatCore getUnsatCore();
 
   /**
    * Get the current set of assertions.  Only permitted if the
    * SmtEngine is set to operate interactively.
    */
-  std::vector<Expr> getAssertions() throw(ModalException);
+  std::vector<Expr> getAssertions();
 
   /**
    * Push a user-level context.
@@ -596,7 +590,7 @@ public:
   /**
    * Pop a user-level context.  Throws an exception if nothing to pop.
    */
-  void pop() throw(ModalException, UnsafeInterruptException);
+  void pop();
 
   /**
    * Completely reset the state of the solver, as though destroyed and
@@ -728,6 +722,11 @@ public:
   SExpr getStatistic(std::string name) const throw();
 
   /**
+   * Flush statistic from this SmtEngine. Safe to use in a signal handler.
+   */
+  void safeFlushStatistics(int fd) const;
+
+  /**
    * Returns the most recent result of checkSat/query or (set-info :status).
    */
   Result getStatusOfLastCommand() const throw() {
diff --git a/src/smt/smt_engine.i b/src/smt/smt_engine.i
index 443e4cc..c054cb6 100644
--- a/src/smt/smt_engine.i
+++ b/src/smt/smt_engine.i
@@ -45,7 +45,6 @@ SWIGEXPORT void JNICALL Java_edu_nyu_acsys_CVC4_SmtEngine_dlRef(JNIEnv* jenv, jc
 #endif // SWIGJAVA
 
 %ignore CVC4::SmtEngine::setLogic(const char*);
-%ignore CVC4::stats::getStatisticsRegistry(SmtEngine*);
 %ignore CVC4::smt::currentProofManager();
 
 %include "smt/smt_engine.h"
diff --git a/src/smt/smt_engine_check_proof.cpp b/src/smt/smt_engine_check_proof.cpp
index 808f516..9a336dd 100644
--- a/src/smt/smt_engine_check_proof.cpp
+++ b/src/smt/smt_engine_check_proof.cpp
@@ -2,9 +2,9 @@
 /*! \file smt_engine_check_proof.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Guy Katz
+ **   Morgan Deters, Guy Katz, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt/smt_engine_scope.cpp b/src/smt/smt_engine_scope.cpp
index c31ea57..8782377 100644
--- a/src/smt/smt_engine_scope.cpp
+++ b/src/smt/smt_engine_scope.cpp
@@ -2,9 +2,9 @@
 /*! \file smt_engine_scope.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt/smt_engine_scope.h b/src/smt/smt_engine_scope.h
index 9407ff4..a3f7162 100644
--- a/src/smt/smt_engine_scope.h
+++ b/src/smt/smt_engine_scope.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Tim King, Liana Hadarean
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt/smt_statistics_registry.cpp b/src/smt/smt_statistics_registry.cpp
index d344986..caf3c0f 100644
--- a/src/smt/smt_statistics_registry.cpp
+++ b/src/smt/smt_statistics_registry.cpp
@@ -2,9 +2,9 @@
 /*! \file smt_statistics_registry.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt/smt_statistics_registry.h b/src/smt/smt_statistics_registry.h
index 7483e82..b9f607f 100644
--- a/src/smt/smt_statistics_registry.h
+++ b/src/smt/smt_statistics_registry.h
@@ -2,9 +2,9 @@
 /*! \file smt_statistics_registry.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt/term_formula_removal.cpp b/src/smt/term_formula_removal.cpp
index 3fd333c..a008868 100644
--- a/src/smt/term_formula_removal.cpp
+++ b/src/smt/term_formula_removal.cpp
@@ -2,9 +2,9 @@
 /*! \file term_formula_removal.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Dejan Jovanovic, Tim King
+ **   Andrew Reynolds, Morgan Deters, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -153,9 +153,7 @@ Node RemoveTermFormulas::run(TNode node, std::vector<Node>& output,
   if(node.getKind() == kind::FORALL || node.getKind() == kind::EXISTS) {
     // Remember if we're inside a quantifier
     inQuant = true;
-  }else if( theory::kindToTheoryId(node.getKind())!=theory::THEORY_BOOL && 
-            node.getKind()!=kind::EQUAL && node.getKind()!=kind::SEP_STAR && 
-            node.getKind()!=kind::SEP_WAND && node.getKind()!=kind::SEP_LABEL ){
+  }else if( !inTerm && hasNestedTermChildren( node ) ){
     // Remember if we're inside a term
     Debug("ite") << "In term because of " << node << " " << node.getKind() << std::endl;
     inTerm = true;
@@ -207,7 +205,7 @@ Node RemoveTermFormulas::replace(TNode node, bool inQuant, bool inTerm) const {
   if(node.getKind() == kind::FORALL || node.getKind() == kind::EXISTS) {
     // Remember if we're inside a quantifier
     inQuant = true;
-  }else if( theory::kindToTheoryId(node.getKind())!=theory::THEORY_BOOL && node.getKind()!=kind::EQUAL ){
+  }else if( !inTerm && hasNestedTermChildren( node ) ){
     // Remember if we're inside a term
     inTerm = true;
   }  
@@ -232,4 +230,13 @@ Node RemoveTermFormulas::replace(TNode node, bool inQuant, bool inTerm) const {
   }
 }
 
+// returns true if the children of node should be considered nested terms 
+bool RemoveTermFormulas::hasNestedTermChildren( TNode node ) {
+  return theory::kindToTheoryId(node.getKind())!=theory::THEORY_BOOL && 
+         node.getKind()!=kind::EQUAL && node.getKind()!=kind::SEP_STAR && 
+         node.getKind()!=kind::SEP_WAND && node.getKind()!=kind::SEP_LABEL && 
+         node.getKind()!=kind::BITVECTOR_EAGER_ATOM;
+         // dont' worry about FORALL or EXISTS (handled separately)
+}
+
 }/* CVC4 namespace */
diff --git a/src/smt/term_formula_removal.h b/src/smt/term_formula_removal.h
index 09991c5..535e6fb 100644
--- a/src/smt/term_formula_removal.h
+++ b/src/smt/term_formula_removal.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Dejan Jovanovic, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -40,6 +40,8 @@ class RemoveTermFormulas {
   ITECache d_iteCache;
 
   static inline int cacheVal( bool inQuant, bool inTerm ) { return (inQuant ? 1 : 0) + 2*(inTerm ? 1 : 0); }
+  
+  static bool hasNestedTermChildren( TNode node );
 public:
 
   RemoveTermFormulas(context::UserContext* u);
diff --git a/src/smt/update_ostream.h b/src/smt/update_ostream.h
index 9574c54..ce45042 100644
--- a/src/smt/update_ostream.h
+++ b/src/smt/update_ostream.h
@@ -2,9 +2,9 @@
 /*! \file update_ostream.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt_util/Makefile.in b/src/smt_util/Makefile.in
index fc942cb..e91ce2c 100644
--- a/src/smt_util/Makefile.in
+++ b/src/smt_util/Makefile.in
@@ -238,6 +238,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/src/smt_util/boolean_simplification.cpp b/src/smt_util/boolean_simplification.cpp
index c5c1693..40f96a4 100644
--- a/src/smt_util/boolean_simplification.cpp
+++ b/src/smt_util/boolean_simplification.cpp
@@ -2,9 +2,9 @@
 /*! \file boolean_simplification.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt_util/boolean_simplification.h b/src/smt_util/boolean_simplification.h
index 7207dc3..2d350c9 100644
--- a/src/smt_util/boolean_simplification.h
+++ b/src/smt_util/boolean_simplification.h
@@ -2,9 +2,9 @@
 /*! \file boolean_simplification.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt_util/lemma_channels.cpp b/src/smt_util/lemma_channels.cpp
index 083c4ad..020a875 100644
--- a/src/smt_util/lemma_channels.cpp
+++ b/src/smt_util/lemma_channels.cpp
@@ -2,9 +2,9 @@
 /*! \file lemma_channels.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt_util/lemma_channels.h b/src/smt_util/lemma_channels.h
index 54a9db1..4d31cef 100644
--- a/src/smt_util/lemma_channels.h
+++ b/src/smt_util/lemma_channels.h
@@ -2,9 +2,9 @@
 /*! \file lemma_channels.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt_util/lemma_input_channel.h b/src/smt_util/lemma_input_channel.h
index 5d2b092..af2ac64 100644
--- a/src/smt_util/lemma_input_channel.h
+++ b/src/smt_util/lemma_input_channel.h
@@ -2,9 +2,9 @@
 /*! \file lemma_input_channel.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt_util/lemma_output_channel.h b/src/smt_util/lemma_output_channel.h
index 6664b0d..0e49e99 100644
--- a/src/smt_util/lemma_output_channel.h
+++ b/src/smt_util/lemma_output_channel.h
@@ -2,9 +2,9 @@
 /*! \file lemma_output_channel.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt_util/nary_builder.cpp b/src/smt_util/nary_builder.cpp
index 686dcf5..22fd6c6 100644
--- a/src/smt_util/nary_builder.cpp
+++ b/src/smt_util/nary_builder.cpp
@@ -2,9 +2,9 @@
 /*! \file nary_builder.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt_util/nary_builder.h b/src/smt_util/nary_builder.h
index d8201fb..244420e 100644
--- a/src/smt_util/nary_builder.h
+++ b/src/smt_util/nary_builder.h
@@ -2,9 +2,9 @@
 /*! \file nary_builder.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/smt_util/node_visitor.h b/src/smt_util/node_visitor.h
index 1906124..8c02af8 100644
--- a/src/smt_util/node_visitor.h
+++ b/src/smt_util/node_visitor.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Dejan Jovanovic, Morgan Deters, Liana Hadarean
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/svn_versioninfo.cpp b/src/svn_versioninfo.cpp
index a8c9a1e..0fd754e 100644
--- a/src/svn_versioninfo.cpp
+++ b/src/svn_versioninfo.cpp
@@ -1,5 +1,5 @@
 #include "base/configuration.h"
-const bool ::CVC4::Configuration::IS_SUBVERSION_BUILD = true;
-const char* const ::CVC4::Configuration::SUBVERSION_BRANCH_NAME = "URL: https://github.com/CVC4/CVC4/trunk";
-const unsigned ::CVC4::Configuration::SUBVERSION_REVISION = 6068;
-const bool ::CVC4::Configuration::SUBVERSION_HAS_MODIFICATIONS = true;
+const bool ::CVC4::Configuration::IS_SUBVERSION_BUILD = false;
+const char* const ::CVC4::Configuration::SUBVERSION_BRANCH_NAME = "unknown";
+const unsigned ::CVC4::Configuration::SUBVERSION_REVISION = 0;
+const bool ::CVC4::Configuration::SUBVERSION_HAS_MODIFICATIONS = false;
diff --git a/src/theory/arith/approx_simplex.cpp b/src/theory/arith/approx_simplex.cpp
index 9b8efb7..a500ec5 100644
--- a/src/theory/arith/approx_simplex.cpp
+++ b/src/theory/arith/approx_simplex.cpp
@@ -2,9 +2,9 @@
 /*! \file approx_simplex.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/approx_simplex.h b/src/theory/arith/approx_simplex.h
index 8832fce..234fd10 100644
--- a/src/theory/arith/approx_simplex.h
+++ b/src/theory/arith/approx_simplex.h
@@ -2,9 +2,9 @@
 /*! \file approx_simplex.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/arith_ite_utils.cpp b/src/theory/arith/arith_ite_utils.cpp
index 6695e64..3e767b6 100644
--- a/src/theory/arith/arith_ite_utils.cpp
+++ b/src/theory/arith/arith_ite_utils.cpp
@@ -2,9 +2,9 @@
 /*! \file arith_ite_utils.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters, Kshitij Bansal
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/arith_ite_utils.h b/src/theory/arith/arith_ite_utils.h
index 44c3c08..47f1caf 100644
--- a/src/theory/arith/arith_ite_utils.h
+++ b/src/theory/arith/arith_ite_utils.h
@@ -2,9 +2,9 @@
 /*! \file arith_ite_utils.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/arith_rewriter.cpp b/src/theory/arith/arith_rewriter.cpp
index 642216b..4684ec4 100644
--- a/src/theory/arith/arith_rewriter.cpp
+++ b/src/theory/arith/arith_rewriter.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Morgan Deters, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -100,6 +100,7 @@ RewriteResponse ArithRewriter::preRewriteTerm(TNode t){
     case kind::PLUS:
       return preRewritePlus(t);
     case kind::MULT:
+    case kind::NONLINEAR_MULT:
       return preRewriteMult(t);
     case kind::INTS_DIVISION:
     case kind::INTS_MODULUS:
@@ -148,6 +149,7 @@ RewriteResponse ArithRewriter::postRewriteTerm(TNode t){
     case kind::PLUS:
       return postRewritePlus(t);
     case kind::MULT:
+    case kind::NONLINEAR_MULT:
       return postRewriteMult(t);
     case kind::INTS_DIVISION:
     case kind::INTS_MODULUS:
@@ -210,7 +212,7 @@ RewriteResponse ArithRewriter::postRewriteTerm(TNode t){
         // Todo improve the exception thrown
         std::stringstream ss;
         ss << "The POW(^) operator can only be used with a natural number ";
-        ss << "in the exponent.  Exception occured in:" << std::endl;
+        ss << "in the exponent.  Exception occurred in:" << std::endl;
         ss << "  " << t;
         throw LogicException(ss.str());
       }
@@ -222,7 +224,7 @@ RewriteResponse ArithRewriter::postRewriteTerm(TNode t){
 
 
 RewriteResponse ArithRewriter::preRewriteMult(TNode t){
-  Assert(t.getKind()== kind::MULT);
+  Assert(t.getKind()== kind::MULT || t.getKind()== kind::NONLINEAR_MULT);
 
   if(t.getNumChildren() == 2){
     if(t[0].getKind() == kind::CONST_RATIONAL
@@ -316,7 +318,7 @@ RewriteResponse ArithRewriter::postRewritePlus(TNode t){
 }
 
 RewriteResponse ArithRewriter::postRewriteMult(TNode t){
-  Assert(t.getKind()== kind::MULT);
+  Assert(t.getKind()== kind::MULT || t.getKind()==kind::NONLINEAR_MULT);
 
   Polynomial res = Polynomial::mkOne();
 
diff --git a/src/theory/arith/arith_rewriter.h b/src/theory/arith/arith_rewriter.h
index 3cb5022..38b6c94 100644
--- a/src/theory/arith/arith_rewriter.h
+++ b/src/theory/arith/arith_rewriter.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Dejan Jovanovic, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/arith_static_learner.cpp b/src/theory/arith/arith_static_learner.cpp
index 7c648c9..bd13bd8 100644
--- a/src/theory/arith/arith_static_learner.cpp
+++ b/src/theory/arith/arith_static_learner.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Dejan Jovanovic, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/arith_static_learner.h b/src/theory/arith/arith_static_learner.h
index 4951d34..cca4b22 100644
--- a/src/theory/arith/arith_static_learner.h
+++ b/src/theory/arith/arith_static_learner.h
@@ -2,9 +2,9 @@
 /*! \file arith_static_learner.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters, Dejan Jovanovic
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/arith_utilities.h b/src/theory/arith/arith_utilities.h
index 14329ce..68d4d8f 100644
--- a/src/theory/arith/arith_utilities.h
+++ b/src/theory/arith/arith_utilities.h
@@ -2,9 +2,9 @@
 /*! \file arith_utilities.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters, Dejan Jovanovic
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -252,25 +252,65 @@ inline Node flattenAnd(Node n){
   return NodeManager::currentNM()->mkNode(kind::AND, out);
 }
 
+// Returns an node that is the identity of a select few kinds.
 inline Node getIdentity(Kind k){
   switch(k){
   case kind::AND:
-    return NodeManager::currentNM()->mkConst<bool>(true);
+    return mkBoolNode(true);
   case kind::PLUS:
-    return NodeManager::currentNM()->mkConst(Rational(1));
+    return mkRationalNode(0);
+  case kind::MULT:
+  case kind::NONLINEAR_MULT:
+    return mkRationalNode(1);
   default:
     Unreachable();
   }
 }
 
-inline Node safeConstructNary(NodeBuilder<>& nb){
-  switch(nb.getNumChildren()){
-  case 0:  return getIdentity(nb.getKind());
-  case 1:  return nb[0];
-  default: return (Node)nb;
+inline Node safeConstructNary(NodeBuilder<>& nb) {
+  switch (nb.getNumChildren()) {
+    case 0:
+      return getIdentity(nb.getKind());
+    case 1:
+      return nb[0];
+    default:
+      return (Node)nb;
   }
 }
 
+inline Node safeConstructNary(Kind k, const std::vector<Node>& children) {
+  switch (children.size()) {
+    case 0:
+      return getIdentity(k);
+    case 1:
+      return children[0];
+    default:
+      return NodeManager::currentNM()->mkNode(k, children);
+  }
+}
+
+// Returns the multiplication of a and b.
+inline Node mkMult(Node a, Node b) {
+  return NodeManager::currentNM()->mkNode(kind::MULT, a, b);
+}
+
+// Return a constraint that is equivalent to term being is in the range
+// [start, end). This includes start and excludes end.
+inline Node mkInRange(Node term, Node start, Node end) {
+  NodeManager* nm = NodeManager::currentNM();
+  Node above_start = nm->mkNode(kind::LEQ, start, term);
+  Node below_end = nm->mkNode(kind::LT, term, end);
+  return nm->mkNode(kind::AND, above_start, below_end);
+}
+
+// Creates an expression that constrains q to be equal to one of two expressions
+// when n is 0 or not. Useful for division by 0 logic.
+//   (ite (= n 0) (= q if_zero) (= q not_zero))
+inline Node mkOnZeroIte(Node n, Node q, Node if_zero, Node not_zero) {
+  Node zero = mkRationalNode(0);
+  return n.eqNode(zero).iteNode(q.eqNode(if_zero), q.eqNode(not_zero));
+}
+
 }/* CVC4::theory::arith namespace */
 }/* CVC4::theory namespace */
 }/* CVC4 namespace */
diff --git a/src/theory/arith/arithvar.cpp b/src/theory/arith/arithvar.cpp
index 1ab125a..d63dc6f 100644
--- a/src/theory/arith/arithvar.cpp
+++ b/src/theory/arith/arithvar.cpp
@@ -2,9 +2,9 @@
 /*! \file arithvar.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/arithvar.h b/src/theory/arith/arithvar.h
index f9ff6da..d1f7180 100644
--- a/src/theory/arith/arithvar.h
+++ b/src/theory/arith/arithvar.h
@@ -2,9 +2,9 @@
 /*! \file arithvar.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/attempt_solution_simplex.cpp b/src/theory/arith/attempt_solution_simplex.cpp
index 333b0bf..fe67559 100644
--- a/src/theory/arith/attempt_solution_simplex.cpp
+++ b/src/theory/arith/attempt_solution_simplex.cpp
@@ -2,9 +2,9 @@
 /*! \file attempt_solution_simplex.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/attempt_solution_simplex.h b/src/theory/arith/attempt_solution_simplex.h
index 00df8c0..73798f9 100644
--- a/src/theory/arith/attempt_solution_simplex.h
+++ b/src/theory/arith/attempt_solution_simplex.h
@@ -2,9 +2,9 @@
 /*! \file attempt_solution_simplex.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Paul Meng, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/bound_counts.h b/src/theory/arith/bound_counts.h
index b6417ed..70ddc2b 100644
--- a/src/theory/arith/bound_counts.h
+++ b/src/theory/arith/bound_counts.h
@@ -2,9 +2,9 @@
 /*! \file bound_counts.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters, Clark Barrett
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/callbacks.cpp b/src/theory/arith/callbacks.cpp
index 766c742..73aa5c3 100644
--- a/src/theory/arith/callbacks.cpp
+++ b/src/theory/arith/callbacks.cpp
@@ -2,9 +2,9 @@
 /*! \file callbacks.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/callbacks.h b/src/theory/arith/callbacks.h
index 606f411..3710ac5 100644
--- a/src/theory/arith/callbacks.h
+++ b/src/theory/arith/callbacks.h
@@ -2,9 +2,9 @@
 /*! \file callbacks.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters, Clark Barrett
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/congruence_manager.cpp b/src/theory/arith/congruence_manager.cpp
index da69436..04d8d50 100644
--- a/src/theory/arith/congruence_manager.cpp
+++ b/src/theory/arith/congruence_manager.cpp
@@ -2,9 +2,9 @@
 /*! \file congruence_manager.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Dejan Jovanovic, Morgan Deters, Andrew Reynolds
+ **   Tim King, Paul Meng, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -42,6 +42,7 @@ ArithCongruenceManager::ArithCongruenceManager(context::Context* c, ConstraintDa
     d_avariables(avars),
     d_ee(d_notify, c, "theory::arith::ArithCongruenceManager", true)
 {
+  d_ee.addFunctionKind(kind::NONLINEAR_MULT);
   //module to infer additional equalities based on normalization
   if( options::sNormInferEq() ){
     d_eq_infer = new quantifiers::EqualityInference(c, true);
@@ -513,8 +514,6 @@ bool ArithCongruenceManager::fixpointInfer() {
   return inConflict();
 }
 
-
-
 }/* CVC4::theory::arith namespace */
 }/* CVC4::theory namespace */
 }/* CVC4 namespace */
diff --git a/src/theory/arith/congruence_manager.h b/src/theory/arith/congruence_manager.h
index a02f36a..228f298 100644
--- a/src/theory/arith/congruence_manager.h
+++ b/src/theory/arith/congruence_manager.h
@@ -2,9 +2,9 @@
 /*! \file congruence_manager.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters, Dejan Jovanovic, Andrew Reynolds
+ **   Tim King, Paul Meng, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -175,6 +175,9 @@ public:
 
   /** process inferred equalities based on Shostak normalization */
   bool fixpointInfer();
+  
+  eq::EqualityEngine * getEqualityEngine() { return &d_ee; }
+
 private:
   class Statistics {
   public:
diff --git a/src/theory/arith/constraint.cpp b/src/theory/arith/constraint.cpp
index a82ec4c..9ba4074 100644
--- a/src/theory/arith/constraint.cpp
+++ b/src/theory/arith/constraint.cpp
@@ -2,9 +2,9 @@
 /*! \file constraint.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters, Dejan Jovanovic
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/constraint.h b/src/theory/arith/constraint.h
index 3ae2d0b..6623273 100644
--- a/src/theory/arith/constraint.h
+++ b/src/theory/arith/constraint.h
@@ -2,9 +2,9 @@
 /*! \file constraint.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Paul Meng, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/constraint_forward.h b/src/theory/arith/constraint_forward.h
index 1ebffc1..80a0fa0 100644
--- a/src/theory/arith/constraint_forward.h
+++ b/src/theory/arith/constraint_forward.h
@@ -2,9 +2,9 @@
 /*! \file constraint_forward.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/cut_log.cpp b/src/theory/arith/cut_log.cpp
index 3af2a71..ad04cfe 100644
--- a/src/theory/arith/cut_log.cpp
+++ b/src/theory/arith/cut_log.cpp
@@ -2,9 +2,9 @@
 /*! \file cut_log.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/cut_log.h b/src/theory/arith/cut_log.h
index e6475b5..77273f6 100644
--- a/src/theory/arith/cut_log.h
+++ b/src/theory/arith/cut_log.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Morgan Deters, Kshitij Bansal
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/delta_rational.cpp b/src/theory/arith/delta_rational.cpp
index 207fd79..467f868 100644
--- a/src/theory/arith/delta_rational.cpp
+++ b/src/theory/arith/delta_rational.cpp
@@ -2,9 +2,9 @@
 /*! \file delta_rational.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/delta_rational.h b/src/theory/arith/delta_rational.h
index afe4c0e..b0ea8a9 100644
--- a/src/theory/arith/delta_rational.h
+++ b/src/theory/arith/delta_rational.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Morgan Deters, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/dio_solver.cpp b/src/theory/arith/dio_solver.cpp
index f34bbc6..d862dab 100644
--- a/src/theory/arith/dio_solver.cpp
+++ b/src/theory/arith/dio_solver.cpp
@@ -2,9 +2,9 @@
 /*! \file dio_solver.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters, Dejan Jovanovic
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/dio_solver.h b/src/theory/arith/dio_solver.h
index 6c53d6a..2b8b64e 100644
--- a/src/theory/arith/dio_solver.h
+++ b/src/theory/arith/dio_solver.h
@@ -2,9 +2,9 @@
 /*! \file dio_solver.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/dual_simplex.cpp b/src/theory/arith/dual_simplex.cpp
index 72d7a86..a40db89 100644
--- a/src/theory/arith/dual_simplex.cpp
+++ b/src/theory/arith/dual_simplex.cpp
@@ -2,9 +2,9 @@
 /*! \file dual_simplex.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Paul Meng, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/dual_simplex.h b/src/theory/arith/dual_simplex.h
index 2546197..2911592 100644
--- a/src/theory/arith/dual_simplex.h
+++ b/src/theory/arith/dual_simplex.h
@@ -2,9 +2,9 @@
 /*! \file dual_simplex.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Paul Meng, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/error_set.cpp b/src/theory/arith/error_set.cpp
index 7c8efc4..0bd2832 100644
--- a/src/theory/arith/error_set.cpp
+++ b/src/theory/arith/error_set.cpp
@@ -2,9 +2,9 @@
 /*! \file error_set.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Paul Meng, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/error_set.h b/src/theory/arith/error_set.h
index 4b88e3f..e09a85a 100644
--- a/src/theory/arith/error_set.h
+++ b/src/theory/arith/error_set.h
@@ -2,9 +2,9 @@
 /*! \file error_set.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Paul Meng, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/fc_simplex.cpp b/src/theory/arith/fc_simplex.cpp
index ef5ff93..59bb352 100644
--- a/src/theory/arith/fc_simplex.cpp
+++ b/src/theory/arith/fc_simplex.cpp
@@ -2,9 +2,9 @@
 /*! \file fc_simplex.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Paul Meng, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/fc_simplex.h b/src/theory/arith/fc_simplex.h
index ca1e666..c4f996f 100644
--- a/src/theory/arith/fc_simplex.h
+++ b/src/theory/arith/fc_simplex.h
@@ -2,9 +2,9 @@
 /*! \file fc_simplex.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/infer_bounds.cpp b/src/theory/arith/infer_bounds.cpp
index 96b2a61..e9a85d7 100644
--- a/src/theory/arith/infer_bounds.cpp
+++ b/src/theory/arith/infer_bounds.cpp
@@ -2,9 +2,9 @@
 /*! \file infer_bounds.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/infer_bounds.h b/src/theory/arith/infer_bounds.h
index f65952f..720b570 100644
--- a/src/theory/arith/infer_bounds.h
+++ b/src/theory/arith/infer_bounds.h
@@ -2,9 +2,9 @@
 /*! \file infer_bounds.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/kinds b/src/theory/arith/kinds
index 4547018..61029ac 100644
--- a/src/theory/arith/kinds
+++ b/src/theory/arith/kinds
@@ -14,6 +14,7 @@ rewriter ::CVC4::theory::arith::ArithRewriter "theory/arith/arith_rewriter.h"
 
 operator PLUS 2: "arithmetic addition (N-ary)"
 operator MULT 2: "arithmetic multiplication (N-ary)"
+operator NONLINEAR_MULT 2: "synonym for MULT"
 operator MINUS 2 "arithmetic binary subtraction operator"
 operator UMINUS 1 "arithmetic unary negation"
 operator DIVISION 2 "real division, division by 0 undefined (user symbol)"
@@ -85,6 +86,7 @@ operator TO_REAL 1 "cast term to real (parameter is an integer-sorted term; this
 
 typerule PLUS ::CVC4::theory::arith::ArithOperatorTypeRule
 typerule MULT ::CVC4::theory::arith::ArithOperatorTypeRule
+typerule NONLINEAR_MULT ::CVC4::theory::arith::ArithOperatorTypeRule
 typerule MINUS ::CVC4::theory::arith::ArithOperatorTypeRule
 typerule UMINUS ::CVC4::theory::arith::ArithOperatorTypeRule
 typerule DIVISION ::CVC4::theory::arith::ArithOperatorTypeRule
diff --git a/src/theory/arith/linear_equality.cpp b/src/theory/arith/linear_equality.cpp
index 7e1d84e..9d414fc 100644
--- a/src/theory/arith/linear_equality.cpp
+++ b/src/theory/arith/linear_equality.cpp
@@ -2,9 +2,9 @@
 /*! \file linear_equality.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/linear_equality.h b/src/theory/arith/linear_equality.h
index aa6b10c..c2fa99e 100644
--- a/src/theory/arith/linear_equality.h
+++ b/src/theory/arith/linear_equality.h
@@ -2,9 +2,9 @@
 /*! \file linear_equality.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Clark Barrett, Morgan Deters
+ **   Tim King, Paul Meng, Clark Barrett
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/matrix.cpp b/src/theory/arith/matrix.cpp
index 25ed96b..2817a1d 100644
--- a/src/theory/arith/matrix.cpp
+++ b/src/theory/arith/matrix.cpp
@@ -2,9 +2,9 @@
 /*! \file matrix.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/matrix.h b/src/theory/arith/matrix.h
index f0d4ec4..2e0a1eb 100644
--- a/src/theory/arith/matrix.h
+++ b/src/theory/arith/matrix.h
@@ -2,9 +2,9 @@
 /*! \file matrix.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters, Clark Barrett
+ **   Tim King, Paul Meng, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/nonlinear_extension.cpp b/src/theory/arith/nonlinear_extension.cpp
new file mode 100644
index 0000000..02266f3
--- /dev/null
+++ b/src/theory/arith/nonlinear_extension.cpp
@@ -0,0 +1,2271 @@
+/*********************                                                        */
+/*! \file nonlinear_extension.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King, Andrew Reynolds, Andres Noetzli
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief [[ Add one-line brief description here ]]
+ **
+ ** [[ Add lengthier description here ]]
+ ** \todo document this file
+ **/
+
+#include "theory/arith/nonlinear_extension.h"
+
+#include <set>
+
+#include "expr/node_builder.h"
+#include "options/arith_options.h"
+#include "theory/arith/arith_utilities.h"
+#include "theory/arith/theory_arith.h"
+#include "theory/quantifiers/quant_util.h"
+#include "theory/theory_model.h"
+
+using namespace std;
+using namespace CVC4::kind;
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+namespace {
+
+// Return true if a collection c contains an elem k. Compatible with map and set
+// containers.
+template <class Container, class Key>
+bool Contains(const Container& c, const Key& k) {
+  return c.find(k) != c.end();
+}
+
+// Inserts value into the set/map c if the value was not present there. Returns
+// true if the value was inserted.
+template <class Container, class Value>
+bool InsertIfNotPresent(Container* c, const Value& value) {
+  return (c->insert(value)).second;
+}
+
+// Returns true if a vector c contains an elem t.
+template <class T>
+bool IsInVector(const std::vector<T>& c, const T& t) {
+  return std::find(c.begin(), c.end(), t) != c.end();
+}
+
+// Returns the a[key] and assertion fails in debug mode.
+inline unsigned getCount(const NodeMultiset& a, Node key) {
+  NodeMultiset::const_iterator it = a.find(key);
+  Assert(it != a.end());
+  return it->second;
+}
+
+// Returns a[key] if key is in a or value otherwise.
+unsigned getCountWithDefault(const NodeMultiset& a, Node key, unsigned value) {
+  NodeMultiset::const_iterator it = a.find(key);
+  return (it == a.end()) ? value : it->second;
+}
+
+// Returns map[key] if key is in map or Node::null() otherwise.
+Node getNodeOrNull(const std::map<Node, Node>& map, Node key) {
+  std::map<Node, Node>::const_iterator it = map.find(key);
+  return (it == map.end()) ? Node::null() : it->second;
+}
+
+// Returns true if for any key then a[key] <= b[key] where the value for any key
+// not present is interpreted as 0.
+bool isSubset(const NodeMultiset& a, const NodeMultiset& b) {
+  for (NodeMultiset::const_iterator it_a = a.begin(); it_a != a.end(); ++it_a) {
+    Node key = it_a->first;
+    const unsigned a_value = it_a->second;
+    const unsigned b_value = getCountWithDefault(b, key, 0);
+    if (a_value > b_value) {
+      return false;
+    }
+  }
+  return true;
+}
+
+// Given two multisets return the multiset difference a \ b.
+NodeMultiset diffMultiset(const NodeMultiset& a, const NodeMultiset& b) {
+  NodeMultiset difference;
+  for (NodeMultiset::const_iterator it_a = a.begin(); it_a != a.end(); ++it_a) {
+    Node key = it_a->first;
+    const unsigned a_value = it_a->second;
+    const unsigned b_value = getCountWithDefault(b, key, 0);
+    if (a_value > b_value) {
+      difference[key] = a_value - b_value;
+    }
+  }
+  return difference;
+}
+
+// Return a vector containing a[key] repetitions of key in a multiset a.
+std::vector<Node> ExpandMultiset(const NodeMultiset& a) {
+  std::vector<Node> expansion;
+  for (NodeMultiset::const_iterator it_a = a.begin(); it_a != a.end(); ++it_a) {
+    expansion.insert(expansion.end(), it_a->second, it_a->first);
+  }
+  return expansion;
+}
+
+void debugPrintBound(const char* c, Node coeff, Node x, Kind type, Node rhs) {
+  Node t = QuantArith::mkCoeffTerm(coeff, x);
+  Trace(c) << t << " " << type << " " << rhs;
+}
+
+struct SubstitutionConstResult {
+  // The resulting term of the substitution.
+  Node term;
+
+  // ?
+  std::vector<Node> const_exp;
+
+  // ??
+  // A term sum[i] for which for rep_sum[i] not in rep_to_const.
+  Node variable_term;
+}; /* struct SubstitutionConstResult */
+
+SubstitutionConstResult getSubstitutionConst(
+    Node n, Node n_rsu, Node rsu_exp,
+    const std::vector<Node>& sum, const std::vector<Node>& rep_sum,
+    const std::map<Node, Node>& rep_to_const,
+    const std::map<Node, Node>& rep_to_const_exp,
+    const std::map<Node, Node>& rep_to_const_base) {
+  Assert(sum.size() == rep_sum.size());
+
+  SubstitutionConstResult result;
+
+  std::vector<Node> vars;
+  std::vector<Node> subs;
+  std::set<Node> rep_exp_proc;
+  for (unsigned i = 0; i < rep_sum.size(); i++) {
+    Node cr = rep_sum[i];
+    Node const_of_cr = getNodeOrNull(rep_to_const, cr);
+    if (const_of_cr.isNull()) {
+      result.variable_term = sum[i];
+      continue;
+    }
+    Assert(!const_of_cr.isNull());
+    Node const_base_of_cr = getNodeOrNull(rep_to_const_base, cr);
+    Assert(!const_base_of_cr.isNull());
+    if (const_base_of_cr != sum[i]) {
+      result.const_exp.push_back(const_base_of_cr.eqNode(sum[i]));
+    }
+    if (rep_exp_proc.find(cr) == rep_exp_proc.end()) {
+      rep_exp_proc.insert(cr);
+      Node const_exp = getNodeOrNull(rep_to_const_exp, cr);
+      if (!const_exp.isNull()) {
+        result.const_exp.push_back(const_exp);
+      }
+    }
+    vars.push_back(sum[i]);
+    subs.push_back(const_of_cr);
+  }
+  if( n!=n_rsu && !rsu_exp.isNull() ){
+    result.const_exp.push_back( rsu_exp );
+  }
+  Node substituted =
+      n_rsu.substitute(vars.begin(), vars.end(), subs.begin(), subs.end());
+  result.term = Rewriter::rewrite(substituted);
+  return result;
+}
+
+struct SortNonlinearExtension {
+  SortNonlinearExtension()
+      : d_nla(NULL), d_order_type(0), d_reverse_order(false) {}
+  NonlinearExtension* d_nla;
+  unsigned d_order_type;
+  bool d_reverse_order;
+  bool operator()(Node i, Node j) {
+    int cv = d_nla->compare(i, j, d_order_type);
+    if (cv == 0) {
+      return i < j;
+    } else {
+      return d_reverse_order ? cv < 0 : cv > 0;
+    }
+  }
+};
+
+bool hasNewMonomials(Node n, const std::vector<Node>& existing) {
+  std::set<Node> visited;
+
+  std::vector<Node> worklist;
+  worklist.push_back(n);
+  while (!worklist.empty()) {
+    Node current = worklist.back();
+    worklist.pop_back();
+    if (!Contains(visited, current)) {
+      visited.insert(current);
+      if (current.getKind() == kind::NONLINEAR_MULT) {
+        if (!IsInVector(existing, current)) {
+          return true;
+        }
+      } else {
+        worklist.insert(worklist.end(), current.begin(), current.end());
+      }
+    }
+  }
+  return false;
+}
+
+}  // namespace
+
+NonlinearExtension::NonlinearExtension(TheoryArith& containing,
+                                       eq::EqualityEngine* ee)
+    : d_lemmas(containing.getUserContext()),
+      d_zero_split(containing.getUserContext()),
+      d_containing(containing),
+      d_ee(ee),
+      d_needsLastCall(false) {
+  d_true = NodeManager::currentNM()->mkConst(true);
+  d_false = NodeManager::currentNM()->mkConst(false);
+  d_zero = NodeManager::currentNM()->mkConst(Rational(0));
+  d_one = NodeManager::currentNM()->mkConst(Rational(1));
+  d_neg_one = NodeManager::currentNM()->mkConst(Rational(-1));
+  d_order_points.push_back(d_neg_one);
+  d_order_points.push_back(d_zero);
+  d_order_points.push_back(d_one);
+}
+
+NonlinearExtension::~NonlinearExtension() {}
+
+// Returns a reference to either map[key] if it exists in the map
+// or to a default value otherwise.
+//
+// Warning: special care must be taken if value is a temporary object.
+template <class MapType, class Key, class Value>
+const Value& FindWithDefault(const MapType& map, const Key& key,
+                             const Value& value) {
+  typename MapType::const_iterator it = map.find(key);
+  if (it == map.end()) {
+    return value;
+  }
+  return it->second;
+}
+
+const NodeMultiset& NonlinearExtension::getMonomialExponentMap(
+    Node monomial) const {
+  MonomialExponentMap::const_iterator it = d_m_exp.find(monomial);
+  Assert(it != d_m_exp.end());
+  return it->second;
+}
+
+bool NonlinearExtension::isMonomialSubset(Node a, Node b) const {
+  const NodeMultiset& a_exponent_map = getMonomialExponentMap(a);
+  const NodeMultiset& b_exponent_map = getMonomialExponentMap(b);
+
+  return isSubset(a_exponent_map, b_exponent_map);
+}
+
+void NonlinearExtension::registerMonomialSubset(Node a, Node b) {
+  Assert(isMonomialSubset(a, b));
+
+  const NodeMultiset& a_exponent_map = getMonomialExponentMap(a);
+  const NodeMultiset& b_exponent_map = getMonomialExponentMap(b);
+
+  std::vector<Node> diff_children =
+      ExpandMultiset(diffMultiset(b_exponent_map, a_exponent_map));
+  Assert(!diff_children.empty());
+
+  d_m_contain_parent[a].push_back(b);
+  d_m_contain_children[b].push_back(a);
+
+  Node mult_term = safeConstructNary(kind::MULT, diff_children);
+  Node nlmult_term = safeConstructNary(kind::NONLINEAR_MULT, diff_children);
+  d_m_contain_mult[a][b] = mult_term;
+  d_m_contain_umult[a][b] = nlmult_term;
+  Trace("nl-ext-mindex") << "..." << a << " is a subset of " << b
+                         << ", difference is " << mult_term << std::endl;
+}
+
+class NonLinearExtentionSubstitutionSolver {
+ public:
+  NonLinearExtentionSubstitutionSolver(const eq::EqualityEngine* ee)
+      : d_ee(ee) {}
+
+  bool solve(const std::vector<Node>& vars, std::vector<Node>* subs,
+             std::map<Node, std::vector<Node> >* exp,
+             std::map<Node, std::vector<int> >* rep_to_subs_index);
+
+ private:
+  bool setSubstitutionConst(
+      const std::vector<Node>& vars, Node r, Node r_c, Node r_cb,
+      const std::vector<Node>& r_c_exp, std::vector<Node>* subs,
+      std::map<Node, std::vector<Node> >* exp,
+      std::map<Node, std::vector<int> >* rep_to_subs_index);
+
+  const eq::EqualityEngine* d_ee;
+
+  std::map<Node, Node > d_rep_sum_unique;
+  std::map<Node, Node > d_rep_sum_unique_exp;
+
+  std::map<Node, Node> d_rep_to_const;
+  std::map<Node, Node> d_rep_to_const_exp;
+  std::map<Node, Node> d_rep_to_const_base;
+
+  // key in term_to_sum iff key in term_to_rep_sum.
+  std::map<Node, std::vector<Node> > d_term_to_sum;
+  std::map<Node, std::vector<Node> > d_term_to_rep_sum;
+  std::map<Node, int> d_term_to_nconst_rep_count;
+
+  std::map<Node, std::vector<Node> > d_reps_to_parent_terms;
+  std::map<Node, std::vector<Node> > d_reps_to_terms;
+};
+
+bool NonLinearExtentionSubstitutionSolver::solve(
+    const std::vector<Node>& vars, std::vector<Node>* subs,
+    std::map<Node, std::vector<Node> >* exp,
+    std::map<Node, std::vector<int> >* rep_to_subs_index) {
+  // std::map<Node, Node> rep_to_const;
+  // std::map<Node, Node> rep_to_const_exp;
+  // std::map<Node, Node> rep_to_const_base;
+
+  // std::map<Node, std::vector<Node> > term_to_sum;
+  // std::map<Node, std::vector<Node> > term_to_rep_sum;
+  // std::map<Node, int> term_to_nconst_rep_count;
+  // std::map<Node, std::vector<Node> > reps_to_parent_terms;
+  // std::map<Node, std::vector<Node> > reps_to_terms;
+  eq::EqClassesIterator eqcs_i = eq::EqClassesIterator(d_ee);
+
+  bool retVal = false;
+  while (!eqcs_i.isFinished() && !rep_to_subs_index->empty()) {
+    Node r = (*eqcs_i);
+    if (r.getType().isReal()) {
+      Trace("nl-subs-debug")
+          << "Process equivalence class " << r << "..." << std::endl;
+      Node r_c;
+      Node r_cb;
+      std::vector<Node> r_c_exp;
+      if (r.isConst()) {
+        r_c = r;
+        r_cb = r;
+      }
+      // scan the class
+      eq::EqClassIterator eqc_i = eq::EqClassIterator(r, d_ee);
+      while (!eqc_i.isFinished()) {
+        Node n = (*eqc_i);
+        if (!n.isConst()) {
+          Trace("nl-subs-debug") << "Look at term : " << n << std::endl;
+          std::map<Node, Node> msum;
+          if (QuantArith::getMonomialSum(n, msum)) {
+            int nconst_count = 0;
+            bool evaluatable = true;
+            //first, collect sums of equal terms
+            std::map< Node, Node > rep_to_mon;
+            std::vector< Node > subs_rm;
+            std::vector< Node > vars_rm;
+            std::vector< Node > exp_rm;
+            for (std::map<Node, Node>::iterator itm = msum.begin();
+                 itm != msum.end(); ++itm) {
+              if (!itm->first.isNull()) {
+                if (d_ee->hasTerm(itm->first)) {
+                  Node cr = d_ee->getRepresentative(itm->first);
+                  std::map< Node, Node >::iterator itrm = rep_to_mon.find( cr );
+                  if( itrm==rep_to_mon.end() ){
+                    rep_to_mon[cr] = itm->first;
+                  }else{
+                    vars_rm.push_back( itm->first );
+                    subs_rm.push_back( itrm->second );
+                    exp_rm.push_back( itm->first.eqNode( itrm->second ) );
+                  }
+                }
+              }else{
+                Trace("nl-subs-debug")
+                    << "...is not evaluatable due to monomial " << itm->first
+                    << std::endl;
+                evaluatable = false;
+                break;
+              }
+            }
+            if( evaluatable ){
+              bool success = true;
+              if( !vars_rm.empty() ){
+                Node ns = n.substitute( vars_rm.begin(), vars_rm.end(), subs_rm.begin(), subs_rm.end() );
+                ns = Rewriter::rewrite( ns );
+                if( ns.isConst() ){
+                  success = false;
+                  if( r_c.isNull() ){
+                    r_c = ns;
+                    r_cb = n;
+                    r_c_exp.insert( r_c_exp.end(), exp_rm.begin(), exp_rm.end() );
+                  }
+                }else{
+                  //recompute the monomial
+                  msum.clear();
+                  if (!QuantArith::getMonomialSum(ns, msum)) {
+                    success = false;
+                  }else{
+                    d_rep_sum_unique_exp[n] = exp_rm.size()==1 ? exp_rm[0] : NodeManager::currentNM()->mkNode( kind::AND, exp_rm );
+                    d_rep_sum_unique[n] = ns;
+                  }
+                }
+              }else{
+                d_rep_sum_unique[n] = n;
+              }
+              if( success ){
+                for (std::map<Node, Node>::iterator itm = msum.begin();
+                     itm != msum.end(); ++itm) {
+                  if (!itm->first.isNull()) {
+                    if (d_ee->hasTerm(itm->first)) {
+                      Trace("nl-subs-debug")
+                          << "      ...monomial " << itm->first << std::endl;
+                      Node cr = d_ee->getRepresentative(itm->first);
+                      d_term_to_sum[n].push_back(itm->first);
+                      d_term_to_rep_sum[n].push_back(cr);
+                      if (!Contains(d_rep_to_const, cr)) {
+                        if (!IsInVector(d_reps_to_parent_terms[cr], n)) {
+                          d_reps_to_parent_terms[cr].push_back(n);
+                          nconst_count++;
+                        }
+                      }
+                    } else {
+                      Assert( false );
+                    }
+                  }
+                }
+                if (evaluatable) {
+                  Trace("nl-subs-debug")
+                      << "  ...term has " << nconst_count
+                      << " unique non-constant represenative children."
+                      << std::endl;
+                  if (nconst_count == 0) {
+                    if (r_c.isNull()) {
+                      const SubstitutionConstResult result = getSubstitutionConst(
+                          n, d_rep_sum_unique[n], d_rep_sum_unique_exp[n],
+                          d_term_to_sum[n], d_term_to_rep_sum[n], d_rep_to_const,
+                          d_rep_to_const_exp, d_rep_to_const_base);
+                      r_c_exp.insert(r_c_exp.end(), result.const_exp.begin(),
+                                     result.const_exp.end());
+                      r_c = result.term;
+                      r_cb = n;
+                      Assert(result.variable_term.isNull());
+                      Assert(r_c.isConst());
+                    }
+                  } else {
+                    d_reps_to_terms[r].push_back(n);
+                    d_term_to_nconst_rep_count[n] = nconst_count;
+                  }
+                }
+              }
+            }
+          } else {
+            Trace("nl-subs-debug")
+                << "...could not get monomial sum " << std::endl;
+          }
+        }
+        ++eqc_i;
+      }
+      if (!r_c.isNull()) {
+        setSubstitutionConst(vars, r, r_c, r_cb, r_c_exp, subs, exp,
+                             rep_to_subs_index);
+      }
+    }
+    ++eqcs_i;
+  }
+  return retVal;
+}
+
+bool NonLinearExtentionSubstitutionSolver::setSubstitutionConst(
+    const std::vector<Node>& vars, Node r, Node r_c, Node r_cb,
+    const std::vector<Node>& r_c_exp, std::vector<Node>* subs,
+    std::map<Node, std::vector<Node> >* exp,
+    std::map<Node, std::vector<int> >* rep_to_subs_index) {
+  Trace("nl-subs-debug") << "Set constant equivalence class : " << r << " -> "
+                         << r_c << std::endl;
+  bool retVal = false;
+
+  d_rep_to_const[r] = r_c;
+  Node expn;
+  if (!r_c_exp.empty()) {
+    expn = r_c_exp.size() == 1
+               ? r_c_exp[0]
+               : NodeManager::currentNM()->mkNode(kind::AND, r_c_exp);
+    Trace("nl-subs-debug") << "...explanation is " << expn << std::endl;
+    d_rep_to_const_exp[r] = expn;
+  }
+  d_rep_to_const_base[r] = r_cb;
+
+  std::map<Node, std::vector<int> >::const_iterator iti =
+      rep_to_subs_index->find(r);
+  if (iti != rep_to_subs_index->end()) {
+    for (unsigned i = 0; i < iti->second.size(); i++) {
+      int ii = iti->second[i];
+      (*subs)[ii] = r_c;
+      std::vector<Node>& exp_var_ii = (*exp)[vars[ii]];
+      exp_var_ii.clear();
+      if (!expn.isNull()) {
+        exp_var_ii.push_back(expn);
+      }
+      if (vars[ii] != r_cb) {
+        exp_var_ii.push_back(vars[ii].eqNode(r_cb));
+      }
+    }
+    retVal = true;
+    rep_to_subs_index->erase(r);
+    if (rep_to_subs_index->empty()) {
+      return retVal;
+    }
+  }
+
+  // new inferred constants
+  std::map<Node, Node> new_const;
+  std::map<Node, std::vector<Node> > new_const_exp;
+
+  // parent terms now evaluate to constants
+  std::map<Node, std::vector<Node> >::const_iterator itrp =
+      d_reps_to_parent_terms.find(r);
+  if (itrp != d_reps_to_parent_terms.end()) {
+    // Trace("nl-subs-debug") << "Look at " << itrp->second.size() << " parent
+    // terms." << std::endl;
+    for (unsigned i = 0; i < itrp->second.size(); i++) {
+      Node m = itrp->second[i];
+      d_term_to_nconst_rep_count[m]--;
+      Node r = d_ee->getRepresentative(m);
+      if (d_term_to_nconst_rep_count[m] == 0) {
+        if (!Contains(d_rep_to_const, r)) {
+          Trace("nl-subs-debug") << "...parent term " << m
+                                 << " evaluates to constant." << std::endl;
+          if (!Contains(new_const, m)) {
+            const SubstitutionConstResult result = getSubstitutionConst(
+                m, d_rep_sum_unique[m], d_rep_sum_unique_exp[m],
+                d_term_to_sum[m], d_term_to_rep_sum[m], d_rep_to_const,
+                d_rep_to_const_exp, d_rep_to_const_base);
+            new_const_exp[m].insert(new_const_exp[m].end(),
+                                    result.const_exp.begin(),
+                                    result.const_exp.end());
+            Node m_c = result.term;
+            // count should be accurate
+            Assert(result.variable_term.isNull());
+            Assert(m_c.isConst());
+            new_const[m] = m_c;
+          }
+        }
+      } else if (d_term_to_nconst_rep_count[m] == 1) {
+        // check if it is now univariate solved
+        if (Contains(d_rep_to_const, r)) {
+          Trace("nl-subs-debug") << "...parent term " << m
+                                 << " is univariate solved." << std::endl;
+          const SubstitutionConstResult result = getSubstitutionConst(
+              m, d_rep_sum_unique[m], d_rep_sum_unique_exp[m],
+              d_term_to_sum[m], d_term_to_rep_sum[m], d_rep_to_const,
+              d_rep_to_const_exp, d_rep_to_const_base);
+          Node eq = (result.term).eqNode(d_rep_to_const[r]);
+          Node v_c = QuantArith::solveEqualityFor(eq, result.variable_term);
+          if (!v_c.isNull()) {
+            Assert(v_c.isConst());
+            if (Contains(new_const, result.variable_term)) {
+              new_const[result.variable_term] = v_c;
+              std::vector<Node>& explanation =
+                  new_const_exp[result.variable_term];
+              explanation.insert(explanation.end(), result.const_exp.begin(),
+                                 result.const_exp.end());
+              if (m != d_rep_to_const_base[r]) {
+                explanation.push_back(m.eqNode(d_rep_to_const_base[r]));
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+
+  // equal univariate terms now solved
+  std::map<Node, std::vector<Node> >::iterator itt = d_reps_to_terms.find(r);
+  if (itt != d_reps_to_terms.end()) {
+    for (unsigned i = 0; i < itt->second.size(); i++) {
+      Node m = itt->second[i];
+      if (d_term_to_nconst_rep_count[m] == 1) {
+        Trace("nl-subs-debug")
+            << "...term " << m << " is univariate solved." << std::endl;
+        const SubstitutionConstResult result = getSubstitutionConst(
+            m, d_rep_sum_unique[m], d_rep_sum_unique_exp[m],
+            d_term_to_sum[m], d_term_to_rep_sum[m], d_rep_to_const,
+            d_rep_to_const_exp, d_rep_to_const_base);
+        Node v = result.variable_term;
+        Node m_t = result.term;
+        Node eq = m_t.eqNode(r_c);
+        Node v_c = QuantArith::solveEqualityFor(eq, v);
+        Trace("nl-subs-debug") << "Solved equality " << eq << " for " << v << ", got = " << v_c << std::endl;
+        if (!v_c.isNull()) {
+          Assert(v_c.isConst());
+          if (new_const.find(v) == new_const.end()) {
+            new_const[v] = v_c;
+            new_const_exp[v].insert(new_const_exp[v].end(),
+                                    result.const_exp.begin(),
+                                    result.const_exp.end());
+            if (m != r_cb) {
+              new_const_exp[v].push_back(m.eqNode(r_cb));
+            }
+          }
+        }
+      }
+    }
+  }
+
+  // now, process new inferred constants
+  for (std::map<Node, Node>::iterator itn = new_const.begin();
+       itn != new_const.end(); ++itn) {
+    Node m = itn->first;
+    Node r = d_ee->getRepresentative(m);
+    if (!Contains(d_rep_to_const, r)) {
+      if (setSubstitutionConst(vars, r, itn->second, m, new_const_exp[m], subs,
+                               exp, rep_to_subs_index)) {
+        retVal = true;
+      }
+    }
+  }
+  return retVal;
+}
+
+bool NonlinearExtension::getCurrentSubstitution(
+    int effort, const std::vector<Node>& vars, std::vector<Node>& subs,
+    std::map<Node, std::vector<Node> >& exp) {
+  // get the constant equivalence classes
+  std::map<Node, std::vector<int> > rep_to_subs_index;
+
+  bool retVal = false;
+  for (unsigned i = 0; i < vars.size(); i++) {
+    Node n = vars[i];
+    if (d_ee->hasTerm(n)) {
+      Node nr = d_ee->getRepresentative(n);
+      if (nr.isConst()) {
+        subs.push_back(nr);
+        Trace("nl-subs") << "Basic substitution : " << n << " -> " << nr
+                         << std::endl;
+        exp[n].push_back(n.eqNode(nr));
+        retVal = true;
+      } else {
+        rep_to_subs_index[nr].push_back(i);
+        subs.push_back(n);
+      }
+    } else {
+      subs.push_back(n);
+    }
+  }
+
+  if (options::nlExtSolveSubs()) {
+    NonLinearExtentionSubstitutionSolver substitution_solver(d_ee);
+    if (substitution_solver.solve(vars, &subs, &exp, &rep_to_subs_index)) {
+      retVal = true;
+    }
+  }
+
+  // return true if the substitution is non-trivial
+  return retVal;
+
+  // d_containing.getValuation().getModel()->getRepresentative( n );
+}
+
+std::pair<bool, Node> NonlinearExtension::isExtfReduced(
+    int effort, Node n, Node on, const std::vector<Node>& exp) const {
+  if (n != d_zero) {
+    return std::make_pair(n.getKind() != kind::NONLINEAR_MULT, Node::null());
+  }
+  Assert(n == d_zero);
+  Trace("nl-ext-zero-exp") << "Infer zero : " << on << " == " << n << std::endl;
+  // minimize explanation
+  const std::set<Node> vars(on.begin(), on.end());
+
+  for (unsigned i = 0; i < exp.size(); i++) {
+    Trace("nl-ext-zero-exp") << "  exp[" << i << "] = " << exp[i] << std::endl;
+    std::vector<Node> eqs;
+    if (exp[i].getKind() == kind::EQUAL) {
+      eqs.push_back(exp[i]);
+    } else if (exp[i].getKind() == kind::AND) {
+      for (unsigned j = 0; j < exp[i].getNumChildren(); j++) {
+        if (exp[i][j].getKind() == kind::EQUAL) {
+          eqs.push_back(exp[i][j]);
+        }
+      }
+    }
+
+    for (unsigned j = 0; j < eqs.size(); j++) {
+      for (unsigned r = 0; r < 2; r++) {
+        if (eqs[j][r] == d_zero && vars.find(eqs[j][1 - r]) != vars.end()) {
+          Trace("nl-ext-zero-exp") << "...single exp : " << eqs[j] << std::endl;
+          return std::make_pair(true, eqs[j]);
+        }
+      }
+    }
+  }
+  return std::make_pair(true, Node::null());
+}
+
+Node NonlinearExtension::computeModelValue(Node n, unsigned index) {
+  std::map<Node, Node>::iterator it = d_mv[index].find(n);
+  if (it != d_mv[index].end()) {
+    return it->second;
+  } else {
+    Trace("nl-ext-debug") << "computeModelValue " << n << std::endl;
+    Node ret;
+    if (n.isConst()) {
+      ret = n;
+    } else {
+      if (n.getNumChildren() == 0) {
+        ret = d_containing.getValuation().getModel()->getValue(n);
+      } else {
+        if (index == 1 && n.getKind() == kind::NONLINEAR_MULT) {
+          if (d_containing.getValuation().getModel()->hasTerm(n)) {
+            // use model value for abstraction
+            ret = d_containing.getValuation().getModel()->getRepresentative(n);
+          } else {
+            // abstraction does not exist, use concrete
+            ret = computeModelValue(n, 0);
+          }
+        } else {
+          // otherwise, compute true value
+          std::vector<Node> children;
+          if (n.getMetaKind() == kind::metakind::PARAMETERIZED) {
+            children.push_back(n.getOperator());
+          }
+          for (unsigned i = 0; i < n.getNumChildren(); i++) {
+            Node mc = computeModelValue(n[i], index);
+            children.push_back(mc);
+          }
+          ret = Rewriter::rewrite(
+              NodeManager::currentNM()->mkNode(n.getKind(), children));
+          if (!ret.isConst()) {
+            Trace("nl-ext-debug") << "...got non-constant : " << ret << " for "
+                                  << n << ", ask model directly." << std::endl;
+            ret = d_containing.getValuation().getModel()->getValue(ret);
+          }
+        }
+      }
+      if (ret.getType().isReal() && !isArithKind(n.getKind())) {
+        // Trace("nl-ext-mv-debug") << ( index==0 ? "M" : "M_A" ) << "[ " << n
+        // << " ] -> " << ret << std::endl;
+        Assert(ret.isConst());
+      }
+    }
+    Trace("nl-ext-debug") << "computed " << (index == 0 ? "M" : "M_A") << "["
+                          << n << "] = " << ret << std::endl;
+    d_mv[index][n] = ret;
+    return ret;
+  }
+}
+
+void NonlinearExtension::registerMonomial(Node n) {
+  if (!IsInVector(d_monomials, n)) {
+    d_monomials.push_back(n);
+    Trace("nl-ext-debug") << "Register monomial : " << n << std::endl;
+    if (n.getKind() == kind::NONLINEAR_MULT) {
+      // get exponent count
+      for (unsigned k = 0; k < n.getNumChildren(); k++) {
+        d_m_exp[n][n[k]]++;
+        if (k == 0 || n[k] != n[k - 1]) {
+          d_m_vlist[n].push_back(n[k]);
+        }
+      }
+      d_m_degree[n] = n.getNumChildren();
+    } else if (n == d_one) {
+      d_m_exp[n].clear();
+      d_m_vlist[n].clear();
+      d_m_degree[n] = 0;
+    } else {
+      Assert(!isArithKind(n.getKind()));
+      d_m_exp[n][n] = 1;
+      d_m_vlist[n].push_back(n);
+      d_m_degree[n] = 1;
+    }
+    // TODO: sort necessary here?
+    std::sort(d_m_vlist[n].begin(), d_m_vlist[n].end());
+    Trace("nl-ext-mindex") << "Add monomial to index : " << n << std::endl;
+    d_m_index.addTerm(n, d_m_vlist[n], this);
+  }
+}
+
+void NonlinearExtension::setMonomialFactor(Node a, Node b,
+                                           const NodeMultiset& common) {
+  // Could not tell if this was being inserted intentionally or not.
+  std::map<Node, Node>& mono_diff_a = d_mono_diff[a];
+  if (!Contains(mono_diff_a, b)) {
+    Trace("nl-ext-mono-factor")
+        << "Set monomial factor for " << a << "/" << b << std::endl;
+    mono_diff_a[b] = mkMonomialRemFactor(a, common);
+  }
+}
+
+void NonlinearExtension::registerConstraint(Node atom) {
+  if (!IsInVector(d_constraints, atom)) {
+    d_constraints.push_back(atom);
+    Trace("nl-ext-debug") << "Register constraint : " << atom << std::endl;
+    std::map<Node, Node> msum;
+    if (QuantArith::getMonomialSumLit(atom, msum)) {
+      Trace("nl-ext-debug") << "got monomial sum: " << std::endl;
+      if (Trace.isOn("nl-ext-debug")) {
+        QuantArith::debugPrintMonomialSum(msum, "nl-ext-debug");
+      }
+      unsigned max_degree = 0;
+      std::vector<Node> all_m;
+      std::vector<Node> max_deg_m;
+      for (std::map<Node, Node>::iterator itm = msum.begin(); itm != msum.end();
+           ++itm) {
+        if (!itm->first.isNull()) {
+          all_m.push_back(itm->first);
+          registerMonomial(itm->first);
+          Trace("nl-ext-debug2")
+              << "...process monomial " << itm->first << std::endl;
+          Assert(d_m_degree.find(itm->first) != d_m_degree.end());
+          unsigned d = d_m_degree[itm->first];
+          if (d > max_degree) {
+            max_degree = d;
+            max_deg_m.clear();
+          }
+          if (d >= max_degree) {
+            max_deg_m.push_back(itm->first);
+          }
+        }
+      }
+      // isolate for each maximal degree monomial
+      for (unsigned i = 0; i < all_m.size(); i++) {
+        Node m = all_m[i];
+        Node rhs, coeff;
+        int res = QuantArith::isolate(m, msum, coeff, rhs, atom.getKind());
+        if (res != 0) {
+          Kind type = atom.getKind();
+          if (res == -1) {
+            type = reverseRelationKind(type);
+          }
+          Trace("nl-ext-constraint") << "Constraint : " << atom << " <=> ";
+          if (!coeff.isNull()) {
+            Trace("nl-ext-constraint") << coeff << " * ";
+          }
+          Trace("nl-ext-constraint")
+              << m << " " << type << " " << rhs << std::endl;
+          d_c_info[atom][m].d_rhs = rhs;
+          d_c_info[atom][m].d_coeff = coeff;
+          d_c_info[atom][m].d_type = type;
+        }
+      }
+      for (unsigned i = 0; i < max_deg_m.size(); i++) {
+        Node m = max_deg_m[i];
+        d_c_info_maxm[atom][m] = true;
+      }
+    } else {
+      Trace("nl-ext-debug") << "...failed to get monomial sum." << std::endl;
+    }
+  }
+}
+
+bool NonlinearExtension::isArithKind(Kind k) {
+  return k == kind::PLUS || k == kind::MULT || k == kind::NONLINEAR_MULT;
+}
+
+Node NonlinearExtension::mkLit(Node a, Node b, int status, int orderType) {
+  if (status == 0) {
+    Node a_eq_b = a.eqNode(b);
+    if (orderType == 0) {
+      return a_eq_b;
+    } else {
+      // return mkAbs( a ).eqNode( mkAbs( b ) );
+      Node negate_b = NodeManager::currentNM()->mkNode(kind::UMINUS, b);
+      return a_eq_b.orNode(a.eqNode(negate_b));
+    }
+  } else if (status < 0) {
+    return mkLit(b, a, -status);
+  } else {
+    Assert(status == 1 || status == 2);
+    NodeManager* nm = NodeManager::currentNM();
+    Kind greater_op = status == 1 ? kind::GEQ : kind::GT;
+    if (orderType == 0) {
+      return nm->mkNode(greater_op, a, b);
+    } else {
+      // return nm->mkNode( greater_op, mkAbs( a ), mkAbs( b ) );
+      Node zero = mkRationalNode(0);
+      Node a_is_nonnegative = nm->mkNode(kind::GEQ, a, zero);
+      Node b_is_nonnegative = nm->mkNode(kind::GEQ, b, zero);
+      Node negate_a = nm->mkNode(kind::UMINUS, a);
+      Node negate_b = nm->mkNode(kind::UMINUS, b);
+      return a_is_nonnegative.iteNode(
+          b_is_nonnegative.iteNode(nm->mkNode(greater_op, a, b),
+                                   nm->mkNode(greater_op, a, negate_b)),
+          b_is_nonnegative.iteNode(nm->mkNode(greater_op, negate_a, b),
+                                   nm->mkNode(greater_op, negate_a, negate_b)));
+    }
+  }
+}
+
+Node NonlinearExtension::mkAbs(Node a) {
+  if (a.isConst()) {
+    return mkRationalNode(a.getConst<Rational>().abs());
+  } else {
+    NodeManager* nm = NodeManager::currentNM();
+    Node a_is_nonnegative = nm->mkNode(kind::GEQ, a, mkRationalNode(0));
+    return a_is_nonnegative.iteNode(a, nm->mkNode(kind::UMINUS, a));
+  }
+}
+
+// by a <k1> b, a <k2> b, we know a <ret> b
+Kind NonlinearExtension::joinKinds(Kind k1, Kind k2) {
+  if (k2 < k1) {
+    return joinKinds(k2, k1);
+  } else if (k1 == k2) {
+    return k1;
+  } else {
+    Assert(k1 == kind::EQUAL || k1 == kind::LT || k1 == kind::LEQ ||
+           k1 == kind::GT || k1 == kind::GEQ);
+    Assert(k2 == kind::EQUAL || k2 == kind::LT || k2 == kind::LEQ ||
+           k2 == kind::GT || k2 == kind::GEQ);
+    if (k1 == kind::EQUAL) {
+      if (k2 == kind::LEQ || k2 == kind::GEQ) {
+        return k1;
+      }
+    } else if (k1 == kind::LT) {
+      if (k2 == kind::LEQ) {
+        return k1;
+      }
+    } else if (k1 == kind::LEQ) {
+      if (k2 == kind::GEQ) {
+        return kind::EQUAL;
+      }
+    } else if (k1 == kind::GT) {
+      if (k2 == kind::GEQ) {
+        return k1;
+      }
+    }
+    return UNDEFINED_KIND;
+  }
+}
+
+// by a <k1> b, b <k2> c, we know a <ret> c
+Kind NonlinearExtension::transKinds(Kind k1, Kind k2) {
+  if (k2 < k1) {
+    return transKinds(k2, k1);
+  } else if (k1 == k2) {
+    return k1;
+  } else {
+    Assert(k1 == kind::EQUAL || k1 == kind::LT || k1 == kind::LEQ ||
+           k1 == kind::GT || k1 == kind::GEQ);
+    Assert(k2 == kind::EQUAL || k2 == kind::LT || k2 == kind::LEQ ||
+           k2 == kind::GT || k2 == kind::GEQ);
+    if (k1 == kind::EQUAL) {
+      return k2;
+    } else if (k1 == kind::LT) {
+      if (k2 == kind::LEQ) {
+        return k1;
+      }
+    } else if (k1 == kind::GT) {
+      if (k2 == kind::GEQ) {
+        return k1;
+      }
+    }
+    return UNDEFINED_KIND;
+  }
+}
+
+Node NonlinearExtension::mkMonomialRemFactor(
+    Node n, const NodeMultiset& n_exp_rem) const {
+  std::vector<Node> children;
+  const NodeMultiset& exponent_map = getMonomialExponentMap(n);
+  for (NodeMultiset::const_iterator itme2 = exponent_map.begin();
+       itme2 != exponent_map.end(); ++itme2) {
+    Node v = itme2->first;
+    unsigned inc = itme2->second;
+    Trace("nl-ext-mono-factor")
+        << "..." << inc << " factors of " << v << std::endl;
+    unsigned count_in_n_exp_rem = getCountWithDefault(n_exp_rem, v, 0);
+    Assert(count_in_n_exp_rem <= inc);
+    inc -= count_in_n_exp_rem;
+    Trace("nl-ext-mono-factor")
+        << "......rem, now " << inc << " factors of " << v << std::endl;
+    children.insert(children.end(), inc, v);
+  }
+  Node ret = safeConstructNary(kind::MULT, children);
+  ret = Rewriter::rewrite(ret);
+  Trace("nl-ext-mono-factor") << "...return : " << ret << std::endl;
+  return ret;
+}
+
+int NonlinearExtension::flushLemma(Node lem) {
+  Trace("nl-ext-lemma-debug")
+      << "NonlinearExtension::Lemma pre-rewrite : " << lem << std::endl;
+  lem = Rewriter::rewrite(lem);
+  if (Contains(d_lemmas, lem)) {
+    Trace("nl-ext-lemma-debug")
+        << "NonlinearExtension::Lemma duplicate : " << lem << std::endl;
+    // should not generate duplicates
+    // Assert( false );
+    return 0;
+  }
+  d_lemmas.insert(lem);
+  Trace("nl-ext-lemma") << "NonlinearExtension::Lemma : " << lem << std::endl;
+  d_containing.getOutputChannel().lemma(lem);
+  return 1;
+}
+
+int NonlinearExtension::flushLemmas(std::vector<Node>& lemmas) {
+  if (options::nlExtEntailConflicts()) {
+    // check if any are entailed to be false
+    for (unsigned i = 0; i < lemmas.size(); i++) {
+      Node ch_lemma = lemmas[i].negate();
+      ch_lemma = Rewriter::rewrite(ch_lemma);
+      Trace("nl-ext-et-debug")
+          << "Check entailment of " << ch_lemma << "..." << std::endl;
+      std::pair<bool, Node> et = d_containing.getValuation().entailmentCheck(
+          THEORY_OF_TYPE_BASED, ch_lemma);
+      Trace("nl-ext-et-debug") << "entailment test result : " << et.first << " "
+                               << et.second << std::endl;
+      if (et.first) {
+        Trace("nl-ext-et") << "*** Lemma entailed to be in conflict : "
+                           << lemmas[i] << std::endl;
+        // return just this lemma
+        if (flushLemma(lemmas[i])) {
+          lemmas.clear();
+          return 1;
+        }
+      }
+    }
+  }
+
+  int sum = 0;
+  for (unsigned i = 0; i < lemmas.size(); i++) {
+    sum += flushLemma(lemmas[i]);
+  }
+  lemmas.clear();
+  return sum;
+}
+
+std::set<Node> NonlinearExtension::getFalseInModel(
+    const std::vector<Node>& assertions) {
+  std::set<Node> false_asserts;
+  for (size_t i = 0; i < assertions.size(); ++i) {
+    Node lit = assertions[i];
+    Node litv = computeModelValue(lit);
+    Trace("nl-ext-mv") << "M[[ " << lit << " ]] -> " << litv;
+    if (litv != d_true) {
+      Trace("nl-ext-mv") << " [model-false]" << std::endl;
+      Assert(litv == d_false);
+      false_asserts.insert(lit);
+    } else {
+      Trace("nl-ext-mv") << std::endl;
+    }
+  }
+  return false_asserts;
+}
+
+std::vector<Node> NonlinearExtension::splitOnZeros(
+    const std::vector<Node>& ms_vars) {
+  std::vector<Node> lemmas;
+  if (!options::nlExtSplitZero()) {
+    return lemmas;
+  }
+  for (unsigned i = 0; i < ms_vars.size(); i++) {
+    Node v = ms_vars[i];
+    if (d_zero_split.insert(v)) {
+      Node lem = v.eqNode(d_zero);
+      lem = Rewriter::rewrite(lem);
+      d_containing.getValuation().ensureLiteral(lem);
+      d_containing.getOutputChannel().requirePhase(lem, true);
+      lem = NodeManager::currentNM()->mkNode(kind::OR, lem, lem.negate());
+      lemmas.push_back(lem);
+    }
+  }
+  return lemmas;
+}
+
+void NonlinearExtension::checkLastCall(const std::vector<Node>& assertions,
+                                       const std::set<Node>& false_asserts) {
+  // processed monomials
+  std::map<Node, bool> ms_proc;
+
+  // list of monomials
+  std::vector<Node> ms;
+  d_containing.getExtTheory()->getTerms(ms);
+  // list of variables occurring in monomials
+  std::vector<Node> ms_vars;
+
+  // register monomials
+  Trace("nl-ext-mv") << "Monomials : " << std::endl;
+  for (unsigned j = 0; j < ms.size(); j++) {
+    Node a = ms[j];
+    registerMonomial(a);
+    computeModelValue(a, 0);
+    computeModelValue(a, 1);
+    Assert(d_mv[1][a].isConst());
+    Assert(d_mv[0][a].isConst());
+    Trace("nl-ext-mv") << "  " << a << " -> " << d_mv[1][a] << " ["
+                       << d_mv[0][a] << "]" << std::endl;
+
+    std::map<Node, std::vector<Node> >::iterator itvl = d_m_vlist.find(a);
+    Assert(itvl != d_m_vlist.end());
+    for (unsigned k = 0; k < itvl->second.size(); k++) {
+      if (!IsInVector(ms_vars, itvl->second[k])) {
+        ms_vars.push_back(itvl->second[k]);
+      }
+    }
+    /*
+    //mark processed if has a "one" factor (will look at reduced monomial)
+    std::map< Node, std::map< Node, unsigned > >::iterator itme =
+    d_m_exp.find( a ); Assert( itme!=d_m_exp.end() ); for( std::map< Node,
+    unsigned >::iterator itme2 = itme->second.begin(); itme2 !=
+    itme->second.end(); ++itme2 ){ Node v = itme->first; Assert(
+    d_mv[0].find( v )!=d_mv[0].end() ); Node mvv = d_mv[0][ v ]; if(
+    mvv==d_one || mvv==d_neg_one ){ ms_proc[ a ] = true;
+    Trace("nl-ext-mv")
+    << "...mark " << a << " reduced since has 1 factor." << std::endl;
+        break;
+      }
+    }
+    */
+  }
+
+  // register constants
+  registerMonomial(d_one);
+  for (unsigned j = 0; j < d_order_points.size(); j++) {
+    Node c = d_order_points[j];
+    computeModelValue(c, 0);
+    computeModelValue(c, 1);
+  }
+
+  int lemmas_proc;
+  std::vector<Node> lemmas;
+
+  // register variables
+  Trace("nl-ext-mv") << "Variables : " << std::endl;
+  Trace("nl-ext") << "Get zero split lemmas..." << std::endl;
+  for (unsigned i = 0; i < ms_vars.size(); i++) {
+    Node v = ms_vars[i];
+    registerMonomial(v);
+    computeModelValue(v, 0);
+    computeModelValue(v, 1);
+    Trace("nl-ext-mv") << "  " << v << " -> " << d_mv[0][v] << std::endl;
+  }
+
+  // possibly split on zero?
+  lemmas = splitOnZeros(ms_vars);
+  lemmas_proc = flushLemmas(lemmas);
+  if (lemmas_proc > 0) {
+    Trace("nl-ext") << "  ...finished with " << lemmas_proc << " new lemmas."
+                    << std::endl;
+    return;
+  }
+
+  //-----------------------------------lemmas based on sign (comparison to zero)
+  std::map<Node, int> signs;
+  Trace("nl-ext") << "Get sign lemmas..." << std::endl;
+  for (unsigned j = 0; j < ms.size(); j++) {
+    Node a = ms[j];
+    if (ms_proc.find(a) == ms_proc.end()) {
+      std::vector<Node> exp;
+      Trace("nl-ext-debug") << "  process " << a << "..." << std::endl;
+      signs[a] = compareSign(a, a, 0, 1, exp, lemmas);
+      if (signs[a] == 0) {
+        ms_proc[a] = true;
+        Trace("nl-ext-mv") << "...mark " << a
+                           << " reduced since its value is 0." << std::endl;
+      }
+    }
+  }
+  lemmas_proc = flushLemmas(lemmas);
+  if (lemmas_proc > 0) {
+    Trace("nl-ext") << "  ...finished with " << lemmas_proc << " new lemmas."
+                    << std::endl;
+    return;
+  }
+
+  //-----------------------------lemmas based on magnitude of non-zero monomials
+  for (unsigned r = 1; r <= 1; r++) {
+    assignOrderIds(ms_vars, d_order_vars[r], r);
+
+    // sort individual variable lists
+    SortNonlinearExtension smv;
+    smv.d_nla = this;
+    smv.d_order_type = r;
+    smv.d_reverse_order = true;
+    for (unsigned j = 0; j < ms.size(); j++) {
+      std::sort(d_m_vlist[ms[j]].begin(), d_m_vlist[ms[j]].end(), smv);
+    }
+    for (unsigned c = 0; c < 3; c++) {
+      // if (x,y,L) in cmp_infers, then x > y inferred as conclusion of L
+      // in lemmas
+      std::map<int, std::map<Node, std::map<Node, Node> > > cmp_infers;
+      Trace("nl-ext") << "Get comparison lemmas (order=" << r
+                      << ", compare=" << c << ")..." << std::endl;
+      for (unsigned j = 0; j < ms.size(); j++) {
+        Node a = ms[j];
+        if (ms_proc.find(a) == ms_proc.end()) {
+          if (c == 0) {
+            // compare magnitude against 1
+            std::vector<Node> exp;
+            NodeMultiset a_exp_proc;
+            NodeMultiset b_exp_proc;
+            compareMonomial(a, a, a_exp_proc, d_one, d_one, b_exp_proc, exp,
+                            lemmas, cmp_infers);
+          } else {
+            std::map<Node, NodeMultiset>::iterator itmea = d_m_exp.find(a);
+            Assert(itmea != d_m_exp.end());
+            if (c == 1) {
+              // TODO : not just against containing variables?
+              // compare magnitude against variables
+              for (unsigned k = 0; k < ms_vars.size(); k++) {
+                Node v = ms_vars[k];
+                std::vector<Node> exp;
+                NodeMultiset a_exp_proc;
+                NodeMultiset b_exp_proc;
+                if (itmea->second.find(v) != itmea->second.end()) {
+                  a_exp_proc[v] = 1;
+                  b_exp_proc[v] = 1;
+                  setMonomialFactor(a, v, a_exp_proc);
+                  setMonomialFactor(v, a, b_exp_proc);
+                  compareMonomial(a, a, a_exp_proc, v, v, b_exp_proc, exp,
+                                  lemmas, cmp_infers);
+                }
+              }
+            } else {
+              // compare magnitude against other non-linear monomials
+              for (unsigned k = (j + 1); k < ms.size(); k++) {
+                Node b = ms[k];
+                //(signs[a]==signs[b])==(r==0)
+                if (ms_proc.find(b) == ms_proc.end()) {
+                  std::map<Node, NodeMultiset>::iterator itmeb =
+                      d_m_exp.find(b);
+                  Assert(itmeb != d_m_exp.end());
+
+                  std::vector<Node> exp;
+                  // take common factors of monomials, set minimum of
+                  // common exponents as processed
+                  NodeMultiset a_exp_proc;
+                  NodeMultiset b_exp_proc;
+                  for (NodeMultiset::iterator itmea2 = itmea->second.begin();
+                       itmea2 != itmea->second.end(); ++itmea2) {
+                    NodeMultiset::iterator itmeb2 =
+                        itmeb->second.find(itmea2->first);
+                    if (itmeb2 != itmeb->second.end()) {
+                      unsigned min_exp = itmea2->second > itmeb2->second
+                                             ? itmeb2->second
+                                             : itmea2->second;
+                      a_exp_proc[itmea2->first] = min_exp;
+                      b_exp_proc[itmea2->first] = min_exp;
+                      Trace("nl-ext-comp")
+                          << "Common exponent : " << itmea2->first << " : "
+                          << min_exp << std::endl;
+                    }
+                  }
+                  if (!a_exp_proc.empty()) {
+                    setMonomialFactor(a, b, a_exp_proc);
+                    setMonomialFactor(b, a, b_exp_proc);
+                  }
+                  /*
+                  if( !a_exp_proc.empty() ){
+                    //reduction based on common exponents a > 0 => ( a * b
+                  <> a * c <=> b <> c ), a < 0 => ( a * b <> a * c <=> b
+                  !<> c )  ? }else{ compareMonomial( a, a, a_exp_proc, b,
+                  b, b_exp_proc, exp, lemmas );
+                  }
+                  */
+                  compareMonomial(a, a, a_exp_proc, b, b, b_exp_proc, exp,
+                                  lemmas, cmp_infers);
+                }
+              }
+            }
+          }
+        }
+      }
+      // remove redundant lemmas, e.g. if a > b, b > c, a > c were
+      // inferred, discard lemma with conclusion a > c
+      Trace("nl-ext-comp") << "Compute redundancies for " << lemmas.size()
+                           << " lemmas." << std::endl;
+      // naive
+      std::vector<Node> r_lemmas;
+      for (std::map<int, std::map<Node, std::map<Node, Node> > >::iterator itb =
+               cmp_infers.begin();
+           itb != cmp_infers.end(); ++itb) {
+        for (std::map<Node, std::map<Node, Node> >::iterator itc =
+                 itb->second.begin();
+             itc != itb->second.end(); ++itc) {
+          for (std::map<Node, Node>::iterator itc2 = itc->second.begin();
+               itc2 != itc->second.end(); ++itc2) {
+            std::map<Node, bool> visited;
+            for (std::map<Node, Node>::iterator itc3 = itc->second.begin();
+                 itc3 != itc->second.end(); ++itc3) {
+              if (itc3->first != itc2->first) {
+                std::vector<Node> exp;
+                if (cmp_holds(itc3->first, itc2->first, itb->second, exp,
+                              visited)) {
+                  r_lemmas.push_back(itc2->second);
+                  Trace("nl-ext-comp")
+                      << "...inference of " << itc->first << " > "
+                      << itc2->first << " was redundant." << std::endl;
+                  break;
+                }
+              }
+            }
+          }
+        }
+      }
+      std::vector<Node> nr_lemmas;
+      for (unsigned i = 0; i < lemmas.size(); i++) {
+        if (std::find(r_lemmas.begin(), r_lemmas.end(), lemmas[i]) ==
+            r_lemmas.end()) {
+          nr_lemmas.push_back(lemmas[i]);
+        }
+      }
+      // TODO: only take maximal lower/minimial lower bounds?
+
+      Trace("nl-ext-comp") << nr_lemmas.size() << " / " << lemmas.size()
+                           << " were non-redundant." << std::endl;
+      lemmas_proc = flushLemmas(nr_lemmas);
+      if (lemmas_proc > 0) {
+        Trace("nl-ext") << "  ...finished with " << lemmas_proc
+                        << " new lemmas (out of possible " << lemmas.size()
+                        << ")." << std::endl;
+        return;
+      }
+    }
+  }
+
+  // sort monomials by degree
+  SortNonlinearExtension snlad;
+  snlad.d_nla = this;
+  snlad.d_order_type = 4;
+  snlad.d_reverse_order = false;
+  std::sort(ms.begin(), ms.end(), snlad);
+  // all monomials
+  std::vector<Node> terms;
+  terms.insert(terms.end(), ms_vars.begin(), ms_vars.end());
+  terms.insert(terms.end(), ms.begin(), ms.end());
+
+  // term -> coeff -> rhs -> ( status, exp, b ),
+  //   where we have that : exp =>  ( coeff * term <status> rhs )
+  //   b is true if degree( term ) >= degree( rhs )
+  std::map<Node, std::map<Node, std::map<Node, Kind> > > ci;
+  std::map<Node, std::map<Node, std::map<Node, Node> > > ci_exp;
+  std::map<Node, std::map<Node, std::map<Node, bool> > > ci_max;
+
+  // If ( m, p1, true ), then it would help satisfiability if m were ( >
+  // if p1=true, < if p1=false )
+  std::map<Node, std::map<bool, bool> > tplane_refine_dir;
+
+  // register constraints
+  Trace("nl-ext-debug") << "Register bound constraints..." << std::endl;
+  for (context::CDList<Assertion>::const_iterator it =
+           d_containing.facts_begin();
+       it != d_containing.facts_end(); ++it) {
+    Node lit = (*it).assertion;
+    bool polarity = lit.getKind() != kind::NOT;
+    Node atom = lit.getKind() == kind::NOT ? lit[0] : lit;
+    registerConstraint(atom);
+    bool is_false_lit = false_asserts.find(lit) != false_asserts.end();
+    // add information about bounds to variables
+    std::map<Node, std::map<Node, ConstraintInfo> >::iterator itc =
+        d_c_info.find(atom);
+    std::map<Node, std::map<Node, bool> >::iterator itcm =
+        d_c_info_maxm.find(atom);
+    if (itc != d_c_info.end()) {
+      Assert(itcm != d_c_info_maxm.end());
+      for (std::map<Node, ConstraintInfo>::iterator itcc = itc->second.begin();
+           itcc != itc->second.end(); ++itcc) {
+        Node x = itcc->first;
+        Node coeff = itcc->second.d_coeff;
+        Node rhs = itcc->second.d_rhs;
+        Kind type = itcc->second.d_type;
+        Node exp = lit;
+        if (!polarity) {
+          // reverse
+          if (type == kind::EQUAL) {
+            // we will take the strict inequality in the direction of the
+            // model
+            Node lhs = QuantArith::mkCoeffTerm(coeff, x);
+            Node query = NodeManager::currentNM()->mkNode(kind::GT, lhs, rhs);
+            Node query_mv = computeModelValue(query, 1);
+            if (query_mv == d_true) {
+              exp = query;
+              type = kind::GT;
+            } else {
+              Assert(query_mv == d_false);
+              exp = NodeManager::currentNM()->mkNode(kind::LT, lhs, rhs);
+              type = kind::LT;
+            }
+          } else {
+            type = negateKind(type);
+          }
+        }
+        // add to status if maximal degree
+        ci_max[x][coeff][rhs] = itcm->second.find(x) != itcm->second.end();
+        if (Trace.isOn("nl-ext-bound-debug2")) {
+          Node t = QuantArith::mkCoeffTerm(coeff, x);
+          Trace("nl-ext-bound-debug2")
+              << "Add Bound: " << t << " " << type << " " << rhs << " by "
+              << exp << std::endl;
+        }
+        bool updated = true;
+        std::map<Node, Kind>::iterator its = ci[x][coeff].find(rhs);
+        if (its == ci[x][coeff].end()) {
+          ci[x][coeff][rhs] = type;
+          ci_exp[x][coeff][rhs] = exp;
+        } else if (type != its->second) {
+          Trace("nl-ext-bound-debug2")
+              << "Joining kinds : " << type << " " << its->second << std::endl;
+          Kind jk = joinKinds(type, its->second);
+          if (jk == kind::UNDEFINED_KIND) {
+            updated = false;
+          } else if (jk != its->second) {
+            if (jk == type) {
+              ci[x][coeff][rhs] = type;
+              ci_exp[x][coeff][rhs] = exp;
+            } else {
+              ci[x][coeff][rhs] = jk;
+              ci_exp[x][coeff][rhs] = NodeManager::currentNM()->mkNode(
+                  kind::AND, ci_exp[x][coeff][rhs], exp);
+            }
+          } else {
+            updated = false;
+          }
+        }
+        if (Trace.isOn("nl-ext-bound")) {
+          if (updated) {
+            Trace("nl-ext-bound") << "Bound: ";
+            debugPrintBound("nl-ext-bound", coeff, x, ci[x][coeff][rhs], rhs);
+            Trace("nl-ext-bound") << " by " << ci_exp[x][coeff][rhs];
+            if (ci_max[x][coeff][rhs]) {
+              Trace("nl-ext-bound") << ", is max degree";
+            }
+            Trace("nl-ext-bound") << std::endl;
+          }
+        }
+        // compute if bound is not satisfied, and store what is required
+        // for a possible refinement
+        if (options::nlExtTangentPlanes()) {
+          if (is_false_lit) {
+            Node rhs_v = computeModelValue(rhs, 0);
+            Node x_v = computeModelValue(x, 0);
+            bool needsRefine = false;
+            bool refineDir;
+            if (rhs_v == x_v) {
+              if (type == kind::GT) {
+                needsRefine = true;
+                refineDir = true;
+              } else if (type == kind::LT) {
+                needsRefine = true;
+                refineDir = false;
+              }
+            } else if (x_v.getConst<Rational>() > rhs_v.getConst<Rational>()) {
+              if (type != kind::GT && type != kind::GEQ) {
+                needsRefine = true;
+                refineDir = false;
+              }
+            } else {
+              if (type != kind::LT && type != kind::LEQ) {
+                needsRefine = true;
+                refineDir = true;
+              }
+            }
+            Trace("nl-ext-tplanes-cons-debug")
+                << "...compute if bound corresponds to a required "
+                   "refinement"
+                << std::endl;
+            Trace("nl-ext-tplanes-cons-debug")
+                << "...M[" << x << "] = " << x_v << ", M[" << rhs
+                << "] = " << rhs_v << std::endl;
+            Trace("nl-ext-tplanes-cons-debug") << "...refine = " << needsRefine
+                                               << "/" << refineDir << std::endl;
+            if (needsRefine) {
+              Trace("nl-ext-tplanes-cons")
+                  << "---> By " << lit << " and since M[" << x << "] = " << x_v
+                  << ", M[" << rhs << "] = " << rhs_v << ", ";
+              Trace("nl-ext-tplanes-cons")
+                  << "monomial " << x << " should be "
+                  << (refineDir ? "larger" : "smaller") << std::endl;
+              tplane_refine_dir[x][refineDir] = true;
+            }
+          }
+        }
+      }
+    }
+  }
+  // reflexive constraints
+  Node null_coeff;
+  for (unsigned j = 0; j < terms.size(); j++) {
+    Node n = terms[j];
+    ci[n][null_coeff][n] = kind::EQUAL;
+    ci_exp[n][null_coeff][n] = d_true;
+    ci_max[n][null_coeff][n] = false;
+  }
+
+  //-----------------------------------------------------------------------------------------inferred
+  // bounds lemmas, e.g. x >= t => y*x >= y*t
+  Trace("nl-ext") << "Get inferred bound lemmas..." << std::endl;
+
+  std::vector<Node> nt_lemmas;
+  for (unsigned k = 0; k < terms.size(); k++) {
+    Node x = terms[k];
+    Trace("nl-ext-bound-debug")
+        << "Process bounds for " << x << " : " << std::endl;
+    std::map<Node, std::vector<Node> >::iterator itm =
+        d_m_contain_parent.find(x);
+    if (itm != d_m_contain_parent.end()) {
+      Trace("nl-ext-bound-debug") << "...has " << itm->second.size()
+                                  << " parent monomials." << std::endl;
+      // check derived bounds
+      std::map<Node, std::map<Node, std::map<Node, Kind> > >::iterator itc =
+          ci.find(x);
+      if (itc != ci.end()) {
+        for (std::map<Node, std::map<Node, Kind> >::iterator itcc =
+                 itc->second.begin();
+             itcc != itc->second.end(); ++itcc) {
+          Node coeff = itcc->first;
+          Node t = QuantArith::mkCoeffTerm(coeff, x);
+          for (std::map<Node, Kind>::iterator itcr = itcc->second.begin();
+               itcr != itcc->second.end(); ++itcr) {
+            Node rhs = itcr->first;
+            // only consider this bound if maximal degree
+            if (ci_max[x][coeff][rhs]) {
+              Kind type = itcr->second;
+              for (unsigned j = 0; j < itm->second.size(); j++) {
+                Node y = itm->second[j];
+                Assert(d_m_contain_mult[x].find(y) !=
+                       d_m_contain_mult[x].end());
+                Node mult = d_m_contain_mult[x][y];
+                // x <k> t => m*x <k'> t  where y = m*x
+                // get the sign of mult
+                Node mmv = computeModelValue(mult);
+                Trace("nl-ext-bound-debug2")
+                    << "Model value of " << mult << " is " << mmv << std::endl;
+                Assert(mmv.isConst());
+                int mmv_sign = mmv.getConst<Rational>().sgn();
+                Trace("nl-ext-bound-debug2")
+                    << "  sign of " << mmv << " is " << mmv_sign << std::endl;
+                if (mmv_sign != 0) {
+                  Trace("nl-ext-bound-debug")
+                      << "  from " << x << " * " << mult << " = " << y
+                      << " and " << t << " " << type << " " << rhs
+                      << ", infer : " << std::endl;
+                  Kind infer_type =
+                      mmv_sign == -1 ? reverseRelationKind(type) : type;
+                  Node infer_lhs =
+                      NodeManager::currentNM()->mkNode(kind::MULT, mult, t);
+                  Node infer_rhs =
+                      NodeManager::currentNM()->mkNode(kind::MULT, mult, rhs);
+                  Node infer = NodeManager::currentNM()->mkNode(
+                      infer_type, infer_lhs, infer_rhs);
+                  Trace("nl-ext-bound-debug") << "     " << infer << std::endl;
+                  infer = Rewriter::rewrite(infer);
+                  Trace("nl-ext-bound-debug2")
+                      << "     ...rewritten : " << infer << std::endl;
+                  // check whether it is false in model for abstraction
+                  Node infer_mv = computeModelValue(infer, 1);
+                  Trace("nl-ext-bound-debug")
+                      << "       ...infer model value is " << infer_mv
+                      << std::endl;
+                  if (infer_mv == d_false) {
+                    Node exp = NodeManager::currentNM()->mkNode(
+                        kind::AND,
+                        NodeManager::currentNM()->mkNode(
+                            mmv_sign == 1 ? kind::GT : kind::LT, mult, d_zero),
+                        ci_exp[x][coeff][rhs]);
+                    Node iblem = NodeManager::currentNM()->mkNode(kind::IMPLIES,
+                                                                  exp, infer);
+                    Node pr_iblem = iblem;
+                    iblem = Rewriter::rewrite(iblem);
+                    bool introNewTerms = hasNewMonomials(iblem, ms);
+                    Trace("nl-ext-bound-lemma")
+                        << "*** Bound inference lemma : " << iblem
+                        << " (pre-rewrite : " << pr_iblem << ")" << std::endl;
+                    // Trace("nl-ext-bound-lemma") << "       intro new
+                    // monomials = " << introNewTerms << std::endl;
+                    if (!introNewTerms) {
+                      lemmas.push_back(iblem);
+                    } else {
+                      nt_lemmas.push_back(iblem);
+                    }
+                  }
+                } else {
+                  Trace("nl-ext-bound-debug") << "     ...coefficient " << mult
+                                              << " is zero." << std::endl;
+                }
+              }
+            }
+          }
+        }
+      }
+    } else {
+      Trace("nl-ext-bound-debug") << "...has no parent monomials." << std::endl;
+    }
+  }
+  // Trace("nl-ext") << "Bound lemmas : " << lemmas.size() << ", " <<
+  // nt_lemmas.size() << std::endl;  prioritize lemmas that do not
+  // introduce new monomials
+  lemmas_proc = flushLemmas(lemmas);
+  if (lemmas_proc > 0) {
+    Trace("nl-ext") << "  ...finished with " << lemmas_proc << " new lemmas."
+                    << std::endl;
+    return;
+  }
+
+  //------------------------------------resolution bound inferences, e.g.
+  //(
+  // y>=0 ^ s <= x*z ^ x*y <= t ) => y*s <= z*t
+  if (options::nlExtResBound()) {
+    Trace("nl-ext") << "Get resolution inferred bound lemmas..." << std::endl;
+    for (unsigned j = 0; j < terms.size(); j++) {
+      Node a = terms[j];
+      std::map<Node, std::map<Node, std::map<Node, Kind> > >::iterator itca =
+          ci.find(a);
+      if (itca != ci.end()) {
+        for (unsigned k = (j + 1); k < terms.size(); k++) {
+          Node b = terms[k];
+          std::map<Node, std::map<Node, std::map<Node, Kind> > >::iterator
+              itcb = ci.find(b);
+          if (itcb != ci.end()) {
+            Trace("nl-ext-rbound-debug") << "resolution inferences : compare "
+                                         << a << " and " << b << std::endl;
+            // if they have common factors
+            std::map<Node, Node>::iterator ita = d_mono_diff[a].find(b);
+            if (ita != d_mono_diff[a].end()) {
+              std::map<Node, Node>::iterator itb = d_mono_diff[b].find(a);
+              Assert(itb != d_mono_diff[b].end());
+              Node mv_a = computeModelValue(ita->second, 1);
+              Assert(mv_a.isConst());
+              int mv_a_sgn = mv_a.getConst<Rational>().sgn();
+              Assert(mv_a_sgn != 0);
+              Node mv_b = computeModelValue(itb->second, 1);
+              Assert(mv_b.isConst());
+              int mv_b_sgn = mv_b.getConst<Rational>().sgn();
+              Assert(mv_b_sgn != 0);
+              Trace("nl-ext-rbound") << "Get resolution inferences for [a] "
+                                     << a << " vs [b] " << b << std::endl;
+              Trace("nl-ext-rbound")
+                  << "  [a] factor is " << ita->second
+                  << ", sign in model = " << mv_a_sgn << std::endl;
+              Trace("nl-ext-rbound")
+                  << "  [b] factor is " << itb->second
+                  << ", sign in model = " << mv_b_sgn << std::endl;
+
+              std::vector<Node> exp;
+              // bounds of a
+              for (std::map<Node, std::map<Node, Kind> >::iterator itcac =
+                       itca->second.begin();
+                   itcac != itca->second.end(); ++itcac) {
+                Node coeff_a = itcac->first;
+                for (std::map<Node, Kind>::iterator itcar =
+                         itcac->second.begin();
+                     itcar != itcac->second.end(); ++itcar) {
+                  Node rhs_a = itcar->first;
+                  Node rhs_a_res_base = NodeManager::currentNM()->mkNode(
+                      kind::MULT, itb->second, rhs_a);
+                  rhs_a_res_base = Rewriter::rewrite(rhs_a_res_base);
+                  if (!hasNewMonomials(rhs_a_res_base, ms)) {
+                    Kind type_a = itcar->second;
+                    exp.push_back(ci_exp[a][coeff_a][rhs_a]);
+
+                    // bounds of b
+                    for (std::map<Node, std::map<Node, Kind> >::iterator itcbc =
+                             itcb->second.begin();
+                         itcbc != itcb->second.end(); ++itcbc) {
+                      Node coeff_b = itcbc->first;
+                      Node rhs_a_res =
+                          QuantArith::mkCoeffTerm(coeff_b, rhs_a_res_base);
+                      for (std::map<Node, Kind>::iterator itcbr =
+                               itcbc->second.begin();
+                           itcbr != itcbc->second.end(); ++itcbr) {
+                        Node rhs_b = itcbr->first;
+                        Node rhs_b_res = NodeManager::currentNM()->mkNode(
+                            kind::MULT, ita->second, rhs_b);
+                        rhs_b_res = QuantArith::mkCoeffTerm(coeff_a, rhs_b_res);
+                        rhs_b_res = Rewriter::rewrite(rhs_b_res);
+                        if (!hasNewMonomials(rhs_b_res, ms)) {
+                          Kind type_b = itcbr->second;
+                          exp.push_back(ci_exp[b][coeff_b][rhs_b]);
+                          if (Trace.isOn("nl-ext-rbound")) {
+                            Trace("nl-ext-rbound") << "* try bounds : ";
+                            debugPrintBound("nl-ext-rbound", coeff_a, a, type_a,
+                                            rhs_a);
+                            Trace("nl-ext-rbound") << std::endl;
+                            Trace("nl-ext-rbound") << "               ";
+                            debugPrintBound("nl-ext-rbound", coeff_b, b, type_b,
+                                            rhs_b);
+                            Trace("nl-ext-rbound") << std::endl;
+                          }
+                          Kind types[2];
+                          for (unsigned r = 0; r < 2; r++) {
+                            Node pivot_factor =
+                                r == 0 ? itb->second : ita->second;
+                            int pivot_factor_sign =
+                                r == 0 ? mv_b_sgn : mv_a_sgn;
+                            types[r] = r == 0 ? type_a : type_b;
+                            if (pivot_factor_sign == (r == 0 ? 1 : -1)) {
+                              types[r] = reverseRelationKind(types[r]);
+                            }
+                            if (pivot_factor_sign == 1) {
+                              exp.push_back(NodeManager::currentNM()->mkNode(
+                                  kind::GT, pivot_factor, d_zero));
+                            } else {
+                              exp.push_back(NodeManager::currentNM()->mkNode(
+                                  kind::LT, pivot_factor, d_zero));
+                            }
+                          }
+                          Kind jk = transKinds(types[0], types[1]);
+                          Trace("nl-ext-rbound-debug")
+                              << "trans kind : " << types[0] << " + "
+                              << types[1] << " = " << jk << std::endl;
+                          if (jk != kind::UNDEFINED_KIND) {
+                            Node conc = NodeManager::currentNM()->mkNode(
+                                jk, rhs_a_res, rhs_b_res);
+                            Node conc_mv = computeModelValue(conc, 1);
+                            if (conc_mv == d_false) {
+                              Node rblem = NodeManager::currentNM()->mkNode(
+                                  kind::IMPLIES,
+                                  NodeManager::currentNM()->mkNode(kind::AND,
+                                                                   exp),
+                                  conc);
+                              Trace("nl-ext-rbound-lemma-debug")
+                                  << "Resolution bound lemma "
+                                     "(pre-rewrite) "
+                                     ": "
+                                  << rblem << std::endl;
+                              rblem = Rewriter::rewrite(rblem);
+                              Trace("nl-ext-rbound-lemma")
+                                  << "Resolution bound lemma : " << rblem
+                                  << std::endl;
+                              lemmas.push_back(rblem);
+                            }
+                          }
+                          exp.pop_back();
+                          exp.pop_back();
+                          exp.pop_back();
+                        }
+                      }
+                    }
+                    exp.pop_back();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+    lemmas_proc = flushLemmas(lemmas);
+    if (lemmas_proc > 0) {
+      Trace("nl-ext") << "  ...finished with " << lemmas_proc << " new lemmas."
+                      << std::endl;
+      return;
+    }
+  }
+
+  // from inferred bound inferences
+  lemmas_proc = flushLemmas(nt_lemmas);
+  if (lemmas_proc > 0) {
+    Trace("nl-ext") << "  ...finished with " << lemmas_proc
+                    << " new (monomial-introducing) lemmas." << std::endl;
+    return;
+  }
+
+  if (options::nlExtTangentPlanes()) {
+    Trace("nl-ext") << "Get tangent plane lemmas..." << std::endl;
+    unsigned kstart = ms_vars.size();
+    for (unsigned k = kstart; k < terms.size(); k++) {
+      Node t = terms[k];
+      // if this term requires a refinement
+      if (tplane_refine_dir.find(t) != tplane_refine_dir.end()) {
+        Trace("nl-ext-tplanes")
+            << "Look at monomial requiring refinement : " << t << std::endl;
+        // get a decomposition
+        std::map<Node, std::vector<Node> >::iterator it =
+            d_m_contain_children.find(t);
+        if (it != d_m_contain_children.end()) {
+          std::map<Node, std::map<Node, bool> > dproc;
+          for (unsigned j = 0; j < it->second.size(); j++) {
+            Node tc = it->second[j];
+            if (tc != d_one) {
+              Node tc_diff = d_m_contain_umult[tc][t];
+              Assert(!tc_diff.isNull());
+              Node a = tc < tc_diff ? tc : tc_diff;
+              Node b = tc < tc_diff ? tc_diff : tc;
+              if (dproc[a].find(b) == dproc[a].end()) {
+                dproc[a][b] = true;
+                Trace("nl-ext-tplanes")
+                    << "  decomposable into : " << a << " * " << b << std::endl;
+                Node a_v = computeModelValue(a, 1);
+                Node b_v = computeModelValue(b, 1);
+                // tangent plane
+                Node tplane = NodeManager::currentNM()->mkNode(
+                    kind::MINUS,
+                    NodeManager::currentNM()->mkNode(
+                        kind::PLUS,
+                        NodeManager::currentNM()->mkNode(kind::MULT, b_v, a),
+                        NodeManager::currentNM()->mkNode(kind::MULT, a_v, b)),
+                    NodeManager::currentNM()->mkNode(kind::MULT, a_v, b_v));
+                for (unsigned d = 0; d < 4; d++) {
+                  Node aa = NodeManager::currentNM()->mkNode(
+                      d == 0 || d == 3 ? kind::GEQ : kind::LEQ, a, a_v);
+                  Node ab = NodeManager::currentNM()->mkNode(
+                      d == 1 || d == 3 ? kind::GEQ : kind::LEQ, b, b_v);
+                  Node conc = NodeManager::currentNM()->mkNode(
+                      d <= 1 ? kind::LEQ : kind::GEQ, t, tplane);
+                  Node tlem = NodeManager::currentNM()->mkNode(
+                      kind::OR, aa.negate(), ab.negate(), conc);
+                  Trace("nl-ext-tplanes")
+                      << "Tangent plane lemma : " << tlem << std::endl;
+                  lemmas.push_back(tlem);
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+    Trace("nl-ext") << "...trying " << lemmas.size()
+                    << " tangent plane lemmas..." << std::endl;
+    lemmas_proc = flushLemmas(lemmas);
+    if (lemmas_proc > 0) {
+      Trace("nl-ext") << "  ...finished with " << lemmas_proc << " new lemmas."
+                      << std::endl;
+      return;
+    }
+  }
+
+  Trace("nl-ext") << "...set incomplete" << std::endl;
+  d_containing.getOutputChannel().setIncomplete();
+}
+
+void NonlinearExtension::check(Theory::Effort e) {
+  Trace("nl-ext") << std::endl;
+  Trace("nl-ext") << "NonlinearExtension::check, effort = " << e << std::endl;
+  if (e == Theory::EFFORT_FULL) {
+    d_containing.getExtTheory()->clearCache();
+    d_needsLastCall = true;
+    if (options::nlExtRewrites()) {
+      std::vector<Node> nred;
+      if (!d_containing.getExtTheory()->doInferences(0, nred)) {
+        Trace("nl-ext") << "...sent no lemmas, # extf to reduce = "
+                        << nred.size() << std::endl;
+        if (nred.empty()) {
+          d_needsLastCall = false;
+        }
+      } else {
+        Trace("nl-ext") << "...sent lemmas." << std::endl;
+      }
+    }
+  } else {
+    Assert(e == Theory::EFFORT_LAST_CALL);
+    Trace("nl-ext-mv") << "Getting model values... check for [model-false]"
+                       << std::endl;
+    d_mv[0].clear();
+    d_mv[1].clear();
+    std::vector<Node> assertions;
+    for (Theory::assertions_iterator it = d_containing.facts_begin();
+         it != d_containing.facts_end(); ++it) {
+      const Assertion& assertion = *it;
+      assertions.push_back(assertion.assertion);
+    }
+    
+    const std::set<Node> false_asserts = getFalseInModel(assertions);
+    if (!false_asserts.empty()) {
+      checkLastCall(assertions, false_asserts);
+    }else{
+      //must ensure that shared terms are equal to their concrete value
+      std::vector< Node > lemmas;
+      for (context::CDList<TNode>::const_iterator its = d_containing.shared_terms_begin();
+           its != d_containing.shared_terms_end(); ++its) {
+        TNode shared_term = *its;
+        Node stv0 = computeModelValue( shared_term, 0 );
+        Node stv1 = computeModelValue( shared_term, 1 );
+        
+        if( stv0!=stv1 ){
+          Trace("nl-ext-mv") << "Bad shared term value : " << shared_term << " : " << stv1 << ", actual is " << stv0 << std::endl;
+          //split on the value, FIXME : this is non-terminating in general, improve this
+          Node lem = shared_term.eqNode(stv0);
+          lem = Rewriter::rewrite(lem);
+          d_containing.getValuation().ensureLiteral(lem);
+          d_containing.getOutputChannel().requirePhase(lem, true);
+          lem = NodeManager::currentNM()->mkNode(kind::OR, lem, lem.negate());
+          lemmas.push_back(lem);
+        }
+      }
+      if( !lemmas.empty() ){
+        int lemmas_proc = flushLemmas(lemmas);
+        Trace("nl-ext-mv") << "...added " << lemmas_proc << " shared term split lemmas." << std::endl;
+        Assert( lemmas_proc>0 );
+      }
+    }
+  }
+}
+
+void NonlinearExtension::assignOrderIds(std::vector<Node>& vars,
+                                        NodeMultiset& order,
+                                        unsigned orderType) {
+  SortNonlinearExtension smv;
+  smv.d_nla = this;
+  smv.d_order_type = orderType;
+  smv.d_reverse_order = false;
+  std::sort(vars.begin(), vars.end(), smv);
+
+  order.clear();
+  // assign ordering id's
+  unsigned counter = 0;
+  unsigned order_index = (orderType == 0 || orderType == 2) ? 0 : 1;
+  Node prev;
+  for (unsigned j = 0; j < vars.size(); j++) {
+    Node x = vars[j];
+    Node v = get_compare_value(x, orderType);
+    Trace("nl-ext-mvo") << "  order " << x << " : " << v << std::endl;
+    if (v != prev) {
+      // builtin points
+      bool success;
+      do {
+        success = false;
+        if (order_index < d_order_points.size()) {
+          Node vv = get_compare_value(d_order_points[order_index], orderType);
+          if (compare_value(v, vv, orderType) <= 0) {
+            counter++;
+            Trace("nl-ext-mvo")
+                << "O_" << orderType << "[" << d_order_points[order_index]
+                << "] = " << counter << std::endl;
+            order[d_order_points[order_index]] = counter;
+            prev = vv;
+            order_index++;
+            success = true;
+          }
+        }
+      } while (success);
+    }
+    if (prev.isNull() || compare_value(v, prev, orderType) != 0) {
+      counter++;
+    }
+    Trace("nl-ext-mvo") << "O_" << orderType << "[" << x << "] = " << counter
+                        << std::endl;
+    order[x] = counter;
+    prev = v;
+  }
+  while (order_index < d_order_points.size()) {
+    counter++;
+    Trace("nl-ext-mvo") << "O_" << orderType << "["
+                        << d_order_points[order_index] << "] = " << counter
+                        << std::endl;
+    order[d_order_points[order_index]] = counter;
+    order_index++;
+  }
+}
+
+int NonlinearExtension::compare(Node i, Node j, unsigned orderType) const {
+  Assert(orderType >= 0);
+  if (orderType <= 3) {
+    return compare_value(get_compare_value(i, orderType),
+                         get_compare_value(j, orderType), orderType);
+    // minimal degree
+  } else if (orderType == 4) {
+    unsigned i_count = getCount(d_m_degree, i);
+    unsigned j_count = getCount(d_m_degree, j);
+    return i_count == j_count ? 0 : (i_count < j_count ? 1 : -1);
+  } else {
+    return 0;
+  }
+}
+
+int NonlinearExtension::compare_value(Node i, Node j,
+                                      unsigned orderType) const {
+  Assert(orderType >= 0 && orderType <= 3);
+  Trace("nl-ext-debug") << "compare_value " << i << " " << j
+                        << ", o = " << orderType << std::endl;
+  int ret;
+  if (i == j) {
+    ret = 0;
+  } else if (orderType == 0 || orderType == 2) {
+    ret = i.getConst<Rational>() < j.getConst<Rational>() ? 1 : -1;
+  } else {
+    Trace("nl-ext-debug") << "vals : " << i.getConst<Rational>() << " "
+                          << j.getConst<Rational>() << std::endl;
+    Trace("nl-ext-debug") << i.getConst<Rational>().abs() << " "
+                          << j.getConst<Rational>().abs() << std::endl;
+    ret = (i.getConst<Rational>().abs() == j.getConst<Rational>().abs()
+               ? 0
+               : (i.getConst<Rational>().abs() < j.getConst<Rational>().abs()
+                      ? 1
+                      : -1));
+  }
+  Trace("nl-ext-debug") << "...return " << ret << std::endl;
+  return ret;
+}
+
+Node NonlinearExtension::get_compare_value(Node i, unsigned orderType) const {
+  Trace("nl-ext-debug") << "Compare variable " << i << " " << orderType
+                        << std::endl;
+  Assert(orderType >= 0 && orderType <= 3);
+  unsigned mindex = orderType <= 1 ? 0 : 1;
+  std::map<Node, Node>::const_iterator iti = d_mv[mindex].find(i);
+  Assert(iti != d_mv[mindex].end());
+  return iti->second;
+}
+
+// trying to show a <> 0 by inequalities between variables in monomial a w.r.t
+// 0
+int NonlinearExtension::compareSign(Node oa, Node a, unsigned a_index,
+                                    int status, std::vector<Node>& exp,
+                                    std::vector<Node>& lem) {
+  Trace("nl-ext-debug") << "Process " << a << " at index " << a_index
+                        << ", status is " << status << std::endl;
+  Assert(d_mv[1].find(oa) != d_mv[1].end());
+  if (a_index == d_m_vlist[a].size()) {
+    if (d_mv[1][oa].getConst<Rational>().sgn() != status) {
+      Node lemma = safeConstructNary(kind::AND, exp)
+                       .impNode(mkLit(oa, d_zero, status * 2));
+      lem.push_back(lemma);
+    }
+    return status;
+  } else {
+    Assert(a_index < d_m_vlist[a].size());
+    Node av = d_m_vlist[a][a_index];
+    unsigned aexp = d_m_exp[a][av];
+    // take current sign in model
+    Assert(d_mv[0].find(av) != d_mv[0].end());
+    int sgn = d_mv[0][av].getConst<Rational>().sgn();
+    Trace("nl-ext-debug") << "Process var " << av << "^" << aexp
+                          << ", model sign = " << sgn << std::endl;
+    if (sgn == 0) {
+      if (d_mv[1][oa].getConst<Rational>().sgn() != 0) {
+        Node lemma = av.eqNode(d_zero).impNode(oa.eqNode(d_zero));
+        lem.push_back(lemma);
+      }
+      return 0;
+    } else {
+      if (aexp % 2 == 0) {
+        exp.push_back(av.eqNode(d_zero).negate());
+        return compareSign(oa, a, a_index + 1, status, exp, lem);
+      } else {
+        exp.push_back(NodeManager::currentNM()->mkNode(
+            sgn == 1 ? kind::GT : kind::LT, av, d_zero));
+        return compareSign(oa, a, a_index + 1, status * sgn, exp, lem);
+      }
+    }
+  }
+}
+
+bool NonlinearExtension::compareMonomial(
+    Node oa, Node a, NodeMultiset& a_exp_proc, Node ob, Node b,
+    NodeMultiset& b_exp_proc, std::vector<Node>& exp, std::vector<Node>& lem,
+    std::map<int, std::map<Node, std::map<Node, Node> > >& cmp_infers) {
+  Trace("nl-ext-comp-debug")
+      << "Check |" << a << "| >= |" << b << "|" << std::endl;
+  unsigned pexp_size = exp.size();
+  if (compareMonomial(oa, a, 0, a_exp_proc, ob, b, 0, b_exp_proc, 0, exp, lem,
+                      cmp_infers)) {
+    return true;
+  } else {
+    exp.resize(pexp_size);
+    Trace("nl-ext-comp-debug")
+        << "Check |" << b << "| >= |" << a << "|" << std::endl;
+    if (compareMonomial(ob, b, 0, b_exp_proc, oa, a, 0, a_exp_proc, 0, exp, lem,
+                        cmp_infers)) {
+      return true;
+    } else {
+      return false;
+    }
+  }
+}
+
+bool NonlinearExtension::cmp_holds(
+    Node x, Node y, std::map<Node, std::map<Node, Node> >& cmp_infers,
+    std::vector<Node>& exp, std::map<Node, bool>& visited) {
+  if (x == y) {
+    return true;
+  } else if (visited.find(x) == visited.end()) {
+    visited[x] = true;
+    std::map<Node, std::map<Node, Node> >::iterator it = cmp_infers.find(x);
+    if (it != cmp_infers.end()) {
+      for (std::map<Node, Node>::iterator itc = it->second.begin();
+           itc != it->second.end(); ++itc) {
+        exp.push_back(itc->second);
+        if (cmp_holds(itc->first, y, cmp_infers, exp, visited)) {
+          return true;
+        }
+        exp.pop_back();
+      }
+    }
+  }
+  return false;
+}
+
+// trying to show a ( >, = ) b   by inequalities between variables in
+// monomials a,b
+bool NonlinearExtension::compareMonomial(
+    Node oa, Node a, unsigned a_index, NodeMultiset& a_exp_proc, Node ob,
+    Node b, unsigned b_index, NodeMultiset& b_exp_proc, int status,
+    std::vector<Node>& exp, std::vector<Node>& lem,
+    std::map<int, std::map<Node, std::map<Node, Node> > >& cmp_infers) {
+  Trace("nl-ext-comp-debug")
+      << "compareMonomial " << oa << " and " << ob << ", indices = " << a_index
+      << " " << b_index << std::endl;
+  Assert(status == 0 || status == 2);
+  if (a_index == d_m_vlist[a].size() && b_index == d_m_vlist[b].size()) {
+    // finished, compare abstract values
+    int modelStatus = compare(oa, ob, 3) * -2;
+    Trace("nl-ext-comp") << "...finished comparison with " << oa << " <"
+                         << status << "> " << ob
+                         << ", model status = " << modelStatus << std::endl;
+    if (status != modelStatus) {
+      Trace("nl-ext-comp-infer")
+          << "infer : " << oa << " <" << status << "> " << ob << std::endl;
+      if (status == 2) {
+        // must state that all variables are non-zero
+        for (unsigned j = 0; j < d_m_vlist[a].size(); j++) {
+          exp.push_back(d_m_vlist[a][j].eqNode(d_zero).negate());
+        }
+      }
+      Node clem = NodeManager::currentNM()->mkNode(
+          kind::IMPLIES, safeConstructNary(kind::AND, exp),
+          mkLit(oa, ob, status, 1));
+      Trace("nl-ext-comp-lemma") << "comparison lemma : " << clem << std::endl;
+      lem.push_back(clem);
+      cmp_infers[status][oa][ob] = clem;
+    }
+    return true;
+  } else {
+    // get a/b variable information
+    Node av;
+    unsigned aexp = 0;
+    unsigned avo = 0;
+    if (a_index < d_m_vlist[a].size()) {
+      av = d_m_vlist[a][a_index];
+      Assert(a_exp_proc[av] <= d_m_exp[a][av]);
+      aexp = d_m_exp[a][av] - a_exp_proc[av];
+      if (aexp == 0) {
+        return compareMonomial(oa, a, a_index + 1, a_exp_proc, ob, b, b_index,
+                               b_exp_proc, status, exp, lem, cmp_infers);
+      }
+      Assert(d_order_vars[1].find(av) != d_order_vars[1].end());
+      avo = d_order_vars[1][av];
+    }
+    Node bv;
+    unsigned bexp = 0;
+    unsigned bvo = 0;
+    if (b_index < d_m_vlist[b].size()) {
+      bv = d_m_vlist[b][b_index];
+      Assert(b_exp_proc[bv] <= d_m_exp[b][bv]);
+      bexp = d_m_exp[b][bv] - b_exp_proc[bv];
+      if (bexp == 0) {
+        return compareMonomial(oa, a, a_index, a_exp_proc, ob, b, b_index + 1,
+                               b_exp_proc, status, exp, lem, cmp_infers);
+      }
+      Assert(d_order_vars[1].find(bv) != d_order_vars[1].end());
+      bvo = d_order_vars[1][bv];
+    }
+    // get "one" information
+    Assert(d_order_vars[1].find(d_one) != d_order_vars[1].end());
+    unsigned ovo = d_order_vars[1][d_one];
+    Trace("nl-ext-comp-debug") << "....vars : " << av << "^" << aexp << " "
+                               << bv << "^" << bexp << std::endl;
+
+    //--- cases
+    if (av.isNull()) {
+      if (bvo <= ovo) {
+        Trace("nl-ext-comp-debug") << "...take leading " << bv << std::endl;
+        // can multiply b by <=1
+        exp.push_back(mkLit(d_one, bv, bvo == ovo ? 0 : 2, 1));
+        return compareMonomial(oa, a, a_index, a_exp_proc, ob, b, b_index + 1,
+                               b_exp_proc, bvo == ovo ? status : 2, exp, lem,
+                               cmp_infers);
+      } else {
+        Trace("nl-ext-comp-debug")
+            << "...failure, unmatched |b|>1 component." << std::endl;
+        return false;
+      }
+    } else if (bv.isNull()) {
+      if (avo >= ovo) {
+        Trace("nl-ext-comp-debug") << "...take leading " << av << std::endl;
+        // can multiply a by >=1
+        exp.push_back(mkLit(av, d_one, avo == ovo ? 0 : 2, 1));
+        return compareMonomial(oa, a, a_index + 1, a_exp_proc, ob, b, b_index,
+                               b_exp_proc, avo == ovo ? status : 2, exp, lem,
+                               cmp_infers);
+      } else {
+        Trace("nl-ext-comp-debug")
+            << "...failure, unmatched |a|<1 component." << std::endl;
+        return false;
+      }
+    } else {
+      Assert(!av.isNull() && !bv.isNull());
+      if (avo >= bvo) {
+        if (bvo < ovo && avo >= ovo) {
+          Trace("nl-ext-comp-debug") << "...take leading " << av << std::endl;
+          // do avo>=1 instead
+          exp.push_back(mkLit(av, d_one, avo == ovo ? 0 : 2, 1));
+          return compareMonomial(oa, a, a_index + 1, a_exp_proc, ob, b, b_index,
+                                 b_exp_proc, avo == ovo ? status : 2, exp, lem,
+                                 cmp_infers);
+        } else {
+          unsigned min_exp = aexp > bexp ? bexp : aexp;
+          a_exp_proc[av] += min_exp;
+          b_exp_proc[bv] += min_exp;
+          Trace("nl-ext-comp-debug")
+              << "...take leading " << min_exp << " from " << av << " and "
+              << bv << std::endl;
+          exp.push_back(mkLit(av, bv, avo == bvo ? 0 : 2, 1));
+          bool ret = compareMonomial(oa, a, a_index, a_exp_proc, ob, b, b_index,
+                                     b_exp_proc, avo == bvo ? status : 2, exp,
+                                     lem, cmp_infers);
+          a_exp_proc[av] -= min_exp;
+          b_exp_proc[bv] -= min_exp;
+          return ret;
+        }
+      } else {
+        if (bvo <= ovo) {
+          Trace("nl-ext-comp-debug") << "...take leading " << bv << std::endl;
+          // try multiply b <= 1
+          exp.push_back(mkLit(d_one, bv, bvo == ovo ? 0 : 2, 1));
+          return compareMonomial(oa, a, a_index, a_exp_proc, ob, b, b_index + 1,
+                                 b_exp_proc, bvo == ovo ? status : 2, exp, lem,
+                                 cmp_infers);
+        } else {
+          Trace("nl-ext-comp-debug")
+              << "...failure, leading |b|>|a|>1 component." << std::endl;
+          return false;
+        }
+      }
+    }
+  }
+}
+
+// status 0 : n equal, -1 : n superset, 1 : n subset
+void NonlinearExtension::MonomialIndex::addTerm(Node n,
+                                                const std::vector<Node>& reps,
+                                                NonlinearExtension* nla,
+                                                int status, unsigned argIndex) {
+  if (status == 0) {
+    if (argIndex == reps.size()) {
+      d_monos.push_back(n);
+    } else {
+      d_data[reps[argIndex]].addTerm(n, reps, nla, status, argIndex + 1);
+    }
+  }
+  for (std::map<Node, MonomialIndex>::iterator it = d_data.begin();
+       it != d_data.end(); ++it) {
+    if (status != 0 || argIndex == reps.size() || it->first != reps[argIndex]) {
+      // if we do not contain this variable, then if we were a superset,
+      // fail (-2), otherwise we are subset.  if we do contain this
+      // variable, then if we were equal, we are superset since variables
+      // are ordered, otherwise we remain the same.
+      int new_status =
+          std::find(reps.begin(), reps.end(), it->first) == reps.end()
+              ? (status >= 0 ? 1 : -2)
+              : (status == 0 ? -1 : status);
+      if (new_status != -2) {
+        it->second.addTerm(n, reps, nla, new_status, argIndex);
+      }
+    }
+  }
+  // compare for subsets
+  for (unsigned i = 0; i < d_monos.size(); i++) {
+    Node m = d_monos[i];
+    if (m != n) {
+      // we are superset if we are equal and haven't traversed all variables
+      int cstatus = status == 0 ? (argIndex == reps.size() ? 0 : -1) : status;
+      Trace("nl-ext-mindex-debug") << "  compare " << n << " and " << m
+                                   << ", status = " << cstatus << std::endl;
+      if (cstatus <= 0 && nla->isMonomialSubset(m, n)) {
+        nla->registerMonomialSubset(m, n);
+        Trace("nl-ext-mindex-debug") << "...success" << std::endl;
+      } else if (cstatus >= 0 && nla->isMonomialSubset(n, m)) {
+        nla->registerMonomialSubset(n, m);
+        Trace("nl-ext-mindex-debug") << "...success (rev)" << std::endl;
+      }
+    }
+  }
+}
+
+}  // namespace arith
+}  // namespace theory
+}  // namespace CVC4
diff --git a/src/theory/arith/nonlinear_extension.h b/src/theory/arith/nonlinear_extension.h
new file mode 100644
index 0000000..dc93046
--- /dev/null
+++ b/src/theory/arith/nonlinear_extension.h
@@ -0,0 +1,208 @@
+/*********************                                                        */
+/*! \file nonlinear_extension.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Extensions for incomplete handling of nonlinear multiplication.
+ **
+ ** Extensions to the theory of arithmetic incomplete handling of nonlinear
+ ** multiplication via axiom instantiations.
+ **/
+
+#ifndef __CVC4__THEORY__ARITH__NONLINEAR_EXTENSION_H
+#define __CVC4__THEORY__ARITH__NONLINEAR_EXTENSION_H
+
+#include <stdint.h>
+
+#include <map>
+#include <queue>
+#include <set>
+#include <utility>
+#include <vector>
+
+#include "context/cdhashset.h"
+#include "context/cdinsert_hashmap.h"
+#include "context/cdlist.h"
+#include "context/cdqueue.h"
+#include "context/context.h"
+#include "expr/kind.h"
+#include "expr/node.h"
+#include "theory/arith/theory_arith.h"
+#include "theory/uf/equality_engine.h"
+
+namespace CVC4 {
+namespace theory {
+namespace arith {
+
+typedef std::map<Node, unsigned> NodeMultiset;
+
+class NonlinearExtension {
+ public:
+  NonlinearExtension(TheoryArith& containing, eq::EqualityEngine* ee);
+  ~NonlinearExtension();
+  bool getCurrentSubstitution(int effort, const std::vector<Node>& vars,
+                              std::vector<Node>& subs,
+                              std::map<Node, std::vector<Node> >& exp);
+
+  std::pair<bool, Node> isExtfReduced(int effort, Node n, Node on,
+                                      const std::vector<Node>& exp) const;
+  void check(Theory::Effort e);
+  bool needsCheckLastEffort() const { return d_needsLastCall; }
+  int compare(Node i, Node j, unsigned orderType) const;
+  int compare_value(Node i, Node j, unsigned orderType) const;
+
+  bool isMonomialSubset(Node a, Node b) const;
+  void registerMonomialSubset(Node a, Node b);
+
+ private:
+  typedef context::CDHashSet<Node, NodeHashFunction> NodeSet;
+
+  // monomial information (context-independent)
+  class MonomialIndex {
+   public:
+    // status 0 : n equal, -1 : n superset, 1 : n subset
+    void addTerm(Node n, const std::vector<Node>& reps, NonlinearExtension* nla,
+                 int status = 0, unsigned argIndex = 0);
+
+   private:
+    std::map<Node, MonomialIndex> d_data;
+    std::vector<Node> d_monos;
+  }; /* class MonomialIndex */
+
+  // constraint information (context-independent)
+  struct ConstraintInfo {
+   public:
+    Node d_rhs;
+    Node d_coeff;
+    Kind d_type;
+  }; /* struct ConstraintInfo */
+
+  // Check assertions for consistency in the effort LAST_CALL with a subset of
+  // the assertions, false_asserts, evaluate to false in the current model.
+  void checkLastCall(const std::vector<Node>& assertions,
+                     const std::set<Node>& false_asserts);
+
+  // Returns a vector containing a split on whether each term is 0 or not for
+  // those terms that have not been split on in the current context.
+  std::vector<Node> splitOnZeros(const std::vector<Node>& terms);
+
+  static bool isArithKind(Kind k);
+  static Node mkLit(Node a, Node b, int status, int orderType = 0);
+  static Node mkAbs(Node a);
+  static Kind joinKinds(Kind k1, Kind k2);
+  static Kind transKinds(Kind k1, Kind k2);
+  Node mkMonomialRemFactor(Node n, const NodeMultiset& n_exp_rem) const;
+
+  // register monomial
+  void registerMonomial(Node n);
+  void setMonomialFactor(Node a, Node b, const NodeMultiset& common);
+
+  void registerConstraint(Node atom);
+  // index = 0 : concrete, 1 : abstract
+  Node computeModelValue(Node n, unsigned index = 0);
+
+  Node get_compare_value(Node i, unsigned orderType) const;
+  void assignOrderIds(std::vector<Node>& vars, NodeMultiset& d_order,
+                      unsigned orderType);
+
+  // Returns the subset of assertions that evaluate to false in the model.
+  std::set<Node> getFalseInModel(const std::vector<Node>& assertions);
+
+  // status
+  // 0 : equal
+  // 1 : greater than or equal
+  // 2 : greater than
+  // -X : (less)
+  // in these functions we are iterating over variables of monomials
+  // initially : exp => ( oa = a ^ ob = b )
+  int compareSign(Node oa, Node a, unsigned a_index, int status,
+                  std::vector<Node>& exp, std::vector<Node>& lem);
+  bool compareMonomial(
+      Node oa, Node a, NodeMultiset& a_exp_proc, Node ob, Node b,
+      NodeMultiset& b_exp_proc, std::vector<Node>& exp, std::vector<Node>& lem,
+      std::map<int, std::map<Node, std::map<Node, Node> > >& cmp_infers);
+  bool compareMonomial(
+      Node oa, Node a, unsigned a_index, NodeMultiset& a_exp_proc, Node ob,
+      Node b, unsigned b_index, NodeMultiset& b_exp_proc, int status,
+      std::vector<Node>& exp, std::vector<Node>& lem,
+      std::map<int, std::map<Node, std::map<Node, Node> > >& cmp_infers);
+  bool cmp_holds(Node x, Node y,
+                 std::map<Node, std::map<Node, Node> >& cmp_infers,
+                 std::vector<Node>& exp, std::map<Node, bool>& visited);
+
+  bool isEntailed(Node n, bool pol);
+
+  // Potentially sends lem on the output channel if lem has not been sent on the
+  // output channel in this context. Returns the number of lemmas sent on the
+  // output channel.
+  int flushLemma(Node lem);
+
+  // Potentially sends lemmas to the output channel and clears lemmas. Returns
+  // the number of lemmas sent to the output channel.
+  int flushLemmas(std::vector<Node>& lemmas);
+
+  // Returns the NodeMultiset for an existing monomial.
+  const NodeMultiset& getMonomialExponentMap(Node monomial) const;
+
+  // Map from monomials to var^index.
+  typedef std::map<Node, NodeMultiset> MonomialExponentMap;
+  MonomialExponentMap d_m_exp;
+
+  std::map<Node, std::vector<Node> > d_m_vlist;
+  NodeMultiset d_m_degree;
+  // monomial index, by sorted variables
+  MonomialIndex d_m_index;
+  // list of all monomials
+  std::vector<Node> d_monomials;
+  // containment ordering
+  std::map<Node, std::vector<Node> > d_m_contain_children;
+  std::map<Node, std::vector<Node> > d_m_contain_parent;
+  std::map<Node, std::map<Node, Node> > d_m_contain_mult;
+  std::map<Node, std::map<Node, Node> > d_m_contain_umult;
+  // ( x*y, x*z, y ) for each pair of monomials ( x*y, x*z ) with common factors
+  std::map<Node, std::map<Node, Node> > d_mono_diff;
+
+  // cache of all lemmas sent
+  NodeSet d_lemmas;
+  NodeSet d_zero_split;
+
+  // utilities
+  Node d_zero;
+  Node d_one;
+  Node d_neg_one;
+  Node d_true;
+  Node d_false;
+
+  // The theory of arithmetic containing this extension.
+  TheoryArith& d_containing;
+
+  // pointer to used equality engine
+  eq::EqualityEngine* d_ee;
+  // needs last call effort
+  bool d_needsLastCall;
+
+  // if d_c_info[lit][x] = ( r, coeff, k ), then ( lit <=>  (coeff * x) <k> r )
+  std::map<Node, std::map<Node, ConstraintInfo> > d_c_info;
+  std::map<Node, std::map<Node, bool> > d_c_info_maxm;
+  std::vector<Node> d_constraints;
+
+  // model values/orderings
+  // model values
+  std::map<Node, Node> d_mv[2];
+
+  // ordering, stores variables and 0,1,-1
+  std::map<unsigned, NodeMultiset> d_order_vars;
+  std::vector<Node> d_order_points;
+}; /* class NonlinearExtension */
+
+}  // namespace arith
+}  // namespace theory
+}  // namespace CVC4
+
+#endif /* __CVC4__THEORY__ARITH__NONLINEAR_EXTENSION_H */
diff --git a/src/theory/arith/normal_form.cpp b/src/theory/arith/normal_form.cpp
index ec396b2..605dfe4 100644
--- a/src/theory/arith/normal_form.cpp
+++ b/src/theory/arith/normal_form.cpp
@@ -2,9 +2,9 @@
 /*! \file normal_form.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters, Dejan Jovanovic
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -14,11 +14,11 @@
  ** [[ Add lengthier description here ]]
  ** \todo document this file
  **/
+#include "theory/arith/normal_form.h"
 
 #include <list>
 
 #include "base/output.h"
-#include "theory/arith/normal_form.h"
 #include "theory/arith/arith_utilities.h"
 #include "theory/theory.h"
 
@@ -103,7 +103,7 @@ bool VarList::isMember(Node n) {
   if(Variable::isMember(n)) {
     return true;
   }
-  if(n.getKind() == kind::MULT) {
+  if(n.getKind() == kind::NONLINEAR_MULT) {
     Node::iterator curr = n.begin(), end = n.end();
     Node prev = *curr;
     if(!Variable::isMember(prev)) return false;
@@ -189,7 +189,7 @@ VarList VarList::operator*(const VarList& other) const {
     merge_ranges(thisBegin, thisEnd, otherBegin, otherEnd, result, cmp);
 
     Assert(result.size() >= 2);
-    Node mult = NodeManager::currentNM()->mkNode(kind::MULT, result);
+    Node mult = NodeManager::currentNM()->mkNode(kind::NONLINEAR_MULT, result);
     return VarList::parseVarList(mult);
   }
 }
@@ -805,6 +805,7 @@ DeltaRational Comparison::normalizedDeltaRational() const {
 }
 
 Comparison Comparison::parseNormalForm(TNode n) {
+  Debug("polynomial") << "Comparison::parseNormalForm(" << n << ")";
   Comparison result(n);
   Assert(result.isNormalForm());
   return result;
@@ -1080,8 +1081,8 @@ bool Comparison::isNormalEqualityOrDisequality() const {
 /** This must be (= qvarlist qpolynomial) or (= zmonomial zpolynomial)*/
 bool Comparison::isNormalEquality() const {
   Assert(getNode().getKind() == kind::EQUAL);
-
-  return isNormalEqualityOrDisequality();
+  return Theory::theoryOf(getNode()[0].getType()) == THEORY_ARITH &&
+         isNormalEqualityOrDisequality();
 }
 
 /**
@@ -1092,7 +1093,8 @@ bool Comparison::isNormalDistinct() const {
   Assert(getNode().getKind() == kind::NOT);
   Assert(getNode()[0].getKind() == kind::EQUAL);
 
-  return isNormalEqualityOrDisequality();
+  return Theory::theoryOf(getNode()[0][0].getType()) == THEORY_ARITH &&
+         isNormalEqualityOrDisequality();
 }
 
 Node Comparison::mkRatEquality(const Polynomial& p){
diff --git a/src/theory/arith/normal_form.h b/src/theory/arith/normal_form.h
index d57d781..4a2b611 100644
--- a/src/theory/arith/normal_form.h
+++ b/src/theory/arith/normal_form.h
@@ -2,9 +2,9 @@
 /*! \file normal_form.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters, Dejan Jovanovic
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -487,7 +487,7 @@ private:
   static Node multList(const std::vector<Variable>& list) {
     Assert(list.size() >= 2);
 
-    return makeNode(kind::MULT, list.begin(), list.end());
+    return makeNode(kind::NONLINEAR_MULT, list.begin(), list.end());
   }
 
   VarList() : NodeWrapper(Node::null()) {}
@@ -589,7 +589,7 @@ public:
 
   bool empty() const { return getNode().isNull(); }
   bool singleton() const {
-    return !empty() && getNode().getKind() != kind::MULT;
+    return !empty() && getNode().getKind() != kind::NONLINEAR_MULT;
   }
 
   int size() const {
diff --git a/src/theory/arith/partial_model.cpp b/src/theory/arith/partial_model.cpp
index 632be2a..2c50a1b 100644
--- a/src/theory/arith/partial_model.cpp
+++ b/src/theory/arith/partial_model.cpp
@@ -2,9 +2,9 @@
 /*! \file partial_model.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/partial_model.h b/src/theory/arith/partial_model.h
index b5eafb2..50fb2cb 100644
--- a/src/theory/arith/partial_model.h
+++ b/src/theory/arith/partial_model.h
@@ -2,9 +2,9 @@
 /*! \file partial_model.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/pseudoboolean_proc.cpp b/src/theory/arith/pseudoboolean_proc.cpp
index 0c1496a..230cfb7 100644
--- a/src/theory/arith/pseudoboolean_proc.cpp
+++ b/src/theory/arith/pseudoboolean_proc.cpp
@@ -2,9 +2,9 @@
 /*! \file pseudoboolean_proc.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/pseudoboolean_proc.h b/src/theory/arith/pseudoboolean_proc.h
index 23065ca..471e37f 100644
--- a/src/theory/arith/pseudoboolean_proc.h
+++ b/src/theory/arith/pseudoboolean_proc.h
@@ -2,9 +2,9 @@
 /*! \file pseudoboolean_proc.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/simplex.cpp b/src/theory/arith/simplex.cpp
index 9dd1371..a7c5a1a 100644
--- a/src/theory/arith/simplex.cpp
+++ b/src/theory/arith/simplex.cpp
@@ -2,9 +2,9 @@
 /*! \file simplex.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/simplex.h b/src/theory/arith/simplex.h
index b4cd54a..13fba2c 100644
--- a/src/theory/arith/simplex.h
+++ b/src/theory/arith/simplex.h
@@ -2,9 +2,9 @@
 /*! \file simplex.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters, Clark Barrett
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/simplex_update.cpp b/src/theory/arith/simplex_update.cpp
index adf0dc0..e5bcfa6 100644
--- a/src/theory/arith/simplex_update.cpp
+++ b/src/theory/arith/simplex_update.cpp
@@ -2,9 +2,9 @@
 /*! \file simplex_update.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/simplex_update.h b/src/theory/arith/simplex_update.h
index 2c02e3f..7b487c8 100644
--- a/src/theory/arith/simplex_update.h
+++ b/src/theory/arith/simplex_update.h
@@ -2,9 +2,9 @@
 /*! \file simplex_update.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Paul Meng, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/soi_simplex.cpp b/src/theory/arith/soi_simplex.cpp
index 0a437cd..b2f7b08 100644
--- a/src/theory/arith/soi_simplex.cpp
+++ b/src/theory/arith/soi_simplex.cpp
@@ -2,9 +2,9 @@
 /*! \file soi_simplex.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/soi_simplex.h b/src/theory/arith/soi_simplex.h
index c2afe06..5f2233b 100644
--- a/src/theory/arith/soi_simplex.h
+++ b/src/theory/arith/soi_simplex.h
@@ -2,9 +2,9 @@
 /*! \file soi_simplex.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Paul Meng, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/tableau.cpp b/src/theory/arith/tableau.cpp
index 0bd1309..0801041 100644
--- a/src/theory/arith/tableau.cpp
+++ b/src/theory/arith/tableau.cpp
@@ -2,9 +2,9 @@
 /*! \file tableau.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/tableau.h b/src/theory/arith/tableau.h
index c4c8cfb..caf3601 100644
--- a/src/theory/arith/tableau.h
+++ b/src/theory/arith/tableau.h
@@ -2,9 +2,9 @@
 /*! \file tableau.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/tableau_sizes.cpp b/src/theory/arith/tableau_sizes.cpp
index 08f7a69..6d7b2e7 100644
--- a/src/theory/arith/tableau_sizes.cpp
+++ b/src/theory/arith/tableau_sizes.cpp
@@ -2,9 +2,9 @@
 /*! \file tableau_sizes.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/tableau_sizes.h b/src/theory/arith/tableau_sizes.h
index 6353307..da6f0f8 100644
--- a/src/theory/arith/tableau_sizes.h
+++ b/src/theory/arith/tableau_sizes.h
@@ -2,9 +2,9 @@
 /*! \file tableau_sizes.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/theory_arith.cpp b/src/theory/arith/theory_arith.cpp
index 9627b9a..c0af382 100644
--- a/src/theory/arith/theory_arith.cpp
+++ b/src/theory/arith/theory_arith.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Morgan Deters, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -37,6 +37,10 @@ TheoryArith::TheoryArith(context::Context* c, context::UserContext* u,
     , d_ppRewriteTimer("theory::arith::ppRewriteTimer")
 {
   smtStatisticsRegistry()->registerStat(&d_ppRewriteTimer);
+  if (options::nlExt()) {
+    setupExtTheory();
+    getExtTheory()->addFunctionKind(kind::NONLINEAR_MULT);
+  }
 }
 
 TheoryArith::~TheoryArith(){
@@ -56,11 +60,6 @@ void TheoryArith::setMasterEqualityEngine(eq::EqualityEngine* eq) {
   d_internal->setMasterEqualityEngine(eq);
 }
 
-void TheoryArith::setQuantifiersEngine(QuantifiersEngine* qe) {
-  this->Theory::setQuantifiersEngine(qe);
-  d_internal->setQuantifiersEngine(qe);
-}
-
 void TheoryArith::addSharedTerm(TNode n){
   d_internal->addSharedTerm(n);
 }
@@ -83,16 +82,28 @@ void TheoryArith::check(Effort effortLevel){
   d_internal->check(effortLevel);
 }
 
+bool TheoryArith::needsCheckLastEffort() {
+  return d_internal->needsCheckLastEffort();
+}
+
 Node TheoryArith::explain(TNode n) {
   return d_internal->explain(n);
 }
 
+bool TheoryArith::getCurrentSubstitution( int effort, std::vector< Node >& vars, std::vector< Node >& subs, std::map< Node, std::vector< Node > >& exp ) {
+  return d_internal->getCurrentSubstitution( effort, vars, subs, exp );
+}
+
+bool TheoryArith::isExtfReduced( int effort, Node n, Node on, std::vector< Node >& exp ) {
+  return d_internal->isExtfReduced( effort, n, on, exp );
+}
+
 void TheoryArith::propagate(Effort e) {
   d_internal->propagate(e);
 }
 
-void TheoryArith::collectModelInfo( TheoryModel* m, bool fullModel ){
-  d_internal->collectModelInfo(m, fullModel);
+void TheoryArith::collectModelInfo( TheoryModel* m ){
+  d_internal->collectModelInfo(m);
 }
 
 void TheoryArith::notifyRestart(){
diff --git a/src/theory/arith/theory_arith.h b/src/theory/arith/theory_arith.h
index 51bbd67..e122627 100644
--- a/src/theory/arith/theory_arith.h
+++ b/src/theory/arith/theory_arith.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Morgan Deters, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -53,13 +53,15 @@ public:
   Node expandDefinition(LogicRequest &logicRequest, Node node);
 
   void setMasterEqualityEngine(eq::EqualityEngine* eq);
-  void setQuantifiersEngine(QuantifiersEngine* qe);
 
   void check(Effort e);
+  bool needsCheckLastEffort();
   void propagate(Effort e);
   Node explain(TNode n);
+  bool getCurrentSubstitution( int effort, std::vector< Node >& vars, std::vector< Node >& subs, std::map< Node, std::vector< Node > >& exp );
+  bool isExtfReduced( int effort, Node n, Node on, std::vector< Node >& exp );
 
-  void collectModelInfo( TheoryModel* m, bool fullModel );
+  void collectModelInfo( TheoryModel* m );
 
   void shutdown(){ }
 
diff --git a/src/theory/arith/theory_arith_private.cpp b/src/theory/arith/theory_arith_private.cpp
index 069d353..c5e8de9 100644
--- a/src/theory/arith/theory_arith_private.cpp
+++ b/src/theory/arith/theory_arith_private.cpp
@@ -2,9 +2,9 @@
 /*! \file theory_arith_private.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters, Martin Brain
+ **   Tim King, Andrew Reynolds, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -61,6 +61,7 @@
 #include "theory/arith/partial_model.h"
 #include "theory/arith/simplex.h"
 #include "theory/arith/theory_arith.h"
+#include "theory/arith/nonlinear_extension.h"
 #include "theory/ite_utilities.h"
 #include "theory/quantifiers/bounded_integers.h"
 #include "theory/rewriter.h"
@@ -93,7 +94,6 @@ TheoryArithPrivate::TheoryArithPrivate(TheoryArith& containing, context::Context
   d_unknownsInARow(0),
   d_hasDoneWorkSinceCut(false),
   d_learner(u),
-  d_quantEngine(NULL),
   d_assertionsThatDoNotMatchTheirLiterals(c),
   d_nextIntegerCheckVar(0),
   d_constantIntegerVariables(c),
@@ -118,7 +118,7 @@ TheoryArithPrivate::TheoryArithPrivate(TheoryArith& containing, context::Context
   d_fcSimplex(d_linEq, d_errorSet, RaiseConflict(*this), TempVarMalloc(*this)),
   d_soiSimplex(d_linEq, d_errorSet, RaiseConflict(*this), TempVarMalloc(*this)),
   d_attemptSolSimplex(d_linEq, d_errorSet, RaiseConflict(*this), TempVarMalloc(*this)),
-
+  d_nonlinearExtension( NULL ),
   d_pass1SDP(NULL),
   d_otherSDP(NULL),
   d_lastContextIntegerAttempted(c,-1),
@@ -141,14 +141,23 @@ TheoryArithPrivate::TheoryArithPrivate(TheoryArith& containing, context::Context
   d_dioSolveResources(0),
   d_solveIntMaybeHelp(0u),
   d_solveIntAttempts(0u),
-  d_statistics()
+  d_statistics(),
+  d_to_int_skolem(u),
+  d_div_skolem(u),
+  d_int_div_skolem(u)
 {
   srand(79);
+  
+  if( options::nlExt() ){
+    d_nonlinearExtension = new NonlinearExtension(
+        containing, d_congruenceManager.getEqualityEngine());
+  }
 }
 
 TheoryArithPrivate::~TheoryArithPrivate(){
   if(d_treeLog != NULL){ delete d_treeLog; }
   if(d_approxStats != NULL) { delete d_approxStats; }
+  if(d_nonlinearExtension != NULL) { delete d_nonlinearExtension; }
 }
 
 static bool contains(const ConstraintCPVec& v, ConstraintP con){
@@ -205,45 +214,102 @@ static void resolve(ConstraintCPVec& buf, ConstraintP c, const ConstraintCPVec&
   // return safeConstructNary(nb);
 }
 
-void TheoryArithPrivate::setMasterEqualityEngine(eq::EqualityEngine* eq) {
-  d_congruenceManager.setMasterEqualityEngine(eq);
-}
-
-void TheoryArithPrivate::setQuantifiersEngine(QuantifiersEngine* qe) {
-  d_quantEngine = qe;
-}
-
-Node TheoryArithPrivate::getRealDivideBy0Func(){
-  Assert(!getLogicInfo().isLinear());
-  Assert(getLogicInfo().areRealsUsed());
-
-  if(d_realDivideBy0Func.isNull()){
-    TypeNode realType = NodeManager::currentNM()->realType();
-    d_realDivideBy0Func = skolemFunction("/by0", realType, realType);
-  }
-  return d_realDivideBy0Func;
+// Integer division axioms:
+// These concenrate the high level constructs needed to constrain the functions:
+// div, mod, div_total and mod_total.
+//
+// The high level constraint.
+// (for all ((m Int) (n Int))
+//   (=> (distinct n 0)
+//       (let ((q (div m n)) (r (mod m n)))
+//         (and (= m (+ (* n q) r))
+//              (<= 0 r (- (abs n) 1))))))
+//
+// We now add division by 0 functions.
+// (for all ((m Int) (n Int))
+//   (let ((q (div m n)) (r (mod m n)))
+//     (ite (= n 0)
+//          (and (= q (div_0_func m)) (= r (mod_0_func m)))
+//          (and (= m (+ (* n q) r))
+//               (<= 0 r (- (abs n) 1)))))))
+//
+// We now express div and mod in terms of div_total and mod_total.
+// (for all ((m Int) (n Int))
+//   (let ((q (div m n)) (r (mod m n)))
+//     (ite (= n 0)
+//          (and (= q (div_0_func m)) (= r (mod_0_func m)))
+//          (and (= q (div_total m n)) (= r (mod_total m n))))))
+//
+// Alternative div_total and mod_total without the abs function:
+// (for all ((m Int) (n Int))
+//   (let ((q (div_total m n)) (r (mod_total m n)))
+//     (ite (= n 0)
+//          (and (= q 0) (= r 0))
+//          (and (r = m - n * q)
+//               (ite (> n 0)
+//                    (n*q <= m < n*q + n)
+//                    (n*q <= m < n*q - n))))))
+
+
+// Returns a formula that entails that q equals the total integer division of m
+// by n.
+// (for all ((m Int) (n Int))
+//   (let ((q (div_total m n)))
+//     (ite (= n 0)
+//          (= q 0)
+//          (ite (> n 0)
+//               (n*q <= m < n*q + n)
+//               (n*q <= m < n*q - n)))))
+Node mkAxiomForTotalIntDivision(Node m, Node n, Node q) {
+  NodeManager* nm = NodeManager::currentNM();
+  Node zero = mkRationalNode(0);
+  // (n*q <= m < n*q + n) is equivalent to (0 <= m - n*q < n).
+  Node diff = nm->mkNode(kind::MINUS, m, mkMult(n, q));
+  Node when_n_is_positive = mkInRange(diff, zero, n);
+  Node when_n_is_negative = mkInRange(diff, zero, nm->mkNode(kind::UMINUS, n));
+  return n.eqNode(zero).iteNode(
+      q.eqNode(zero), nm->mkNode(kind::GT, n, zero)
+                          .iteNode(when_n_is_positive, when_n_is_negative));
 }
 
-Node TheoryArithPrivate::getIntDivideBy0Func(){
-  Assert(!getLogicInfo().isLinear());
-  Assert(getLogicInfo().areIntegersUsed());
-
-  if(d_intDivideBy0Func.isNull()){
-    TypeNode intType = NodeManager::currentNM()->integerType();
-    d_intDivideBy0Func = skolemFunction("divby0", intType, intType);
-  }
-  return d_intDivideBy0Func;
+// Returns a formula that entails that r equals the integer division total of m
+// by n assuming q is equal to (div_total m n).
+// (for all ((m Int) (n Int))
+//   (let ((q (div_total m n)) (r (mod_total m n)))
+//     (ite (= n 0)
+//          (= r 0)
+//          (= r (- m (n * q))))))
+Node mkAxiomForTotalIntMod(Node m, Node n, Node q, Node r) {
+  NodeManager* nm = NodeManager::currentNM();
+  Node diff = nm->mkNode(kind::MINUS, m, mkMult(n, q));
+  return mkOnZeroIte(n, r, mkRationalNode(0), diff);
 }
 
-Node TheoryArithPrivate::getIntModulusBy0Func(){
-  Assert(!getLogicInfo().isLinear());
-  Assert(getLogicInfo().areIntegersUsed());
+// Returns an expression that constrains a term to be the result of the
+// [total] integer division of num by den. Equivalently:
+// (and (=> (den > 0) (den*term <= num < den*term + den))
+//      (=> (den < 0) (den*term <= num < den*term - den))
+//      (=> (den = 0) (term = 0)))
+// static Node mkIntegerDivisionConstraint(Node term, Node num, Node den) {
+//   // We actually encode:
+//   // (and (=> (den > 0) (0 <= num - den*term < den))
+//   //      (=> (den < 0) (0 <= num - den*term < -den))
+//   //      (=> (den = 0) (term = 0)))
+//   NodeManager* nm = NodeManager::currentNM();
+//   Node zero = nm->mkConst(Rational(0));
+//   Node den_is_positive = nm->mkNode(kind::GT, den, zero);
+//   Node den_is_negative = nm->mkNode(kind::LT, den, zero);
+//   Node diff = nm->mkNode(kind::MINUS, num, mkMult(den, term));
+//   Node when_den_positive = den_positive.impNode(mkInRange(diff, zero, den));
+//   Node when_den_negative = den_negative.impNode(
+//       mkInRange(diff, zero, nm->mkNode(kind::UMINUS, den)));
+//   Node when_den_is_zero = (den.eqNode(zero)).impNode(term.eqNode(zero));
+//   return mk->mkNode(kind::AND, when_den_positive, when_den_negative,
+//                     when_den_is_zero);
+// }
 
-  if(d_intModulusBy0Func.isNull()){
-    TypeNode intType = NodeManager::currentNM()->integerType();
-    d_intModulusBy0Func = skolemFunction("modby0", intType, intType);
-  }
-  return d_intModulusBy0Func;
+void TheoryArithPrivate::setMasterEqualityEngine(eq::EqualityEngine* eq) {
+  d_congruenceManager.setMasterEqualityEngine(eq);
 }
 
 TheoryArithPrivate::ModelException::ModelException(TNode n, const char* msg) throw (){
@@ -1086,9 +1152,9 @@ void TheoryArithPrivate::addSharedTerm(TNode n){
 
 Node TheoryArithPrivate::getModelValue(TNode term) {
   try{
-    DeltaRational drv = getDeltaValue(term);
+    const DeltaRational drv = getDeltaValue(term);
     const Rational& delta = d_partialModel.getDelta();
-    Rational qmodel = drv.substituteDelta( delta );
+    const Rational qmodel = drv.substituteDelta( delta );
     return mkRationalNode( qmodel );
   } catch (DeltaRationalException& dr) {
     return Node::null();
@@ -1097,23 +1163,6 @@ Node TheoryArithPrivate::getModelValue(TNode term) {
   }
 }
 
-namespace attr {
-  struct ToIntegerTag { };
-  struct LinearIntDivTag { };
-}/* CVC4::theory::arith::attr namespace */
-
-/**
- * This attribute maps the child of a to_int / is_int to the
- * corresponding integer skolem.
- */
-typedef expr::CDAttribute<attr::ToIntegerTag, Node> ToIntegerAttr;
-
-/**
- * This attribute maps division-by-constant-k terms to a variable
- * used to eliminate them.
- */
-typedef expr::CDAttribute<attr::LinearIntDivTag, Node> LinearIntDivAttr;
-
 Node TheoryArithPrivate::ppRewriteTerms(TNode n) {
   if(Theory::theoryOf(n) != THEORY_ARITH) {
     return n;
@@ -1125,81 +1174,102 @@ Node TheoryArithPrivate::ppRewriteTerms(TNode n) {
 
   case kind::TO_INTEGER:
   case kind::IS_INTEGER: {
-    Node intVar;
-    if(!n[0].getAttribute(ToIntegerAttr(), intVar)) {
-      intVar = nm->mkSkolem("toInt", nm->integerType(), "a conversion of a Real term to its Integer part");
-      n[0].setAttribute(ToIntegerAttr(), intVar);
-      d_containing.d_out->lemma(nm->mkNode(kind::AND, nm->mkNode(kind::LT, nm->mkNode(kind::MINUS, n[0], nm->mkConst(Rational(1))), intVar), nm->mkNode(kind::LEQ, intVar, n[0])));
+    Node toIntSkolem;
+    NodeMap::const_iterator it = d_to_int_skolem.find( n[0] );
+    if( it==d_to_int_skolem.end() ){
+      toIntSkolem = nm->mkSkolem("toInt", nm->integerType(),
+                            "a conversion of a Real term to its Integer part");
+      d_to_int_skolem[n[0]] = toIntSkolem;
+      // n[0] - 1 < toIntSkolem <= n[0]
+      // -1 < toIntSkolem - n[0] <= 0
+      // 0 <= n[0] - toIntSkolem < 1
+      Node one = mkRationalNode(1);
+      Node lem = mkAxiomForTotalIntDivision(n[0], one, toIntSkolem);
+      d_containing.d_out->lemma(lem);
+    }else{
+      toIntSkolem = (*it).second;
     }
-    if(n.getKind() == kind::TO_INTEGER) {
-      Node node = intVar;
-      return node;
-    } else {
-      Node node = nm->mkNode(kind::EQUAL, n[0], intVar);
-      return node;
+    if(k == kind::IS_INTEGER) {
+      return nm->mkNode(kind::EQUAL, n[0], toIntSkolem);
     }
-    Unreachable();
+    Assert(k == kind::TO_INTEGER);
+    return toIntSkolem;
   }
-
   case kind::INTS_DIVISION:
-  case kind::INTS_DIVISION_TOTAL: {
-    if(!options::rewriteDivk()) {
+  case kind::INTS_MODULUS:
+  case kind::DIVISION:
+    // these should be removed during expand definitions
+    Assert( false );
+    break;
+  
+  case kind::INTS_DIVISION_TOTAL: 
+  case kind::INTS_MODULUS_TOTAL: {
+    Node den = Rewriter::rewrite(n[1]);
+    if(!options::rewriteDivk() && den.isConst()) {
       return n;
     }
     Node num = Rewriter::rewrite(n[0]);
-    Node den = Rewriter::rewrite(n[1]);
-    if(den.isConst()) {
-      const Rational& rat = den.getConst<Rational>();
-      Assert(!num.isConst());
-      if(rat != 0) {
-        Node intVar;
-        Node rw = nm->mkNode(k, num, den);
-        if(!rw.getAttribute(LinearIntDivAttr(), intVar)) {
-          intVar = nm->mkSkolem("linearIntDiv", nm->integerType(), "the result of an intdiv-by-k term");
-          rw.setAttribute(LinearIntDivAttr(), intVar);
+    Node intVar;
+    Node rw = nm->mkNode(k, num, den);
+    NodeMap::const_iterator it = d_int_div_skolem.find( rw );
+    if( it==d_int_div_skolem.end() ){
+      intVar = nm->mkSkolem("linearIntDiv", nm->integerType(), "the result of an intdiv-by-k term");
+      d_int_div_skolem[rw] = intVar;
+      Node lem;
+      if (den.isConst()) {
+        const Rational& rat = den.getConst<Rational>();
+        Assert(!num.isConst());
+        if(rat != 0) {
           if(rat > 0) {
-            d_containing.d_out->lemma(nm->mkNode(kind::AND, nm->mkNode(kind::LEQ, nm->mkNode(kind::MULT, den, intVar), num), nm->mkNode(kind::LT, num, nm->mkNode(kind::MULT, den, nm->mkNode(kind::PLUS, intVar, nm->mkConst(Rational(1)))))));
+            lem = nm->mkNode(kind::AND, nm->mkNode(kind::LEQ, nm->mkNode(kind::MULT, den, intVar), num), 
+                                        nm->mkNode(kind::LT, num, nm->mkNode(kind::MULT, den, nm->mkNode(kind::PLUS, intVar, nm->mkConst(Rational(1))))));
           } else {
-            d_containing.d_out->lemma(nm->mkNode(kind::AND, nm->mkNode(kind::LEQ, nm->mkNode(kind::MULT, den, intVar), num), nm->mkNode(kind::LT, num, nm->mkNode(kind::MULT, den, nm->mkNode(kind::PLUS, intVar, nm->mkConst(Rational(-1)))))));
+            lem = nm->mkNode(kind::AND, nm->mkNode(kind::LEQ, nm->mkNode(kind::MULT, den, intVar), num), 
+                                        nm->mkNode(kind::LT, num, nm->mkNode(kind::MULT, den, nm->mkNode(kind::PLUS, intVar, nm->mkConst(Rational(-1))))));
           }
         }
-        return intVar;
+      }else{
+        lem = nm->mkNode(kind::AND,
+                nm->mkNode(kind::IMPLIES, NodeManager::currentNM()->mkNode( kind::GT, den, nm->mkConst(Rational(0)) ),
+                  nm->mkNode(kind::AND, nm->mkNode(kind::LEQ, nm->mkNode(kind::MULT, den, intVar), num), 
+                                        nm->mkNode(kind::LT, num, nm->mkNode(kind::MULT, den, nm->mkNode(kind::PLUS, intVar, nm->mkConst(Rational(1))))))),
+                nm->mkNode(kind::IMPLIES, NodeManager::currentNM()->mkNode( kind::LT, den, nm->mkConst(Rational(0)) ),
+                  nm->mkNode(kind::AND, nm->mkNode(kind::LEQ, nm->mkNode(kind::MULT, den, intVar), num), 
+                                        nm->mkNode(kind::LT, num, nm->mkNode(kind::MULT, den, nm->mkNode(kind::PLUS, intVar, nm->mkConst(Rational(-1))))))));                
+      }    
+      if( !lem.isNull() ){
+        d_containing.d_out->lemma(lem);
       }
+    }else{
+      intVar = (*it).second;
+    }
+    if( k==kind::INTS_MODULUS_TOTAL ){
+      Node node = nm->mkNode(kind::MINUS, num, nm->mkNode(kind::MULT, den, intVar));
+      return node;
+    }else{
+      return intVar;
     }
     break;
   }
-
-  case kind::INTS_MODULUS:
-  case kind::INTS_MODULUS_TOTAL: {
-    if(!options::rewriteDivk()) {
-      return n;
-    }
+  case kind::DIVISION_TOTAL: {
     Node num = Rewriter::rewrite(n[0]);
     Node den = Rewriter::rewrite(n[1]);
-    if(den.isConst()) {
-      const Rational& rat = den.getConst<Rational>();
-      Assert(!num.isConst());
-      if(rat != 0) {
-        Node intVar;
-        Node rw = nm->mkNode(k, num, den);
-        if(!rw.getAttribute(LinearIntDivAttr(), intVar)) {
-          intVar = nm->mkSkolem("linearIntDiv", nm->integerType(), "the result of an intdiv-by-k term");
-          rw.setAttribute(LinearIntDivAttr(), intVar);
-          if(rat > 0) {
-            d_containing.d_out->lemma(nm->mkNode(kind::AND, nm->mkNode(kind::LEQ, nm->mkNode(kind::MULT, den, intVar), num), nm->mkNode(kind::LT, num, nm->mkNode(kind::MULT, den, nm->mkNode(kind::PLUS, intVar, nm->mkConst(Rational(1)))))));
-          } else {
-            d_containing.d_out->lemma(nm->mkNode(kind::AND, nm->mkNode(kind::LEQ, nm->mkNode(kind::MULT, den, intVar), num), nm->mkNode(kind::LT, num, nm->mkNode(kind::MULT, den, nm->mkNode(kind::PLUS, intVar, nm->mkConst(Rational(-1)))))));
-          }
-        }
-        Node node = nm->mkNode(kind::MINUS, num, nm->mkNode(kind::MULT, den, intVar));
-        return node;
-      }
+    Assert(!den.isConst());
+    Node var;
+    Node rw = nm->mkNode(k, num, den);
+    NodeMap::const_iterator it = d_div_skolem.find( rw );
+    if( it==d_div_skolem.end() ){
+      var = nm->mkSkolem("nonlinearDiv", nm->realType(), "the result of a non-linear div term");
+      d_div_skolem[rw] = var;
+      d_containing.d_out->lemma(nm->mkNode(kind::IMPLIES, den.eqNode(nm->mkConst(Rational(0))).negate(), nm->mkNode(kind::MULT, den, var).eqNode(num)));
+    }else{
+      var = (*it).second;
     }
+    return var;
     break;
   }
-
   default:
-    ;
+    break;
   }
 
   for(TNode::const_iterator i = n.begin(); i != n.end(); ++i) {
@@ -1245,7 +1315,8 @@ Theory::PPAssertStatus TheoryArithPrivate::ppAssert(TNode in, SubstitutionMap& o
   Rational minConstant = 0;
   Node minMonomial;
   Node minVar;
-  if (in.getKind() == kind::EQUAL) {
+  if (in.getKind() == kind::EQUAL &&
+      Theory::theoryOf(in[0].getType()) == THEORY_ARITH) {
     Comparison cmp = Comparison::parseNormalForm(in);
 
     Polynomial left = cmp.getLeft();
@@ -1337,7 +1408,8 @@ ArithVar TheoryArithPrivate::findShortestBasicRow(ArithVar variable){
       bestRowLength = rowLength;
     }
   }
-  Assert(bestBasic == ARITHVAR_SENTINEL || bestRowLength < std::numeric_limits<uint32_t>::max());
+  Assert(bestBasic == ARITHVAR_SENTINEL ||
+         bestRowLength < std::numeric_limits<uint32_t>::max());
   return bestBasic;
 }
 
@@ -1353,7 +1425,6 @@ void TheoryArithPrivate::setupVariable(const Variable& x){
 
   markSetup(n);
 
-
   if(x.isDivLike()){
     setupDivLike(x);
   }
@@ -1382,8 +1453,10 @@ void TheoryArithPrivate::setupVariableList(const VarList& vl){
       throw LogicException("A non-linear fact was asserted to arithmetic in a linear logic.");
     }
 
-    setIncomplete();
-    d_nlIncomplete = true;
+    if( !options::nlExt() ){
+      setIncomplete();
+      d_nlIncomplete = true;
+    }
 
     ++(d_statistics.d_statUserVariables);
     requestArithVar(vlNode, false, false);
@@ -1416,7 +1489,11 @@ void TheoryArithPrivate::setupDivLike(const Variable& v){
   Assert(v.isDivLike());
 
   if(getLogicInfo().isLinear()){
-    throw LogicException("A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic;\nif you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.");
+    throw LogicException(
+        "A non-linear fact (involving div/mod/divisibility) was asserted to "
+        "arithmetic in a linear logic;\nif you only use division (or modulus) "
+        "by a constant value, or if you only use the divisibility-by-k "
+        "predicate, try using the --rewrite-divk option.");
   }
 
   Node vnode = v.getNode();
@@ -1432,7 +1509,8 @@ void TheoryArithPrivate::setupDivLike(const Variable& v){
   case DIVISION:
   case INTS_DIVISION:
   case INTS_MODULUS:
-    lem = definingIteForDivLike(vnode);
+    // these should be removed during expand definitions
+    Assert( false );
     break;
   case DIVISION_TOTAL:
     lem = axiomIteForTotalDivision(vnode);
@@ -1452,40 +1530,6 @@ void TheoryArithPrivate::setupDivLike(const Variable& v){
   }
 }
 
-Node TheoryArithPrivate::definingIteForDivLike(Node divLike){
-  Kind k = divLike.getKind();
-  Assert(k == DIVISION || k == INTS_DIVISION || k == INTS_MODULUS);
-  // (for all ((n Real) (d Real))
-  //  (=
-  //   (DIVISION n d)
-  //   (ite (= d 0)
-  //    (APPLY [div_0_skolem_function] n)
-  //    (DIVISION_TOTAL x y))))
-
-  Polynomial n = Polynomial::parsePolynomial(divLike[0]);
-  Polynomial d = Polynomial::parsePolynomial(divLike[1]);
-
-  NodeManager* currNM = NodeManager::currentNM();
-  Node dEq0 = currNM->mkNode(EQUAL, d.getNode(), mkRationalNode(0));
-
-  Kind kTotal = (k == DIVISION) ? DIVISION_TOTAL :
-    (k == INTS_DIVISION) ? INTS_DIVISION_TOTAL : INTS_MODULUS_TOTAL;
-
-  Node by0Func = (k == DIVISION) ?  getRealDivideBy0Func():
-    (k == INTS_DIVISION) ? getIntDivideBy0Func() : getIntModulusBy0Func();
-
-
-  Debug("arith::div") << divLike << endl;
-  Debug("arith::div") << by0Func << endl;
-
-  Node divTotal = currNM->mkNode(kTotal, n.getNode(), d.getNode());
-  Node divZero = currNM->mkNode(APPLY_UF, by0Func, n.getNode());
-
-  Node defining = divLike.eqNode(dEq0.iteNode( divZero, divTotal));
-
-  return defining;
-}
-
 Node TheoryArithPrivate::axiomIteForTotalDivision(Node div_tot){
   Assert(div_tot.getKind() == DIVISION_TOTAL);
 
@@ -1512,19 +1556,7 @@ Node TheoryArithPrivate::axiomIteForTotalIntDivision(Node int_div_like){
   Kind k = int_div_like.getKind();
   Assert(k == INTS_DIVISION_TOTAL || k == INTS_MODULUS_TOTAL);
 
-  // (for all ((m Int) (n Int))
-  //   (=> (distinct n 0)
-  //       (let ((q (div m n)) (r (mod m n)))
-  //         (and (= m (+ (* n q) r))
-  //              (<= 0 r (- (abs n) 1))))))
-
-  // Updated for div 0 functions
-  // (for all ((m Int) (n Int))
-  //   (let ((q (div m n)) (r (mod m n)))
-  //     (ite (= n 0)
-  //          (and (= q (div_0_func m)) (= r (mod_0_func m)))
-  //          (and (= m (+ (* n q) r))
-  //               (<= 0 r (- (abs n) 1)))))))
+  // See the discussion of integer division axioms above.
 
   Polynomial n = Polynomial::parsePolynomial(int_div_like[0]);
   Polynomial d = Polynomial::parsePolynomial(int_div_like[1]);
@@ -1637,6 +1669,10 @@ void TheoryArithPrivate::setupAtom(TNode atom) {
 
 void TheoryArithPrivate::preRegisterTerm(TNode n) {
   Debug("arith::preregister") <<"begin arith::preRegisterTerm("<< n <<")"<< endl;
+  
+  if( options::nlExt() ){
+    d_containing.getExtTheory()->registerTermRec( n );
+  }
 
   try {
     if(isRelationOperator(n.getKind())){
@@ -3456,7 +3492,14 @@ bool TheoryArithPrivate::hasFreshArithLiteral(Node n) const{
 void TheoryArithPrivate::check(Theory::Effort effortLevel){
   Assert(d_currentPropagationList.empty());
 
-  if(done() && !Theory::fullEffort(effortLevel) && ( d_qflraStatus == Result::SAT) ){
+  if(done() && effortLevel < Theory::EFFORT_FULL && ( d_qflraStatus == Result::SAT) ){
+    return;
+  }
+
+  if(effortLevel == Theory::EFFORT_LAST_CALL){
+    if( options::nlExt() ){
+      d_nonlinearExtension->check( effortLevel );
+    }
     return;
   }
 
@@ -3772,6 +3815,13 @@ void TheoryArithPrivate::check(Theory::Effort effortLevel){
       }
     }
   }//if !emmittedConflictOrSplit && fullEffort(effortLevel) && !hasIntegerModel()
+
+  if(!emmittedConflictOrSplit && effortLevel>=Theory::EFFORT_FULL){
+    if( options::nlExt() ){
+      d_nonlinearExtension->check( effortLevel );
+    }
+  }
+
   if(Theory::fullEffort(effortLevel) && d_nlIncomplete){
     // TODO this is total paranoia
     setIncomplete();
@@ -3947,7 +3997,13 @@ void TheoryArithPrivate::debugPrintModel(std::ostream& out) const{
   }
 }
 
-
+bool TheoryArithPrivate::needsCheckLastEffort() {
+  if( options::nlExt() ){
+    return d_nonlinearExtension->needsCheckLastEffort();
+  }else{
+    return false;
+  }
+}
 
 Node TheoryArithPrivate::explain(TNode n) {
 
@@ -3978,6 +4034,28 @@ Node TheoryArithPrivate::explain(TNode n) {
   }
 }
 
+bool TheoryArithPrivate::getCurrentSubstitution( int effort, std::vector< Node >& vars, std::vector< Node >& subs, std::map< Node, std::vector< Node > >& exp ) {
+  if( options::nlExt() ){
+    return d_nonlinearExtension->getCurrentSubstitution( effort, vars, subs, exp );
+  }else{
+    return false;
+  }
+}
+
+bool TheoryArithPrivate::isExtfReduced(int effort, Node n, Node on,
+                                       std::vector<Node>& exp) {
+  if (options::nlExt()) {
+    std::pair<bool, Node> reduced =
+        d_nonlinearExtension->isExtfReduced(effort, n, on, exp);
+    if (!reduced.second.isNull()) {
+      exp.clear();
+      exp.push_back(reduced.second);
+    }
+    return reduced.first;
+  } else {
+    return false;  // d_containing.isExtfReduced( effort, n, on );
+  }
+}
 
 void TheoryArithPrivate::propagate(Theory::Effort e) {
   // This uses model values for safety. Disable for now.
@@ -4043,95 +4121,71 @@ void TheoryArithPrivate::propagate(Theory::Effort e) {
   }
 }
 
-DeltaRational TheoryArithPrivate::getDeltaValue(TNode n) const throw (DeltaRationalException, ModelException) {
+DeltaRational TheoryArithPrivate::getDeltaValue(TNode term) const
+    throw(DeltaRationalException, ModelException) {
   AlwaysAssert(d_qflraStatus != Result::SAT_UNKNOWN);
-  Debug("arith::value") << n << std::endl;
+  Debug("arith::value") << term << std::endl;
 
-  switch(n.getKind()) {
+  if (d_partialModel.hasArithVar(term)) {
+    ArithVar var = d_partialModel.asArithVar(term);
+    return d_partialModel.getAssignment(var);
+  }
 
-  case kind::CONST_RATIONAL:
-    return n.getConst<Rational>();
+  switch (Kind kind = term.getKind()) {
+    case kind::CONST_RATIONAL:
+      return term.getConst<Rational>();
 
-  case kind::PLUS: { // 2+ args
-    DeltaRational value(0);
-    for(TNode::iterator i = n.begin(), iend = n.end(); i != iend; ++i) {
-      value = value + getDeltaValue(*i);
+    case kind::PLUS: {  // 2+ args
+      DeltaRational value(0);
+      for (TNode::iterator i = term.begin(), iend = term.end(); i != iend;
+           ++i) {
+        value = value + getDeltaValue(*i);
+      }
+      return value;
     }
-    return value;
-  }
 
-  case kind::MULT: { // 2+ args
-    DeltaRational value(1);
-    unsigned variableParts = 0;
-    for(TNode::iterator i = n.begin(), iend = n.end(); i != iend; ++i) {
-      TNode curr = *i;
-      value = value * getDeltaValue(curr);
-      if(!curr.isConst()){
-        ++variableParts;
+    case kind::NONLINEAR_MULT:
+    case kind::MULT: {  // 2+ args
+      Assert(!isSetup(term));
+      DeltaRational value(1);
+      for (TNode::iterator i = term.begin(), iend = term.end(); i != iend;
+           ++i) {
+        value = value * getDeltaValue(*i);
       }
+      return value;
     }
-    // TODO: This is a bit of a weak check
-    if(isSetup(n)){
-      ArithVar var = d_partialModel.asArithVar(n);
-      const DeltaRational& assign = d_partialModel.getAssignment(var);
-      if(assign != value){
-        throw ModelException(n, "Model disagrees on non-linear term.");
-      }
+    case kind::MINUS: {  // 2 args
+      return getDeltaValue(term[0]) - getDeltaValue(term[1]);
+    }
+    case kind::UMINUS: {  // 1 arg
+      return (-getDeltaValue(term[0]));
     }
-    return value;
-  }
-  case kind::MINUS:{ // 2 args
-    return getDeltaValue(n[0]) - getDeltaValue(n[1]);
-  }
-
-  case kind::UMINUS:{ // 1 arg
-    return (- getDeltaValue(n[0]));
-  }
 
-  case kind::DIVISION:{ // 2 args
-    DeltaRational res = getDeltaValue(n[0]) / getDeltaValue(n[1]);
-    if(isSetup(n)){
-      ArithVar var = d_partialModel.asArithVar(n);
-      if(d_partialModel.getAssignment(var) != res){
-        throw ModelException(n, "Model disagrees on non-linear term.");
-      }
+    case kind::DIVISION: {  // 2 args
+      Assert(!isSetup(term));
+      return getDeltaValue(term[0]) / getDeltaValue(term[1]);
     }
-    return res;
-  }
-  case kind::DIVISION_TOTAL:
-  case kind::INTS_DIVISION_TOTAL:
-  case kind::INTS_MODULUS_TOTAL: { // 2 args
-    DeltaRational denom = getDeltaValue(n[1]);
-    if(denom.isZero()){
-      return DeltaRational(0,0);
-    }else{
-      DeltaRational numer = getDeltaValue(n[0]);
-      DeltaRational res;
-      if(n.getKind() == kind::DIVISION_TOTAL){
-        res = numer / denom;
-      }else if(n.getKind() == kind::INTS_DIVISION_TOTAL){
-        res = Rational(numer.euclidianDivideQuotient(denom));
-      }else{
-        Assert(n.getKind() == kind::INTS_MODULUS_TOTAL);
-        res = Rational(numer.euclidianDivideRemainder(denom));
+    case kind::DIVISION_TOTAL:
+    case kind::INTS_DIVISION_TOTAL:
+    case kind::INTS_MODULUS_TOTAL: {  // 2 args
+      Assert(!isSetup(term));
+      DeltaRational denominator = getDeltaValue(term[1]);
+      if (denominator.isZero()) {
+        return DeltaRational(0, 0);
       }
-      if(isSetup(n)){
-        ArithVar var = d_partialModel.asArithVar(n);
-        if(d_partialModel.getAssignment(var) != res){
-          throw ModelException(n, "Model disagrees on non-linear term.");
-        }
+      DeltaRational numerator = getDeltaValue(term[0]);
+      if (kind == kind::DIVISION_TOTAL) {
+        return numerator / denominator;
+      } else if (kind == kind::INTS_DIVISION_TOTAL) {
+        return Rational(numerator.euclidianDivideQuotient(denominator));
+      } else {
+        Assert(kind == kind::INTS_MODULUS_TOTAL);
+        return Rational(numerator.euclidianDivideRemainder(denominator));
       }
-      return res;
     }
-  }
 
-  default:
-    if(isSetup(n)){
-      ArithVar var = d_partialModel.asArithVar(n);
-      return d_partialModel.getAssignment(var);
-    }else{
-      throw ModelException(n, "Expected a setup node.");
-    }
+    default:
+      throw ModelException(term, "No model assignment.");
   }
 }
 
@@ -4193,7 +4247,7 @@ Rational TheoryArithPrivate::deltaValueForTotalOrder() const{
   return belowMin;
 }
 
-void TheoryArithPrivate::collectModelInfo( TheoryModel* m, bool fullModel ){
+void TheoryArithPrivate::collectModelInfo( TheoryModel* m ){
   AlwaysAssert(d_qflraStatus ==  Result::SAT);
   //AlwaysAssert(!d_nlIncomplete, "Arithmetic solver cannot currently produce models for input with nonlinear arithmetic constraints");
 
diff --git a/src/theory/arith/theory_arith_private.h b/src/theory/arith/theory_arith_private.h
index ed7efe0..b2471c5 100644
--- a/src/theory/arith/theory_arith_private.h
+++ b/src/theory/arith/theory_arith_private.h
@@ -2,9 +2,9 @@
 /*! \file theory_arith_private.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Martin Brain, Morgan Deters
+ **   Tim King, Martin Brain, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -83,6 +83,8 @@ namespace inferbounds {
 }
 class InferBoundsResult;
 
+class NonlinearExtension;
+
 /**
  * Implementation of QF_LRA.
  * Based upon:
@@ -127,8 +129,6 @@ private:
   /** Static learner. */
   ArithStaticLearner d_learner;
 
-  /** quantifiers engine */
-  QuantifiersEngine * d_quantEngine;
   //std::vector<ArithVar> d_pool;
 public:
   void releaseArithVar(ArithVar v);
@@ -373,6 +373,9 @@ private:
   FCSimplexDecisionProcedure d_fcSimplex;
   SumOfInfeasibilitiesSPD d_soiSimplex;
   AttemptSolutionSDP d_attemptSolSimplex;
+  
+  /** non-linear algebraic approach */
+  NonlinearExtension * d_nonlinearExtension;
 
   bool solveRealRelaxation(Theory::Effort effortLevel);
 
@@ -398,20 +401,21 @@ private:
     virtual ~ModelException() throw ();
   };
 
-  /** Internal model value for the node */
-  DeltaRational getDeltaValue(TNode n) const throw (DeltaRationalException, ModelException);
-
-  /** Uninterpretted function symbol for use when interpreting
-   * division by zero.
+  /**
+   * Computes the delta rational value of a term from the current partial
+   * model. This returns the delta value assignment to the term if it is in the
+   * partial model. Otherwise, this is computed recursively for arithmetic terms
+   * from each subterm.
+   *
+   * This throws a DeltaRationalException if the value cannot be represented as
+   * a DeltaRational. This throws a ModelException if there is a term is not in
+   * the partial model and is not a theory of arithmetic term.
+   *
+   * precondition: The linear abstraction of the nodes must be satisfiable.
    */
-  Node d_realDivideBy0Func;
-  Node d_intDivideBy0Func;
-  Node d_intModulusBy0Func;
-  Node getRealDivideBy0Func();
-  Node getIntDivideBy0Func();
-  Node getIntModulusBy0Func();
+  DeltaRational getDeltaValue(TNode term) const
+      throw(DeltaRationalException, ModelException);
 
-  Node definingIteForDivLike(Node divLike);
   Node axiomIteForTotalDivision(Node div_tot);
   Node axiomIteForTotalIntDivision(Node int_div_like);
 
@@ -432,13 +436,15 @@ public:
   void setQuantifiersEngine(QuantifiersEngine* qe);
 
   void check(Theory::Effort e);
+  bool needsCheckLastEffort();
   void propagate(Theory::Effort e);
   Node explain(TNode n);
-
+  bool getCurrentSubstitution( int effort, std::vector< Node >& vars, std::vector< Node >& subs, std::map< Node, std::vector< Node > >& exp );
+  bool isExtfReduced( int effort, Node n, Node on, std::vector< Node >& exp );
 
   Rational deltaValueForTotalOrder() const;
 
-  void collectModelInfo( TheoryModel* m, bool fullModel );
+  void collectModelInfo( TheoryModel* m );
 
   void shutdown(){ }
 
@@ -842,8 +848,16 @@ private:
    * semantics.  Needed to deal with partial function "mod".
    */
   Node d_modZero;
-
-
+  
+  /** 
+   *  Maps for Skolems for to-integer, real/integer div-by-k.
+   *  Introduced during ppRewriteTerms.
+   */
+  typedef context::CDHashMap< Node, Node, NodeHashFunction > NodeMap;
+  NodeMap d_to_int_skolem;
+  NodeMap d_div_skolem;
+  NodeMap d_int_div_skolem;
+  
 };/* class TheoryArithPrivate */
 
 }/* CVC4::theory::arith namespace */
diff --git a/src/theory/arith/theory_arith_private_forward.h b/src/theory/arith/theory_arith_private_forward.h
index ffab816..f52a80e 100644
--- a/src/theory/arith/theory_arith_private_forward.h
+++ b/src/theory/arith/theory_arith_private_forward.h
@@ -2,9 +2,9 @@
 /*! \file theory_arith_private_forward.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/theory_arith_type_rules.h b/src/theory/arith/theory_arith_type_rules.h
index 071ec93..e13dee0 100644
--- a/src/theory/arith/theory_arith_type_rules.h
+++ b/src/theory/arith/theory_arith_type_rules.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Dejan Jovanovic, Christopher L. Conway
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/type_enumerator.h b/src/theory/arith/type_enumerator.h
index 36b7b54..5d6b936 100644
--- a/src/theory/arith/type_enumerator.h
+++ b/src/theory/arith/type_enumerator.h
@@ -2,9 +2,9 @@
 /*! \file type_enumerator.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Andrew Reynolds
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/array_info.cpp b/src/theory/arrays/array_info.cpp
index c63d528..fc86e00 100644
--- a/src/theory/arrays/array_info.cpp
+++ b/src/theory/arrays/array_info.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Clark Barrett, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/array_info.h b/src/theory/arrays/array_info.h
index 11455a9..cc5fddf 100644
--- a/src/theory/arrays/array_info.h
+++ b/src/theory/arrays/array_info.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Clark Barrett, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/array_proof_reconstruction.cpp b/src/theory/arrays/array_proof_reconstruction.cpp
index 5ecccdd..471084d 100644
--- a/src/theory/arrays/array_proof_reconstruction.cpp
+++ b/src/theory/arrays/array_proof_reconstruction.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Guy Katz
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/array_proof_reconstruction.h b/src/theory/arrays/array_proof_reconstruction.h
index ef3e09a..c5ba215 100644
--- a/src/theory/arrays/array_proof_reconstruction.h
+++ b/src/theory/arrays/array_proof_reconstruction.h
@@ -2,9 +2,9 @@
 /*! \file array_proof_reconstruction.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Guy Katz
+ **   Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/static_fact_manager.cpp b/src/theory/arrays/static_fact_manager.cpp
index da1d7bb..a3f1ae9 100644
--- a/src/theory/arrays/static_fact_manager.cpp
+++ b/src/theory/arrays/static_fact_manager.cpp
@@ -2,9 +2,9 @@
 /*! \file static_fact_manager.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Clark Barrett, Tim King
+ **   Clark Barrett, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/static_fact_manager.h b/src/theory/arrays/static_fact_manager.h
index d40f56e..53d9358 100644
--- a/src/theory/arrays/static_fact_manager.h
+++ b/src/theory/arrays/static_fact_manager.h
@@ -2,9 +2,9 @@
 /*! \file static_fact_manager.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Clark Barrett, Tim King, Morgan Deters
+ **   Clark Barrett, Paul Meng, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/theory_arrays.cpp b/src/theory/arrays/theory_arrays.cpp
index f9b97d5..bde88ab 100644
--- a/src/theory/arrays/theory_arrays.cpp
+++ b/src/theory/arrays/theory_arrays.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Clark Barrett, Morgan Deters, Guy Katz
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -354,10 +354,11 @@ Theory::PPAssertStatus TheoryArrays::ppAssert(TNode in, SubstitutionMap& outSubs
     case kind::NOT:
     {
       d_ppFacts.push_back(in);
-      Assert(in[0].getKind() == kind::EQUAL );
-      Node a = in[0][0];
-      Node b = in[0][1];
-      d_ppEqualityEngine.assertEquality(in[0], false, in);
+      if (in[0].getKind() == kind::EQUAL ) {
+        Node a = in[0][0];
+        Node b = in[0][1];
+        d_ppEqualityEngine.assertEquality(in[0], false, in);
+      }
       break;
     }
     default:
@@ -683,12 +684,6 @@ void TheoryArrays::preRegisterTermInternal(TNode node)
     else {
       d_equalityEngine.addTerm(node);
     }
-    // Maybe it's a predicate
-    // TODO: remove this or keep it if we allow Boolean elements in arrays.
-    if (node.getType().isBoolean()) {
-      // Get triggered for both equal and dis-equal
-      d_equalityEngine.addTriggerPredicate(node);
-    }
 
     Assert(d_equalityEngine.getRepresentative(store) == store);
     d_infoMap.addIndex(store, node[1]);
@@ -816,6 +811,12 @@ void TheoryArrays::preRegisterTermInternal(TNode node)
 void TheoryArrays::preRegisterTerm(TNode node)
 {
   preRegisterTermInternal(node);
+  // If we have a select from an array of Bools, mark it as a term that can be propagated.
+  // Note: do this here instead of in preRegisterTermInternal to prevent internal select
+  // terms from being propagated out (as this results in an assertion failure).
+  if (node.getKind() == kind::SELECT && node.getType().isBoolean()) {
+    d_equalityEngine.addTriggerPredicate(node);
+  }
 }
 
 
@@ -1037,7 +1038,7 @@ void TheoryArrays::computeCareGraph()
 /////////////////////////////////////////////////////////////////////////////
 
 
-void TheoryArrays::collectModelInfo( TheoryModel* m, bool fullModel )
+void TheoryArrays::collectModelInfo( TheoryModel* m )
 {
   set<Node> termSet;
 
@@ -1698,7 +1699,12 @@ void TheoryArrays::mergeArrays(TNode a, TNode b)
 
   Node n;
   while (true) {
-    Trace("arrays-merge") << spaces(getSatContext()->getLevel()) << "Arrays::merge: " << a << "," << b << ")\n";
+    // Normally, a is its own representative, but it's possible for a to have
+    // been merged with another array after it got queued up by the equality engine,
+    // so we take its representative to be safe.
+    a = d_equalityEngine.getRepresentative(a);
+    Assert(d_equalityEngine.getRepresentative(b) == a);
+    Trace("arrays-merge") << spaces(getSatContext()->getLevel()) << "Arrays::merge: (" << a << ", " << b << ")\n";
 
     if (options::arraysLazyRIntro1() && !options::arraysWeakEquivalence()) {
       checkRIntro1(a, b);
@@ -1748,18 +1754,20 @@ void TheoryArrays::mergeArrays(TNode a, TNode b)
       }
     }
 
-    // If a and b have different default values associated with their mayequal equivalence classes,
-    // things get complicated - disallow this for now.  -Clark
     TNode mayRepA = d_mayEqualEqualityEngine.getRepresentative(a);
     TNode mayRepB = d_mayEqualEqualityEngine.getRepresentative(b);
 
+    // If a and b have different default values associated with their mayequal equivalence classes,
+    // things get complicated.  Similarly, if two mayequal equivalence classes have different
+    // constant representatives, it's not clear what to do. - disallow these cases for now.  -Clark
     DefValMap::iterator it = d_defValues.find(mayRepA);
     DefValMap::iterator it2 = d_defValues.find(mayRepB);
     TNode defValue;
 
     if (it != d_defValues.end()) {
       defValue = (*it).second;
-      if (it2 != d_defValues.end() && (defValue != (*it2).second)) {
+      if ((it2 != d_defValues.end() && (defValue != (*it2).second)) ||
+          (mayRepA.isConst() && mayRepB.isConst() && mayRepA != mayRepB)) {
         throw LogicException("Array theory solver does not yet support write-chains connecting two different constant arrays");
       }
     }
diff --git a/src/theory/arrays/theory_arrays.h b/src/theory/arrays/theory_arrays.h
index a1d2753..7e88317 100644
--- a/src/theory/arrays/theory_arrays.h
+++ b/src/theory/arrays/theory_arrays.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Clark Barrett, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -246,7 +246,7 @@ class TheoryArrays : public Theory {
 
   public:
 
-  void collectModelInfo(TheoryModel* m, bool fullModel);
+  void collectModelInfo(TheoryModel* m);
 
   /////////////////////////////////////////////////////////////////////////////
   // NOTIFICATIONS
@@ -309,7 +309,6 @@ class TheoryArrays : public Theory {
       Debug("arrays::propagate") << spaces(d_arrays.getSatContext()->getLevel()) << "NotifyClass::eqNotifyTriggerTermEquality(" << t1 << ", " << t2 << ", " << (value ? "true" : "false") << ")" << std::endl;
       if (value) {
         if (t1.getType().isArray()) {
-          d_arrays.mergeArrays(t1, t2);
           if (!d_arrays.isShared(t1) || !d_arrays.isShared(t2)) {
             return true;
           }
@@ -334,7 +333,11 @@ class TheoryArrays : public Theory {
 
     void eqNotifyNewClass(TNode t) { }
     void eqNotifyPreMerge(TNode t1, TNode t2) { }
-    void eqNotifyPostMerge(TNode t1, TNode t2) { }
+    void eqNotifyPostMerge(TNode t1, TNode t2) {
+      if (t1.getType().isArray()) {
+        d_arrays.mergeArrays(t1, t2);
+      }
+    }
     void eqNotifyDisequal(TNode t1, TNode t2, TNode reason) { }
   };
 
diff --git a/src/theory/arrays/theory_arrays_rewriter.cpp b/src/theory/arrays/theory_arrays_rewriter.cpp
index f1cf1d3..c9ceae8 100644
--- a/src/theory/arrays/theory_arrays_rewriter.cpp
+++ b/src/theory/arrays/theory_arrays_rewriter.cpp
@@ -2,9 +2,9 @@
 /*! \file theory_arrays_rewriter.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/theory_arrays_rewriter.h b/src/theory/arrays/theory_arrays_rewriter.h
index e63c224..4a05f37 100644
--- a/src/theory/arrays/theory_arrays_rewriter.h
+++ b/src/theory/arrays/theory_arrays_rewriter.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Clark Barrett, Morgan Deters, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/theory_arrays_type_rules.h b/src/theory/arrays/theory_arrays_type_rules.h
index d817fb1..4d31121 100644
--- a/src/theory/arrays/theory_arrays_type_rules.h
+++ b/src/theory/arrays/theory_arrays_type_rules.h
@@ -2,9 +2,9 @@
 /*! \file theory_arrays_type_rules.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Clark Barrett, Guy Katz
+ **   Morgan Deters, Clark Barrett, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -37,6 +37,7 @@ struct ArraySelectTypeRule {
       }
       TypeNode indexType = n[1].getType(check);
       if(!indexType.isComparableTo(arrayType.getArrayIndexType())){
+      //if(!indexType.isSubtypeOf(arrayType.getArrayIndexType())){  //FIXME:typing
         throw TypeCheckingExceptionPrivate(n, "array select not indexed with correct type for array");
       }
     }
@@ -56,9 +57,11 @@ struct ArrayStoreTypeRule {
         TypeNode indexType = n[1].getType(check);
         TypeNode valueType = n[2].getType(check);
         if(!indexType.isComparableTo(arrayType.getArrayIndexType())){
+        //if(!indexType.isSubtypeOf(arrayType.getArrayIndexType())){  //FIXME:typing
           throw TypeCheckingExceptionPrivate(n, "array store not indexed with correct type for array");
         }
-        if(!valueType.isComparableTo(arrayType.getArrayConstituentType())){
+        if(!valueType.isComparableTo(arrayType.getArrayConstituentType())){  
+        //if(!valueType.isSubtypeOf(arrayType.getArrayConstituentType())){  //FIXME:typing
           Debug("array-types") << "array type: "<< arrayType.getArrayConstituentType() << std::endl;
           Debug("array-types") << "value types: " << valueType << std::endl;
           throw TypeCheckingExceptionPrivate(n, "array store not assigned with correct type for array");
diff --git a/src/theory/arrays/type_enumerator.h b/src/theory/arrays/type_enumerator.h
index 0208fe5..4314fad 100644
--- a/src/theory/arrays/type_enumerator.h
+++ b/src/theory/arrays/type_enumerator.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Clark Barrett, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -41,7 +41,7 @@ class ArrayEnumerator : public TypeEnumeratorBase<ArrayEnumerator> {
 
 public:
 
-  ArrayEnumerator(TypeNode type, TypeEnumeratorProperties * tep = NULL) throw(AssertionException) :
+  ArrayEnumerator(TypeNode type, TypeEnumeratorProperties * tep = NULL) :
     TypeEnumeratorBase<ArrayEnumerator>(type),
     d_tep(tep),
     d_index(type.getArrayIndexType(), tep),
@@ -87,7 +87,7 @@ public:
     }
   }
 
-  Node operator*() throw(NoMoreValuesException) {
+  Node operator*() {
     if (d_finished) {
       throw NoMoreValuesException(getType());
     }
@@ -101,7 +101,7 @@ public:
     return n;
   }
 
-  ArrayEnumerator& operator++() throw() {
+  ArrayEnumerator& operator++() {
     Trace("array-type-enum") << "operator++ called, **this = " << **this << std::endl;
 
     if (d_finished) {
diff --git a/src/theory/arrays/union_find.cpp b/src/theory/arrays/union_find.cpp
index 7899e85..73bedf6 100644
--- a/src/theory/arrays/union_find.cpp
+++ b/src/theory/arrays/union_find.cpp
@@ -2,9 +2,9 @@
 /*! \file union_find.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arrays/union_find.h b/src/theory/arrays/union_find.h
index 5d59e8d..e896784 100644
--- a/src/theory/arrays/union_find.h
+++ b/src/theory/arrays/union_find.h
@@ -2,9 +2,9 @@
 /*! \file union_find.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/arith/theory_arith_private_forward.h b/src/theory/assertion.cpp
similarity index 56%
copy from src/theory/arith/theory_arith_private_forward.h
copy to src/theory/assertion.cpp
index ffab816..8c9de80 100644
--- a/src/theory/arith/theory_arith_private_forward.h
+++ b/src/theory/assertion.cpp
@@ -1,31 +1,27 @@
 /*********************                                                        */
-/*! \file theory_arith_private_forward.h
+/*! \file assertion.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
  **
- ** \brief [[ Add one-line brief description here ]]
+ ** \brief Theory assertions.
  **
- ** [[ Add lengthier description here ]]
- ** \todo document this file
+ ** Theory assertions.
  **/
 
-
-#include "cvc4_private.h"
-
-#pragma once
+#include "theory/assertion.h"
 
 namespace CVC4 {
 namespace theory {
-namespace arith {
 
-class TheoryArithPrivate;
+std::ostream& operator<<(std::ostream& out, const Assertion& a) {
+  return out << a.assertion;
+}
 
-}/* CVC4::theory::arith namespace */
 }/* CVC4::theory namespace */
 }/* CVC4 namespace */
diff --git a/src/theory/assertion.h b/src/theory/assertion.h
new file mode 100644
index 0000000..2a5e71a
--- /dev/null
+++ b/src/theory/assertion.h
@@ -0,0 +1,52 @@
+/*********************                                                        */
+/*! \file assertion.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The representation of the assertions sent to theories.
+ **
+ ** The representation of the assertions sent to theories.
+ **/
+
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__ASSERTION_H
+#define __CVC4__THEORY__ASSERTION_H
+
+#include "expr/node.h"
+
+namespace CVC4 {
+namespace theory {
+
+/** Information about an assertion for the theories. */
+struct Assertion {
+  /** The assertion expression. */
+  const Node assertion;
+
+  /** Has this assertion been preregistered with this theory. */
+  const bool isPreregistered;
+
+  Assertion(TNode assertion, bool isPreregistered)
+      : assertion(assertion), isPreregistered(isPreregistered) {}
+
+  /** Convert the assertion to a TNode. */
+  operator TNode() const { return assertion; }
+
+  /** Convert the assertion to a Node. */
+  operator Node() const { return assertion; }
+
+}; /* struct Assertion */
+
+std::ostream& operator<<(std::ostream& out, const Assertion& a);
+
+}/* CVC4::theory namespace */
+}/* CVC4 namespace */
+
+#endif /* __CVC4__THEORY__ASSERTION_H */
diff --git a/src/theory/atom_requests.cpp b/src/theory/atom_requests.cpp
index e3f30cc..5605a67 100644
--- a/src/theory/atom_requests.cpp
+++ b/src/theory/atom_requests.cpp
@@ -2,9 +2,9 @@
 /*! \file atom_requests.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Tim King
+ **   Dejan Jovanovic, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/atom_requests.h b/src/theory/atom_requests.h
index 7f61941..f36d23d 100644
--- a/src/theory/atom_requests.h
+++ b/src/theory/atom_requests.h
@@ -2,9 +2,9 @@
 /*! \file atom_requests.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Tim King
+ **   Dejan Jovanovic, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/booleans/circuit_propagator.cpp b/src/theory/booleans/circuit_propagator.cpp
index 8e91165..11b6185 100644
--- a/src/theory/booleans/circuit_propagator.cpp
+++ b/src/theory/booleans/circuit_propagator.cpp
@@ -2,9 +2,9 @@
 /*! \file circuit_propagator.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Tim King
+ **   Dejan Jovanovic, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/booleans/circuit_propagator.h b/src/theory/booleans/circuit_propagator.h
index 5a6e462..03c811e 100644
--- a/src/theory/booleans/circuit_propagator.h
+++ b/src/theory/booleans/circuit_propagator.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Dejan Jovanovic, Clark Barrett
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/booleans/theory_bool.cpp b/src/theory/booleans/theory_bool.cpp
index b0f2efc..afe6734 100644
--- a/src/theory/booleans/theory_bool.cpp
+++ b/src/theory/booleans/theory_bool.cpp
@@ -2,9 +2,9 @@
 /*! \file theory_bool.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Dejan Jovanovic, Tim King
+ **   Morgan Deters, Dejan Jovanovic, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -66,7 +66,6 @@ void TheoryBool::check(Effort level) {
     // Get all the assertions
     Assertion assertion = get();
     TNode fact = assertion.assertion;
-    Trace("ajr-bool") << "Assert : " << fact << std::endl;
   }
   if( Theory::fullEffort(level) ){
   }
diff --git a/src/theory/booleans/theory_bool.h b/src/theory/booleans/theory_bool.h
index 353143c..9d59666 100644
--- a/src/theory/booleans/theory_bool.h
+++ b/src/theory/booleans/theory_bool.h
@@ -2,9 +2,9 @@
 /*! \file theory_bool.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Dejan Jovanovic
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/booleans/theory_bool_rewriter.cpp b/src/theory/booleans/theory_bool_rewriter.cpp
index 32f69e0..b5f7e37 100644
--- a/src/theory/booleans/theory_bool_rewriter.cpp
+++ b/src/theory/booleans/theory_bool_rewriter.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Dejan Jovanovic, Kshitij Bansal
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/booleans/theory_bool_rewriter.h b/src/theory/booleans/theory_bool_rewriter.h
index b7512ad..d5b2aba 100644
--- a/src/theory/booleans/theory_bool_rewriter.h
+++ b/src/theory/booleans/theory_bool_rewriter.h
@@ -2,9 +2,9 @@
 /*! \file theory_bool_rewriter.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Dejan Jovanovic, Tim King
+ **   Morgan Deters, Dejan Jovanovic, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/booleans/theory_bool_type_rules.h b/src/theory/booleans/theory_bool_type_rules.h
index 050796e..7de38b6 100644
--- a/src/theory/booleans/theory_bool_type_rules.h
+++ b/src/theory/booleans/theory_bool_type_rules.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Dejan Jovanovic, Christopher L. Conway
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/booleans/type_enumerator.h b/src/theory/booleans/type_enumerator.h
index 3949d15..b0759cb 100644
--- a/src/theory/booleans/type_enumerator.h
+++ b/src/theory/booleans/type_enumerator.h
@@ -2,9 +2,9 @@
 /*! \file type_enumerator.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Andrew Reynolds
+ **   Morgan Deters, Paul Meng, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -39,7 +39,7 @@ public:
            type.getConst<TypeConstant>() == BOOLEAN_TYPE);
   }
 
-  Node operator*() throw(NoMoreValuesException) {
+  Node operator*() {
     switch(d_value) {
     case FALSE:
       return NodeManager::currentNM()->mkConst(false);
diff --git a/src/theory/builtin/kinds b/src/theory/builtin/kinds
index c0f9558..0ebebf1 100644
--- a/src/theory/builtin/kinds
+++ b/src/theory/builtin/kinds
@@ -302,7 +302,7 @@ operator SEXPR 0: "a symbolic expression (any arity)"
 
 operator LAMBDA 2 "a lambda expression; first parameter is a BOUND_VAR_LIST, second is lambda body"
 
-parameterized CHAIN CHAIN_OP 2: "chained operator (N-ary), turned into a conjuction of binary applications of the operator on adjoining parameters; first parameter is a CHAIN_OP representing a binary operator, rest are arguments to that operator"
+parameterized CHAIN CHAIN_OP 2: "chained operator (N-ary), turned into a conjunction of binary applications of the operator on adjoining parameters; first parameter is a CHAIN_OP representing a binary operator, rest are arguments to that operator"
 constant CHAIN_OP \
     ::CVC4::Chain \
     ::CVC4::ChainHashFunction \
diff --git a/src/theory/builtin/theory_builtin.cpp b/src/theory/builtin/theory_builtin.cpp
index cea66da..5f3f1c8 100644
--- a/src/theory/builtin/theory_builtin.cpp
+++ b/src/theory/builtin/theory_builtin.cpp
@@ -2,9 +2,9 @@
 /*! \file theory_builtin.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/builtin/theory_builtin.h b/src/theory/builtin/theory_builtin.h
index 205db5b..cfc5927 100644
--- a/src/theory/builtin/theory_builtin.h
+++ b/src/theory/builtin/theory_builtin.h
@@ -2,9 +2,9 @@
 /*! \file theory_builtin.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/builtin/theory_builtin_rewriter.cpp b/src/theory/builtin/theory_builtin_rewriter.cpp
index a2fb3f3..32b35df 100644
--- a/src/theory/builtin/theory_builtin_rewriter.cpp
+++ b/src/theory/builtin/theory_builtin_rewriter.cpp
@@ -2,9 +2,9 @@
 /*! \file theory_builtin_rewriter.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Dejan Jovanovic, Tim King
+ **   Morgan Deters, Dejan Jovanovic, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/builtin/theory_builtin_rewriter.h b/src/theory/builtin/theory_builtin_rewriter.h
index 9ac2590..8ca2c53 100644
--- a/src/theory/builtin/theory_builtin_rewriter.h
+++ b/src/theory/builtin/theory_builtin_rewriter.h
@@ -2,9 +2,9 @@
 /*! \file theory_builtin_rewriter.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Dejan Jovanovic, Tim King
+ **   Morgan Deters, Dejan Jovanovic, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/builtin/theory_builtin_type_rules.h b/src/theory/builtin/theory_builtin_type_rules.h
index 85adfb4..7f86c7d 100644
--- a/src/theory/builtin/theory_builtin_type_rules.h
+++ b/src/theory/builtin/theory_builtin_type_rules.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Dejan Jovanovic, Christopher L. Conway
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/builtin/type_enumerator.h b/src/theory/builtin/type_enumerator.h
index 3840bb3..1ab7327 100644
--- a/src/theory/builtin/type_enumerator.h
+++ b/src/theory/builtin/type_enumerator.h
@@ -2,9 +2,9 @@
 /*! \file type_enumerator.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Andrew Reynolds, Tim King
+ **   Morgan Deters, Andrew Reynolds, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -35,7 +35,7 @@ class UninterpretedSortEnumerator : public TypeEnumeratorBase<UninterpretedSortE
   Integer d_fixed_bound;
 public:
 
-  UninterpretedSortEnumerator(TypeNode type, TypeEnumeratorProperties * tep = NULL) throw(AssertionException) :
+  UninterpretedSortEnumerator(TypeNode type, TypeEnumeratorProperties * tep = NULL) :
     TypeEnumeratorBase<UninterpretedSortEnumerator>(type),
     d_count(0) {
     Assert(type.getKind() == kind::SORT_TYPE);
@@ -53,7 +53,7 @@ public:
     }
   }
 
-  Node operator*() throw(NoMoreValuesException) {
+  Node operator*() {
     if(isFinished()) {
       throw NoMoreValuesException(getType());
     }
diff --git a/src/theory/bv/abstraction.cpp b/src/theory/bv/abstraction.cpp
index dc55204..4ef4845 100644
--- a/src/theory/bv/abstraction.cpp
+++ b/src/theory/bv/abstraction.cpp
@@ -2,9 +2,9 @@
 /*! \file abstraction.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Tim King, Morgan Deters
+ **   Liana Hadarean, Guy Katz, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/abstraction.h b/src/theory/bv/abstraction.h
index 5d48b92..ed4b8ae 100644
--- a/src/theory/bv/abstraction.h
+++ b/src/theory/bv/abstraction.h
@@ -2,9 +2,9 @@
 /*! \file abstraction.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Tim King
+ **   Liana Hadarean, Guy Katz, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/aig_bitblaster.cpp b/src/theory/bv/aig_bitblaster.cpp
index 934e2ff..fad1ea8 100644
--- a/src/theory/bv/aig_bitblaster.cpp
+++ b/src/theory/bv/aig_bitblaster.cpp
@@ -2,9 +2,9 @@
 /*! \file aig_bitblaster.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Tim King, Morgan Deters
+ **   Liana Hadarean, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -232,12 +232,6 @@ Abc_Obj_t* AigBitblaster::bbFormula(TNode node) {
       result = node.getConst<bool>() ? mkTrue<Abc_Obj_t*>() : mkFalse<Abc_Obj_t*>(); 
       break;
     }
-  case kind::VARIABLE:
-  case kind::SKOLEM:
-    {
-      result = mkInput(node);
-      break;
-    }
   case kind::EQUAL:
     {
       if( node[0].getType().isBoolean() ){
@@ -251,8 +245,12 @@ Abc_Obj_t* AigBitblaster::bbFormula(TNode node) {
       //else, continue...
     }
   default:
-    bbAtom(node);
-    result = getBBAtom(node);
+    if( node.isVar() ){
+      result = mkInput(node);
+    }else{
+      bbAtom(node);
+      result = getBBAtom(node);
+    }
   }
 
   cacheAig(node, result);
@@ -315,9 +313,7 @@ void AigBitblaster::makeVariable(TNode node, Bits& bits) {
 Abc_Obj_t* AigBitblaster::mkInput(TNode input) {
   Assert (!hasInput(input));
   Assert(input.getKind() == kind::BITVECTOR_BITOF ||
-         (input.getType().isBoolean() &&
-          (input.getKind() == kind::VARIABLE ||
-           input.getKind() == kind::SKOLEM)));
+         (input.getType().isBoolean() && input.isVar()));
   Abc_Obj_t* aig_input = Abc_NtkCreatePi(currentAigNtk());
   // d_aigCache.insert(std::make_pair(input, aig_input));
   d_nodeToAigInput.insert(std::make_pair(input, aig_input));
diff --git a/src/theory/bv/bitblast_strategies_template.h b/src/theory/bv/bitblast_strategies_template.h
index 3a91069..a93e341 100644
--- a/src/theory/bv/bitblast_strategies_template.h
+++ b/src/theory/bv/bitblast_strategies_template.h
@@ -2,9 +2,9 @@
 /*! \file bitblast_strategies_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Tim King, Morgan Deters
+ **   Liana Hadarean, Tim King, Clark Barrett
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bitblast_utils.h b/src/theory/bv/bitblast_utils.h
index baa85f6..1d69200 100644
--- a/src/theory/bv/bitblast_utils.h
+++ b/src/theory/bv/bitblast_utils.h
@@ -2,9 +2,9 @@
 /*! \file bitblast_utils.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Tim King
+ **   Liana Hadarean, Paul Meng, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bitblaster_template.h b/src/theory/bv/bitblaster_template.h
index aa5ae9c..b6b2e29 100644
--- a/src/theory/bv/bitblaster_template.h
+++ b/src/theory/bv/bitblaster_template.h
@@ -2,9 +2,9 @@
 /*! \file bitblaster_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Tim King, Morgan Deters
+ **   Liana Hadarean, Tim King, Clark Barrett
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -161,7 +161,10 @@ class TLazyBitblaster :  public TBitblaster<Node> {
   AbstractionModule* d_abstraction;
   bool d_emptyNotify;
 
-  context::CDO<bool> d_satSolverFullModel;
+  // The size of the fact queue when we most recently called solve() in the
+  // bit-vector SAT solver. This is the level at which we should have
+  // a full model in the bv SAT solver.
+  context::CDO<int> d_fullModelAssertionLevel;
 
   void addAtom(TNode atom);
   bool hasValue(TNode a);
diff --git a/src/theory/bv/bv_eager_solver.cpp b/src/theory/bv/bv_eager_solver.cpp
index cad59f5..05b314f 100644
--- a/src/theory/bv/bv_eager_solver.cpp
+++ b/src/theory/bv/bv_eager_solver.cpp
@@ -2,9 +2,9 @@
 /*! \file bv_eager_solver.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Tim King
+ **   Liana Hadarean, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_eager_solver.h b/src/theory/bv/bv_eager_solver.h
index 7ac0537..380d063 100644
--- a/src/theory/bv/bv_eager_solver.h
+++ b/src/theory/bv/bv_eager_solver.h
@@ -2,9 +2,9 @@
 /*! \file bv_eager_solver.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Tim King
+ **   Liana Hadarean, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_inequality_graph.cpp b/src/theory/bv/bv_inequality_graph.cpp
index f03d3a6..d0b299d 100644
--- a/src/theory/bv/bv_inequality_graph.cpp
+++ b/src/theory/bv/bv_inequality_graph.cpp
@@ -2,9 +2,9 @@
 /*! \file bv_inequality_graph.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Tim King, Morgan Deters
+ **   Liana Hadarean, Paul Meng, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_inequality_graph.h b/src/theory/bv/bv_inequality_graph.h
index 72f6dbf..f85d8a8 100644
--- a/src/theory/bv/bv_inequality_graph.h
+++ b/src/theory/bv/bv_inequality_graph.h
@@ -2,9 +2,9 @@
 /*! \file bv_inequality_graph.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Tim King
+ **   Liana Hadarean, Tim King, Clark Barrett
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_quick_check.cpp b/src/theory/bv/bv_quick_check.cpp
index 0a9ae81..b347ddc 100644
--- a/src/theory/bv/bv_quick_check.cpp
+++ b/src/theory/bv/bv_quick_check.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_quick_check.h b/src/theory/bv/bv_quick_check.h
index 96f9c24..dcd3f10 100644
--- a/src/theory/bv/bv_quick_check.h
+++ b/src/theory/bv/bv_quick_check.h
@@ -2,9 +2,9 @@
 /*! \file bv_quick_check.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Tim King, Morgan Deters
+ **   Liana Hadarean, Paul Meng, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_subtheory.h b/src/theory/bv/bv_subtheory.h
index 3c5777a..4f074a2 100644
--- a/src/theory/bv/bv_subtheory.h
+++ b/src/theory/bv/bv_subtheory.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Dejan Jovanovic, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_subtheory_algebraic.cpp b/src/theory/bv/bv_subtheory_algebraic.cpp
index 60515b2..c5313b9 100644
--- a/src/theory/bv/bv_subtheory_algebraic.cpp
+++ b/src/theory/bv/bv_subtheory_algebraic.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_subtheory_algebraic.h b/src/theory/bv/bv_subtheory_algebraic.h
index 0e0e021..3730ebc 100644
--- a/src/theory/bv/bv_subtheory_algebraic.h
+++ b/src/theory/bv/bv_subtheory_algebraic.h
@@ -2,9 +2,9 @@
 /*! \file bv_subtheory_algebraic.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Morgan Deters, Tim King
+ **   Liana Hadarean, Paul Meng, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_subtheory_bitblast.cpp b/src/theory/bv/bv_subtheory_bitblast.cpp
index 7b7d383..77e596d 100644
--- a/src/theory/bv/bv_subtheory_bitblast.cpp
+++ b/src/theory/bv/bv_subtheory_bitblast.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Dejan Jovanovic, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_subtheory_bitblast.h b/src/theory/bv/bv_subtheory_bitblast.h
index fe16d27..c9fb811 100644
--- a/src/theory/bv/bv_subtheory_bitblast.h
+++ b/src/theory/bv/bv_subtheory_bitblast.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Dejan Jovanovic, Liana Hadarean, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_subtheory_core.cpp b/src/theory/bv/bv_subtheory_core.cpp
index c59da27..54f454d 100644
--- a/src/theory/bv/bv_subtheory_core.cpp
+++ b/src/theory/bv/bv_subtheory_core.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -238,8 +238,7 @@ void CoreSolver::buildModel() {
     TNode repr = *eqcs_i;
     ++eqcs_i;
 
-    if (repr.getKind() != kind::VARIABLE &&
-        repr.getKind() != kind::SKOLEM &&
+    if (!repr.isVar() &&
         repr.getKind() != kind::CONST_BITVECTOR &&
         !d_bv->isSharedTerm(repr)) {
       continue;
diff --git a/src/theory/bv/bv_subtheory_core.h b/src/theory/bv/bv_subtheory_core.h
index 22219b5..662f883 100644
--- a/src/theory/bv/bv_subtheory_core.h
+++ b/src/theory/bv/bv_subtheory_core.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_subtheory_inequality.cpp b/src/theory/bv/bv_subtheory_inequality.cpp
index 1fe0962..d662f05 100644
--- a/src/theory/bv/bv_subtheory_inequality.cpp
+++ b/src/theory/bv/bv_subtheory_inequality.cpp
@@ -2,9 +2,9 @@
 /*! \file bv_subtheory_inequality.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Andrew Reynolds, Tim King
+ **   Liana Hadarean, Andrew Reynolds, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_subtheory_inequality.h b/src/theory/bv/bv_subtheory_inequality.h
index 617e3b7..37d3723 100644
--- a/src/theory/bv/bv_subtheory_inequality.h
+++ b/src/theory/bv/bv_subtheory_inequality.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Andrew Reynolds, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_to_bool.cpp b/src/theory/bv/bv_to_bool.cpp
index 5b7fe16..9718e9a 100644
--- a/src/theory/bv/bv_to_bool.cpp
+++ b/src/theory/bv/bv_to_bool.cpp
@@ -2,9 +2,9 @@
 /*! \file bv_to_bool.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Tim King
+ **   Liana Hadarean, Clark Barrett, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bv_to_bool.h b/src/theory/bv/bv_to_bool.h
index 7e351c9..a934cf0 100644
--- a/src/theory/bv/bv_to_bool.h
+++ b/src/theory/bv/bv_to_bool.h
@@ -2,9 +2,9 @@
 /*! \file bv_to_bool.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Tim King
+ **   Liana Hadarean, Clark Barrett, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bvintropow2.cpp b/src/theory/bv/bvintropow2.cpp
index 022aaf2..e7b6caa 100644
--- a/src/theory/bv/bvintropow2.cpp
+++ b/src/theory/bv/bvintropow2.cpp
@@ -2,9 +2,9 @@
 /*! \file bvintropow2.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Morgan Deters, Tim King
+ **   Liana Hadarean, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/bvintropow2.h b/src/theory/bv/bvintropow2.h
index 09d3d92..935cbb7 100644
--- a/src/theory/bv/bvintropow2.h
+++ b/src/theory/bv/bvintropow2.h
@@ -2,9 +2,9 @@
 /*! \file bvintropow2.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Morgan Deters, Tim King
+ **   Liana Hadarean, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/cd_set_collection.h b/src/theory/bv/cd_set_collection.h
index 456552e..397c872 100644
--- a/src/theory/bv/cd_set_collection.h
+++ b/src/theory/bv/cd_set_collection.h
@@ -2,9 +2,9 @@
 /*! \file cd_set_collection.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Tim King
+ **   Dejan Jovanovic, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/eager_bitblaster.cpp b/src/theory/bv/eager_bitblaster.cpp
index 053986b..29f6e78 100644
--- a/src/theory/bv/eager_bitblaster.cpp
+++ b/src/theory/bv/eager_bitblaster.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Tim King, Guy Katz
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/lazy_bitblaster.cpp b/src/theory/bv/lazy_bitblaster.cpp
index 1477f18..32aff1f 100644
--- a/src/theory/bv/lazy_bitblaster.cpp
+++ b/src/theory/bv/lazy_bitblaster.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -45,7 +45,7 @@ TLazyBitblaster::TLazyBitblaster(context::Context* c, bv::TheoryBV* bv,
   , d_bbAtoms()
   , d_abstraction(NULL)
   , d_emptyNotify(emptyNotify)
-  , d_satSolverFullModel(c, false)
+  , d_fullModelAssertionLevel(c, 0)
   , d_name(name)
   , d_statistics(name) {
 
@@ -290,7 +290,7 @@ bool TLazyBitblaster::solve() {
     }
   }
   Debug("bitvector") << "TLazyBitblaster::solve() asserted atoms " << d_assertedAtoms->size() <<"\n";
-  d_satSolverFullModel.set(true);
+  d_fullModelAssertionLevel.set(d_bv->numAssertions());
   return prop::SAT_VALUE_TRUE == d_satSolver->solve();
 }
 
@@ -393,8 +393,9 @@ void TLazyBitblaster::MinisatNotify::safePoint(unsigned ammount) {
 
 
 EqualityStatus TLazyBitblaster::getEqualityStatus(TNode a, TNode b) {
+  int numAssertions = d_bv->numAssertions();
   Debug("bv-equality-status")<< "TLazyBitblaster::getEqualityStatus " << a <<" = " << b <<"\n";
-  Debug("bv-equality-status")<< "BVSatSolver has full model? " << d_satSolverFullModel.get() <<"\n";
+  Debug("bv-equality-status")<< "BVSatSolver has full model? " << (d_fullModelAssertionLevel.get() == numAssertions) <<"\n";
 
   // First check if it trivially rewrites to false/true
   Node a_eq_b = Rewriter::rewrite(utils::mkNode(kind::EQUAL, a, b));
@@ -402,8 +403,9 @@ EqualityStatus TLazyBitblaster::getEqualityStatus(TNode a, TNode b) {
   if (a_eq_b == utils::mkFalse()) return theory::EQUALITY_FALSE;
   if (a_eq_b == utils::mkTrue()) return theory::EQUALITY_TRUE;
 
-  if (!d_satSolverFullModel.get())
+  if (d_fullModelAssertionLevel.get() != numAssertions) {
     return theory::EQUALITY_UNKNOWN;
+  }
 
   // Check if cache is valid (invalidated in check and pops)
   if (d_bv->d_invalidateModelCache.get()) {
diff --git a/src/theory/bv/slicer.cpp b/src/theory/bv/slicer.cpp
index 150f73a..bf51528 100644
--- a/src/theory/bv/slicer.cpp
+++ b/src/theory/bv/slicer.cpp
@@ -2,9 +2,9 @@
 /*! \file slicer.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Tim King, Morgan Deters
+ **   Liana Hadarean, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/slicer.h b/src/theory/bv/slicer.h
index 4eae279..b594d5f 100644
--- a/src/theory/bv/slicer.h
+++ b/src/theory/bv/slicer.h
@@ -2,9 +2,9 @@
 /*! \file slicer.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Tim King
+ **   Liana Hadarean, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/theory_bv.cpp b/src/theory/bv/theory_bv.cpp
index 2fc5fd0..1a59687 100644
--- a/src/theory/bv/theory_bv.cpp
+++ b/src/theory/bv/theory_bv.cpp
@@ -2,9 +2,9 @@
 /*! \file theory_bv.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Tim King, Dejan Jovanovic
+ **   Liana Hadarean, Andrew Reynolds, Clark Barrett
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -71,9 +71,9 @@ TheoryBV::TheoryBV(context::Context* c, context::UserContext* u,
     d_extf_range_infer(u),
     d_extf_collapse_infer(u)
 {
-  d_extt = new ExtTheory( this );
-  d_extt->addFunctionKind( kind::BITVECTOR_TO_NAT );
-  d_extt->addFunctionKind( kind::INT_TO_BITVECTOR );
+  setupExtTheory();
+  getExtTheory()->addFunctionKind(kind::BITVECTOR_TO_NAT);
+  getExtTheory()->addFunctionKind(kind::INT_TO_BITVECTOR);
 
   if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER) {
     d_eagerSolver = new EagerBitblastSolver(this);
@@ -114,7 +114,6 @@ TheoryBV::~TheoryBV() {
     delete d_subtheories[i];
   }
   delete d_abstractionModule;
-  delete d_extt;
 }
 
 void TheoryBV::setMasterEqualityEngine(eq::EqualityEngine* eq) {
@@ -397,10 +396,9 @@ void TheoryBV::check(Effort e)
   }
   
   //last call : do reductions on extended bitvector functions
-  if( e==Theory::EFFORT_LAST_CALL ){
-    std::vector< Node > nred;
-    getExtTheory()->getActive( nred );
-    doExtfReductions( nred );
+  if (e == Theory::EFFORT_LAST_CALL) {
+    std::vector<Node> nred = getExtTheory()->getActive();
+    doExtfReductions(nred);
     return;
   }
 
@@ -578,14 +576,14 @@ bool TheoryBV::needsCheckLastEffort() {
   return d_needsLastCallCheck;
 }
 
-void TheoryBV::collectModelInfo( TheoryModel* m, bool fullModel ){
+void TheoryBV::collectModelInfo( TheoryModel* m ){
   Assert(!inConflict());
   if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER) {
-    d_eagerSolver->collectModelInfo(m, fullModel);
+    d_eagerSolver->collectModelInfo(m, true);
   }
   for (unsigned i = 0; i < d_subtheories.size(); ++i) {
     if (d_subtheories[i]->isComplete()) {
-      d_subtheories[i]->collectModelInfo(m, fullModel);
+      d_subtheories[i]->collectModelInfo(m, true);
       return;
     }
   }
diff --git a/src/theory/bv/theory_bv.h b/src/theory/bv/theory_bv.h
index 9973b07..f8d3e65 100644
--- a/src/theory/bv/theory_bv.h
+++ b/src/theory/bv/theory_bv.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Morgan Deters, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -77,7 +77,7 @@ public:
 
   Node explain(TNode n);
 
-  void collectModelInfo( TheoryModel* m, bool fullModel );
+  void collectModelInfo( TheoryModel* m );
 
   std::string identify() const { return std::string("TheoryBV"); }
 
diff --git a/src/theory/bv/theory_bv_rewrite_rules.h b/src/theory/bv/theory_bv_rewrite_rules.h
index 5957c64..9f148d8 100644
--- a/src/theory/bv/theory_bv_rewrite_rules.h
+++ b/src/theory/bv/theory_bv_rewrite_rules.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Dejan Jovanovic, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -56,7 +56,7 @@ enum RewriteRuleId {
   SubEliminate,
   SltEliminate,
   SleEliminate,
-  UleEliminate, 
+  UleEliminate,
   CompEliminate,
   RepeatEliminate,
   RotateLeftEliminate,
@@ -75,7 +75,7 @@ enum RewriteRuleId {
 
   /// ground term evaluation
   EvalEquals,
-  EvalConcat, 
+  EvalConcat,
   EvalAnd,
   EvalOr,
   EvalXor,
@@ -90,7 +90,7 @@ enum RewriteRuleId {
   EvalUlt,
   EvalUltBv,
   EvalUle,
-  EvalExtract, 
+  EvalExtract,
   EvalSignExtend,
   EvalRotateLeft,
   EvalRotateRight,
@@ -133,18 +133,18 @@ enum RewriteRuleId {
   ExtractMultLeadingBit,
   NegIdemp,
   UdivPow2,
+  UdivZero,
   UdivOne,
-  UdivSelf,
   UremPow2,
   UremOne,
   UremSelf,
   ShiftZero,
 
   UltOne,
-  SltZero, 
+  SltZero,
   ZeroUlt,
   MergeSignExtend,
-  
+
   /// normalization rules
   ExtractBitwise,
   ExtractNot,
@@ -156,9 +156,9 @@ enum RewriteRuleId {
   NegSub,
   NegPlus,
   NotConcat,
-  NotAnd, // not sure why this would help (not done)
-  NotOr,  // not sure why this would help (not done)
-  NotXor, // not sure why this would help (not done)
+  NotAnd,  // not sure why this would help (not done)
+  NotOr,   // not sure why this would help (not done)
+  NotXor,  // not sure why this would help (not done)
   FlattenAssocCommut,
   FlattenAssocCommutNoDuplicates,
   PlusCombineLikeTerms,
@@ -178,7 +178,6 @@ enum RewriteRuleId {
   IsPowerOfTwo
 };
 
-
 inline std::ostream& operator << (std::ostream& out, RewriteRuleId ruleId) {
   switch (ruleId) {
   case EmptyRule:           out << "EmptyRule";           return out;
@@ -272,8 +271,10 @@ inline std::ostream& operator << (std::ostream& out, RewriteRuleId ruleId) {
   case ExtractMultLeadingBit :            out << "ExtractMultLeadingBit";             return out;
   case NegIdemp :            out << "NegIdemp";             return out;
   case UdivPow2 :            out << "UdivPow2";             return out;
+  case UdivZero:
+    out << "UdivZero";
+    return out;
   case UdivOne :            out << "UdivOne";             return out;
-  case UdivSelf :            out << "UdivSelf";             return out;
   case UremPow2 :            out << "UremPow2";             return out;
   case UremOne :            out << "UremOne";             return out;
   case UremSelf :            out << "UremSelf";             return out;
@@ -501,8 +502,8 @@ struct AllRewriteRules {
   RewriteRule<ExtractMultLeadingBit> rule88;
   RewriteRule<NegIdemp> rule91;
   RewriteRule<UdivPow2> rule92;
-  RewriteRule<UdivOne> rule93;
-  RewriteRule<UdivSelf> rule94;
+  RewriteRule<UdivZero> rule93;
+  RewriteRule<UdivOne> rule94;
   RewriteRule<UremPow2> rule95;
   RewriteRule<UremOne> rule96;
   RewriteRule<UremSelf> rule97;
diff --git a/src/theory/bv/theory_bv_rewrite_rules_constant_evaluation.h b/src/theory/bv/theory_bv_rewrite_rules_constant_evaluation.h
index 3605a69..b53f7bb 100644
--- a/src/theory/bv/theory_bv_rewrite_rules_constant_evaluation.h
+++ b/src/theory/bv/theory_bv_rewrite_rules_constant_evaluation.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Clark Barrett, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/theory_bv_rewrite_rules_core.h b/src/theory/bv/theory_bv_rewrite_rules_core.h
index 395949f..5b8eaea 100644
--- a/src/theory/bv/theory_bv_rewrite_rules_core.h
+++ b/src/theory/bv/theory_bv_rewrite_rules_core.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Dejan Jovanovic, Liana Hadarean, Clark Barrett
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/theory_bv_rewrite_rules_normalization.h b/src/theory/bv/theory_bv_rewrite_rules_normalization.h
index 89bb3d7..46297cb 100644
--- a/src/theory/bv/theory_bv_rewrite_rules_normalization.h
+++ b/src/theory/bv/theory_bv_rewrite_rules_normalization.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Clark Barrett, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/theory_bv_rewrite_rules_operator_elimination.h b/src/theory/bv/theory_bv_rewrite_rules_operator_elimination.h
index 052bc8c..f73c4fb 100644
--- a/src/theory/bv/theory_bv_rewrite_rules_operator_elimination.h
+++ b/src/theory/bv/theory_bv_rewrite_rules_operator_elimination.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Clark Barrett, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/theory_bv_rewrite_rules_simplification.h b/src/theory/bv/theory_bv_rewrite_rules_simplification.h
index 8713804..c7247f2 100644
--- a/src/theory/bv/theory_bv_rewrite_rules_simplification.h
+++ b/src/theory/bv/theory_bv_rewrite_rules_simplification.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Clark Barrett, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -908,39 +908,39 @@ Node RewriteRule<UdivPow2>::apply(TNode node) {
 }
 
 /**
- * UdivOne
+ * UdivZero
  *
- * (a udiv 1) ==> a
+ * (a udiv 0) ==> 111...1
  */
 
-template<> inline
-bool RewriteRule<UdivOne>::applies(TNode node) {
+template <>
+inline bool RewriteRule<UdivZero>::applies(TNode node) {
   return (node.getKind() == kind::BITVECTOR_UDIV_TOTAL &&
-          node[1] == utils::mkConst(utils::getSize(node), 1));
+          node[1] == utils::mkConst(utils::getSize(node), 0));
 }
 
-template<> inline
-Node RewriteRule<UdivOne>::apply(TNode node) {
-  Debug("bv-rewrite") << "RewriteRule<UdivOne>(" << node << ")" << std::endl;
-  return node[0]; 
+template <>
+inline Node RewriteRule<UdivZero>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<UdivZero>(" << node << ")" << std::endl;
+  return utils::mkOnes(utils::getSize(node));
 }
 
 /**
- * UdivSelf
+ * UdivOne
  *
- * (a udiv a) ==> 1
+ * (a udiv 1) ==> a
  */
 
-template<> inline
-bool RewriteRule<UdivSelf>::applies(TNode node) {
+template <>
+inline bool RewriteRule<UdivOne>::applies(TNode node) {
   return (node.getKind() == kind::BITVECTOR_UDIV_TOTAL &&
-          node[0] == node[1]);
+          node[1] == utils::mkConst(utils::getSize(node), 1));
 }
 
-template<> inline
-Node RewriteRule<UdivSelf>::apply(TNode node) {
-  Debug("bv-rewrite") << "RewriteRule<UdivSelf>(" << node << ")" << std::endl;
-  return utils::mkConst(utils::getSize(node), 1); 
+template <>
+inline Node RewriteRule<UdivOne>::apply(TNode node) {
+  Debug("bv-rewrite") << "RewriteRule<UdivOne>(" << node << ")" << std::endl;
+  return node[0];
 }
 
 /**
diff --git a/src/theory/bv/theory_bv_rewriter.cpp b/src/theory/bv/theory_bv_rewriter.cpp
index e40612b..a967779 100644
--- a/src/theory/bv/theory_bv_rewriter.cpp
+++ b/src/theory/bv/theory_bv_rewriter.cpp
@@ -2,9 +2,9 @@
 /*! \file theory_bv_rewriter.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Morgan Deters, Clark Barrett
+ **   Liana Hadarean, Clark Barrett, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -439,11 +439,9 @@ RewriteResponse TheoryBVRewriter::RewriteUdivTotal(TNode node, bool prerewrite){
     return RewriteResponse(REWRITE_AGAIN_FULL, resultNode); 
   }
 
-  resultNode = LinearRewriteStrategy
-    < RewriteRule<EvalUdiv>,
-      RewriteRule<UdivOne>,
-      RewriteRule<UdivSelf>
-      >::apply(node);
+  resultNode =
+      LinearRewriteStrategy<RewriteRule<EvalUdiv>, RewriteRule<UdivZero>,
+                            RewriteRule<UdivOne> >::apply(node);
 
   return RewriteResponse(REWRITE_DONE, resultNode); 
 }
diff --git a/src/theory/bv/theory_bv_rewriter.h b/src/theory/bv/theory_bv_rewriter.h
index 8c3a206..4fe4f47 100644
--- a/src/theory/bv/theory_bv_rewriter.h
+++ b/src/theory/bv/theory_bv_rewriter.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Morgan Deters, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/theory_bv_type_rules.h b/src/theory/bv/theory_bv_type_rules.h
index 1c59ff8..957d15e 100644
--- a/src/theory/bv/theory_bv_type_rules.h
+++ b/src/theory/bv/theory_bv_type_rules.h
@@ -2,9 +2,9 @@
 /*! \file theory_bv_type_rules.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Dejan Jovanovic, Liana Hadarean
+ **   Tim King, Dejan Jovanovic, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/theory_bv_utils.cpp b/src/theory/bv/theory_bv_utils.cpp
index f743e2d..6697f90 100644
--- a/src/theory/bv/theory_bv_utils.cpp
+++ b/src/theory/bv/theory_bv_utils.cpp
@@ -2,9 +2,9 @@
 /*! \file theory_bv_utils.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Tim King
+ **   Liana Hadarean, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/theory_bv_utils.h b/src/theory/bv/theory_bv_utils.h
index 1210e84..5bae1af 100644
--- a/src/theory/bv/theory_bv_utils.h
+++ b/src/theory/bv/theory_bv_utils.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Dejan Jovanovic, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/bv/type_enumerator.h b/src/theory/bv/type_enumerator.h
index 39f1e87..ad18f90 100644
--- a/src/theory/bv/type_enumerator.h
+++ b/src/theory/bv/type_enumerator.h
@@ -2,9 +2,9 @@
 /*! \file type_enumerator.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Andrew Reynolds
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -35,13 +35,13 @@ class BitVectorEnumerator : public TypeEnumeratorBase<BitVectorEnumerator> {
 
 public:
 
-  BitVectorEnumerator(TypeNode type, TypeEnumeratorProperties * tep = NULL) throw(AssertionException) :
+  BitVectorEnumerator(TypeNode type, TypeEnumeratorProperties * tep = NULL) :
     TypeEnumeratorBase<BitVectorEnumerator>(type),
     d_size(type.getBitVectorSize()),
     d_bits(0) {
   }
 
-  Node operator*() throw(NoMoreValuesException) {
+  Node operator*() {
     if(d_bits != d_bits.modByPow2(d_size)) {
       throw NoMoreValuesException(getType());
     }
diff --git a/src/theory/care_graph.h b/src/theory/care_graph.h
new file mode 100644
index 0000000..870d3f4
--- /dev/null
+++ b/src/theory/care_graph.h
@@ -0,0 +1,62 @@
+/*********************                                                        */
+/*! \file care_graph.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief The care graph datastructure.
+ **
+ ** The care graph datastructure.
+ **/
+
+#include "cvc4_private.h"
+
+#ifndef __CVC4__THEORY__CARE_GRAPH_H
+#define __CVC4__THEORY__CARE_GRAPH_H
+
+#include <set>
+
+#include "expr/kind.h"  // For TheoryId.
+#include "expr/node.h"
+
+namespace CVC4 {
+namespace theory {
+
+/**
+ * A (ordered) pair of terms a theory cares about.
+ */
+struct CarePair {
+  const TNode a, b;
+  const TheoryId theory;
+
+  CarePair(TNode a, TNode b, TheoryId theory)
+      : a(a < b ? a : b), b(a < b ? b : a), theory(theory) {}
+
+  bool operator==(const CarePair& other) const {
+    return (theory == other.theory) && (a == other.a) && (b == other.b);
+  }
+
+  bool operator<(const CarePair& other) const {
+    if (theory < other.theory) return true;
+    if (theory > other.theory) return false;
+    if (a < other.a) return true;
+    if (a > other.a) return false;
+    return b < other.b;
+  }
+
+}; /* struct CarePair */
+
+/**
+ * A set of care pairs.
+ */
+typedef std::set<CarePair> CareGraph;
+
+}  // namespace theory
+}  // namespace CVC4
+
+#endif /* __CVC4__THEORY__CARE_GRAPH_H */
diff --git a/src/theory/datatypes/datatypes_rewriter.h b/src/theory/datatypes/datatypes_rewriter.h
index 0d58233..e8ec72b 100644
--- a/src/theory/datatypes/datatypes_rewriter.h
+++ b/src/theory/datatypes/datatypes_rewriter.h
@@ -2,9 +2,9 @@
 /*! \file datatypes_rewriter.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Morgan Deters, Tim King
+ **   Andrew Reynolds, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -36,7 +36,8 @@ public:
     Trace("datatypes-rewrite-debug") << "post-rewriting " << in << std::endl;
 
     if(in.getKind() == kind::APPLY_CONSTRUCTOR ){
-      Type t = in.getType().toType();
+      TypeNode tn = in.getType();
+      Type t = tn.toType();
       DatatypeType dt = DatatypeType(t);
       //check for parametric datatype constructors
       // to ensure a normal form, all parameteric datatype constructors must have a type ascription
@@ -58,6 +59,13 @@ public:
           return RewriteResponse(REWRITE_DONE, inr);
         }
       }
+      if( tn.isTuple() ){
+        Node nn = normalizeTupleConstructorApp( in );
+        if( nn!=in ){
+          Trace("datatypes-rewrite") << "DatatypesRewriter::postRewrite: Rewrite tuple constructor " << in << " to " << nn << std::endl;
+          return RewriteResponse(REWRITE_AGAIN_FULL, nn);
+        }
+      }
       if( in.isConst() ){
         Trace("datatypes-rewrite-debug") << "Normalizing constant " << in << std::endl;
         Node inn = normalizeConstant( in );
@@ -110,7 +118,7 @@ public:
       Expr constructorExpr = constructor.toExpr();
       size_t selectorIndex = Datatype::indexOf(selectorExpr);
       size_t constructorIndex = Datatype::indexOf(constructorExpr);
-      const Datatype& dt = Datatype::datatypeOf(constructorExpr);
+      const Datatype& dt = Datatype::datatypeOf(selectorExpr);
       const DatatypeConstructor& c = dt[constructorIndex];
       if(c.getNumArgs() > selectorIndex && c[selectorIndex].getSelector() == selectorExpr) {
         if( dt.isCodatatype() && in[0][selectorIndex].isConst() ){
@@ -235,15 +243,16 @@ public:
   static bool checkClash( Node n1, Node n2, std::vector< Node >& rew ) {
     Trace("datatypes-rewrite-debug") << "Check clash : " << n1 << " " << n2 << std::endl;
     if( n1.getKind() == kind::APPLY_CONSTRUCTOR && n2.getKind() == kind::APPLY_CONSTRUCTOR ) {
-      if( n1.getOperator() != n2.getOperator() ) {
-        Trace("datatypes-rewrite-debug") << "Clash operators : " << n1 << " " << n2 << " " << n1.getOperator() << " " << n2.getOperator() << std::endl;
-        return true;
-      } else {
-        Assert( n1.getNumChildren() == n2.getNumChildren() );
-        for( int i=0; i<(int)n1.getNumChildren(); i++ ) {
-          if( checkClash( n1[i], n2[i], rew ) ) {
-            return true;
-          }
+      if( n1.getOperator() != n2.getOperator()) {
+        if( n1.getNumChildren() != n2.getNumChildren() || !n1.getType().isTuple() || !n2.getType().isTuple() ){
+          Trace("datatypes-rewrite-debug") << "Clash operators : " << n1 << " " << n2 << " " << n1.getOperator() << " " << n2.getOperator() << std::endl;
+          return true;
+        }
+      }
+      Assert( n1.getNumChildren() == n2.getNumChildren() );
+      for( unsigned i=0; i<n1.getNumChildren(); i++ ) {
+        if( checkClash( n1[i], n2[i], rew ) ) {
+          return true;
         }
       }
     }else if( n1!=n2 ){
@@ -601,11 +610,38 @@ public:
       return Node::null();
     }
   }
+  
+  static Node normalizeTupleConstructorApp( Node n ){
+    Assert( n.getType().isTuple() );
+    Assert( n.getKind()==kind::APPLY_CONSTRUCTOR );
+    const Datatype& dt = n.getType().getDatatype();
+    //may apply a different constructor based on child types
+    std::vector< TypeNode > cht;
+    std::vector< Node > ch;
+    bool childTypeChange = false;
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      TypeNode tci = n[i].getType(); 
+      cht.push_back( tci );
+      ch.push_back( n[i] );
+      if( tci!=TypeNode::fromType( dt[0][i].getRangeType() ) ){
+        childTypeChange = true;
+      }
+    }
+    if( childTypeChange ){
+      TypeNode ttn = NodeManager::currentNM()->mkTupleType( cht );
+      const Datatype& dtt = ttn.getDatatype();
+      ch.insert( ch.begin(), Node::fromExpr( dtt[0].getConstructor() ) );
+      return NodeManager::currentNM()->mkNode( kind::APPLY_CONSTRUCTOR, ch );
+    }
+    return n;
+  }
   //normalize constant : apply to top-level codatatype constants
   static Node normalizeConstant( Node n ){
     TypeNode tn = n.getType();
     if( tn.isDatatype() ){
-      if( tn.isCodatatype() ){
+      if( tn.isTuple() ){
+        return normalizeTupleConstructorApp( n );
+      }else if( tn.isCodatatype() ){
         return normalizeCodatatypeConstant( n );
       }else{
         std::vector< Node > children;
diff --git a/src/theory/datatypes/datatypes_sygus.cpp b/src/theory/datatypes/datatypes_sygus.cpp
index f5ae05b..e308ad8 100644
--- a/src/theory/datatypes/datatypes_sygus.cpp
+++ b/src/theory/datatypes/datatypes_sygus.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/datatypes/datatypes_sygus.h b/src/theory/datatypes/datatypes_sygus.h
index 155b15e..739cbb5 100644
--- a/src/theory/datatypes/datatypes_sygus.h
+++ b/src/theory/datatypes/datatypes_sygus.h
@@ -2,9 +2,9 @@
 /*! \file datatypes_sygus.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Tim King
+ **   Andrew Reynolds, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/datatypes/theory_datatypes.cpp b/src/theory/datatypes/theory_datatypes.cpp
index d285f29..22065e0 100644
--- a/src/theory/datatypes/theory_datatypes.cpp
+++ b/src/theory/datatypes/theory_datatypes.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -1222,6 +1222,42 @@ void TheoryDatatypes::addConstructor( Node c, EqcInfo* eqc, Node n ){
   eqc->d_constructor.set( c );
 }
 
+Node TheoryDatatypes::removeUninterpretedConstants( Node n, std::map< Node, Node >& visited ){
+  std::map< Node, Node >::iterator it = visited.find( n );
+  if( it==visited.end() ){
+    Node ret = n;
+    if( n.getKind()==UNINTERPRETED_CONSTANT ){
+      std::map< Node, Node >::iterator itu = d_uc_to_fresh_var.find( n );
+      if( itu==d_uc_to_fresh_var.end() ){
+        Node k = NodeManager::currentNM()->mkSkolem( "w", n.getType(), "Skolem for wrongly applied selector." );
+        d_uc_to_fresh_var[n] = k;
+        ret = k;
+      }else{
+        ret = itu->second;
+      }
+    }else if( n.getNumChildren()>0 ){
+      std::vector< Node > children;
+      if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+        children.push_back( n.getOperator() );
+      }
+      bool childChanged = false;
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        Node nc = removeUninterpretedConstants( n[i], visited ); 
+        childChanged = childChanged || nc!=n[i];
+        children.push_back( nc );
+      }
+      if( childChanged ){
+        ret = NodeManager::currentNM()->mkNode( n.getKind(), children );
+      }
+    }
+    visited[n] = ret;
+    return ret;
+  }else{
+    return it->second;
+  }
+} 
+
+
 void TheoryDatatypes::collapseSelector( Node s, Node c ) {
   Assert( c.getKind()==APPLY_CONSTRUCTOR );
   Trace("dt-collapse-sel") << "collapse selector : " << s << " " << c << std::endl;
@@ -1268,8 +1304,16 @@ void TheoryDatatypes::collapseSelector( Node s, Node c ) {
   }
   if( !r.isNull() ){
     Node rr = Rewriter::rewrite( r );
-    if( use_s!=rr ){
-      Node eq = use_s.eqNode( rr );
+    Node rrs = rr;
+    if( wrong ){
+      // we have inference S_i( C_j( t ) ) = t' for i != j, where t' is result of mkGroundTerm.
+      // we must eliminate uninterpreted constants for datatypes that have uninterpreted sort subfields,
+      // since uninterpreted constants should not appear in lemmas
+      std::map< Node, Node > visited;
+      rrs = removeUninterpretedConstants( rr, visited );
+    }
+    if( use_s!=rrs ){
+      Node eq = use_s.eqNode( rrs );
       Node eq_exp;
       if( options::dtRefIntro() ){
         eq_exp = d_true;
@@ -1316,20 +1360,13 @@ void TheoryDatatypes::addCarePairs( quantifiers::TermArgTrie * t1, quantifiers::
           Assert( d_equalityEngine.hasTerm(x) );
           Assert( d_equalityEngine.hasTerm(y) );
           Assert( !areDisequal( x, y ) );
+          Assert( !areCareDisequal( x, y ) );
           if( !d_equalityEngine.areEqual( x, y ) ){
             Trace("dt-cg") << "Arg #" << k << " is " << x << " " << y << std::endl;
             if( d_equalityEngine.isTriggerTerm(x, THEORY_DATATYPES) && d_equalityEngine.isTriggerTerm(y, THEORY_DATATYPES) ){
               TNode x_shared = d_equalityEngine.getTriggerTermRepresentative(x, THEORY_DATATYPES);
               TNode y_shared = d_equalityEngine.getTriggerTermRepresentative(y, THEORY_DATATYPES);
-              Trace("dt-cg") << "Arg #" << k << " shared term is " << x_shared << " " << y_shared << std::endl;
-              EqualityStatus eqStatus = d_valuation.getEqualityStatus(x_shared, y_shared);
-              Trace("dt-cg") << "...eq status is " << eqStatus << std::endl;
-              if( eqStatus==EQUALITY_FALSE_AND_PROPAGATED || eqStatus==EQUALITY_FALSE || eqStatus==EQUALITY_FALSE_IN_MODEL ){
-                //an argument is disequal, we are done
-                return;
-              }else{
-                currentPairs.push_back(make_pair(x_shared, y_shared));
-              }
+              currentPairs.push_back(make_pair(x_shared, y_shared));
             }
           }
         }
@@ -1353,8 +1390,10 @@ void TheoryDatatypes::addCarePairs( quantifiers::TermArgTrie * t1, quantifiers::
         std::map< TNode, quantifiers::TermArgTrie >::iterator it2 = it;
         ++it2;
         for( ; it2 != t1->d_data.end(); ++it2 ){
-          if( !areDisequal(it->first, it2->first) ){
-            addCarePairs( &it->second, &it2->second, arity, depth+1, n_pairs );
+          if( !d_equalityEngine.areDisequal(it->first, it2->first, false) ){
+            if( !areCareDisequal(it->first, it2->first) ){
+              addCarePairs( &it->second, &it2->second, arity, depth+1, n_pairs );
+            }
           }
         }
       }
@@ -1362,8 +1401,10 @@ void TheoryDatatypes::addCarePairs( quantifiers::TermArgTrie * t1, quantifiers::
       //add care pairs based on product of indices, non-disequal arguments
       for( std::map< TNode, quantifiers::TermArgTrie >::iterator it = t1->d_data.begin(); it != t1->d_data.end(); ++it ){
         for( std::map< TNode, quantifiers::TermArgTrie >::iterator it2 = t2->d_data.begin(); it2 != t2->d_data.end(); ++it2 ){
-          if( !areDisequal(it->first, it2->first) ){
-            addCarePairs( &it->second, &it2->second, arity, depth+1, n_pairs );
+          if( !d_equalityEngine.areDisequal(it->first, it2->first, false) ){
+            if( !areCareDisequal(it->first, it2->first) ){
+              addCarePairs( &it->second, &it2->second, arity, depth+1, n_pairs );
+            }
           }
         }
       }
@@ -1410,7 +1451,7 @@ void TheoryDatatypes::computeCareGraph(){
   Trace("dt-cg-summary") << "...done, # pairs = " << n_pairs << std::endl;
 }
 
-void TheoryDatatypes::collectModelInfo( TheoryModel* m, bool fullModel ){
+void TheoryDatatypes::collectModelInfo( TheoryModel* m ){
   Trace("dt-cmi") << "Datatypes : Collect model info " << d_equalityEngine.consistent() << std::endl;
   Trace("dt-model") << std::endl;
   printModelDebug( "dt-model" );
@@ -1423,7 +1464,6 @@ void TheoryDatatypes::collectModelInfo( TheoryModel* m, bool fullModel ){
 
   //combine the equality engine
   m->assertEqualityEngine( &d_equalityEngine, &termSet );
-  
 
   //get all constructors
   eq::EqClassesIterator eqccs_i = eq::EqClassesIterator( &d_equalityEngine );
@@ -1433,25 +1473,25 @@ void TheoryDatatypes::collectModelInfo( TheoryModel* m, bool fullModel ){
   while( !eqccs_i.isFinished() ){
     Node eqc = (*eqccs_i);
     //for all equivalence classes that are datatypes
-    if( termSet.find( eqc )==termSet.end() ){
-      Trace("dt-cmi-debug") << "Irrelevant eqc : " << eqc << std::endl;
-    }else{
-      if( eqc.getType().isDatatype() ){
-        EqcInfo* ei = getOrMakeEqcInfo( eqc );
-        if( ei && !ei->d_constructor.get().isNull() ){
-          Node c = ei->d_constructor.get();
-          cons.push_back( c );
-          eqc_cons[ eqc ] = c;
-        }else{
-          //if eqc contains a symbol known to datatypes (a selector), then we must assign
-          //should assign constructors to EQC if they have a selector or a tester
-          bool shouldConsider = ( ei && ei->d_selectors ) || hasTester( eqc );
-          if( shouldConsider ){
-            nodes.push_back( eqc );
-          }
+    //if( termSet.find( eqc )==termSet.end() ){
+    //  Trace("dt-cmi-debug") << "Irrelevant eqc : " << eqc << std::endl;
+    //}
+    if( eqc.getType().isDatatype() ){
+      EqcInfo* ei = getOrMakeEqcInfo( eqc );
+      if( ei && !ei->d_constructor.get().isNull() ){
+        Node c = ei->d_constructor.get();
+        cons.push_back( c );
+        eqc_cons[ eqc ] = c;
+      }else{
+        //if eqc contains a symbol known to datatypes (a selector), then we must assign
+        //should assign constructors to EQC if they have a selector or a tester
+        bool shouldConsider = ( ei && ei->d_selectors ) || hasTester( eqc );
+        if( shouldConsider ){
+          nodes.push_back( eqc );
         }
       }
     }
+    //}
     ++eqccs_i;
   }
 
@@ -1658,19 +1698,6 @@ void TheoryDatatypes::collectTerms( Node n ) {
   }
 }
 
-void TheoryDatatypes::processNewTerm( Node n ){
-  Trace("dt-terms") << "Created term : " << n << std::endl;
-  //see if it is rewritten to be something different
-  Node rn = Rewriter::rewrite( n );
-  if( rn!=n && !areEqual( rn, n ) ){
-    Node eq = rn.eqNode( n );
-    d_pending.push_back( eq );
-    d_pending_exp[ eq ] = d_true;
-    Trace("datatypes-infer") << "DtInfer : rewrite : " << eq << std::endl;
-    d_infer.push_back( eq );
-  }
-}
-
 Node TheoryDatatypes::getInstantiateCons( Node n, const Datatype& dt, int index ){
   std::map< int, Node >::iterator it = d_inst_map[n].find( index );
   if( it!=d_inst_map[n].end() ){
@@ -2032,10 +2059,25 @@ bool TheoryDatatypes::areDisequal( TNode a, TNode b ){
   }else if( hasTerm( a ) && hasTerm( b ) ){
     return d_equalityEngine.areDisequal( a, b, false );
   }else{
+    //TODO : constants here?
     return false;
   }
 }
 
+bool TheoryDatatypes::areCareDisequal( TNode x, TNode y ) {
+  Assert( d_equalityEngine.hasTerm( x ) );
+  Assert( d_equalityEngine.hasTerm( y ) );
+  if( d_equalityEngine.isTriggerTerm(x, THEORY_DATATYPES) && d_equalityEngine.isTriggerTerm(y, THEORY_DATATYPES) ){
+    TNode x_shared = d_equalityEngine.getTriggerTermRepresentative(x, THEORY_DATATYPES);
+    TNode y_shared = d_equalityEngine.getTriggerTermRepresentative(y, THEORY_DATATYPES);
+    EqualityStatus eqStatus = d_valuation.getEqualityStatus(x_shared, y_shared);
+    if( eqStatus==EQUALITY_FALSE_AND_PROPAGATED || eqStatus==EQUALITY_FALSE || eqStatus==EQUALITY_FALSE_IN_MODEL ){
+      return true;
+    }
+  }
+  return false;
+}
+
 TNode TheoryDatatypes::getRepresentative( TNode a ){
   if( hasTerm( a ) ){
     return d_equalityEngine.getRepresentative( a );
@@ -2153,7 +2195,7 @@ void TheoryDatatypes::getRelevantTerms( std::set<Node>& termSet ) {
   // Compute terms appearing in assertions and shared terms
   computeRelevantTerms(termSet);
   
-  //also include non-singleton equivalence classes
+  //also include non-singleton equivalence classes  TODO : revisit this
   eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( &d_equalityEngine );
   while( !eqcs_i.isFinished() ){
     TNode r = (*eqcs_i);
@@ -2164,6 +2206,11 @@ void TheoryDatatypes::getRelevantTerms( std::set<Node>& termSet ) {
       TNode n = (*eqc_i);
       if( first.isNull() ){
         first = n;
+        //always include all datatypes
+        if( n.getType().isDatatype() ){
+          addedFirst = true;
+          termSet.insert( n );
+        }
       }else{
         if( !addedFirst ){
           addedFirst = true;
diff --git a/src/theory/datatypes/theory_datatypes.h b/src/theory/datatypes/theory_datatypes.h
index 770c3a9..ae29902 100644
--- a/src/theory/datatypes/theory_datatypes.h
+++ b/src/theory/datatypes/theory_datatypes.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -192,7 +192,8 @@ private:
   /** sygus utilities */
   SygusSplit * d_sygus_split;
   SygusSymBreak * d_sygus_sym_break;
-
+  /** uninterpreted constant to variable map */
+  std::map< Node, Node > d_uc_to_fresh_var;
 private:
   /** singleton lemmas (for degenerate co-datatype case) */
   std::map< TypeNode, Node > d_singleton_lemma[2];
@@ -263,7 +264,7 @@ public:
   void presolve();
   void addSharedTerm(TNode t);
   EqualityStatus getEqualityStatus(TNode a, TNode b);
-  void collectModelInfo( TheoryModel* m, bool fullModel );
+  void collectModelInfo( TheoryModel* m );
   void shutdown() { }
   std::string identify() const { return std::string("TheoryDatatypes"); }
   /** equality engine */
@@ -284,6 +285,8 @@ private:
   void merge( Node t1, Node t2 );
   /** collapse selector, s is of the form sel( n ) where n = c */
   void collapseSelector( Node s, Node c );
+  /** remove uninterpreted constants */
+  Node removeUninterpretedConstants( Node n, std::map< Node, Node >& visited );
   /** for checking if cycles exist */
   void checkCycles();
   Node searchForCycle( TNode n, TNode on,
@@ -302,8 +305,6 @@ private:
   void collectTerms( Node n );
   /** get instantiate cons */
   Node getInstantiateCons( Node n, const Datatype& dt, int index );
-  /** process new term that was created internally */
-  void processNewTerm( Node n );
   /** check instantiate */
   void instantiate( EqcInfo* eqc, Node n );
   /** must communicate fact */
@@ -317,6 +318,7 @@ private:
   bool hasTerm( TNode a );
   bool areEqual( TNode a, TNode b );
   bool areDisequal( TNode a, TNode b );
+  bool areCareDisequal( TNode x, TNode y );
   TNode getRepresentative( TNode a );
 };/* class TheoryDatatypes */
 
diff --git a/src/theory/datatypes/theory_datatypes_type_rules.h b/src/theory/datatypes/theory_datatypes_type_rules.h
index 8a44097..2d7866b 100644
--- a/src/theory/datatypes/theory_datatypes_type_rules.h
+++ b/src/theory/datatypes/theory_datatypes_type_rules.h
@@ -2,9 +2,9 @@
 /*! \file theory_datatypes_type_rules.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Andrew Reynolds, Tim King
+ **   Tim King, Morgan Deters, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -80,9 +80,12 @@ struct DatatypeConstructorTypeRule {
                                  << (*tchild_it) << std::endl;
           TypeNode argumentType = *tchild_it;
           if (!childType.isComparableTo(argumentType)) {
+          //if (!childType.isSubtypeOf(argumentType)) {   //FIXME:typing
             std::stringstream ss;
-            ss << "bad type for constructor argument:\nexpected: "
-               << argumentType << "\ngot     : " << childType;
+            ss << "bad type for constructor argument:\n"
+               << "child type:  " << childType << "\n"
+               << "not subtype: " << argumentType << "\n"
+               << "in term : " << n;
             throw TypeCheckingExceptionPrivate(n, ss.str());
           }
         }
@@ -99,6 +102,19 @@ struct DatatypeConstructorTypeRule {
         return false;
       }
     }
+    //check whether it is in normal form?
+    TypeNode tn = n.getType();
+    if( tn.isTuple() ){
+      const Datatype& dt = tn.getDatatype();
+      //may be the wrong constructor, if children types are subtypes
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        if( n[i].getType()!=TypeNode::fromType( dt[0][i].getRangeType() ) ){
+          return false;
+        }
+      }
+    }else if( tn.isCodatatype() ){
+      //TODO?
+    }
     return true;
   }
 }; /* struct DatatypeConstructorTypeRule */
diff --git a/src/theory/datatypes/type_enumerator.cpp b/src/theory/datatypes/type_enumerator.cpp
index 60d319d..ee03b78 100644
--- a/src/theory/datatypes/type_enumerator.cpp
+++ b/src/theory/datatypes/type_enumerator.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/datatypes/type_enumerator.h b/src/theory/datatypes/type_enumerator.h
index 83c9382..8cf4ab3 100644
--- a/src/theory/datatypes/type_enumerator.h
+++ b/src/theory/datatypes/type_enumerator.h
@@ -2,9 +2,9 @@
 /*! \file type_enumerator.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Morgan Deters, Tim King
+ **   Andrew Reynolds, Morgan Deters, Andres Noetzli
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -81,7 +81,7 @@ class DatatypesEnumerator : public TypeEnumeratorBase<DatatypesEnumerator> {
   void init();
 public:
 
-  DatatypesEnumerator(TypeNode type, TypeEnumeratorProperties * tep = NULL) throw() :
+  DatatypesEnumerator(TypeNode type, TypeEnumeratorProperties * tep = NULL) :
     TypeEnumeratorBase<DatatypesEnumerator>(type),
     d_tep(tep),
     d_datatype(DatatypeType(type.toType()).getDatatype()),
@@ -89,7 +89,7 @@ public:
     d_child_enum = false;
     init();
   }
-  DatatypesEnumerator(TypeNode type, bool childEnum, TypeEnumeratorProperties * tep = NULL) throw() :
+  DatatypesEnumerator(TypeNode type, bool childEnum, TypeEnumeratorProperties * tep = NULL) :
     TypeEnumeratorBase<DatatypesEnumerator>(type),
     d_tep(tep),
     d_datatype(DatatypeType(type.toType()).getDatatype()),
@@ -97,7 +97,7 @@ public:
     d_child_enum = childEnum;
     init();
   }
-  DatatypesEnumerator(const DatatypesEnumerator& de) throw() :
+  DatatypesEnumerator(const DatatypesEnumerator& de) :
     TypeEnumeratorBase<DatatypesEnumerator>(de.getType()),
     d_tep(de.d_tep),
     d_datatype(de.d_datatype),
@@ -130,7 +130,7 @@ public:
   virtual ~DatatypesEnumerator() throw() {
   }
 
-  Node operator*() throw(NoMoreValuesException) {
+  Node operator*() {
     Debug("dt-enum-debug") << ": get term " << this << std::endl;
     if(d_ctor < d_has_debruijn + d_datatype.getNumConstructors()) {
       return getCurrentTerm( d_ctor );
@@ -139,7 +139,7 @@ public:
     }
   }
 
-  DatatypesEnumerator& operator++() throw() {
+  DatatypesEnumerator& operator++() {
     Debug("dt-enum-debug") << ": increment " << this << std::endl;
     unsigned prevSize = d_size_limit;
     while(d_ctor < d_has_debruijn+d_datatype.getNumConstructors()) {
diff --git a/src/theory/example/ecdata.cpp b/src/theory/example/ecdata.cpp
index a85db3c..4271464 100644
--- a/src/theory/example/ecdata.cpp
+++ b/src/theory/example/ecdata.cpp
@@ -2,9 +2,9 @@
 /*! \file ecdata.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/example/ecdata.h b/src/theory/example/ecdata.h
index cd582c1..475d0e6 100644
--- a/src/theory/example/ecdata.h
+++ b/src/theory/example/ecdata.h
@@ -2,9 +2,9 @@
 /*! \file ecdata.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/example/theory_uf_tim.cpp b/src/theory/example/theory_uf_tim.cpp
index 825c8fb..da87058 100644
--- a/src/theory/example/theory_uf_tim.cpp
+++ b/src/theory/example/theory_uf_tim.cpp
@@ -2,9 +2,9 @@
 /*! \file theory_uf_tim.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/example/theory_uf_tim.h b/src/theory/example/theory_uf_tim.h
index 7470b4d..a62d9fb 100644
--- a/src/theory/example/theory_uf_tim.h
+++ b/src/theory/example/theory_uf_tim.h
@@ -2,9 +2,9 @@
 /*! \file theory_uf_tim.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/fp/theory_fp.cpp b/src/theory/fp/theory_fp.cpp
index f321227..6c8e49e 100644
--- a/src/theory/fp/theory_fp.cpp
+++ b/src/theory/fp/theory_fp.cpp
@@ -2,9 +2,9 @@
 /*! \file theory_fp.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Martin Brain, Tim King
+ **   Martin Brain, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/fp/theory_fp.h b/src/theory/fp/theory_fp.h
index b1915e3..0355ed8 100644
--- a/src/theory/fp/theory_fp.h
+++ b/src/theory/fp/theory_fp.h
@@ -2,9 +2,9 @@
 /*! \file theory_fp.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Martin Brain, Tim King
+ **   Martin Brain, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/fp/theory_fp_rewriter.cpp b/src/theory/fp/theory_fp_rewriter.cpp
index 612112d..ba4bf92 100644
--- a/src/theory/fp/theory_fp_rewriter.cpp
+++ b/src/theory/fp/theory_fp_rewriter.cpp
@@ -2,10 +2,10 @@
 /*! \file theory_fp_rewriter.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Martin Brain, Tim King, Clark Barrett
+ **   Martin Brain, Paul Meng, Tim King
  ** Copyright (c) 2013  University of Oxford
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/fp/theory_fp_rewriter.h b/src/theory/fp/theory_fp_rewriter.h
index 93547b4..d2a9a04 100644
--- a/src/theory/fp/theory_fp_rewriter.h
+++ b/src/theory/fp/theory_fp_rewriter.h
@@ -2,9 +2,9 @@
 /*! \file theory_fp_rewriter.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Martin Brain
+ **   Martin Brain, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/fp/theory_fp_type_rules.h b/src/theory/fp/theory_fp_type_rules.h
index edda93d..296a2f4 100644
--- a/src/theory/fp/theory_fp_type_rules.h
+++ b/src/theory/fp/theory_fp_type_rules.h
@@ -2,9 +2,9 @@
 /*! \file theory_fp_type_rules.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Martin Brain
+ **   Martin Brain, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/idl/idl_assertion.cpp b/src/theory/idl/idl_assertion.cpp
index 1d42f77..7738c6c 100644
--- a/src/theory/idl/idl_assertion.cpp
+++ b/src/theory/idl/idl_assertion.cpp
@@ -2,9 +2,9 @@
 /*! \file idl_assertion.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Tim King
+ **   Dejan Jovanovic, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/idl/idl_assertion.h b/src/theory/idl/idl_assertion.h
index 5db1db0..e70e2d4 100644
--- a/src/theory/idl/idl_assertion.h
+++ b/src/theory/idl/idl_assertion.h
@@ -2,9 +2,9 @@
 /*! \file idl_assertion.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Tim King
+ **   Dejan Jovanovic, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/idl/idl_assertion_db.cpp b/src/theory/idl/idl_assertion_db.cpp
index c08cb64..55ef29b 100644
--- a/src/theory/idl/idl_assertion_db.cpp
+++ b/src/theory/idl/idl_assertion_db.cpp
@@ -2,9 +2,9 @@
 /*! \file idl_assertion_db.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Tim King
+ **   Dejan Jovanovic, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/idl/idl_assertion_db.h b/src/theory/idl/idl_assertion_db.h
index 6481deb..a89c8e4 100644
--- a/src/theory/idl/idl_assertion_db.h
+++ b/src/theory/idl/idl_assertion_db.h
@@ -2,9 +2,9 @@
 /*! \file idl_assertion_db.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Tim King
+ **   Dejan Jovanovic, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/idl/idl_model.cpp b/src/theory/idl/idl_model.cpp
index 4d20719..5096c11 100644
--- a/src/theory/idl/idl_model.cpp
+++ b/src/theory/idl/idl_model.cpp
@@ -2,9 +2,9 @@
 /*! \file idl_model.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Tim King
+ **   Dejan Jovanovic, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/idl/idl_model.h b/src/theory/idl/idl_model.h
index 35663a2..e4a9f05 100644
--- a/src/theory/idl/idl_model.h
+++ b/src/theory/idl/idl_model.h
@@ -2,9 +2,9 @@
 /*! \file idl_model.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Tim King
+ **   Dejan Jovanovic, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/idl/theory_idl.cpp b/src/theory/idl/theory_idl.cpp
index 8f85dc9..60d04fe 100644
--- a/src/theory/idl/theory_idl.cpp
+++ b/src/theory/idl/theory_idl.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Dejan Jovanovic, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/idl/theory_idl.h b/src/theory/idl/theory_idl.h
index 1d2aeca..6257708 100644
--- a/src/theory/idl/theory_idl.h
+++ b/src/theory/idl/theory_idl.h
@@ -2,9 +2,9 @@
 /*! \file theory_idl.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Tim King
+ **   Dejan Jovanovic, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/interrupted.h b/src/theory/interrupted.h
index e56f351..d53ee9d 100644
--- a/src/theory/interrupted.h
+++ b/src/theory/interrupted.h
@@ -2,9 +2,9 @@
 /*! \file interrupted.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/ite_utilities.cpp b/src/theory/ite_utilities.cpp
index 419e5b4..e32fa1e 100644
--- a/src/theory/ite_utilities.cpp
+++ b/src/theory/ite_utilities.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Morgan Deters, Kshitij Bansal
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/ite_utilities.h b/src/theory/ite_utilities.h
index 98141d4..29f4f7f 100644
--- a/src/theory/ite_utilities.h
+++ b/src/theory/ite_utilities.h
@@ -2,9 +2,9 @@
 /*! \file ite_utilities.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Paul Meng, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/logic_info.cpp b/src/theory/logic_info.cpp
index 0e4ccf0..ad3a010 100644
--- a/src/theory/logic_info.cpp
+++ b/src/theory/logic_info.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Tim King, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -36,7 +36,7 @@ LogicInfo::LogicInfo() :
   d_sharingTheories(0),
   d_integers(true),
   d_reals(true),
-  d_linear(true),// for now, "everything enabled" doesn't include non-linear arith
+  d_linear(false),
   d_differenceLogic(false),
   d_cardinalityConstraints(false),
   d_locked(false) {
@@ -340,21 +340,25 @@ void LogicInfo::setLogicString(std::string logicString) throw(IllegalArgumentExc
     // the "all theories included" logic, no quantifiers
     enableEverything();
     disableQuantifiers();
+    arithNonLinear();
     p += 16;
   } else if(!strcmp(p, "QF_ALL")) {
     // the "all theories included" logic, no quantifiers
     enableEverything();
     disableQuantifiers();
+    arithNonLinear();
     p += 6;
   } else if(!strcmp(p, "ALL_SUPPORTED")) {
     // the "all theories included" logic, with quantifiers
     enableEverything();
     enableQuantifiers();
+    arithNonLinear();
     p += 13;
   } else if(!strcmp(p, "ALL")) {
     // the "all theories included" logic, with quantifiers
     enableEverything();
     enableQuantifiers();
+    arithNonLinear();
     p += 3;
   } else {
     if(!strncmp(p, "QF_", 3)) {
diff --git a/src/theory/logic_info.h b/src/theory/logic_info.h
index 6efdd46..a502041 100644
--- a/src/theory/logic_info.h
+++ b/src/theory/logic_info.h
@@ -2,9 +2,9 @@
 /*! \file logic_info.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Dejan Jovanovic
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/mkrewriter b/src/theory/mkrewriter
index 5db2e97..ea7deb2 100755
--- a/src/theory/mkrewriter
+++ b/src/theory/mkrewriter
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
 #
 # mkrewriter
 # Morgan Deters <mdeters at cs.nyu.edu> for CVC4
@@ -212,6 +212,12 @@ function constant {
   check_theory_seen
 }
 
+function nullaryoperator {
+  # nullaryoperator K ["comment"]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+}
+
 function check_theory_seen {
   if $seen_endtheory; then
     echo "$kf:$lineno: error: command after \"endtheory\" declaration (endtheory has to be last)" >&2
diff --git a/src/theory/mktheorytraits b/src/theory/mktheorytraits
index 9107eb7..15166fc 100755
--- a/src/theory/mktheorytraits
+++ b/src/theory/mktheorytraits
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
 #
 # mktheorytraits
 # Morgan Deters <mdeters at cs.nyu.edu> for CVC4
@@ -345,6 +345,13 @@ function constant {
   register_kind "$1" 0 "$5"
 }
 
+function nullaryoperator {
+  # nullaryoperator K ["comment"]
+  lineno=${BASH_LINENO[0]}
+  check_theory_seen
+  register_kind "$1" 0 "$2"
+}
+
 function register_sort {
   id=$1
   cardinality=$2
diff --git a/src/theory/output_channel.h b/src/theory/output_channel.h
index 4ca113e..355936d 100644
--- a/src/theory/output_channel.h
+++ b/src/theory/output_channel.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Liana Hadarean, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/alpha_equivalence.cpp b/src/theory/quantifiers/alpha_equivalence.cpp
index a5fd34c..6af5bd9 100644
--- a/src/theory/quantifiers/alpha_equivalence.cpp
+++ b/src/theory/quantifiers/alpha_equivalence.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/alpha_equivalence.h b/src/theory/quantifiers/alpha_equivalence.h
index 8e7556e..3c04393 100644
--- a/src/theory/quantifiers/alpha_equivalence.h
+++ b/src/theory/quantifiers/alpha_equivalence.h
@@ -2,9 +2,9 @@
 /*! \file alpha_equivalence.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Tim King
+ **   Andrew Reynolds, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/ambqi_builder.cpp b/src/theory/quantifiers/ambqi_builder.cpp
index 2ccc17e..1bab682 100644
--- a/src/theory/quantifiers/ambqi_builder.cpp
+++ b/src/theory/quantifiers/ambqi_builder.cpp
@@ -2,9 +2,9 @@
 /*! \file ambqi_builder.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Andrew Reynolds
+ **   Morgan Deters, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -586,7 +586,7 @@ bool AbsDef::construct( FirstOrderModelAbs * m, TNode q, TNode n, AbsDef * f,
     //  exit( 10 );
     //}
     return true;
-  }else if( varChCount==1 && n.getKind()==EQUAL ){
+  }else if( varChCount==1 && ( n.getKind()==EQUAL && !n[0].getType().isBoolean() ) ){
     Trace("ambqi-check-debug2") << "Expand variable child..." << std::endl;
     //expand the variable based on its finite domain
     AbsDef a;
@@ -598,7 +598,7 @@ bool AbsDef::construct( FirstOrderModelAbs * m, TNode q, TNode n, AbsDef * f,
     Trace("ambqi-check-debug2") << "Construct compose with variable..." << std::endl;
     construct_compose( m, q, n, f, children, bchildren, vchildren, entry, entry_def );
     return true;
-  }else if( varChCount==2 && n.getKind()==EQUAL ){
+  }else if( varChCount==2 && ( n.getKind()==EQUAL && !n[0].getType().isBoolean() ) ){
     Trace("ambqi-check-debug2") << "Construct variable equality..." << std::endl;
     //efficient expansion of the equality
     construct_var_eq( m, q, vchildren[0], vchildren[1], val_none, val_none );
@@ -721,115 +721,111 @@ QModelBuilder( c, qe ){
 
 //------------------------model construction----------------------------
 
-void AbsMbqiBuilder::processBuildModel(TheoryModel* m, bool fullModel) {
-  Trace("ambqi-debug") << "process build model " << fullModel << std::endl;
+bool AbsMbqiBuilder::processBuildModel(TheoryModel* m) {
+  Trace("ambqi-debug") << "process build model " << std::endl;
   FirstOrderModel* f = (FirstOrderModel*)m;
   FirstOrderModelAbs* fm = f->asFirstOrderModelAbs();
-  if( fullModel ){
-    Trace("ambqi-model") << "Construct model representation..." << std::endl;
-    //make function values
-    for( std::map<Node, AbsDef * >::iterator it = fm->d_models.begin(); it != fm->d_models.end(); ++it ) {
-      if( it->first.getType().getNumChildren()>1 ){
-        Trace("ambqi-model") << "Construct for " << it->first << "..." << std::endl;
-        m->d_uf_models[ it->first ] = fm->getFunctionValue( it->first, "$x" );
-      }
-    }
-    TheoryEngineModelBuilder::processBuildModel( m, fullModel );
-    //mark that the model has been set
-    fm->markModelSet();
-    //debug the model
-    debugModel( fm );
-  }else{
-    fm->initialize();
-    //process representatives
-    fm->d_rep_id.clear();
-    fm->d_domain.clear();
-
-    //initialize boolean sort
-    TypeNode b = d_true.getType();
-    fm->d_rep_set.d_type_reps[b].clear();
-    fm->d_rep_set.d_type_reps[b].push_back( d_false );
-    fm->d_rep_set.d_type_reps[b].push_back( d_true );
-    fm->d_rep_id[d_false] = 0;
-    fm->d_rep_id[d_true] = 1;
-
-    //initialize unintpreted sorts
-    Trace("ambqi-model") << std::endl << "Making representatives..." << std::endl;
-    for( std::map< TypeNode, std::vector< Node > >::iterator it = fm->d_rep_set.d_type_reps.begin();
-         it != fm->d_rep_set.d_type_reps.end(); ++it ){
-      if( it->first.isSort() ){
-        Assert( !it->second.empty() );
-        //set the domain
-        fm->d_domain[it->first] = 0;
-        Trace("ambqi-model") << "Representatives for " << it->first << " : " << std::endl;
-        for( unsigned i=0; i<it->second.size(); i++ ){
-          if( i<32 ){
-            fm->d_domain[it->first] |= ( 1 << i );
-          }
-          Trace("ambqi-model") << i << " : " << it->second[i] << std::endl;
-          fm->d_rep_id[it->second[i]] = i;
-        }
-        if( it->second.size()>=32 ){
-          fm->d_domain.erase( it->first );
+  fm->initialize();
+  //process representatives
+  fm->d_rep_id.clear();
+  fm->d_domain.clear();
+
+  //initialize boolean sort
+  TypeNode b = d_true.getType();
+  fm->d_rep_set.d_type_reps[b].clear();
+  fm->d_rep_set.d_type_reps[b].push_back( d_false );
+  fm->d_rep_set.d_type_reps[b].push_back( d_true );
+  fm->d_rep_id[d_false] = 0;
+  fm->d_rep_id[d_true] = 1;
+
+  //initialize unintpreted sorts
+  Trace("ambqi-model") << std::endl << "Making representatives..." << std::endl;
+  for( std::map< TypeNode, std::vector< Node > >::iterator it = fm->d_rep_set.d_type_reps.begin();
+       it != fm->d_rep_set.d_type_reps.end(); ++it ){
+    if( it->first.isSort() ){
+      Assert( !it->second.empty() );
+      //set the domain
+      fm->d_domain[it->first] = 0;
+      Trace("ambqi-model") << "Representatives for " << it->first << " : " << std::endl;
+      for( unsigned i=0; i<it->second.size(); i++ ){
+        if( i<32 ){
+          fm->d_domain[it->first] |= ( 1 << i );
         }
+        Trace("ambqi-model") << i << " : " << it->second[i] << std::endl;
+        fm->d_rep_id[it->second[i]] = i;
+      }
+      if( it->second.size()>=32 ){
+        fm->d_domain.erase( it->first );
       }
     }
+  }
 
-    Trace("ambqi-model") << std::endl << "Making function definitions..." << std::endl;
-    //construct the models for functions
-    for( std::map<Node, AbsDef * >::iterator it = fm->d_models.begin(); it != fm->d_models.end(); ++it ) {
-      Node f = it->first;
-      Trace("ambqi-model-debug") << "Building Model for " << f << std::endl;
-      //reset the model
-      it->second->clear();
-      //get all (non-redundant) f-applications
-      std::vector< TNode > fapps;
-      Trace("ambqi-model-debug") << "Initial terms: " << std::endl;
-      for( size_t i=0; i<fm->d_uf_terms[f].size(); i++ ){
-        Node n = fm->d_uf_terms[f][i];
-        if( d_qe->getTermDatabase()->isTermActive( n ) ){
-          Trace("ambqi-model-debug") << "  " << n << " -> " << fm->getRepresentativeId( n ) << std::endl;
-          fapps.push_back( n );
-        }
-      }
-      if( fapps.empty() ){
-        //choose arbitrary value
-        Node mbt = d_qe->getTermDatabase()->getModelBasisOpTerm(f);
-        Trace("ambqi-model-debug") << "Initial terms empty, add " << mbt << std::endl;
-        fapps.push_back( mbt );
-      }
-      bool fValid = true;
-      for( unsigned i=0; i<fapps[0].getNumChildren(); i++ ){
-        if( fm->d_domain.find( fapps[0][i].getType() )==fm->d_domain.end() ){
-          Trace("ambqi-model") << "Interpretation of " << f << " is not valid.";
-          Trace("ambqi-model") << " (domain for " << fapps[0][i].getType() << " is too large)." << std::endl;
-          fValid = false;
-          break;
-        }
+  Trace("ambqi-model") << std::endl << "Making function definitions..." << std::endl;
+  //construct the models for functions
+  for( std::map<Node, AbsDef * >::iterator it = fm->d_models.begin(); it != fm->d_models.end(); ++it ) {
+    Node f = it->first;
+    Trace("ambqi-model-debug") << "Building Model for " << f << std::endl;
+    //reset the model
+    it->second->clear();
+    //get all (non-redundant) f-applications
+    std::vector< TNode > fapps;
+    Trace("ambqi-model-debug") << "Initial terms: " << std::endl;
+    std::map< Node, std::vector< Node > >::iterator itut = fm->d_uf_terms.find( f );
+    if( itut!=fm->d_uf_terms.end() ){
+      for( size_t i=0; i<itut->second.size(); i++ ){
+        Node n = itut->second[i];
+        // only consider unique up to congruence (in model equality engine)?
+        Trace("ambqi-model-debug") << "  " << n << " -> " << fm->getRepresentativeId( n ) << std::endl;
+        fapps.push_back( n );
+      }
+    }
+    if( fapps.empty() ){
+      //choose arbitrary value
+      Node mbt = d_qe->getTermDatabase()->getModelBasisOpTerm(f);
+      Trace("ambqi-model-debug") << "Initial terms empty, add " << mbt << std::endl;
+      fapps.push_back( mbt );
+    }
+    bool fValid = true;
+    for( unsigned i=0; i<fapps[0].getNumChildren(); i++ ){
+      if( fm->d_domain.find( fapps[0][i].getType() )==fm->d_domain.end() ){
+        Trace("ambqi-model") << "Interpretation of " << f << " is not valid.";
+        Trace("ambqi-model") << " (domain for " << fapps[0][i].getType() << " is too large)." << std::endl;
+        fValid = false;
+        break;
       }
-      fm->d_models_valid[f] = fValid;
-      if( fValid ){
-        //construct the ambqi model
-        it->second->construct_func( fm, fapps );
-        Trace("ambqi-model-debug") << "Interpretation of " << f << " : " << std::endl;
-        it->second->debugPrint("ambqi-model-debug", fm, fapps[0] );
-        Trace("ambqi-model-debug") << "Simplifying " << f << "..." << std::endl;
-        it->second->simplify( fm, TNode::null(), fapps[0] );
-        Trace("ambqi-model") << "(Simplified) interpretation of " << f << " : " << std::endl;
-        it->second->debugPrint("ambqi-model", fm, fapps[0] );
+    }
+    fm->d_models_valid[f] = fValid;
+    if( fValid ){
+      //construct the ambqi model
+      it->second->construct_func( fm, fapps );
+      Trace("ambqi-model-debug") << "Interpretation of " << f << " : " << std::endl;
+      it->second->debugPrint("ambqi-model-debug", fm, fapps[0] );
+      Trace("ambqi-model-debug") << "Simplifying " << f << "..." << std::endl;
+      it->second->simplify( fm, TNode::null(), fapps[0] );
+      Trace("ambqi-model") << "(Simplified) interpretation of " << f << " : " << std::endl;
+      it->second->debugPrint("ambqi-model", fm, fapps[0] );
 
 /*
-        if( Debug.isOn("ambqi-model-debug") ){
-          for( size_t i=0; i<fm->d_uf_terms[f].size(); i++ ){
-            Node e = it->second->evaluate_n( fm, fm->d_uf_terms[f][i] );
-            Debug("ambqi-model-debug") << fm->d_uf_terms[f][i] << " evaluates to " << e << std::endl;
-            Assert( fm->areEqual( e, fm->d_uf_terms[f][i] ) );
-          }
+      if( Debug.isOn("ambqi-model-debug") ){
+        for( size_t i=0; i<fm->d_uf_terms[f].size(); i++ ){
+          Node e = it->second->evaluate_n( fm, fm->d_uf_terms[f][i] );
+          Debug("ambqi-model-debug") << fm->d_uf_terms[f][i] << " evaluates to " << e << std::endl;
+          Assert( fm->areEqual( e, fm->d_uf_terms[f][i] ) );
         }
-*/
       }
+*/
+    }
+  }
+  Trace("ambqi-model") << "Construct model representation..." << std::endl;
+  //make function values
+  for( std::map<Node, AbsDef * >::iterator it = fm->d_models.begin(); it != fm->d_models.end(); ++it ) {
+    if( it->first.getType().getNumChildren()>1 ){
+      Trace("ambqi-model") << "Construct for " << it->first << "..." << std::endl;
+      m->d_uf_models[ it->first ] = fm->getFunctionValue( it->first, "$x" );
     }
   }
+  Assert( d_addedLemmas==0 );
+  return TheoryEngineModelBuilder::processBuildModel( m );
 }
 
 
diff --git a/src/theory/quantifiers/ambqi_builder.h b/src/theory/quantifiers/ambqi_builder.h
index 0adaef6..89cd8b6 100644
--- a/src/theory/quantifiers/ambqi_builder.h
+++ b/src/theory/quantifiers/ambqi_builder.h
@@ -2,9 +2,9 @@
 /*! \file ambqi_builder.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Clark Barrett
+ **   Morgan Deters, Tim King, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -91,7 +91,7 @@ public:
   AbsMbqiBuilder( context::Context* c, QuantifiersEngine* qe );
   ~AbsMbqiBuilder() throw() {}
   //process build model
-  void processBuildModel(TheoryModel* m, bool fullModel);
+  bool processBuildModel(TheoryModel* m);
   //do exhaustive instantiation
   int doExhaustiveInstantiation( FirstOrderModel * fm, Node q, int effort );
 };
diff --git a/src/theory/quantifiers/anti_skolem.cpp b/src/theory/quantifiers/anti_skolem.cpp
index 908aeec..e63dc6a 100644
--- a/src/theory/quantifiers/anti_skolem.cpp
+++ b/src/theory/quantifiers/anti_skolem.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/anti_skolem.h b/src/theory/quantifiers/anti_skolem.h
index c996b17..0786754 100644
--- a/src/theory/quantifiers/anti_skolem.h
+++ b/src/theory/quantifiers/anti_skolem.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/bounded_integers.cpp b/src/theory/quantifiers/bounded_integers.cpp
index 6b53612..6920fc5 100644
--- a/src/theory/quantifiers/bounded_integers.cpp
+++ b/src/theory/quantifiers/bounded_integers.cpp
@@ -2,9 +2,9 @@
 /*! \file bounded_integers.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Andrew Reynolds, Tim King
+ **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -615,10 +615,10 @@ void BoundedIntegers::getBoundValues( Node f, Node v, RepSetIterator * rsi, Node
   getBounds( f, v, rsi, l, u );
   Trace("bound-int-rsi") << "Get value in model for..." << l << " and " << u << std::endl;
   if( !l.isNull() ){
-    l = d_quantEngine->getModel()->getCurrentModelValue( l );
+    l = d_quantEngine->getModel()->getValue( l );
   }
   if( !u.isNull() ){
-    u = d_quantEngine->getModel()->getCurrentModelValue( u );
+    u = d_quantEngine->getModel()->getValue( u );
   }
   Trace("bound-int-rsi") << "Value is " << l << " ... " << u << std::endl;
   return;
@@ -656,7 +656,7 @@ Node BoundedIntegers::getSetRangeValue( Node q, Node v, RepSetIterator * rsi ) {
   Node sr = getSetRange( q, v, rsi );
   if( !sr.isNull() ){
     Trace("bound-int-rsi") << "Get value in model for..." << sr << std::endl;
-    sr = d_quantEngine->getModel()->getCurrentModelValue( sr );
+    sr = d_quantEngine->getModel()->getValue( sr );
     //if non-constant, then sr does not occur in the model, we fail
     if( !sr.isConst() ){
       return Node::null();
@@ -679,7 +679,7 @@ Node BoundedIntegers::getSetRangeValue( Node q, Node v, RepSetIterator * rsi ) {
         for( unsigned i = 0; it != it_end; ++ it, ++i ){
           Node lit = (*it).assertion;
           if( lit.getKind()==kind::MEMBER ){
-            Node vr = d_quantEngine->getModel()->getCurrentModelValue( lit[0] );
+            Node vr = d_quantEngine->getModel()->getValue( lit[0] );
             Trace("bound-int-rsi-debug") << "....membership for " << lit << " ==> " << vr << std::endl;
             Trace("bound-int-rsi-debug") << "  " << (val_to_term.find( vr )!=val_to_term.end()) << " " << d_quantEngine->getEqualityQuery()->areEqual( d_setm_range_lit[q][v][1], lit[1] ) << std::endl;
             if( val_to_term.find( vr )!=val_to_term.end() ){
@@ -797,6 +797,7 @@ bool BoundedIntegers::getBoundElements( RepSetIterator * rsi, bool initial, Node
       Node l, u;
       getBoundValues( q, v, rsi, l, u );
       if( l.isNull() || u.isNull() ){
+        Trace("bound-int-warn") << "WARNING: Could not find integer bounds in model for " << v << " in " << q << std::endl;
         //failed, abort the iterator
         return false;
       }else{
@@ -824,6 +825,7 @@ bool BoundedIntegers::getBoundElements( RepSetIterator * rsi, bool initial, Node
     }else if( bvt==BOUND_SET_MEMBER  ){ 
       Node srv = getSetRangeValue( q, v, rsi );
       if( srv.isNull() ){
+        Trace("bound-int-warn") << "WARNING: Could not find set bound in model for " << v << " in " << q << std::endl;
         return false;
       }else{
         Trace("bound-int-rsi") << "Bounded by set membership : " << srv << std::endl;
diff --git a/src/theory/quantifiers/bounded_integers.h b/src/theory/quantifiers/bounded_integers.h
index f367b32..f0a3a85 100644
--- a/src/theory/quantifiers/bounded_integers.h
+++ b/src/theory/quantifiers/bounded_integers.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/candidate_generator.cpp b/src/theory/quantifiers/candidate_generator.cpp
index 7c9a619..01e71be 100644
--- a/src/theory/quantifiers/candidate_generator.cpp
+++ b/src/theory/quantifiers/candidate_generator.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -284,7 +284,7 @@ Node CandidateGeneratorQEAll::getNextCandidate() {
       TNode nh = d_qe->getTermDatabase()->getEligibleTermInEqc( n );
       if( !nh.isNull() ){
         if( options::instMaxLevel()!=-1 || options::lteRestrictInstClosure() ){
-          nh = d_qe->getEqualityQuery()->getInternalRepresentative( nh, d_f, d_index );
+          nh = d_qe->getInternalRepresentative( nh, d_f, d_index );
           //don't consider this if already the instantiation is ineligible
           if( !d_qe->getTermDatabase()->isTermEligibleForInstantiation( nh, d_f, false ) ){
             nh = Node::null();
diff --git a/src/theory/quantifiers/candidate_generator.h b/src/theory/quantifiers/candidate_generator.h
index 4fc6969..dd71ef5 100644
--- a/src/theory/quantifiers/candidate_generator.h
+++ b/src/theory/quantifiers/candidate_generator.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Andrew Reynolds, Clark Barrett
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/ce_guided_instantiation.cpp b/src/theory/quantifiers/ce_guided_instantiation.cpp
index 9903f14..e82af63 100644
--- a/src/theory/quantifiers/ce_guided_instantiation.cpp
+++ b/src/theory/quantifiers/ce_guided_instantiation.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -32,8 +32,7 @@ namespace quantifiers {
 
 
 CegConjecture::CegConjecture( QuantifiersEngine * qe, context::Context* c )
-    : d_qe( qe ), d_curr_lit( c, 0 )
-{
+    : d_qe( qe ), d_curr_lit( c, 0 ) {
   d_refine_count = 0;
   d_ceg_si = new CegConjectureSingleInv( qe, this );
 }
@@ -71,6 +70,7 @@ void CegConjecture::assign( Node q ) {
     Trace("cegqi") << "Conjecture has " << d_base_disj.size() << " disjuncts." << std::endl;
     //store the inner variables for each disjunct
     for( unsigned j=0; j<d_base_disj.size(); j++ ){
+      Trace("cegqi") << "  " << j << " : " << d_base_disj[j] << std::endl;
       d_inner_vars_disj.push_back( std::vector< Node >() );
       //if the disjunct is an existential, store it
       if( d_base_disj[j].getKind()==NOT && d_base_disj[j][0].getKind()==FORALL ){
@@ -80,6 +80,12 @@ void CegConjecture::assign( Node q ) {
         }
       }
     }
+    if( options::sygusUnifCondSol() ){
+      // for each variable, determine whether we can do conditional counterexamples
+      for( unsigned i=0; i<d_candidates.size(); i++ ){
+        registerCandidateConditional( d_candidates[i] );
+      }
+    }
     d_syntax_guided = true;
   }else if( d_qe->getTermDatabase()->isQAttrSynthesis( d_assert_quant ) ){
     d_syntax_guided = false;
@@ -88,25 +94,181 @@ void CegConjecture::assign( Node q ) {
   }
 }
 
-void CegConjecture::initializeGuard( QuantifiersEngine * qe ){
+void CegConjecture::registerCandidateConditional( Node v ) {
+  TypeNode tn = v.getType();
+  bool type_valid = false;
+  bool success = false;
+  std::vector< TypeNode > unif_types;
+  if( tn.isDatatype() ){
+    const Datatype& dt = ((DatatypeType)tn.toType()).getDatatype();
+    if( dt.isSygus() ){
+      type_valid = true;
+      if( d_candidates.size()==1 ){  // conditional solutions for multiple function conjectures TODO?
+        for( unsigned r=0; r<2; r++ ){
+          for( unsigned j=0; j<dt.getNumConstructors(); j++ ){
+            Node op = Node::fromExpr( dt[j].getSygusOp() );
+            if( r==0 ){
+              if( op.getKind() == kind::BUILTIN ){
+                Kind sk = NodeManager::operatorToKind( op );
+                if( sk==kind::ITE ){
+                  // we can do unification
+                  success = true;
+                  d_cinfo[v].d_csol_op = Node::fromExpr( dt[j].getConstructor() );
+                  Assert( dt[j].getNumArgs()==3 );
+                  for( unsigned k=0; k<3; k++ ){
+                    unif_types.push_back( TypeNode::fromType( dt[j][k].getRangeType() ) );
+                  }
+                  break;
+                }
+              }
+            }else{
+              if( dt[j].getNumArgs()>=3 ){
+                // could be a defined ITE (this is a hack for ICFP benchmarks)
+                std::vector< Node > utchildren;
+                utchildren.push_back( Node::fromExpr( dt[j].getConstructor() ) );
+                std::vector< Node > sks;
+                for( unsigned k=0; k<dt[j].getNumArgs(); k++ ){
+                  Type t = dt[j][k].getRangeType();
+                  Node kv = NodeManager::currentNM()->mkSkolem( "ut", TypeNode::fromType( t ) );
+                  sks.push_back( kv );
+                  utchildren.push_back( kv );
+                }
+                Node ut = NodeManager::currentNM()->mkNode( kind::APPLY_CONSTRUCTOR, utchildren );
+                std::vector< Node > echildren;
+                echildren.push_back( Node::fromExpr( dt.getSygusEvaluationFunc() ) );
+                echildren.push_back( ut );
+                Node sbvl = Node::fromExpr( dt.getSygusVarList() );
+                for( unsigned k=0; k<sbvl.getNumChildren(); k++ ){
+                  echildren.push_back( sbvl[k] );
+                }
+                Node eut = NodeManager::currentNM()->mkNode( kind::APPLY_UF, echildren );
+                Trace("sygus-unif-debug") << "Test evaluation of " << eut << "..." << std::endl;
+                eut = d_qe->getTermDatabaseSygus()->unfold( eut );
+                Trace("sygus-unif-debug") << "...got " << eut << std::endl;
+                if( eut.getKind()==kind::ITE ){
+                  success = true;
+                  std::vector< Node > vs;
+                  std::vector< Node > ss;
+                  std::map< Node, unsigned > templ_var_index;
+                  for( unsigned k=0; k<sks.size(); k++ ){
+                    echildren[1] = sks[k];
+                    Node esk = NodeManager::currentNM()->mkNode( kind::APPLY_UF, echildren );
+                    vs.push_back( esk );
+                    Node tvar = NodeManager::currentNM()->mkSkolem( "templ", esk.getType() );
+                    templ_var_index[tvar] = k;
+                    ss.push_back( tvar );
+                  }
+                  eut = eut.substitute( vs.begin(), vs.end(), ss.begin(), ss.end() );
+                  Trace("sygus-unif") << "Defined constructor " << j << ", base term is " << eut << std::endl;
+                  //success if we can find a injection from ITE args to sygus args
+                  std::map< unsigned, unsigned > templ_injection;
+                  for( unsigned k=0; k<3; k++ ){
+                    if( !inferIteTemplate( k, eut[k], templ_var_index, templ_injection ) ){
+                      Trace("sygus-unif") << "...failed to find injection (range)." << std::endl;
+                      success = false;
+                      break;
+                    }
+                    if( templ_injection.find( k )==templ_injection.end() ){
+                      Trace("sygus-unif") << "...failed to find injection (domain)." << std::endl;
+                      success = false;
+                      break;
+                    }
+                  }
+                  if( success ){
+                    d_cinfo[v].d_csol_op = Node::fromExpr( dt[j].getConstructor() );
+                    for( unsigned k=0; k<3; k++ ){
+                      Assert( templ_injection.find( k )!=templ_injection.end() );
+                      unsigned sk_index = templ_injection[k];
+                      unif_types.push_back( sks[sk_index].getType() );
+                      //also store the template information, if necessary
+                      Node teut = eut[k];
+                      if( !teut.isVar() ){
+                        d_cinfo[v].d_template[k] = teut;
+                        d_cinfo[v].d_template_arg[k] = ss[sk_index];
+                        Trace("sygus-unif") << "  Arg " << k << " : template : " << teut << ", arg " << ss[sk_index] << std::endl;
+                      }else{
+                        Assert( teut==ss[sk_index] );
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+          if( success ){
+            break;
+          }
+        }
+      }
+    }
+  }
+  //mark active
+  if( !success ){
+    d_cinfo[v].d_csol_status = -1;
+  }else{     
+    //make progress guard
+    Node pg = Rewriter::rewrite( NodeManager::currentNM()->mkSkolem( "P", NodeManager::currentNM()->booleanType(), "Progress guard for conditional solution." ) );
+    Node pglem = NodeManager::currentNM()->mkNode( kind::OR, pg.negate(), pg );
+    Trace("cegqi-lemma") << "Cegqi::Lemma : progress split : " << pglem << std::endl;
+    d_qe->getOutputChannel().lemma( pglem );
+    d_qe->getOutputChannel().requirePhase( pg, true );
+              
+    Assert( unif_types.size()==3 ); 
+    d_cinfo[v].d_csol_cond = NodeManager::currentNM()->mkSkolem( "c", unif_types[0] );
+    for( unsigned k=0; k<2; k++ ){
+      d_cinfo[v].d_csol_var[k] = NodeManager::currentNM()->mkSkolem( "e", unif_types[k+1] );
+      // optimization : need not be an ITE if types are equivalent  TODO
+    }
+    d_cinfo[v].d_csol_progress_guard = pg;
+    Trace("sygus-unif") << "Can do synthesis unification for variable " << v << ", based on operator " << d_cinfo[v].d_csol_op << std::endl;
+  }
+  if( !type_valid ){
+    Assert( false );
+  }
+}
+
+bool CegConjecture::inferIteTemplate( unsigned k, Node n, std::map< Node, unsigned >& templ_var_index, std::map< unsigned, unsigned >& templ_injection ){
+  if( n.getNumChildren()==0 ){
+    std::map< Node, unsigned >::iterator itt = templ_var_index.find( n );
+    if( itt!=templ_var_index.end() ){
+      unsigned kk = itt->second;
+      std::map< unsigned, unsigned >::iterator itti = templ_injection.find( k );
+      if( itti==templ_injection.end() ){
+        templ_injection[k] = kk;
+      }else if( itti->second!=kk ){
+        return false;
+      }
+    }
+    return true;
+  }else{
+    for( unsigned i=0; i<n.getNumChildren(); i++ ){
+      if( !inferIteTemplate( k, n[i], templ_var_index, templ_injection ) ){
+        return false;
+      }
+    }
+  }
+  return true;
+}
+
+void CegConjecture::initializeGuard(){
   if( isAssigned() ){
     if( !d_syntax_guided ){
       if( d_nsg_guard.isNull() ){
         d_nsg_guard = Rewriter::rewrite( NodeManager::currentNM()->mkSkolem( "G", NodeManager::currentNM()->booleanType() ) );
-        d_nsg_guard = qe->getValuation().ensureLiteral( d_nsg_guard );
+        d_nsg_guard = d_qe->getValuation().ensureLiteral( d_nsg_guard );
         AlwaysAssert( !d_nsg_guard.isNull() );
-        qe->getOutputChannel().requirePhase( d_nsg_guard, true );
+        d_qe->getOutputChannel().requirePhase( d_nsg_guard, true );
         //add immediate lemma
         Node lem = NodeManager::currentNM()->mkNode( OR, d_nsg_guard.negate(), d_base_inst.negate() );
         Trace("cegqi-lemma") << "Cegqi::Lemma : non-syntax-guided : " << lem << std::endl;
-        qe->getOutputChannel().lemma( lem );
+        d_qe->getOutputChannel().lemma( lem );
       }
     }else if( d_ceg_si->d_si_guard.isNull() ){
       std::vector< Node > lems;
       d_ceg_si->getInitialSingleInvLemma( lems );
       for( unsigned i=0; i<lems.size(); i++ ){
         Trace("cegqi-lemma") << "Cegqi::Lemma : single invocation " << i << " : " << lems[i] << std::endl;
-        qe->getOutputChannel().lemma( lems[i] );
+        d_qe->getOutputChannel().lemma( lems[i] );
         if( Trace.isOn("cegqi-debug") ){
           Node rlem = Rewriter::rewrite( lems[i] );
           Trace("cegqi-debug") << "...rewritten : " << rlem << std::endl;
@@ -117,7 +279,25 @@ void CegConjecture::initializeGuard( QuantifiersEngine * qe ){
   }
 }
 
-Node CegConjecture::getLiteral( QuantifiersEngine * qe, int i ) {
+void CegConjecture::setMeasureTerm( Node mt ){ 
+  d_measure_term = mt;
+  d_active_measure_term = mt;
+}
+
+Node CegConjecture::getMeasureTermFactor( Node v ) {
+  Node ret;
+  if( getCegqiFairMode()==CEGQI_FAIR_DT_SIZE ){
+    if( v.getType().isDatatype() ){
+      ret = NodeManager::currentNM()->mkNode( DT_SIZE, v );
+    }
+  }
+  //TODO
+  Assert( ret.isNull() || ret.getType().isInteger() );
+  return ret;
+}
+  
+  
+Node CegConjecture::getFairnessLiteral( int i ) {
   if( d_measure_term.isNull() ){
     return Node::null();
   }else{
@@ -131,8 +311,8 @@ Node CegConjecture::getLiteral( QuantifiersEngine * qe, int i ) {
 
       Node lem = NodeManager::currentNM()->mkNode( kind::OR, lit, lit.negate() );
       Trace("cegqi-lemma") << "Cegqi::Lemma : Fairness split : " << lem << std::endl;
-      qe->getOutputChannel().lemma( lem );
-      qe->getOutputChannel().requirePhase( lit, true );
+      d_qe->getOutputChannel().lemma( lem );
+      d_qe->getOutputChannel().requirePhase( lit, true );
 
       if( getCegqiFairMode()==CEGQI_FAIR_DT_HEIGHT_PRED || getCegqiFairMode()==CEGQI_FAIR_DT_SIZE_PRED ){
         //implies height bounds on each candidate variable
@@ -146,7 +326,7 @@ Node CegConjecture::getLiteral( QuantifiersEngine * qe, int i ) {
         }
         Node hlem = NodeManager::currentNM()->mkNode( OR, lit.negate(), lem_c.size()==1 ? lem_c[0] : NodeManager::currentNM()->mkNode( AND, lem_c ) );
         Trace("cegqi-lemma") << "Cegqi::Lemma : Fairness expansion (pred) : " << hlem << std::endl;
-        qe->getOutputChannel().lemma( hlem );
+        d_qe->getOutputChannel().lemma( hlem );
       }
       return lit;
     }else{
@@ -219,10 +399,734 @@ bool CegConjecture::needsCheck( std::vector< Node >& lem ) {
   }
 }
 
+
+void CegConjecture::doCegConjectureSingleInvCheck(std::vector< Node >& lems) {
+  if( d_ceg_si!=NULL ){
+    d_ceg_si->check(lems);
+  }
+}
+
+bool CegConjecture::needsRefinement() { 
+  return !d_ce_sk.empty();
+}
+
+void CegConjecture::getConditionalCandidateList( std::vector< Node >& clist, Node curr, bool reqAdd ){
+  Assert( options::sygusUnifCondSol() );
+  std::map< Node, CandidateInfo >::iterator it = d_cinfo.find( curr );
+  if( it!=d_cinfo.end() ){
+    if( !it->second.d_csol_cond.isNull() ){
+      if( it->second.d_csol_status!=-1 ){
+        int pstatus = getProgressStatus( curr );
+        if( pstatus!=-1 ){
+          Assert( it->second.d_csol_status==0 || it->second.d_csol_status==1 );
+          //interested in model value for condition and branched variables
+          clist.push_back( it->second.d_csol_cond );
+          //assume_flat_ITEs
+          clist.push_back( it->second.d_csol_var[it->second.d_csol_status] );
+          //conditionally get the other branch
+          getConditionalCandidateList( clist, it->second.d_csol_var[1-it->second.d_csol_status], false );
+          return;
+        }else{
+          // it is progress-inactive, will not be included
+        }
+      }
+      //otherwise, yet to expand branch
+      if( !reqAdd ){
+        // if we are not top-level, we can ignore this (it won't be part of solution)
+        return;
+      }
+    }else{
+      // a standard variable not handlable by unification
+    }
+    clist.push_back( curr );
+  }
+}
+
+void CegConjecture::getCandidateList( std::vector< Node >& clist, bool forceOrig ) {
+  if( options::sygusUnifCondSol() && !forceOrig ){
+    for( unsigned i=0; i<d_candidates.size(); i++ ){
+      getConditionalCandidateList( clist, d_candidates[i], true );
+    }
+  }else{
+    clist.insert( clist.end(), d_candidates.begin(), d_candidates.end() );
+  }
+}
+
+Node CegConjecture::constructConditionalCandidate( std::map< Node, Node >& cmv, Node curr ) {
+  Assert( options::sygusUnifCondSol() );
+  std::map< Node, Node >::iterator itc = cmv.find( curr );
+  if( itc!=cmv.end() ){
+    return itc->second;
+  }else{
+    std::map< Node, CandidateInfo >::iterator it = d_cinfo.find( curr );
+    if( it!=d_cinfo.end() ){
+      if( !it->second.d_csol_cond.isNull() ){
+        if( it->second.d_csol_status!=-1 ){
+          int pstatus = getProgressStatus( curr );
+          if( pstatus!=-1 ){
+            Assert( it->second.d_csol_status==0 || it->second.d_csol_status==1 );
+            Node v_curr = constructConditionalCandidate( cmv, it->second.d_csol_var[it->second.d_csol_status] );
+            Node v_next = constructConditionalCandidate( cmv, it->second.d_csol_var[1-it->second.d_csol_status] );
+            if( v_next.isNull() ){
+              // try taking current branch as a leaf
+              return v_curr;
+            }else{
+              Node v_cond = constructConditionalCandidate( cmv, it->second.d_csol_cond );
+              std::vector< Node > args;
+              args.push_back( it->second.d_csol_op );
+              args.push_back( v_cond );
+              args.push_back( it->second.d_csol_status==0 ? v_curr : v_next );
+              args.push_back( it->second.d_csol_status==0 ? v_next : v_curr );
+              return NodeManager::currentNM()->mkNode( kind::APPLY_CONSTRUCTOR, args );
+            }
+          }
+        }
+      }
+    }
+  }
+  return Node::null();
+}
+
+bool CegConjecture::constructCandidates( std::vector< Node >& clist, std::vector< Node >& model_values, std::vector< Node >& candidate_values ) {
+  Assert( clist.size()==model_values.size() );
+  if( options::sygusUnifCondSol() ){
+    std::map< Node, Node > cmv;
+    for( unsigned i=0; i<clist.size(); i++ ){
+      cmv[ clist[i] ] = model_values[i];
+    }
+    for( unsigned i=0; i<d_candidates.size(); i++ ){
+      Node n = constructConditionalCandidate( cmv, d_candidates[i] );
+      Trace("cegqi-candidate") << "...constructed conditional candidate " << n << " for " << d_candidates[i] << std::endl;
+      candidate_values.push_back( n );
+      if( n.isNull() ){
+        Assert( false ); //currently should never happen
+        return false;
+      }
+    }
+  }else{
+    Assert( model_values.size()==d_candidates.size() );
+    candidate_values.insert( candidate_values.end(), model_values.begin(), model_values.end() );
+  }
+  return true;
+}
+
+void CegConjecture::doCegConjectureCheck(std::vector< Node >& lems, std::vector< Node >& model_values) {
+  std::vector< Node > clist;
+  getCandidateList( clist );
+  std::vector< Node > c_model_values;
+  Trace("cegqi-check") << "CegConjuncture : check, build candidates..." << std::endl;
+  if( constructCandidates( clist, model_values, c_model_values ) ){
+    Assert( c_model_values.size()==d_candidates.size() );
+    if( Trace.isOn("cegqi-check")  ){
+      Trace("cegqi-check") << "CegConjuncture : check candidate : " << std::endl;
+      for( unsigned i=0; i<c_model_values.size(); i++ ){
+        Trace("cegqi-check") << "  " << i << " : " << d_candidates[i] << " -> " << c_model_values[i] << std::endl;
+      }
+    }
+    //must get a counterexample to the value of the current candidate
+    Node inst = d_base_inst.substitute( d_candidates.begin(), d_candidates.end(), c_model_values.begin(), c_model_values.end() );
+    bool hasActiveConditionalNode = false;
+    if( options::sygusUnifCondSol() ){
+      //TODO
+      hasActiveConditionalNode = true;
+    }
+    //check whether we will run CEGIS on inner skolem variables
+    bool sk_refine = ( !isGround() || d_refine_count==0 || hasActiveConditionalNode );
+    if( sk_refine ){
+      Assert( d_ce_sk.empty() );
+      d_ce_sk.push_back( std::vector< Node >() );
+    }
+    std::vector< Node > ic;
+    ic.push_back( d_assert_quant.negate() );
+    std::vector< Node > d;
+    CegInstantiation::collectDisjuncts( inst, d );
+    Assert( d.size()==d_base_disj.size() );
+    //immediately skolemize inner existentials
+    for( unsigned i=0; i<d.size(); i++ ){
+      Node dr = Rewriter::rewrite( d[i] );
+      if( dr.getKind()==NOT && dr[0].getKind()==FORALL ){
+        ic.push_back( d_qe->getTermDatabase()->getSkolemizedBody( dr[0] ).negate() );
+        if( sk_refine ){
+          d_ce_sk.back().push_back( dr[0] );
+        }
+      }else{
+        ic.push_back( dr );
+        if( sk_refine ){
+          d_ce_sk.back().push_back( Node::null() );
+        }
+        if( !d_inner_vars_disj[i].empty() ){
+          Trace("cegqi-debug") << "*** quantified disjunct : " << d[i] << " simplifies to " << dr << std::endl;
+        }
+      }
+    }
+    Node lem = NodeManager::currentNM()->mkNode( OR, ic );
+    lem = Rewriter::rewrite( lem );
+    lems.push_back( lem );
+    recordInstantiation( c_model_values );
+  }else{
+    Assert( false );
+  }
+}
+
+Node CegConjecture::getActiveConditional( Node curr ) {
+  Assert( options::sygusUnifCondSol() );
+  std::map< Node, CandidateInfo >::iterator it = d_cinfo.find( curr );
+  Assert( it!=d_cinfo.end() );
+  if( !it->second.d_csol_cond.isNull() ){
+    if( it->second.d_csol_status==-1 ){
+      //yet to branch, this is the one
+      return curr;
+    }else{
+      int pstatus = getProgressStatus( curr );
+      if( pstatus==-1 ){
+        // it is progress-inactive
+        return curr;
+      }else{
+        Assert( it->second.d_csol_status==0 || it->second.d_csol_status==1 );
+        return getActiveConditional( it->second.d_csol_var[1-it->second.d_csol_status] );
+      }
+    }
+  }else{
+    //not a conditional
+    return curr;
+  }
+}
+
+void CegConjecture::getContextConditionalNodes( Node curr, Node x, std::vector< Node >& nodes ) {
+  if( curr!=x ){
+    std::map< Node, CandidateInfo >::iterator it = d_cinfo.find( curr );
+    if( !it->second.d_csol_cond.isNull() ){
+      if( it->second.d_csol_status!=-1 ){
+        nodes.push_back( curr );
+        getContextConditionalNodes( it->second.d_csol_var[1-it->second.d_csol_status], x, nodes );
+      }
+    }
+  }
+}
+
+Node CegConjecture::mkConditionalEvalNode( Node c, std::vector< Node >& args ) {
+  Assert( !c.isNull() );
+  std::vector< Node > condc;
+  //get evaluator
+  Assert( c.getType().isDatatype() );
+  const Datatype& cd = ((DatatypeType)c.getType().toType()).getDatatype();
+  Assert( cd.isSygus() );
+  condc.push_back( Node::fromExpr( cd.getSygusEvaluationFunc() ) );
+  condc.push_back( c );
+  for( unsigned a=0; a<args.size(); a++ ){
+    condc.push_back( args[a] );
+  }
+  return NodeManager::currentNM()->mkNode( kind::APPLY_UF, condc );
+}
+
+Node CegConjecture::mkConditionalNode( Node v, std::vector< Node >& args, unsigned eindex ) {
+  std::map< Node, CandidateInfo >::iterator it = d_cinfo.find( v );
+  if( it!=d_cinfo.end() ){
+    Assert( eindex<=2 );
+    Node en = eindex==0 ? it->second.d_csol_cond : it->second.d_csol_var[eindex-1];
+    if( !en.isNull() ){
+      Node ret = mkConditionalEvalNode( en, args );
+      //consider template
+      std::map< unsigned, Node >::iterator itt = it->second.d_template.find( eindex );
+      if( itt!=it->second.d_template.end() ){
+        Assert( it->second.d_template_arg.find( eindex )!=it->second.d_template_arg.end() );
+        TNode var = it->second.d_template_arg[eindex];
+        TNode subs = ret;
+        Node rret = itt->second.substitute( var, subs );
+        ret = rret;
+      }
+      return ret;
+    }
+  }
+  Assert( false );
+  return Node::null();
+}
+
+Node CegConjecture::mkConditional( Node v, std::vector< Node >& args, bool pol ) {
+  Node ret = mkConditionalNode( v, args, 0 );
+  if( !pol ){
+    ret = ret.negate();
+  }
+  return ret;
+}
+  
+Node CegConjecture::purifyConditionalEvaluations( Node n, std::map< Node, Node >& csol_active, std::map< Node, Node >& psubs, std::map< Node, Node >& visited ){
+  std::map< Node, Node >::iterator itv = visited.find( n );
+  if( itv!=visited.end() ){
+    return itv->second;
+  }else{
+    Node ret;
+    if( n.getKind()==APPLY_UF ){
+      std::map< Node, Node >::iterator itc = csol_active.find( n[0] );
+      if( itc!=csol_active.end() ){
+        //purify it with a variable
+        ret = NodeManager::currentNM()->mkSkolem( "y", n.getType(), "purification variable for sygus conditional solution" );
+        psubs[n] = ret;
+      }
+    }
+    if( ret.isNull() ){
+      ret = n;
+      if( n.getNumChildren()>0 ){
+        std::vector< Node > children;
+        if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+          children.push_back( n.getOperator() );
+        }
+        bool childChanged = false;
+        for( unsigned i=0; i<n.getNumChildren(); i++ ){
+          Node nc = purifyConditionalEvaluations( n[i], csol_active, psubs, visited );
+          childChanged = childChanged || nc!=n[i];
+          children.push_back( nc );
+        }
+        if( childChanged ){
+          ret = NodeManager::currentNM()->mkNode( n.getKind(), children );
+        }
+      }
+    }
+    visited[n] = ret;
+    return ret;
+  }
+}
+        
+void CegConjecture::doCegConjectureRefine( std::vector< Node >& lems ){
+  Assert( lems.empty() );
+  Assert( d_ce_sk.size()==1 );
+
+  //first, make skolem substitution
+  Trace("cegqi-refine") << "doCegConjectureRefine : construct skolem substitution..." << std::endl;
+  std::vector< Node > sk_vars;
+  std::vector< Node > sk_subs;
+  //collect the substitution over all disjuncts
+  for( unsigned k=0; k<d_ce_sk[0].size(); k++ ){
+    Node ce_q = d_ce_sk[0][k];
+    if( !ce_q.isNull() ){
+      Assert( !d_inner_vars_disj[k].empty() );
+      Assert( d_inner_vars_disj[k].size()==d_qe->getTermDatabase()->d_skolem_constants[ce_q].size() );
+      std::vector< Node > model_values;
+      getModelValues( d_qe->getTermDatabase()->d_skolem_constants[ce_q], model_values );
+      sk_vars.insert( sk_vars.end(), d_inner_vars_disj[k].begin(), d_inner_vars_disj[k].end() );
+      sk_subs.insert( sk_subs.end(), model_values.begin(), model_values.end() );
+    }else{
+      if( !d_inner_vars_disj[k].empty() ){
+        //denegrate case : quantified disjunct was trivially true and does not need to be refined
+        //add trivial substitution (in case we need substitution for previous cex's)
+        for( unsigned i=0; i<d_inner_vars_disj[k].size(); i++ ){
+          sk_vars.push_back( d_inner_vars_disj[k][i] );
+          sk_subs.push_back( getModelValue( d_inner_vars_disj[k][i] ) ); // will return dummy value
+        }
+      }
+    }
+  }
+  
+  
+  std::map< Node, Node > csol_active;
+  std::map< Node, std::vector< Node > > csol_ccond_nodes;
+  std::map< Node, std::map< Node, bool > > csol_cpol;    
+  if( options::sygusUnifCondSol() ){
+    //previous non-ground conditional refinement lemmas must satisfy the current point
+    if( !isGround() ){
+      Trace("cegqi-refine") << "doCegConjectureRefine : check for new refinements of previous lemmas..." << std::endl;
+      for( unsigned i=0; i<d_refinement_lemmas_ngr.size(); i++ ){
+        Node prev_lem = d_refinement_lemmas_ngr[i];
+        prev_lem = prev_lem.substitute( sk_vars.begin(), sk_vars.end(), sk_subs.begin(), sk_subs.end() );
+        if( d_refinement_lemmas_reproc.find( prev_lem )==d_refinement_lemmas_reproc.end() ){
+          d_refinement_lemmas_reproc[prev_lem] = true;
+          //do auxiliary variable substitution
+          std::vector< Node > subs;
+          for( unsigned ii=0; ii<d_refinement_lemmas_aux_vars[i].size(); ii++ ){
+            subs.push_back( NodeManager::currentNM()->mkSkolem( "y", d_refinement_lemmas_aux_vars[i][ii].getType(), 
+                                                                "purification variable for non-ground sygus conditional solution" ) );
+          }
+          prev_lem = prev_lem.substitute( d_refinement_lemmas_aux_vars[i].begin(), d_refinement_lemmas_aux_vars[i].end(), subs.begin(), subs.end() );
+          prev_lem = Rewriter::rewrite( prev_lem );
+          Trace("sygus-unif") << "...previous conditional refinement lemma with new counterexample : " << prev_lem << std::endl;
+          lems.push_back( prev_lem );
+        }
+      }
+      if( !lems.empty() ){  
+        Trace("cegqi-refine") << "...added lemmas, abort further refinement." << std::endl;
+        d_ce_sk.clear();
+        return;
+      }
+    }
+    Trace("cegqi-refine") << "doCegConjectureRefine : conditional solution refinement, expand active conditional nodes" << std::endl;
+    std::vector< Node > new_active_measure_sum;
+    for( unsigned i=0; i<d_candidates.size(); i++ ){
+      Node v = d_candidates[i];
+      Node ac = getActiveConditional( v );
+      Assert( !ac.isNull() );
+      //compute the contextual conditions
+      getContextConditionalNodes( v, ac, csol_ccond_nodes[v] );
+      if( !csol_ccond_nodes[v].empty() ){
+        //it will be conditionally evaluated, this is a placeholder
+        csol_active[v] = Node::null();
+      }
+      Trace("sygus-unif") << "Active conditional for " << v << " is : " << ac << std::endl;
+      //if it is a conditional
+      bool is_active_conditional = false;
+      if( !d_cinfo[ac].d_csol_cond.isNull() ){
+        int pstatus = getProgressStatus( ac );
+        Assert( pstatus!=0 );
+        if( pstatus==-1 ){
+          //inject new progress point TODO?
+          Trace("sygus-unif") << "...progress status is " << pstatus << ", do not expand." << std::endl;
+          Assert( false );
+        }else{
+          is_active_conditional = true;
+          //expand this conditional
+          Trace("sygus-unif") << "****** For " << v << ", expanding an active conditional node : " << ac << std::endl;
+          d_cinfo[ac].d_csol_status = 0;  //TODO: prefer some branches more than others based on the grammar?
+          Trace("sygus-unif") << "...expanded to " << d_cinfo[ac].d_csol_op << "( ";
+          Trace("sygus-unif") << d_cinfo[ac].d_csol_cond << ", " << d_cinfo[ac].d_csol_var[0] << ", ";
+          Trace("sygus-unif") << d_cinfo[ac].d_csol_var[1] << " )" << std::endl;
+          registerCandidateConditional( d_cinfo[ac].d_csol_var[1-d_cinfo[ac].d_csol_status] );
+          //add to measure sum
+          Node acfc = getMeasureTermFactor( d_cinfo[ac].d_csol_cond );
+          if( !acfc.isNull() ){
+            new_active_measure_sum.push_back( acfc );
+          }
+          Node acfv = getMeasureTermFactor( d_cinfo[ac].d_csol_var[d_cinfo[ac].d_csol_status] );
+          if( !acfv.isNull() ){
+            new_active_measure_sum.push_back( acfv );
+          }
+          csol_active[v] = ac;
+        }
+      }
+      if( !is_active_conditional ){
+        Trace("sygus-unif") << "* For " << v << ", its active node " << ac << " is not a conditional node." << std::endl;
+        //if we have not already included this in the measure, do so
+        if( d_cinfo[ac].d_csol_status==-1 ){
+          Node acf = getMeasureTermFactor( ac );
+          if( !acf.isNull() ){
+            new_active_measure_sum.push_back( acf );
+          }
+          d_cinfo[ac].d_csol_status = 2;
+        }
+      }
+      if( !csol_ccond_nodes[v].empty() ){
+        Trace("sygus-unif") << "...it is nested under " << csol_ccond_nodes[v].size() << " other conditionals" << std::endl;
+      }
+    }
+    // must add to active measure
+    if( !new_active_measure_sum.empty() ){
+      Node mcsum = new_active_measure_sum.size()==1 ? new_active_measure_sum[0] : NodeManager::currentNM()->mkNode( kind::PLUS, new_active_measure_sum );
+      Node mclem = NodeManager::currentNM()->mkNode( kind::LEQ, mcsum, d_active_measure_term );
+      Trace("cegqi-lemma") << "Cegqi::Lemma : Measure component lemma : " << mclem << std::endl;
+      d_qe->getOutputChannel().lemma( mclem );
+      /*    
+      for( unsigned i=0; i<new_active_measure_sum.size(); i++ ){
+        Node mclem = NodeManager::currentNM()->mkNode( kind::LEQ, new_active_measure_sum[i], d_active_measure_term );
+        Trace("cegqi-lemma") << "Cegqi::Lemma : Measure component lemma : " << mclem << std::endl;
+        d_qe->getOutputChannel().lemma( mclem );
+      }
+      
+      Node new_active_measure = NodeManager::currentNM()->mkSkolem( "K", NodeManager::currentNM()->integerType() );
+      new_active_measure_sum.push_back( new_active_measure );
+      Node namlem = NodeManager::currentNM()->mkNode( kind::GEQ, new_active_measure, NodeManager::currentNM()->mkConst(Rational(0)));
+      Node ramlem = d_active_measure_term.eqNode( NodeManager::currentNM()->mkNode( kind::PLUS, new_active_measure_sum ) );
+      namlem = NodeManager::currentNM()->mkNode( kind::AND, ramlem, namlem );
+      Trace("cegqi-lemma") << "Cegqi::Lemma : Measure expansion : " << namlem << std::endl;
+      d_qe->getOutputChannel().lemma( namlem );
+      d_active_measure_term = new_active_measure;
+      */
+    }
+  }
+  
+  //for conditional evaluation
+  std::map< Node, Node > psubs_visited;
+  std::map< Node, Node > psubs;
+  std::vector< Node > lem_c;
+  Assert( d_ce_sk[0].size()==d_base_disj.size() );
+  std::vector< Node > inst_cond_c;
+  Trace("cegqi-refine") << "doCegConjectureRefine : Construct refinement lemma..." << std::endl;
+  for( unsigned k=0; k<d_ce_sk[0].size(); k++ ){
+    Node ce_q = d_ce_sk[0][k];
+    Trace("cegqi-refine-debug") << "  For counterexample point, disjunct " << k << " : " << ce_q << " " << d_base_disj[k] << std::endl;
+    Node c_disj;
+    if( !ce_q.isNull() ){
+      Assert( d_base_disj[k].getKind()==kind::NOT && d_base_disj[k][0].getKind()==kind::FORALL );
+      c_disj = d_base_disj[k][0][1];
+    }else{
+      if( d_inner_vars_disj[k].empty() ){
+        c_disj = d_base_disj[k].negate();
+      }else{
+        //denegrate case : quantified disjunct was trivially true and does not need to be refined
+        Trace("cegqi-refine-debug") << "*** skip " << d_base_disj[k] << std::endl;
+      }
+    }
+    if( !c_disj.isNull() ){
+      //compute the body, inst_cond
+      if( options::sygusUnifCondSol() ){
+        Trace("sygus-unif") << "Process " << c_disj << std::endl;
+        c_disj = purifyConditionalEvaluations( c_disj, csol_active, psubs, psubs_visited );
+        Trace("sygus-unif") << "Purified to : " << c_disj << std::endl;
+        Trace("sygus-unif") << "...now with " << psubs.size() << " definitions." << std::endl;
+      }else{
+        //standard CEGIS refinement : plug in values, assert that d_candidates must satisfy entire specification
+      }
+      lem_c.push_back( c_disj );
+    }
+  }
+  Assert( sk_vars.size()==sk_subs.size() );
+  //add conditional correctness assumptions
+  std::vector< Node > psubs_cond_ant;
+  std::vector< Node > psubs_cond_conc;
+  std::map< Node, std::vector< Node > > psubs_apply;
+  std::vector< Node > paux_vars;
+  if( options::sygusUnifCondSol() ){
+    Trace("cegqi-refine") << "doCegConjectureRefine : add conditional assumptions for " << psubs.size() << " evaluations..." << std::endl;
+    for( std::map< Node, Node >::iterator itp = psubs.begin(); itp != psubs.end(); ++itp ){
+      Assert( csol_active.find( itp->first[0] )!=csol_active.end() );
+      paux_vars.push_back( itp->second );
+      std::vector< Node > args;
+      for( unsigned a=1; a<itp->first.getNumChildren(); a++ ){
+        args.push_back( itp->first[a] );
+      }
+      Node ac = csol_active[itp->first[0]];
+      Assert( d_cinfo.find( ac )!=d_cinfo.end() );
+      Node c = d_cinfo[ac].d_csol_cond;
+      psubs_apply[ c ].push_back( itp->first );
+      Trace("sygus-unif") << "   process assumption " << itp->first << " == " << itp->second << ", with current condition " << c;
+      Trace("sygus-unif") << ", and " << csol_ccond_nodes[itp->first[0]].size() << " context conditionals." << std::endl;
+      std::vector< Node> assm;
+      if( !c.isNull() ){
+        assm.push_back( mkConditional( ac, args, true ) );
+      }
+      for( unsigned j=0; j<csol_ccond_nodes[itp->first[0]].size(); j++ ){
+        Node acc = csol_ccond_nodes[itp->first[0]][j];
+        bool pol = ( d_cinfo[acc].d_csol_status==1 );
+        assm.push_back( mkConditional( acc, args, pol ) );
+      }
+      Assert( !assm.empty() );
+      Node c_ant = assm.size()==1 ? assm[0] : NodeManager::currentNM()->mkNode( kind::AND, assm );
+      psubs_cond_ant.push_back( c_ant );
+      // make the evaluation node
+      Node eret = mkConditionalNode( ac, args, d_cinfo[ac].d_csol_status+1 );
+      Node c_conc = eret.eqNode( itp->second );
+      psubs_cond_conc.push_back( c_conc );
+      Trace("sygus-unif") << "   ...made conditional correctness assumption : " << c_ant << " => " << c_conc << std::endl;
+    }
+  }else{
+    Assert( psubs.empty() );
+  }
+  
+  Node base_lem = lem_c.size()==1 ? lem_c[0] : NodeManager::currentNM()->mkNode( AND, lem_c );
+  
+  if( options::sygusUnifCondSol() ){
+    Trace("sygus-unif-debug") << "We have base lemma : " << base_lem << std::endl;
+    //progress lemmas
+    Trace("cegqi-refine") << "doCegConjectureRefine : add progress lemmas..." << std::endl;
+    std::map< Node, bool > cprocessed;
+    for( std::map< Node, Node >::iterator itc = csol_active.begin(); itc !=csol_active.end(); ++itc ){
+      Node x = itc->first;
+      Node ac = itc->second;
+      Assert( d_cinfo.find( ac )!=d_cinfo.end() );
+      Node c = d_cinfo[ac].d_csol_cond;    
+      if( !c.isNull() ){
+        Trace("sygus-unif") << "  process conditional " << c << " for " << x << ", which was applied " << psubs_apply[c].size() << " times." << std::endl;
+        //make the progress point
+        Assert( x.getType().isDatatype() );
+        const Datatype& dx = ((DatatypeType)x.getType().toType()).getDatatype();
+        Node sbvl = Node::fromExpr( dx.getSygusVarList() );
+        std::vector< Node > prgr_pt;
+        for( unsigned a=0; a<sbvl.getNumChildren(); a++ ){
+          prgr_pt.push_back( NodeManager::currentNM()->mkSkolem( "kp", sbvl[a].getType(), "progress point for sygus conditional" ) );
+        }
+        Node pdlem;    
+        if( !psubs_apply[c].empty() ){
+          std::vector< Node > prgr_domain_d;
+          for( unsigned j=0; j<psubs_apply[c].size(); j++ ){
+            std::vector< Node > prgr_domain;
+            for( unsigned a=1; a<psubs_apply[c][j].getNumChildren(); a++ ){
+              Assert( a<=prgr_pt.size() );
+              prgr_domain.push_back( prgr_pt[a-1].eqNode( psubs_apply[c][j][a] ) );
+            }
+            if( !prgr_domain.empty() ){
+              //the point is in the domain of this function application
+              Node pdc = prgr_domain.size()==1 ? prgr_domain[0] : NodeManager::currentNM()->mkNode( AND, prgr_domain );
+              prgr_domain_d.push_back( pdc );
+            }
+          }
+          if( !prgr_domain_d.empty() ){
+            //the progress point is in the domain of some function application
+            pdlem = prgr_domain_d.size()==1 ? prgr_domain_d[0] : NodeManager::currentNM()->mkNode( OR, prgr_domain_d );
+            pdlem = pdlem.substitute( sk_vars.begin(), sk_vars.end(), sk_subs.begin(), sk_subs.end() );
+            Trace("sygus-unif") << "Progress domain point lemma is " << pdlem << std::endl;
+            lems.push_back( pdlem );
+          }
+        }
+        //the condition holds for the point, if this is an active condition
+        Node cplem = mkConditional( ac, prgr_pt );
+        if( !csol_ccond_nodes[x].empty() ){
+          std::vector< Node > prgr_conj;
+          prgr_conj.push_back( cplem );
+          // ...and not for its context
+          for( unsigned j=0; j<csol_ccond_nodes[x].size(); j++ ){
+            Node acc = csol_ccond_nodes[x][j];
+            bool pol = ( d_cinfo[acc].d_csol_status==1 );
+            prgr_conj.push_back( mkConditional( acc, prgr_pt, pol ) );
+          }
+          cplem = NodeManager::currentNM()->mkNode( kind::AND, prgr_conj );
+        }
+        Assert( !d_cinfo[x].d_csol_progress_guard.isNull() );
+        cplem = NodeManager::currentNM()->mkNode( kind::OR, d_cinfo[x].d_csol_progress_guard.negate(), cplem );
+        Trace("sygus-unif") << "Progress lemma is " << cplem << std::endl;
+        lems.push_back( cplem );
+      }
+    }
+    /*
+    if( !prgr_conj.empty() ){
+      Node prgr_lem = prgr_conj.size()==1 ? prgr_conj[0] : NodeManager::currentNM()->mkNode( kind::AND, prgr_conj );
+      prgr_lem = prgr_lem.substitute( sk_vars.begin(), sk_vars.end(), sk_subs.begin(), sk_subs.end() );
+      prgr_lem = NodeManager::currentNM()->mkNode( OR, getGuard().negate(), prgr_lem );
+      Trace("sygus-unif") << "Progress lemma is " << prgr_lem << std::endl;
+      lems.push_back( prgr_lem );
+    }
+    */
+  }
+  
+  Trace("cegqi-refine") << "doCegConjectureRefine : construct and finalize lemmas..." << std::endl;
+  
+  Node lem = base_lem;
+  
+  base_lem = base_lem.substitute( sk_vars.begin(), sk_vars.end(), sk_subs.begin(), sk_subs.end() );
+  base_lem = Rewriter::rewrite( base_lem );
+  d_refinement_lemmas_base.push_back( base_lem );
+  
+  if( options::sygusUnifCondSol() ){
+    //add the conditional evaluation
+    if( !psubs_cond_ant.empty() ){
+      std::vector< Node > children;
+      children.push_back( base_lem );
+      std::vector< Node > pav;
+      std::vector< Node > pcv;
+      for( unsigned i=0; i<psubs_cond_ant.size(); i++ ){
+        children.push_back( NodeManager::currentNM()->mkNode( kind::OR, psubs_cond_ant[i].negate(), psubs_cond_conc[i] ) );
+        Node pa = psubs_cond_ant[i].substitute( sk_vars.begin(), sk_vars.end(), sk_subs.begin(), sk_subs.end() );
+        pav.push_back( pa );
+        Node pc = psubs_cond_conc[i].substitute( sk_vars.begin(), sk_vars.end(), sk_subs.begin(), sk_subs.end() );
+        pcv.push_back( pc );
+      }
+      d_refinement_lemmas_ceval_ant.push_back( pav );
+      d_refinement_lemmas_ceval_conc.push_back( pcv );
+      lem = NodeManager::currentNM()->mkNode( AND, children );
+    }
+  }
+
+  lem = NodeManager::currentNM()->mkNode( OR, getGuard().negate(), lem );
+  
+  if( options::sygusUnifCondSol() ){
+    if( !isGround() ){
+      //store the non-ground version of the lemma
+      lem = Rewriter::rewrite( lem );
+      d_refinement_lemmas_ngr.push_back( lem );
+      d_refinement_lemmas_aux_vars.push_back( paux_vars );
+    }
+  }
+  
+  lem = lem.substitute( sk_vars.begin(), sk_vars.end(), sk_subs.begin(), sk_subs.end() );
+  lem = Rewriter::rewrite( lem );
+  d_refinement_lemmas.push_back( lem );
+  lems.push_back( lem );
+
+  d_ce_sk.clear();
+}
+
 void CegConjecture::preregisterConjecture( Node q ) {
   d_ceg_si->preregisterConjecture( q );
 }
 
+void CegConjecture::getModelValues( std::vector< Node >& n, std::vector< Node >& v ) {
+  Trace("cegqi-engine") << "  * Value is : ";
+  for( unsigned i=0; i<n.size(); i++ ){
+    Node nv = getModelValue( n[i] );
+    v.push_back( nv );
+    if( Trace.isOn("cegqi-engine") ){
+      TypeNode tn = nv.getType();
+      Trace("cegqi-engine") << n[i] << " -> ";
+      std::stringstream ss;
+      std::vector< Node > lvs;
+      TermDbSygus::printSygusTerm( ss, nv, lvs );
+      Trace("cegqi-engine") << ss.str() << " ";
+    }
+    Assert( !nv.isNull() );
+  }
+  Trace("cegqi-engine") << std::endl;
+}
+
+Node CegConjecture::getModelValue( Node n ) {
+  Trace("cegqi-mv") << "getModelValue for : " << n << std::endl;
+  return d_qe->getModel()->getValue( n );
+}
+
+void CegConjecture::debugPrint( const char * c ) {
+  Trace(c) << "Synthesis conjecture : " << d_quant << std::endl;
+  Trace(c) << "  * Candidate program/output symbol : ";
+  for( unsigned i=0; i<d_candidates.size(); i++ ){
+    Trace(c) << d_candidates[i] << " ";
+  }
+  Trace(c) << std::endl;
+  Trace(c) << "  * Candidate ce skolems : ";
+  for( unsigned i=0; i<d_ce_sk.size(); i++ ){
+    Trace(c) << d_ce_sk[i] << " ";
+  }
+}
+
+int CegConjecture::getProgressStatus( Node v ) {
+  Assert( options::sygusUnifCondSol() );
+  std::map< Node, CandidateInfo >::iterator it = d_cinfo.find( v );
+  if( it!=d_cinfo.end() ){
+    if( !it->second.d_csol_cond.isNull() ){
+      if( it->second.d_csol_status!=-1 ){
+        Node plit = it->second.d_csol_progress_guard;
+        Assert( !plit.isNull() );
+        //check SAT value of plit
+        bool value;
+        if( d_qe->getValuation().hasSatValue( plit, value ) ) {
+          if( !value ){
+            return -1;
+          }else{
+            return 1;
+          }
+        }else{
+          return 0;
+        }
+      }
+    }
+  }
+  return -2;
+}
+
+Node CegConjecture::getNextDecisionRequestConditional( Node v, unsigned& priority ) {
+  Assert( options::sygusUnifCondSol() );
+  int pstatus = getProgressStatus( v );
+  if( pstatus>=0 ){
+    std::map< Node, CandidateInfo >::iterator it = d_cinfo.find( v );
+    Assert( it!=d_cinfo.end() );
+    if( pstatus==1 ){
+      //active, recurse
+      Assert( it->second.d_csol_status==0 || it->second.d_csol_status==1 );
+      return getNextDecisionRequestConditional( it->second.d_csol_var[1-it->second.d_csol_status], priority );
+    }else if( pstatus==0 ){
+      //needs decision
+      priority = 1;
+      return it->second.d_csol_progress_guard;
+    }
+  }
+  return Node::null();
+}
+
+Node CegConjecture::getNextDecisionRequest( unsigned& priority ) {
+  if( options::sygusUnifCondSol() ){
+    for( unsigned i=0; i<d_candidates.size(); i++ ){
+      Node lit = getNextDecisionRequestConditional( d_candidates[i], priority );
+      if( !lit.isNull() ){
+        return lit;
+      }
+    }
+  }
+  return Node::null();
+}
+
 CegInstantiation::CegInstantiation( QuantifiersEngine * qe, context::Context* c ) : QuantifiersModule( qe ){
   d_conj = new CegConjecture( qe, qe->getSatContext() );
   d_last_inst_si = false;
@@ -284,7 +1188,7 @@ void CegInstantiation::preRegisterQuantifier( Node q ) {
             //  the reasoning is unfolding over these terms does not lead to helpful conflict analysis, and introduces many shared terms
             bool directEval = true;
             TypeNode ptn = pat.getType();
-            if( ptn.isBoolean() || ptn.isBitVector() ){
+            if( ptn.isBoolean() ){
               directEval = false;
             }else{
               unsigned cindex = Datatype::indexOf(pat[0].getOperator().toExpr() );
@@ -315,26 +1219,32 @@ void CegInstantiation::registerQuantifier( Node q ) {
       //fairness
       if( d_conj->getCegqiFairMode()!=CEGQI_FAIR_NONE ){
         std::vector< Node > mc;
-        for( unsigned j=0; j<d_conj->d_candidates.size(); j++ ){
-          TypeNode tn = d_conj->d_candidates[j].getType();
-          if( d_conj->getCegqiFairMode()==CEGQI_FAIR_DT_SIZE ){
-            if( tn.isDatatype() ){
-              mc.push_back( NodeManager::currentNM()->mkNode( DT_SIZE, d_conj->d_candidates[j] ) );
-            }
-          }else if( d_conj->getCegqiFairMode()==CEGQI_FAIR_UF_DT_SIZE ){
-            registerMeasuredType( tn );
-            std::map< TypeNode, Node >::iterator it = d_uf_measure.find( tn );
-            if( it!=d_uf_measure.end() ){
-              mc.push_back( NodeManager::currentNM()->mkNode( APPLY_UF, it->second, d_conj->d_candidates[j] ) );
+        if( options::sygusUnifCondSol() || 
+            d_conj->getCegqiFairMode()==CEGQI_FAIR_DT_HEIGHT_PRED || d_conj->getCegqiFairMode()==CEGQI_FAIR_DT_SIZE_PRED  ){
+          //measure term is a fresh constant
+          mc.push_back( NodeManager::currentNM()->mkSkolem( "K", NodeManager::currentNM()->integerType() ) );
+        }else{
+          std::vector< Node > clist;
+          d_conj->getCandidateList( clist, true );
+          for( unsigned j=0; j<clist.size(); j++ ){
+            TypeNode tn = clist[j].getType();
+            if( d_conj->getCegqiFairMode()==CEGQI_FAIR_DT_SIZE ){
+              if( tn.isDatatype() ){
+                mc.push_back( NodeManager::currentNM()->mkNode( DT_SIZE, clist[j] ) );
+              }
+            }else if( d_conj->getCegqiFairMode()==CEGQI_FAIR_UF_DT_SIZE ){
+              registerMeasuredType( tn );
+              std::map< TypeNode, Node >::iterator it = d_uf_measure.find( tn );
+              if( it!=d_uf_measure.end() ){
+                mc.push_back( NodeManager::currentNM()->mkNode( APPLY_UF, it->second, clist[j] ) );
+              }
             }
-          }else if( d_conj->getCegqiFairMode()==CEGQI_FAIR_DT_HEIGHT_PRED || d_conj->getCegqiFairMode()==CEGQI_FAIR_DT_SIZE_PRED  ){
-            //measure term is a fresh constant
-            mc.push_back( NodeManager::currentNM()->mkSkolem( "K", NodeManager::currentNM()->integerType() ) );
           }
         }
         if( !mc.empty() ){
-          d_conj->d_measure_term = mc.size()==1 ? mc[0] : NodeManager::currentNM()->mkNode( PLUS, mc );
-          Trace("cegqi") << "Measure term is : " << d_conj->d_measure_term << std::endl;
+          Node mt = mc.size()==1 ? mc[0] : NodeManager::currentNM()->mkNode( PLUS, mc );
+          Trace("cegqi") << "Measure term is : " << mt << std::endl;
+          d_conj->setMeasureTerm( mt );
         }
       }
     }else{
@@ -351,7 +1261,8 @@ void CegInstantiation::assertNode( Node n ) {
 Node CegInstantiation::getNextDecisionRequest( unsigned& priority ) {
   //enforce fairness
   if( d_conj->isAssigned() ){
-    d_conj->initializeGuard( d_quantEngine );
+    d_conj->initializeGuard();
+    // 
     std::vector< Node > req_dec;
     const CegConjectureSingleInv* ceg_si = d_conj->getCegConjectureSingleInv();
     if( ! ceg_si->d_full_guard.isNull() ){
@@ -372,14 +1283,20 @@ Node CegInstantiation::getNextDecisionRequest( unsigned& priority ) {
         Trace("cegqi-debug2") << "CEGQI : " << req_dec[i] << " already has value " << value << std::endl;
       }
     }
+    
+    //ask the conjecture directly
+    Node lit = d_conj->getNextDecisionRequest( priority );
+    if( !lit.isNull() ){
+      return lit;
+    }
 
     if( d_conj->getCegqiFairMode()!=CEGQI_FAIR_NONE ){
-      Node lit = d_conj->getLiteral( d_quantEngine, d_conj->d_curr_lit.get() );
+      Node lit = d_conj->getFairnessLiteral( d_conj->getCurrentTermSize() );
       bool value;
       if( d_quantEngine->getValuation().hasSatValue( lit, value ) ) {
         if( !value ){
-          d_conj->d_curr_lit.set( d_conj->d_curr_lit.get() + 1 );
-          lit = d_conj->getLiteral( d_quantEngine, d_conj->d_curr_lit.get() );
+          d_conj->incrementCurrentTermSize();
+          lit = d_conj->getFairnessLiteral( d_conj->getCurrentTermSize() );
           Trace("cegqi-debug") << "CEGQI : Decide on next lit : " << lit << "..." << std::endl;
           priority = 1;
           return lit;
@@ -398,107 +1315,107 @@ Node CegInstantiation::getNextDecisionRequest( unsigned& priority ) {
 void CegInstantiation::checkCegConjecture( CegConjecture * conj ) {
   Node q = conj->d_quant;
   Node aq = conj->d_assert_quant;
-  Trace("cegqi-engine-debug") << "Synthesis conjecture : " << q << std::endl;
-  Trace("cegqi-engine-debug") << "  * Candidate program/output symbol : ";
-  for( unsigned i=0; i<conj->d_candidates.size(); i++ ){
-    Trace("cegqi-engine-debug") << conj->d_candidates[i] << " ";
-  }
-  Trace("cegqi-engine-debug") << std::endl;
-  Trace("cegqi-engine-debug") << "  * Candidate ce skolems : ";
-  for( unsigned i=0; i<conj->d_ce_sk.size(); i++ ){
-    Trace("cegqi-engine-debug") << conj->d_ce_sk[i] << " ";
+  if( Trace.isOn("cegqi-engine-debug") ){
+    conj->debugPrint("cegqi-engine-debug");
+    Trace("cegqi-engine-debug") << std::endl;
   }
-  Trace("cegqi-engine-debug") << std::endl;
   if( conj->getCegqiFairMode()!=CEGQI_FAIR_NONE ){
-    Trace("cegqi-engine") << "  * Current term size : " << conj->d_curr_lit.get() << std::endl;
-  }
+    Trace("cegqi-engine") << "  * Current term size : " << conj->getCurrentTermSize() << std::endl;
+  }  
 
-  if( conj->d_ce_sk.empty() ){
-    Trace("cegqi-engine") << "  *** Check candidate phase..." << std::endl;
+  if( !conj->needsRefinement() ){
     if( conj->d_syntax_guided ){
-      if( conj->getCegConjectureSingleInv() != NULL ){
-        std::vector< Node > lems;
-        if( conj->doCegConjectureCheck( lems ) ){
-          if( !lems.empty() ){
-            d_last_inst_si = true;
-            for( unsigned j=0; j<lems.size(); j++ ){
-              Trace("cegqi-lemma") << "Cegqi::Lemma : single invocation instantiation : " << lems[j] << std::endl;
-              d_quantEngine->addLemma( lems[j] );
-            }
-            d_statistics.d_cegqi_si_lemmas += lems.size();
-            Trace("cegqi-engine") << "  ...try single invocation." << std::endl;
-          }
-          return;
+      std::vector< Node > clems;
+      conj->doCegConjectureSingleInvCheck( clems );
+      if( !clems.empty() ){
+        d_last_inst_si = true;
+        for( unsigned j=0; j<clems.size(); j++ ){
+          Trace("cegqi-lemma") << "Cegqi::Lemma : single invocation instantiation : " << clems[j] << std::endl;
+          d_quantEngine->addLemma( clems[j] );
         }
+        d_statistics.d_cegqi_si_lemmas += clems.size();
+        Trace("cegqi-engine") << "  ...try single invocation." << std::endl;
+        return;
       }
+      //ignore return value here
+      std::vector< Node > clist;
+      conj->getCandidateList( clist );
       std::vector< Node > model_values;
-      if( getModelValues( conj, conj->d_candidates, model_values ) ){
-        if( options::sygusDirectEval() ){
-          std::vector< Node > eager_eval_lem;
-          for( unsigned j=0; j<conj->d_candidates.size(); j++ ){
-            d_quantEngine->getTermDatabaseSygus()->registerModelValue( conj->d_candidates[j], model_values[j], eager_eval_lem );
-          }
-          if( !eager_eval_lem.empty() ){
-            for( unsigned j=0; j<eager_eval_lem.size(); j++ ){
-              Node lem = eager_eval_lem[j];
-              if( d_quantEngine->getTheoryEngine()->isTheoryEnabled(THEORY_BV) ){
-                //FIXME: hack to incorporate hacks from BV for division by zero
-                lem = bv::TheoryBVRewriter::eliminateBVSDiv( lem );
+      conj->getModelValues( clist, model_values );
+      if( options::sygusDirectEval() ){
+        bool addedEvalLemmas = false;
+        if( options::sygusCRefEval() ){
+          Trace("cegqi-debug") << "Do cref evaluation..." << std::endl;
+          // see if any refinement lemma is refuted by evaluation
+          std::vector< Node > cre_lems;
+          getCRefEvaluationLemmas( conj, clist, model_values, cre_lems );
+          if( !cre_lems.empty() ){
+            Trace("cegqi-engine") << "  *** Do conjecture refinement evaluation..." << std::endl;
+            for( unsigned j=0; j<cre_lems.size(); j++ ){
+              Node lem = cre_lems[j];
+              Trace("cegqi-lemma") << "Cegqi::Lemma : cref evaluation : " << lem << std::endl;
+              if( d_quantEngine->addLemma( lem ) ){
+                addedEvalLemmas = true;
               }
-              Trace("cegqi-lemma") << "Cegqi::Lemma : evaluation : " << lem << std::endl;
-              d_quantEngine->addLemma( lem );
             }
-            return;
-          }
-        }
-        //check if we must apply fairness lemmas
-        if( conj->getCegqiFairMode()==CEGQI_FAIR_UF_DT_SIZE ){
-          std::vector< Node > lems;
-          for( unsigned j=0; j<conj->d_candidates.size(); j++ ){
-            getMeasureLemmas( conj->d_candidates[j], model_values[j], lems );
-          }
-          if( !lems.empty() ){
-            for( unsigned j=0; j<lems.size(); j++ ){
-              Trace("cegqi-lemma") << "Cegqi::Lemma : measure : " << lems[j] << std::endl;
-              d_quantEngine->addLemma( lems[j] );
+            if( addedEvalLemmas ){
+              return;
             }
-            Trace("cegqi-engine") << "  ...refine size." << std::endl;
-            return;
           }
         }
-        //must get a counterexample to the value of the current candidate
-        Assert( conj->d_candidates.size()==model_values.size() );
-        Node inst = conj->d_base_inst.substitute( conj->d_candidates.begin(), conj->d_candidates.end(), model_values.begin(), model_values.end() );
-        //check whether we will run CEGIS on inner skolem variables
-        bool sk_refine = ( !conj->isGround() || conj->d_refine_count==0 );
-        if( sk_refine ){
-          conj->d_ce_sk.push_back( std::vector< Node >() );
-        }
-        std::vector< Node > ic;
-        ic.push_back( aq.negate() );
-        std::vector< Node > d;
-        collectDisjuncts( inst, d );
-        Assert( d.size()==conj->d_base_disj.size() );
-        //immediately skolemize inner existentials
-        for( unsigned i=0; i<d.size(); i++ ){
-          Node dr = Rewriter::rewrite( d[i] );
-          if( dr.getKind()==NOT && dr[0].getKind()==FORALL ){
-            ic.push_back( getTermDatabase()->getSkolemizedBody( dr[0] ).negate() );
-            if( sk_refine ){
-              conj->d_ce_sk.back().push_back( dr[0] );
-            }
-          }else{
-            ic.push_back( dr );
-            if( sk_refine ){
-              conj->d_ce_sk.back().push_back( Node::null() );
+        Trace("cegqi-debug") << "Do direct evaluation..." << std::endl;
+        std::vector< Node > eager_terms; 
+        std::vector< Node > eager_vals; 
+        std::vector< Node > eager_exps;
+        for( unsigned j=0; j<clist.size(); j++ ){
+          Trace("cegqi-debug") << "  register " << clist[j] << " -> " << model_values[j] << std::endl;
+          d_quantEngine->getTermDatabaseSygus()->registerModelValue( clist[j], model_values[j], eager_terms, eager_vals, eager_exps );
+        }
+        Trace("cegqi-debug") << "...produced " << eager_terms.size()  << " eager evaluation lemmas." << std::endl;
+        if( !eager_terms.empty() ){
+          Trace("cegqi-engine") << "  *** Do direct evaluation..." << std::endl;
+          for( unsigned j=0; j<eager_terms.size(); j++ ){
+            Node lem = NodeManager::currentNM()->mkNode( kind::OR, eager_exps[j].negate(), eager_terms[j].eqNode( eager_vals[j] ) );
+            if( d_quantEngine->getTheoryEngine()->isTheoryEnabled(THEORY_BV) ){
+              //FIXME: hack to incorporate hacks from BV for division by zero
+              lem = bv::TheoryBVRewriter::eliminateBVSDiv( lem );
             }
-            if( !conj->d_inner_vars_disj[i].empty() ){
-              Trace("cegqi-debug") << "*** quantified disjunct : " << d[i] << " simplifies to " << dr << std::endl;
+            Trace("cegqi-lemma") << "Cegqi::Lemma : evaluation : " << lem << std::endl;
+            if( d_quantEngine->addLemma( lem ) ){
+              addedEvalLemmas = true;
             }
           }
         }
-        Node lem = NodeManager::currentNM()->mkNode( OR, ic );
-        lem = Rewriter::rewrite( lem );
+        if( addedEvalLemmas ){
+          return;
+        }
+      }
+      //check if we must apply fairness lemmas
+      if( conj->getCegqiFairMode()==CEGQI_FAIR_UF_DT_SIZE ){
+        Trace("cegqi-debug") << "Get measure lemmas..." << std::endl;
+        std::vector< Node > lems;
+        for( unsigned j=0; j<clist.size(); j++ ){
+          Trace("cegqi-debug") << "  get measure lemmas for " << clist[j] << " -> " << model_values[j] << std::endl;
+          getMeasureLemmas( clist[j], model_values[j], lems );
+        }
+        Trace("cegqi-debug") << "...produced " << lems.size() << " measure lemmas." << std::endl;
+        if( !lems.empty() ){
+          Trace("cegqi-engine") << "  *** Do measure refinement..." << std::endl;
+          for( unsigned j=0; j<lems.size(); j++ ){
+            Trace("cegqi-lemma") << "Cegqi::Lemma : measure : " << lems[j] << std::endl;
+            d_quantEngine->addLemma( lems[j] );
+          }
+          Trace("cegqi-engine") << "  ...refine size." << std::endl;
+          return;
+        }
+      }
+      
+      Trace("cegqi-engine") << "  *** Check candidate phase..." << std::endl;
+      std::vector< Node > cclems;
+      conj->doCegConjectureCheck( cclems, model_values );
+      bool addedLemma = false;
+      for( unsigned i=0; i<cclems.size(); i++ ){
+        Node lem = cclems[i];
         d_last_inst_si = false;
         //eagerly unfold applications of evaluation function
         if( options::sygusDirectEval() ){
@@ -506,116 +1423,237 @@ void CegInstantiation::checkCegConjecture( CegConjecture * conj ) {
           std::map< Node, Node > visited_n;
           lem = getEagerUnfold( lem, visited_n );
         }
-
         Trace("cegqi-lemma") << "Cegqi::Lemma : counterexample : " << lem << std::endl;
         if( d_quantEngine->addLemma( lem ) ){
           ++(d_statistics.d_cegqi_lemmas_ce);
-          Trace("cegqi-engine") << "  ...find counterexample." << std::endl;
+          addedLemma = true;
         }else{
           //this may happen if we eagerly unfold, simplify to true
           if( !options::sygusDirectEval() ){
-            Trace("cegqi-engine") << "  ...FAILED to add candidate!" << std::endl;
+            Trace("cegqi-warn") << "  ...FAILED to add candidate!" << std::endl;
           }else{
             Trace("cegqi-engine-debug") << "  ...FAILED to add candidate!" << std::endl;
           }
-          if( conj->d_refine_count==0  ){
-            //immediately go to refine candidate
-            checkCegConjecture( conj );
-            return;
-          }
         }
       }
-
+      if( addedLemma ){
+        Trace("cegqi-engine") << "  ...check for counterexample." << std::endl;
+      }else{
+        if( conj->needsRefinement() ){
+          //immediately go to refine candidate
+          checkCegConjecture( conj );
+          return;
+        }
+      } 
     }else{
       Assert( aq==q );
       std::vector< Node > model_terms;
-      if( getModelValues( conj, conj->d_candidates, model_terms ) ){
-        d_quantEngine->addInstantiation( q, model_terms );
+      std::vector< Node > clist;
+      conj->getCandidateList( clist, true );
+      Assert( clist.size()==q[0].getNumChildren() );
+      conj->getModelValues( clist, model_terms );
+      if( d_quantEngine->addInstantiation( q, model_terms ) ){
+        conj->recordInstantiation( model_terms );
+      }else{
+        Assert( false );
       }
     }
   }else{
     Trace("cegqi-engine") << "  *** Refine candidate phase..." << std::endl;
-    for( unsigned j=0; j<conj->d_ce_sk.size(); j++ ){
-      bool success = true;
-      std::vector< Node > lem_c;
-      Assert( conj->d_ce_sk[j].size()==conj->d_base_disj.size() );
-      for( unsigned k=0; k<conj->d_ce_sk[j].size(); k++ ){
-        Node ce_q = conj->d_ce_sk[j][k];
-        Node c_disj = conj->d_base_disj[k];
-        if( !ce_q.isNull() ){
-          Assert( !conj->d_inner_vars_disj[k].empty() );
-          Assert( conj->d_inner_vars_disj[k].size()==getTermDatabase()->d_skolem_constants[ce_q].size() );
-          std::vector< Node > model_values;
-          if( getModelValues( NULL, getTermDatabase()->d_skolem_constants[ce_q], model_values ) ){
-            //candidate refinement : the next candidate must satisfy the counterexample found for the current model of the candidate
-            Node inst_ce_refine = conj->d_base_disj[k][0][1].substitute( conj->d_inner_vars_disj[k].begin(), conj->d_inner_vars_disj[k].end(),
-                                                                         model_values.begin(), model_values.end() );
-            lem_c.push_back( inst_ce_refine );
-          }else{
-            success = false;
-            break;
-          }
-        }else{
-          if( conj->d_inner_vars_disj[k].empty() ){
-            lem_c.push_back( conj->d_base_disj[k].negate() );
-          }else{
-            //denegrate case : quantified disjunct was trivially true and does not need to be refined
-            Trace("cegqi-debug") << "*** skip " << conj->d_base_disj[k] << std::endl;
+    std::vector< Node > rlems;
+    conj->doCegConjectureRefine( rlems );
+    bool addedLemma = false;
+    for( unsigned i=0; i<rlems.size(); i++ ){
+      Node lem = rlems[i];
+      Trace("cegqi-lemma") << "Cegqi::Lemma : candidate refinement : " << lem << std::endl;
+      bool res = d_quantEngine->addLemma( lem );
+      if( res ){
+        ++(d_statistics.d_cegqi_lemmas_refine);
+        conj->d_refine_count++;
+        addedLemma = true;
+      }else{
+        Trace("cegqi-warn") << "  ...FAILED to add refinement!" << std::endl;
+      }
+    }
+    if( addedLemma ){
+      Trace("cegqi-engine") << "  ...refine candidate." << std::endl;
+    }
+  }
+}
+
+void CegInstantiation::getCRefEvaluationLemmas( CegConjecture * conj, std::vector< Node >& vs, std::vector< Node >& ms, std::vector< Node >& lems ) {
+  if( conj->getNumRefinementLemmas()>0 ){
+    Assert( vs.size()==ms.size() );
+    std::map< Node, Node > vtm;
+    for( unsigned i=0; i<vs.size(); i++ ){
+      vtm[vs[i]] = ms[i];
+    }
+    /*
+    if( options::sygusUnifCondSol() ){
+      // first, check progress lemmas  TODO?
+      for( unsigned i=0; i<conj->getNumRefinementLemmas(); i++ ){
+        Node plem = conj->getConditionalProgressLemma( i );
+        std::vector< Node > pp;
+        conj->
+        std::map< Node, Node > visitedp;
+        std::map< Node, std::vector< Node > > expp;
+        conj->getModelValues
+      }
+    }
+    */
+    for( unsigned i=0; i<conj->getNumRefinementLemmas(); i++ ){
+      Node lem;
+      std::map< Node, Node > visited;
+      std::map< Node, std::vector< Node > > exp;
+      if( options::sygusUnifCondSol() ){
+        for( unsigned j=0; j<conj->getNumConditionalEvaluations( i ); j++ ){
+          std::map< Node, Node > visitedc;
+          std::map< Node, std::vector< Node > > expc;
+          Node ce = conj->getConditionalEvaluationAntec( i, j );
+          Node cee = crefEvaluate( ce, vtm, visitedc, expc );
+          Trace("sygus-cref-eval") << "Check conditional evaluation condition : " << ce << ", evaluates to " << cee << std::endl;
+          if( !cee.isNull() && cee==d_quantEngine->getTermDatabase()->d_true  ){
+            Node conc = conj->getConditionalEvaluationConc( i, j );
+            // the conditional holds, we will apply this as a substitution
+            for( unsigned r=0; r<2; r++ ){
+              if( conc[r].isVar() ){
+                Node v = conc[r];
+                Node c = conc[1-r];
+                Assert( exp.find( v )==exp.end() );
+                visited[v] = c;
+                //exp[v].insert( exp[v].end(), expc[ce].begin(), expc[ce].end() );
+                exp[v].push_back( ce );
+                Trace("sygus-cref-eval") << "   consider " << v << " -> " << c << " with expanation " << ce << std::endl;
+                break;
+              }
+            }
           }
         }
+        //if at least one conditional fires
+        if( !visited.empty() ){
+          lem = conj->getRefinementBaseLemma( i );
+        }
+      }else{
+        lem = conj->getRefinementBaseLemma( i );
       }
-      if( success ){
-        Node lem = lem_c.size()==1 ? lem_c[0] : NodeManager::currentNM()->mkNode( AND, lem_c );
-        lem = NodeManager::currentNM()->mkNode( OR, conj->getGuard().negate(), lem );
-        lem = Rewriter::rewrite( lem );
-        Trace("cegqi-lemma") << "Cegqi::Lemma : candidate refinement : " << lem << std::endl;
-        Trace("cegqi-engine") << "  ...refine candidate." << std::endl;
-        bool res = d_quantEngine->addLemma( lem );
-        if( res ){
-          ++(d_statistics.d_cegqi_lemmas_refine);
-          conj->d_refine_count++;
-        }else{
-          Trace("cegqi-engine") << "  ...FAILED to add refinement!" << std::endl;
+      if( !lem.isNull() ){
+        Trace("sygus-cref-eval") << "Check refinement lemma " << lem << " against current model." << std::endl;
+        Node elem = crefEvaluate( lem, vtm, visited, exp );
+        Trace("sygus-cref-eval") << "...evaluated to " << elem << ", exp size = " << exp[lem].size() << std::endl;
+        if( !elem.isNull() && elem==d_quantEngine->getTermDatabase()->d_false ){
+          elem = conj->getGuard().negate();
+          Node cre_lem;
+          if( !exp[lem].empty() ){
+            Node en = exp[lem].size()==1 ? exp[lem][0] : NodeManager::currentNM()->mkNode( kind::AND, exp[lem] );
+            cre_lem = NodeManager::currentNM()->mkNode( kind::OR, en.negate(), elem );
+          }else{
+            cre_lem = elem;
+          }
+          if( std::find( lems.begin(), lems.end(), cre_lem )==lems.end() ){
+            Trace("sygus-cref-eval") << "...produced lemma : " << cre_lem << std::endl;
+            lems.push_back( cre_lem );
+          }
         }
       }
     }
-    conj->d_ce_sk.clear();
   }
 }
 
-bool CegInstantiation::getModelValues( CegConjecture * conj, std::vector< Node >& n, std::vector< Node >& v ) {
-  bool success = true;
-  Trace("cegqi-engine") << "  * Value is : ";
-  for( unsigned i=0; i<n.size(); i++ ){
-    Node nv = getModelValue( n[i] );
-    v.push_back( nv );
-    if( Trace.isOn("cegqi-engine") ){
-      TypeNode tn = nv.getType();
-      Trace("cegqi-engine") << n[i] << " -> ";
-      std::stringstream ss;
-      std::vector< Node > lvs;
-      TermDbSygus::printSygusTerm( ss, nv, lvs );
-      Trace("cegqi-engine") << ss.str() << " ";
+Node CegInstantiation::crefEvaluate( Node n, std::map< Node, Node >& vtm, std::map< Node, Node >& visited, std::map< Node, std::vector< Node > >& exp ){
+  std::map< Node, Node >::iterator itv = visited.find( n );
+  Node ret;
+  std::vector< Node > exp_c;
+  if( itv!=visited.end() ){
+    if( !itv->second.isConst() ){
+      //we stored a partially evaluated node, actually evaluate the result now
+      ret = crefEvaluate( itv->second, vtm, visited, exp );
+      exp_c.push_back( itv->second );
+    }else{
+      return itv->second;
     }
-    if( nv.isNull() ){
-      success = false;
+  }else{
+    if( n.getKind()==kind::APPLY_UF ){
+      //it is an evaluation function
+      Trace("sygus-cref-eval-debug") << "Compute evaluation for : " << n << std::endl;
+      //unfold by one step 
+      Node nn = d_quantEngine->getTermDatabaseSygus()->unfold( n, vtm, exp[n] );
+      Trace("sygus-cref-eval-debug") << "...unfolded once to " << nn << std::endl;
+      Assert( nn!=n );
+      //it is the result of evaluating the unfolding
+      ret = crefEvaluate( nn, vtm, visited, exp );
+      //carry explanation
+      exp_c.push_back( nn );
     }
-    if( conj ){
-      conj->d_candidate_inst[i].push_back( nv );
+    if( ret.isNull() ){
+      if( n.getNumChildren()>0 ){
+        std::vector< Node > children;
+        bool childChanged = false;
+        if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+          children.push_back( n.getOperator() );
+        }
+        for( unsigned i=0; i<n.getNumChildren(); i++ ){
+          Node nc = crefEvaluate( n[i], vtm, visited, exp );
+          childChanged = nc!=n[i] || childChanged;
+          children.push_back( nc );
+          //Boolean short circuiting
+          if( n.getKind()==kind::AND ){
+            if( nc==d_quantEngine->getTermDatabase()->d_false ){
+              ret = nc;
+              exp_c.clear();
+            }
+          }else if( n.getKind()==kind::OR ){
+            if( nc==d_quantEngine->getTermDatabase()->d_true ){
+              ret = nc;
+              exp_c.clear();
+            }
+          }else if( n.getKind()==kind::ITE && i==0 ){
+            int index = -1;
+            if( nc==d_quantEngine->getTermDatabase()->d_true ){
+              index = 1;
+            }else if( nc==d_quantEngine->getTermDatabase()->d_false ){
+              index = 2;
+            }
+            if( index!=-1 ){
+              ret = crefEvaluate( n[index], vtm, visited, exp );
+              exp_c.push_back( n[index] );
+            }
+          }
+          //carry explanation
+          exp_c.push_back( n[i] );
+          if( !ret.isNull() ){
+            break;
+          }
+        }
+        if( ret.isNull() ){
+          if( childChanged ){
+            ret = NodeManager::currentNM()->mkNode( n.getKind(), children );
+            ret = Rewriter::rewrite( ret );
+          }else{
+            ret = n;
+          }
+        }
+      }else{
+        ret = n;
+      }
     }
   }
-  Trace("cegqi-engine") << std::endl;
-  return success;
-}
-
-Node CegInstantiation::getModelValue( Node n ) {
-  Trace("cegqi-mv") << "getModelValue for : " << n << std::endl;
-  return d_quantEngine->getModel()->getValue( n );
-}
-
-Node CegInstantiation::getModelTerm( Node n ){
-  //TODO
-  return getModelValue( n );
+  //carry explanation from children
+  for( unsigned i=0; i<exp_c.size(); i++ ){
+    Node nn = exp_c[i];
+    std::map< Node, std::vector< Node > >::iterator itx = exp.find( nn );
+    if( itx!=exp.end() ){
+      for( unsigned j=0; j<itx->second.size(); j++ ){
+        if( std::find( exp[n].begin(), exp[n].end(), itx->second[j] )==exp[n].end() ){
+          exp[n].push_back( itx->second[j] );
+        }
+      }
+    }
+  }
+  Trace("sygus-cref-eval-debug") << "... evaluation of " << n << " is (" << ret.getKind() << ") " << ret << std::endl;
+  Trace("sygus-cref-eval-debug") << "...... exp size = " << exp[n].size() << std::endl;
+  Assert( ret.isNull() || ret.isConst() );
+  visited[n] = ret;
+  return ret;
 }
 
 void CegInstantiation::registerMeasuredType( TypeNode tn ) {
@@ -710,13 +1748,7 @@ Node CegInstantiation::getEagerUnfold( Node n, std::map< Node, Node >& visited )
           }
           for( unsigned j=1; j<n.getNumChildren(); j++ ){
             Node nc = getEagerUnfold( n[j], visited );
-            //if( var_list[j-1].getType().isBoolean() ){   
-            //  //TODO: remove this case when boolean term conversion is eliminated
-            //  Node c = NodeManager::currentNM()->mkConst(BitVector(1u, 1u));
-            //  subs.push_back( nc.eqNode( c ) );
-            //}else{
             subs.push_back( nc );
-            //}
             Assert( subs[j-1].getType()==var_list[j-1].getType() );
           }
           Assert( vars.size()==subs.size() );
@@ -763,6 +1795,7 @@ void CegInstantiation::printSynthSolution( std::ostream& out ) {
     //}
     for( unsigned i=0; i<d_conj->d_quant[0].getNumChildren(); i++ ){
       Node prog = d_conj->d_quant[0][i];
+      Trace("cegqi-debug") << "  print solution for " << prog << std::endl;
       std::stringstream ss;
       ss << prog;
       std::string f(ss.str());
@@ -779,8 +1812,9 @@ void CegInstantiation::printSynthSolution( std::ostream& out ) {
         sol = d_conj->getSingleInvocationSolution( i, tn, status );
         sol = sol.getKind()==LAMBDA ? sol[1] : sol;
       }else{
-        if( !d_conj->d_candidate_inst[i].empty() ){
-          sol = d_conj->d_candidate_inst[i].back();
+        Node cprog = d_conj->getCandidate( i );
+        if( !d_conj->d_cinfo[cprog].d_inst.empty() ){
+          sol = d_conj->d_cinfo[cprog].d_inst.back();
           // Check if this was based on a template, if so, we must do
           // Reconstruction
           if( d_conj->d_assert_quant!=d_conj->d_quant ){
@@ -807,22 +1841,19 @@ void CegInstantiation::printSynthSolution( std::ostream& out ) {
                 templIsPost = true;
               }
             }
+            Trace("cegqi-inv") << "Template is " << templ << std::endl;
             if( !templ.isNull() ){
               std::vector<Node>& templ_vars = d_conj->getProgTempVars(prog);
-              
-              //take into consideration Boolean term conversion (this step can be eliminated when boolean term conversion is eliminated)
               std::vector< Node > vars;
               vars.insert( vars.end(), templ_vars.begin(), templ_vars.end() );
               Node vl = Node::fromExpr( dt.getSygusVarList() );
               Assert(vars.size() == subs.size());
-              for( unsigned j=0; j<templ_vars.size(); j++ ){
-                if( vl[j].getType().isBoolean() ){
-                  Node c = NodeManager::currentNM()->mkConst(BitVector(1u, 1u));
-                  vars[j] = vars[j].eqNode( c );
+              if( Trace.isOn("cegqi-inv-debug") ){
+                for( unsigned j=0; j<vars.size(); j++ ){
+                  Trace("cegqi-inv-debug") << "  subs : " << vars[j] << " -> " << subs[j] << std::endl;
                 }
-                Assert( vars[j].getType()==subs[j].getType() );
               }
-              
+              //apply the substitution to the template
               templ = templ.substitute( vars.begin(), vars.end(), subs.begin(), subs.end() );
               TermDbSygus* sygusDb = getTermDatabase()->getTermDatabaseSygus();
               sol = sygusDb->sygusToBuiltin( sol, sol.getType() );
@@ -844,6 +1875,8 @@ void CegInstantiation::printSynthSolution( std::ostream& out ) {
           }else{
             status = 1;
           }
+        }else{
+          Trace("cegqi-warn") << "WARNING : No recorded instantiations for syntax-guided solution!" << std::endl;
         }
       }
       if( !(Trace.isOn("cegqi-stats")) ){
diff --git a/src/theory/quantifiers/ce_guided_instantiation.h b/src/theory/quantifiers/ce_guided_instantiation.h
index 7f36f4d..56a71e4 100644
--- a/src/theory/quantifiers/ce_guided_instantiation.h
+++ b/src/theory/quantifiers/ce_guided_instantiation.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -31,6 +31,47 @@ namespace quantifiers {
 class CegConjecture {
 private:
   QuantifiersEngine * d_qe;
+  /** list of constants for quantified formula */
+  std::vector< Node > d_candidates;
+  /** base instantiation */
+  Node d_base_inst;
+  /** expand base inst to disjuncts */
+  std::vector< Node > d_base_disj;
+  /** list of variables on inner quantification */
+  std::vector< Node > d_inner_vars;
+  std::vector< std::vector< Node > > d_inner_vars_disj;
+  /** current extential quantifeirs whose couterexamples we must refine */
+  std::vector< std::vector< Node > > d_ce_sk;
+  /** the cardinality literals */
+  std::map< int, Node > d_lits;
+  /** current cardinality */
+  context::CDO< int > d_curr_lit;
+  /** active measure term */
+  Node d_active_measure_term;
+  /** refinement lemmas */
+  std::vector< Node > d_refinement_lemmas;
+  std::vector< Node > d_refinement_lemmas_base;
+  //std::vector< Node > d_refinement_lemmas_cprogress;
+  //std::vector< std::vector< Node > > d_refinement_lemmas_cprogress_pts;
+private: //for condition solutions
+  std::vector< std::vector< Node > > d_refinement_lemmas_aux_vars;
+  std::vector< std::vector< Node > > d_refinement_lemmas_ceval_ant;
+  std::vector< std::vector< Node > > d_refinement_lemmas_ceval_conc;
+  std::vector< Node > d_refinement_lemmas_ngr; //non-ground version
+  std::map< Node, bool > d_refinement_lemmas_reproc;
+  /** get candidate list recursively for conditional solutions */
+  void getConditionalCandidateList( std::vector< Node >& clist, Node curr, bool reqAdd );
+  Node constructConditionalCandidate( std::map< Node, Node >& cmv, Node curr );
+  Node getActiveConditional( Node curr );
+  void getContextConditionalNodes( Node curr, Node x, std::vector< Node >& nodes );
+  Node mkConditionalEvalNode( Node c, std::vector< Node >& args );
+  Node mkConditionalNode( Node v, std::vector< Node >& args, unsigned eindex );
+  Node mkConditional( Node v, std::vector< Node >& args, bool pol = true );
+  Node purifyConditionalEvaluations( Node n, std::map< Node, Node >& csol_cond, std::map< Node, Node >& psubs, 
+                                     std::map< Node, Node >& visited );
+  /** register candidate conditional */
+  void registerCandidateConditional( Node v );
+  bool inferIteTemplate( unsigned k, Node n, std::map< Node, unsigned >& templ_var_index, std::map< unsigned, unsigned >& templ_injection );
 public:
   CegConjecture( QuantifiersEngine * qe, context::Context* c );
   ~CegConjecture();
@@ -39,33 +80,44 @@ public:
   Node d_assert_quant;
   /** quantified formula (after processing) */
   Node d_quant;
-  /** base instantiation */
-  Node d_base_inst;
-  /** expand base inst to disjuncts */
-  std::vector< Node > d_base_disj;
-  /** list of constants for quantified formula */
-  std::vector< Node > d_candidates;
-  /** list of variables on inner quantification */
-  std::vector< Node > d_inner_vars;
-  std::vector< std::vector< Node > > d_inner_vars_disj;
-  /** list of terms we have instantiated candidates with */
-  std::map< int, std::vector< Node > > d_candidate_inst;
+
+  class CandidateInfo {
+  public:
+    CandidateInfo() : d_csol_status(-1){}
+    /** list of terms we have instantiated candidates with */
+    std::vector< Node > d_inst;
+    /** conditional solutions */
+    Node d_csol_op;
+    Node d_csol_cond;
+    Node d_csol_var[2];
+    /** progress guard */
+    Node d_csol_progress_guard;
+    /** solution status */
+    int d_csol_status;
+    /** required for template solutions */
+    std::map< unsigned, Node > d_template;
+    std::map< unsigned, Node > d_template_arg; 
+  };
+  std::map< Node, CandidateInfo > d_cinfo;
+  
   /** measure term */
   Node d_measure_term;
   /** measure sum size */
   int d_measure_term_size;
   /** refine count */
   unsigned d_refine_count;
-  /** current extential quantifeirs whose couterexamples we must refine */
-  std::vector< std::vector< Node > > d_ce_sk;
 
   const CegConjectureSingleInv* getCegConjectureSingleInv() const {
     return d_ceg_si;
   }
+  
+  bool needsRefinement();
+  void getCandidateList( std::vector< Node >& clist, bool forceOrig = false );
+  bool constructCandidates( std::vector< Node >& clist, std::vector< Node >& model_values, std::vector< Node >& candidate_values );
 
-  bool doCegConjectureCheck(std::vector< Node >& lems) {
-    return d_ceg_si->check(lems);
-  }
+  void doCegConjectureSingleInvCheck(std::vector< Node >& lems);
+  void doCegConjectureCheck(std::vector< Node >& lems, std::vector< Node >& model_values);
+  void doCegConjectureRefine(std::vector< Node >& lems);
 
   Node getSingleInvocationSolution(unsigned sol_index, TypeNode stn,
                                    int& reconstructed, bool rconsSygus=true){
@@ -80,21 +132,36 @@ public:
   std::vector<Node>& getProgTempVars(Node prog) {
     return d_ceg_si->d_prog_templ_vars[prog];
   }
+  
+  void recordInstantiation( std::vector< Node >& vs ) {
+    Assert( vs.size()==d_candidates.size() );
+    for( unsigned i=0; i<vs.size(); i++ ){
+      d_cinfo[d_candidates[i]].d_inst.push_back( vs[i] );
+    }
+  }
+  Node getCandidate( unsigned int i ) { return d_candidates[i]; }
+  
+  void debugPrint( const char * c );
 
- private:
+private:
   /** single invocation utility */
   CegConjectureSingleInv * d_ceg_si;
 public: //non-syntax guided (deprecated)
   /** guard */
   bool d_syntax_guided;
   Node d_nsg_guard;
-public:  //for fairness
-  /** the cardinality literals */
-  std::map< int, Node > d_lits;
-  /** current cardinality */
-  context::CDO< int > d_curr_lit;
+public:
+  /** get current term size */
+  int getCurrentTermSize() { return d_curr_lit.get(); }
+  /** increment current term size */
+  void incrementCurrentTermSize() { d_curr_lit.set( d_curr_lit.get() + 1 ); }
+  /** set measure term */
+  void setMeasureTerm( Node mt );
+  /** get measure term */
+  Node getMeasureTermFactor( Node v );
+  Node getMeasureTerm() { return d_measure_term; }
   /** allocate literal */
-  Node getLiteral( QuantifiersEngine * qe, int i );
+  Node getFairnessLiteral( int i );
   /** get guard */
   Node getGuard();
   /** is ground */
@@ -110,11 +177,38 @@ public:  //for fairness
   /** preregister conjecture */
   void preregisterConjecture( Node q );
   /** initialize guard */
-  void initializeGuard( QuantifiersEngine * qe );
+  void initializeGuard();
   /** assign */
   void assign( Node q );
   /** is assigned */
   bool isAssigned() { return !d_quant.isNull(); }
+  /** get model values */
+  void getModelValues( std::vector< Node >& n, std::vector< Node >& v );
+  /** get model value */
+  Node getModelValue( Node n );
+  /** get number of refinement lemmas */
+  unsigned getNumRefinementLemmas() { return d_refinement_lemmas.size(); }
+  /** get refinement lemma */
+  Node getRefinementLemma( unsigned i ) { return d_refinement_lemmas[i]; }
+  /** get refinement lemma */
+  Node getRefinementBaseLemma( unsigned i ) { return d_refinement_lemmas_base[i]; }
+  /** get num conditional evaluations */
+  unsigned getNumConditionalEvaluations( unsigned i ) { return d_refinement_lemmas_ceval_ant[i].size(); }
+  /** get conditional evaluation */
+  Node getConditionalEvaluationAntec( unsigned i, unsigned j ) { return d_refinement_lemmas_ceval_ant[i][j]; }
+  Node getConditionalEvaluationConc( unsigned i, unsigned j ) { return d_refinement_lemmas_ceval_conc[i][j]; }
+  /** get progress lemma */
+  //Node getConditionalProgressLemma( unsigned i ) { return d_refinement_lemmas_cprogress[i]; }
+  /** get progress point */
+  //void getConditionalProgressLemmaPoint( unsigned i, std::vector< Node >& pt ){
+  //  pt.insert( pt.end(), d_refinement_lemmas_cprogress_pts[i].begin(), d_refinement_lemmas_cprogress_pts[i].end() );
+  //}
+private:
+  Node getNextDecisionRequestConditional( Node v, unsigned& priority );
+  // 1 : active, 0 : unknown, -1 : inactive, -2 : not applicable
+  int getProgressStatus( Node v );
+public:
+  Node getNextDecisionRequest( unsigned& priority );
 };
 
 
@@ -141,17 +235,15 @@ private: //for enforcing fairness
   std::map< Node, std::map< int, Node > > d_size_term_lemma;
   /** get measure lemmas */
   void getMeasureLemmas( Node n, Node v, std::vector< Node >& lems );
+private: //for direct evaluation
+  /** get refinement evaluation */
+  void getCRefEvaluationLemmas( CegConjecture * conj, std::vector< Node >& vs, std::vector< Node >& ms, std::vector< Node >& lems );
+  Node crefEvaluate( Node lem, std::map< Node, Node >& vtm, std::map< Node, Node >& visited, std::map< Node, std::vector< Node > >& exp );
   /** get eager unfolding */
   Node getEagerUnfold( Node n, std::map< Node, Node >& visited );
 private:
   /** check conjecture */
   void checkCegConjecture( CegConjecture * conj );
-  /** get model values */
-  bool getModelValues( CegConjecture * conj, std::vector< Node >& n, std::vector< Node >& v );
-  /** get model value */
-  Node getModelValue( Node n );
-  /** get model term */
-  Node getModelTerm( Node n );
 public:
   CegInstantiation( QuantifiersEngine * qe, context::Context* c );
   ~CegInstantiation();
diff --git a/src/theory/quantifiers/ce_guided_single_inv.cpp b/src/theory/quantifiers/ce_guided_single_inv.cpp
index 92d62a1..41b262d 100644
--- a/src/theory/quantifiers/ce_guided_single_inv.cpp
+++ b/src/theory/quantifiers/ce_guided_single_inv.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -758,13 +758,7 @@ Node CegConjectureSingleInv::getSolution( unsigned sol_index, TypeNode stn, int&
     Assert( d_single_inv_arg_sk.size()==varList.getNumChildren() );
     for( unsigned i=0; i<d_single_inv_arg_sk.size(); i++ ){
       Trace("csi-sol") << d_single_inv_arg_sk[i] << " ";
-      //if( varList[i].getType().isBoolean() ){
-      //  //TODO force boolean term conversion mode
-      //  Node c = NodeManager::currentNM()->mkConst(BitVector(1u, 1u));
-      //  vars.push_back( d_single_inv_arg_sk[i].eqNode( c ) );
-      //}else{
       vars.push_back( d_single_inv_arg_sk[i] );
-      //}
       d_sol->d_varList.push_back( varList[i] );
     }
     Trace("csi-sol") << std::endl;
@@ -823,6 +817,7 @@ Node CegConjectureSingleInv::getSolution( unsigned sol_index, TypeNode stn, int&
 Node CegConjectureSingleInv::reconstructToSyntax( Node s, TypeNode stn, int& reconstructed, bool rconsSygus ) {
   d_solution = s;
   const Datatype& dt = ((DatatypeType)(stn).toType()).getDatatype();
+  Trace("csi-sol") << "Reconstruct to syntax " << s << ", allow all = " << dt.getSygusAllowAll() << " " << stn << ", reconstruct = " << rconsSygus << std::endl;
 
   //reconstruct the solution into sygus if necessary
   reconstructed = 0;
diff --git a/src/theory/quantifiers/ce_guided_single_inv.h b/src/theory/quantifiers/ce_guided_single_inv.h
index 449ab71..daa2986 100644
--- a/src/theory/quantifiers/ce_guided_single_inv.h
+++ b/src/theory/quantifiers/ce_guided_single_inv.h
@@ -2,9 +2,9 @@
 /*! \file ce_guided_single_inv.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Tim King, Clark Barrett
+ **   Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/ce_guided_single_inv_ei.cpp b/src/theory/quantifiers/ce_guided_single_inv_ei.cpp
index 6394fca..1d0dc7b 100644
--- a/src/theory/quantifiers/ce_guided_single_inv_ei.cpp
+++ b/src/theory/quantifiers/ce_guided_single_inv_ei.cpp
@@ -2,9 +2,9 @@
 /*! \file ce_guided_single_inv_ei.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Tim King
+ **   Andrew Reynolds, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/ce_guided_single_inv_ei.h b/src/theory/quantifiers/ce_guided_single_inv_ei.h
index 42e0b08..9964d32 100644
--- a/src/theory/quantifiers/ce_guided_single_inv_ei.h
+++ b/src/theory/quantifiers/ce_guided_single_inv_ei.h
@@ -2,9 +2,9 @@
 /*! \file ce_guided_single_inv_ei.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Tim King
+ **   Andrew Reynolds, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/ce_guided_single_inv_sol.cpp b/src/theory/quantifiers/ce_guided_single_inv_sol.cpp
index d93898a..79b4f2c 100644
--- a/src/theory/quantifiers/ce_guided_single_inv_sol.cpp
+++ b/src/theory/quantifiers/ce_guided_single_inv_sol.cpp
@@ -2,9 +2,9 @@
 /*! \file ce_guided_single_inv_sol.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Tim King
+ **   Andrew Reynolds, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -215,7 +215,7 @@ Node CegConjectureSingleInvSol::flattenITEs( Node n, bool rec ) {
       if( n0.getKind()==ITE ){
         n0 = NodeManager::currentNM()->mkNode( OR, NodeManager::currentNM()->mkNode( AND, n0, n1 ),
                                                    NodeManager::currentNM()->mkNode( AND, n0.negate(), n2 ) );
-      }else if( n0.getKind()==EQUAL ){
+      }else if( n0.getKind()==EQUAL && n0[0].getType().isBoolean() ){
         n0 = NodeManager::currentNM()->mkNode( OR, NodeManager::currentNM()->mkNode( AND, n0, n1 ),
                                                    NodeManager::currentNM()->mkNode( AND, n0.negate(), n1.negate() ) );
       }else{
diff --git a/src/theory/quantifiers/ce_guided_single_inv_sol.h b/src/theory/quantifiers/ce_guided_single_inv_sol.h
index cb6f6bc..61ade26 100644
--- a/src/theory/quantifiers/ce_guided_single_inv_sol.h
+++ b/src/theory/quantifiers/ce_guided_single_inv_sol.h
@@ -2,9 +2,9 @@
 /*! \file ce_guided_single_inv_sol.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Tim King
+ **   Andrew Reynolds, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/ceg_instantiator.cpp b/src/theory/quantifiers/ceg_instantiator.cpp
index 703dc69..05e86c9 100644
--- a/src/theory/quantifiers/ceg_instantiator.cpp
+++ b/src/theory/quantifiers/ceg_instantiator.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -502,6 +502,14 @@ Node CegInstantiator::applySubstitution( TypeNode tn, Node n, std::vector< Node
       }
     }
   }
+  if( Trace.isOn("cegqi-si-apply-subs-debug") ){
+    Trace("cegqi-si-apply-subs-debug") << "req_coeff = " << req_coeff << "  " << tn << std::endl;
+    for( unsigned i=0; i<subs.size(); i++ ){
+      Trace("cegqi-si-apply-subs-debug") << "  " << vars[i] << " -> " << subs[i] << "   types : " << vars[i].getType() << " -> " << subs[i].getType() << std::endl;
+      Assert( subs[i].getType().isSubtypeOf( vars[i].getType() ) );
+    }
+  }
+  
   if( !req_coeff ){
     Node nret = n.substitute( vars.begin(), vars.end(), subs.begin(), subs.end() );
     if( n!=nret ){
@@ -515,8 +523,12 @@ Node CegInstantiator::applySubstitution( TypeNode tn, Node n, std::vector< Node
       std::vector< Node > nsubs;
       for( unsigned i=0; i<vars.size(); i++ ){
         if( !coeff[i].isNull() ){
+          Assert( vars[i].getType().isInteger() );
           Assert( coeff[i].isConst() );
-          nsubs.push_back( Rewriter::rewrite( NodeManager::currentNM()->mkNode( MULT, subs[i], NodeManager::currentNM()->mkConst( Rational(1)/coeff[i].getConst<Rational>() ) ) ));
+          Node nn =NodeManager::currentNM()->mkNode( MULT, subs[i], NodeManager::currentNM()->mkConst( Rational(1)/coeff[i].getConst<Rational>() ) );
+          nn = NodeManager::currentNM()->mkNode( kind::TO_INTEGER, nn );
+          nn =  Rewriter::rewrite( nn );
+          nsubs.push_back( nn );
         }else{
           nsubs.push_back( subs[i] );
         }
@@ -711,19 +723,16 @@ void CegInstantiator::processAssertions() {
   d_curr_eqc.clear();
   d_curr_type_eqc.clear();
 
+  // must use master equality engine to avoid value instantiations
   eq::EqualityEngine* ee = d_qe->getMasterEqualityEngine();
   //to eliminate identified illegal terms
   std::map< Node, Node > aux_subs;
 
   //for each variable
-  std::vector< TheoryId > tids;
-  tids.push_back(THEORY_UF);
   for( unsigned i=0; i<d_vars.size(); i++ ){
     Node pv = d_vars[i];
     TypeNode pvtn = pv.getType();
-    //collect relevant theories
-    std::map< TypeNode, bool > visited;
-    collectTheoryIds( pvtn, visited, tids );
+    Trace("cbqi-proc-debug") << "Collect theory ids from type " << pvtn << " of " << pv << std::endl;
     //collect information about eqc
     if( ee->hasTerm( pv ) ){
       Node pvr = ee->getRepresentative( pv );
@@ -738,8 +747,8 @@ void CegInstantiator::processAssertions() {
     }
   }
   //collect assertions for relevant theories
-  for( unsigned i=0; i<tids.size(); i++ ){
-    TheoryId tid = tids[i];
+  for( unsigned i=0; i<d_tids.size(); i++ ){
+    TheoryId tid = d_tids[i];
     Theory* theory = d_qe->getTheoryEngine()->theoryOf( tid );
     if( theory && d_qe->getTheoryEngine()->isTheoryEnabled(tid) ){
       Trace("cbqi-proc") << "Collect assertions from theory " << tid << std::endl;
@@ -780,7 +789,7 @@ void CegInstantiator::processAssertions() {
     TypeNode rtn = r.getType();
     TheoryId tid = Theory::theoryOf( rtn );
     //if we care about the theory of this eqc
-    if( std::find( tids.begin(), tids.end(), tid )!=tids.end() ){
+    if( std::find( d_tids.begin(), d_tids.end(), tid )!=d_tids.end() ){
       if( rtn.isInteger() || rtn.isReal() ){
         rtn = rtn.getBaseType();
       }
@@ -809,7 +818,7 @@ void CegInstantiator::processAssertions() {
     if( it!=aux_subs.end() ){
       addToAuxVarSubstitution( subs_lhs, subs_rhs, r, it->second );
     }else{
-      Trace("cbqi-proc") << "....no substitution found for auxiliary variable " << r << "!!!" << std::endl;
+      Trace("cbqi-proc") << "....no substitution found for auxiliary variable " << r << "!!! type is " << r.getType() << std::endl;
       Assert( false );
     }
   }
@@ -996,6 +1005,21 @@ void CegInstantiator::registerCounterexampleLemma( std::vector< Node >& lems, st
   for( unsigned i=0; i<lems.size(); i++ ){
     collectCeAtoms( lems[i], visited );
   }
+
+  //compute the theory ids
+  d_tids.clear();
+  d_tids.push_back(THEORY_UF);
+  for( unsigned r=0; r<2; r++ ){
+    unsigned sz = r==0 ? d_vars.size() : d_aux_vars.size();
+    for( unsigned i=0; i<sz; i++ ){
+      Node pv = r==0 ? d_vars[i] : d_aux_vars[i];
+      TypeNode pvtn = pv.getType();
+      Trace("cbqi-proc-debug") << "Collect theory ids from type " << pvtn << " of " << pv << std::endl;
+      //collect relevant theories
+      std::map< TypeNode, bool > visited;
+      collectTheoryIds( pvtn, visited, d_tids );
+    }
+  }
 }
 
 
diff --git a/src/theory/quantifiers/ceg_instantiator.h b/src/theory/quantifiers/ceg_instantiator.h
index 94d02de..aed1be3 100644
--- a/src/theory/quantifiers/ceg_instantiator.h
+++ b/src/theory/quantifiers/ceg_instantiator.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -93,6 +93,8 @@ private:
   std::map< TypeNode, std::vector< Node > > d_curr_type_eqc;
   //auxiliary variables
   std::vector< Node > d_aux_vars;
+  // relevant theory ids
+  std::vector< TheoryId > d_tids;
   //literals to equalities for aux vars
   std::map< Node, std::map< Node, Node > > d_aux_eq;
   //the CE variables
diff --git a/src/theory/quantifiers/ceg_t_instantiator.cpp b/src/theory/quantifiers/ceg_t_instantiator.cpp
index 3282872..23b0b85 100644
--- a/src/theory/quantifiers/ceg_t_instantiator.cpp
+++ b/src/theory/quantifiers/ceg_t_instantiator.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/ceg_t_instantiator.h b/src/theory/quantifiers/ceg_t_instantiator.h
index 2df7946..787c254 100644
--- a/src/theory/quantifiers/ceg_t_instantiator.h
+++ b/src/theory/quantifiers/ceg_t_instantiator.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/conjecture_generator.cpp b/src/theory/quantifiers/conjecture_generator.cpp
index 11adc61..c25c522 100644
--- a/src/theory/quantifiers/conjecture_generator.cpp
+++ b/src/theory/quantifiers/conjecture_generator.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Clark Barrett, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -356,6 +356,7 @@ void ConjectureGenerator::check( Theory::Effort e, unsigned quant_e ) {
       eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( ee );
       while( !eqcs_i.isFinished() ){
         TNode r = (*eqcs_i);
+        Trace("sg-proc-debug") << "...eqc : " << r << std::endl;
         eqcs.push_back( r );
         if( r.getType().isBoolean() ){
           if( areEqual( r, getTermDatabase()->d_true ) ){
@@ -370,8 +371,10 @@ void ConjectureGenerator::check( Theory::Effort e, unsigned quant_e ) {
         eq::EqClassIterator ieqc_i = eq::EqClassIterator( r, ee );
         while( !ieqc_i.isFinished() ){
           TNode n = (*ieqc_i);
+          Trace("sg-proc-debug") << "......term : " << n << std::endl;
           if( getTermDatabase()->hasTermCurrent( n ) ){
             if( isHandledTerm( n ) ){
+              getTermDatabase()->computeArgReps( n );
               d_op_arg_index[r].addTerm( getTermDatabase()->d_arg_reps[n], n );
             }
           }
diff --git a/src/theory/quantifiers/conjecture_generator.h b/src/theory/quantifiers/conjecture_generator.h
index c89d0f2..e4246e2 100644
--- a/src/theory/quantifiers/conjecture_generator.h
+++ b/src/theory/quantifiers/conjecture_generator.h
@@ -2,9 +2,9 @@
 /*! \file conjecture_generator.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Clark Barrett, Tim King, Andrew Reynolds
+ **   Clark Barrett, Paul Meng, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/equality_infer.cpp b/src/theory/quantifiers/equality_infer.cpp
index 5190025..66ca38e 100644
--- a/src/theory/quantifiers/equality_infer.cpp
+++ b/src/theory/quantifiers/equality_infer.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/equality_infer.h b/src/theory/quantifiers/equality_infer.h
index 80d6ef9..4c1c93c 100644
--- a/src/theory/quantifiers/equality_infer.h
+++ b/src/theory/quantifiers/equality_infer.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/first_order_model.cpp b/src/theory/quantifiers/first_order_model.cpp
index 88b5f5f..0ffa0c1 100644
--- a/src/theory/quantifiers/first_order_model.cpp
+++ b/src/theory/quantifiers/first_order_model.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -45,7 +45,7 @@ struct sortQuantifierRelevance {
 
 FirstOrderModel::FirstOrderModel(QuantifiersEngine * qe, context::Context* c, std::string name ) :
 TheoryModel( c, name, true ),
-d_qe( qe ), d_forall_asserts( c ), d_isModelSet( c, false ){
+d_qe( qe ), d_forall_asserts( c ){
   d_rlv_count = 0;
 }
 
@@ -70,32 +70,6 @@ Node FirstOrderModel::getAssertedQuantifier( unsigned i, bool ordered ) {
   }
 }
 
-Node FirstOrderModel::getCurrentModelValue( Node n, bool partial ) {
-  std::vector< Node > children;
-  if( n.getNumChildren()>0 ){
-    if( n.getKind()!=APPLY_UF && n.getMetaKind() == kind::metakind::PARAMETERIZED ){
-      children.push_back( n.getOperator() );
-    }
-    for (unsigned i=0; i<n.getNumChildren(); i++) {
-      Node nc = getCurrentModelValue( n[i], partial );
-      if (nc.isNull()) {
-        return Node::null();
-      }else{
-        children.push_back( nc );
-      }
-    }
-    if( n.getKind()==APPLY_UF ){
-      return getCurrentUfModelValue( n, children, partial );
-    }else{
-      Node nn = NodeManager::currentNM()->mkNode( n.getKind(), children );
-      nn = Rewriter::rewrite( nn );
-      return nn;
-    }
-  }else{
-    return getRepresentative(n);
-  }
-}
-
 void FirstOrderModel::initialize() {
   processInitialize( true );
   //this is called after representatives have been chosen and the equality engine has been built
@@ -611,6 +585,7 @@ void FirstOrderModelIG::makeEvalUfIndexOrder( Node n ){
   }
 }
 
+/*
 Node FirstOrderModelIG::getCurrentUfModelValue( Node n, std::vector< Node > & args, bool partial ) {
   std::vector< Node > children;
   children.push_back(n.getOperator());
@@ -625,7 +600,7 @@ Node FirstOrderModelIG::getCurrentUfModelValue( Node n, std::vector< Node > & ar
     return d_eval_uf_model[ nv ].getValue( this, nv, argDepIndex );
   }
 }
-
+*/
 
 
 
@@ -640,23 +615,7 @@ FirstOrderModelFmc::~FirstOrderModelFmc() throw() {
   }
 }
 
-Node FirstOrderModelFmc::getUsedRepresentative(Node n, bool strict) {
-  //Assert( fm->hasTerm(n) );
-  TypeNode tn = n.getType();
-  if( tn.isBoolean() ){
-    return areEqual(n, d_true) ? d_true : d_false;
-  }else{
-    if( !hasTerm(n) ){
-      if( strict ){
-        return Node::null();
-      }else{
-        Trace("fmc-warn") << "WARNING : no representative for " << n << std::endl;
-      }
-    }
-    return getRepresentative(n);
-  }
-}
-
+/*
 Node FirstOrderModelFmc::getCurrentUfModelValue( Node n, std::vector< Node > & args, bool partial ) {
   Trace("fmc-uf-model") << "Get model value for " << n << " " << n.getKind() << std::endl;
   for(unsigned i=0; i<args.size(); i++) {
@@ -665,6 +624,7 @@ Node FirstOrderModelFmc::getCurrentUfModelValue( Node n, std::vector< Node > & a
   Assert( n.getKind()==APPLY_UF );
   return d_models[n.getOperator()]->evaluate(this, args);
 }
+*/
 
 void FirstOrderModelFmc::processInitialize( bool ispre ) {
   if( ispre ){
@@ -774,9 +734,8 @@ Node FirstOrderModelFmc::getFunctionValue(Node op, const char* argPrefix ) {
           if( !isStar(cond[j][1]) ){
             children.push_back( NodeManager::currentNM()->mkNode( LT, vars[j], cond[j][1] ) );
           }
-        }else if ( !isStar(cond[j]) &&  //handle the case where there are 0 or 1 ground eqc of this type
-                   d_rep_set.d_type_reps.find( tn )!=d_rep_set.d_type_reps.end() && d_rep_set.d_type_reps[ tn ].size()>1 ){
-          Node c = getUsedRepresentative( cond[j] );
+        }else if( !isStar(cond[j]) ){
+          Node c = getRepresentative( cond[j] );
           c = getRepresentative( c );
           children.push_back( NodeManager::currentNM()->mkNode( EQUAL, vars[j], c ) );
         }
@@ -898,6 +857,7 @@ Node FirstOrderModelAbs::getFunctionValue(Node op, const char* argPrefix ) {
   return Node::null();
 }
 
+/*
 Node FirstOrderModelAbs::getCurrentUfModelValue( Node n, std::vector< Node > & args, bool partial ) {
   Debug("qint-debug") << "get curr uf value " << n << std::endl;
   if( d_models_valid[n] ){
@@ -910,6 +870,7 @@ Node FirstOrderModelAbs::getCurrentUfModelValue( Node n, std::vector< Node > & a
     return Node::null();
   }
 }
+*/
 
 void FirstOrderModelAbs::processInitializeModelForTerm( Node n ) {
   if( n.getKind()==APPLY_UF || n.getKind()==VARIABLE || n.getKind()==SKOLEM ){
diff --git a/src/theory/quantifiers/first_order_model.h b/src/theory/quantifiers/first_order_model.h
index 7ded1b0..8a00c70 100644
--- a/src/theory/quantifiers/first_order_model.h
+++ b/src/theory/quantifiers/first_order_model.h
@@ -2,9 +2,9 @@
 /*! \file first_order_model.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Morgan Deters, Tim King
+ **   Andrew Reynolds, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -55,12 +55,10 @@ protected:
   std::vector< Node > d_forall_rlv_vec;
   Node d_last_forall_rlv;
   std::vector< Node > d_forall_rlv_assert;
-  /** is model set */
-  context::CDO< bool > d_isModelSet;
   /** get variable id */
   std::map< Node, std::map< Node, int > > d_quant_var_id;
-  /** get current model value */
-  virtual Node getCurrentUfModelValue( Node n, std::vector< Node > & args, bool partial ) = 0;
+  /** get current model value (deprecated) */
+  //virtual Node getCurrentUfModelValue( Node n, std::vector< Node > & args, bool partial ) = 0;
 public: //for Theory Quantifiers:
   /** assert quantifier */
   void assertQuantifier( Node n );
@@ -82,12 +80,6 @@ public:
   // initialize the model
   void initialize();
   virtual void processInitialize( bool ispre ) = 0;
-  /** mark model set */
-  void markModelSet() { d_isModelSet = true; }
-  /** is model set */
-  bool isModelSet() { return d_isModelSet; }
-  /** get current model value */
-  Node getCurrentModelValue( Node n, bool partial = false );
   /** get variable id */
   int getVariableId(TNode q, TNode n) {
     return d_quant_var_id.find( q )!=d_quant_var_id.end() ? d_quant_var_id[q][n] : -1;
@@ -133,8 +125,6 @@ private:
   //index ordering to use for each term
   std::map< Node, std::vector< int > > d_eval_term_index_order;
   void makeEvalUfIndexOrder( Node n );
-  /** get current model value */
-  Node getCurrentUfModelValue( Node n, std::vector< Node > & args, bool partial );
 //the following functions are for evaluating quantifier bodies
 public:
   FirstOrderModelIG(QuantifiersEngine * qe, context::Context* c, std::string name);
@@ -177,9 +167,7 @@ private:
   std::map<Node, Def * > d_models;
   std::map<TypeNode, Node > d_type_star;
   Node intervalOp;
-  Node getUsedRepresentative(Node n, bool strict = false);
   /** get current model value */
-  Node getCurrentUfModelValue( Node n, std::vector< Node > & args, bool partial );
   void processInitializeModelForTerm(Node n);
 public:
   FirstOrderModelFmc(QuantifiersEngine * qe, context::Context* c, std::string name);
@@ -214,17 +202,16 @@ public:
   std::map< Node, std::map< int, int > > d_var_index;
 private:
   /** get current model value */
-  Node getCurrentUfModelValue( Node n, std::vector< Node > & args, bool partial );
   void processInitializeModelForTerm(Node n);
   void processInitializeQuantifier( Node q );
   void collectEqVars( TNode q, TNode n, std::map< int, bool >& eq_vars );
+  TNode getUsedRepresentative( TNode n );
 public:
   FirstOrderModelAbs(QuantifiersEngine * qe, context::Context* c, std::string name);
   ~FirstOrderModelAbs() throw();
   FirstOrderModelAbs * asFirstOrderModelAbs() { return this; }
   void processInitialize( bool ispre );
   unsigned getRepresentativeId( TNode n );
-  TNode getUsedRepresentative( TNode n );
   bool isValidType( TypeNode tn ) { return d_domain.find( tn )!=d_domain.end(); }
   Node getFunctionValue(Node op, const char* argPrefix );
   Node getVariable( Node q, unsigned i );
diff --git a/src/theory/quantifiers/full_model_check.cpp b/src/theory/quantifiers/full_model_check.cpp
index 7e528fe..82a1c66 100644
--- a/src/theory/quantifiers/full_model_check.cpp
+++ b/src/theory/quantifiers/full_model_check.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -257,7 +257,9 @@ void Def::basic_simplify( FirstOrderModelFmc * m ) {
 }
 
 void Def::simplify(FullModelChecker * mc, FirstOrderModelFmc * m) {
+  Trace("fmc-simplify") << "Simplify definition, #cond = " << d_cond.size() << std::endl;
   basic_simplify( m );
+  Trace("fmc-simplify") << "post-basic simplify, #cond = " << d_cond.size() << std::endl;
 
   //check if the last entry is not all star, if so, we can make the last entry all stars
   if( !d_cond.empty() ){
@@ -300,6 +302,7 @@ void Def::simplify(FullModelChecker * mc, FirstOrderModelFmc * m) {
       Trace("fmc-cover-simplify") << std::endl;
     }
   }
+  Trace("fmc-simplify") << "finish simplify, #cond = " << d_cond.size() << std::endl;
 }
 
 void Def::debugPrint(const char * tr, Node op, FullModelChecker * m) {
@@ -325,222 +328,217 @@ QModelBuilder( c, qe ){
   d_false = NodeManager::currentNM()->mkConst(false);
 }
 
-void FullModelChecker::preProcessBuildModel(TheoryModel* m, bool fullModel) {
+bool FullModelChecker::preProcessBuildModel(TheoryModel* m) {
   //standard pre-process
-  preProcessBuildModelStd( m, fullModel );
+  if( !preProcessBuildModelStd( m ) ){
+    return false;
+  }
   
   FirstOrderModelFmc * fm = ((FirstOrderModelFmc*)m)->asFirstOrderModelFmc();
-  if( !fullModel ){
-    Trace("fmc") << "---Full Model Check preprocess() " << std::endl;
-    d_preinitialized_types.clear();
-    //traverse equality engine
-    eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( fm->d_equalityEngine );
-    while( !eqcs_i.isFinished() ){
-      TypeNode tr = (*eqcs_i).getType();
-      d_preinitialized_types[tr] = true;
-      ++eqcs_i;
-    }
+  Trace("fmc") << "---Full Model Check preprocess() " << std::endl;
+  d_preinitialized_types.clear();
+  //traverse equality engine
+  eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( fm->d_equalityEngine );
+  while( !eqcs_i.isFinished() ){
+    TypeNode tr = (*eqcs_i).getType();
+    d_preinitialized_types[tr] = true;
+    ++eqcs_i;
+  }
 
-    //must ensure model basis terms exists in model for each relevant type
-    fm->initialize();
-    for( std::map<Node, Def * >::iterator it = fm->d_models.begin(); it != fm->d_models.end(); ++it ) {
-      Node op = it->first;
-      TypeNode tno = op.getType();
-      for( unsigned i=0; i<tno.getNumChildren(); i++) {
-        preInitializeType( fm, tno[i] );
-      }
+  //must ensure model basis terms exists in model for each relevant type
+  fm->initialize();
+  for( std::map<Node, Def * >::iterator it = fm->d_models.begin(); it != fm->d_models.end(); ++it ) {
+    Node op = it->first;
+    TypeNode tno = op.getType();
+    for( unsigned i=0; i<tno.getNumChildren(); i++) {
+      preInitializeType( fm, tno[i] );
     }
-    //do not have to introduce terms for sorts of domains of quantified formulas if we are allowed to assume empty sorts
-    if( !options::fmfEmptySorts() ){
-      for( unsigned i=0; i<fm->getNumAssertedQuantifiers(); i++ ){
-        Node q = fm->getAssertedQuantifier( i );
-        //make sure all types are set
-        for( unsigned j=0; j<q[0].getNumChildren(); j++ ){
-          preInitializeType( fm, q[0][j].getType() );
-        }
+  }
+  //do not have to introduce terms for sorts of domains of quantified formulas if we are allowed to assume empty sorts
+  if( !options::fmfEmptySorts() ){
+    for( unsigned i=0; i<fm->getNumAssertedQuantifiers(); i++ ){
+      Node q = fm->getAssertedQuantifier( i );
+      //make sure all types are set
+      for( unsigned j=0; j<q[0].getNumChildren(); j++ ){
+        preInitializeType( fm, q[0][j].getType() );
       }
     }
   }
+  return true;
 }
 
-void FullModelChecker::processBuildModel(TheoryModel* m, bool fullModel){
+bool FullModelChecker::processBuildModel(TheoryModel* m){
   FirstOrderModelFmc * fm = ((FirstOrderModelFmc*)m)->asFirstOrderModelFmc();
-  if( !fullModel ){
-    Trace("fmc") << "---Full Model Check reset() " << std::endl;
-    d_quant_models.clear();
-    d_rep_ids.clear();
-    d_star_insts.clear();
-    //process representatives
-    for( std::map< TypeNode, std::vector< Node > >::iterator it = fm->d_rep_set.d_type_reps.begin();
-         it != fm->d_rep_set.d_type_reps.end(); ++it ){
-      if( it->first.isSort() ){
-        Trace("fmc") << "Cardinality( " << it->first << " )" << " = " << it->second.size() << std::endl;
-        for( size_t a=0; a<it->second.size(); a++ ){
-          Node r = fm->getUsedRepresentative( it->second[a] );
-          if( Trace.isOn("fmc-model-debug") ){
-            std::vector< Node > eqc;
-            ((EqualityQueryQuantifiersEngine*)d_qe->getEqualityQuery())->getEquivalenceClass( r, eqc );
-            Trace("fmc-model-debug") << "   " << (it->second[a]==r);
-            Trace("fmc-model-debug") << " : " << it->second[a] << " : " << r << " : ";
-            //Trace("fmc-model-debug") << r2 << " : " << ir << " : ";
-            Trace("fmc-model-debug") << " {";
-            for( size_t i=0; i<eqc.size(); i++ ){
-              Trace("fmc-model-debug") << eqc[i] << ", ";
-            }
-            Trace("fmc-model-debug") << "}" << std::endl;
+  Trace("fmc") << "---Full Model Check reset() " << std::endl;
+  d_quant_models.clear();
+  d_rep_ids.clear();
+  d_star_insts.clear();
+  //process representatives
+  for( std::map< TypeNode, std::vector< Node > >::iterator it = fm->d_rep_set.d_type_reps.begin();
+       it != fm->d_rep_set.d_type_reps.end(); ++it ){
+    if( it->first.isSort() ){
+      Trace("fmc") << "Cardinality( " << it->first << " )" << " = " << it->second.size() << std::endl;
+      for( size_t a=0; a<it->second.size(); a++ ){
+        Node r = fm->getRepresentative( it->second[a] );
+        if( Trace.isOn("fmc-model-debug") ){
+          std::vector< Node > eqc;
+          ((EqualityQueryQuantifiersEngine*)d_qe->getEqualityQuery())->getEquivalenceClass( r, eqc );
+          Trace("fmc-model-debug") << "   " << (it->second[a]==r);
+          Trace("fmc-model-debug") << " : " << it->second[a] << " : " << r << " : ";
+          //Trace("fmc-model-debug") << r2 << " : " << ir << " : ";
+          Trace("fmc-model-debug") << " {";
+          for( size_t i=0; i<eqc.size(); i++ ){
+            Trace("fmc-model-debug") << eqc[i] << ", ";
           }
-          d_rep_ids[it->first][r] = (int)a;
+          Trace("fmc-model-debug") << "}" << std::endl;
         }
-        Trace("fmc-model-debug") << std::endl;
+        d_rep_ids[it->first][r] = (int)a;
       }
+      Trace("fmc-model-debug") << std::endl;
     }
+  }
 
-    //now, make models
-    for( std::map<Node, Def * >::iterator it = fm->d_models.begin(); it != fm->d_models.end(); ++it ) {
-      Node op = it->first;
-      //reset the model
-      fm->d_models[op]->reset();
-
-      Trace("fmc-model-debug") << fm->d_uf_terms[op].size() << " model values for " << op << " ... " << std::endl;
-      std::vector< Node > add_conds;
-      std::vector< Node > add_values;
-      bool needsDefault = true;
-      for( size_t i=0; i<fm->d_uf_terms[op].size(); i++ ){
-        Node n = fm->d_uf_terms[op][i];
-        if( d_qe->getTermDatabase()->isTermActive( n ) ){
-          add_conds.push_back( n );
-          add_values.push_back( n );
-          Node r = fm->getUsedRepresentative(n);
-          Trace("fmc-model-debug") << n << " -> " << r << std::endl;
-          //AlwaysAssert( fm->areEqual( fm->d_uf_terms[op][i], r ) );
-        }else{
-          if( Trace.isOn("fmc-model-debug") ){
-            Node r = fm->getUsedRepresentative(n);
-            Trace("fmc-model-debug") << "[redundant] " << n << " -> " << r << std::endl;
-          }
-        }
+  //now, make models
+  for( std::map<Node, Def * >::iterator it = fm->d_models.begin(); it != fm->d_models.end(); ++it ) {
+    Node op = it->first;
+    //reset the model
+    fm->d_models[op]->reset();
+
+    std::vector< Node > add_conds;
+    std::vector< Node > add_values;      
+    bool needsDefault = true;
+    std::map< Node, std::vector< Node > >::iterator itut = fm->d_uf_terms.find( op );
+    if( itut!=fm->d_uf_terms.end() ){
+      Trace("fmc-model-debug") << itut->second.size() << " model values for " << op << " ... " << std::endl;
+      for( size_t i=0; i<itut->second.size(); i++ ){
+        Node n = itut->second[i];
+        // only consider unique up to congruence (in model equality engine)?
+        add_conds.push_back( n );
+        add_values.push_back( n );
+        Node r = fm->getRepresentative(n);
+        Trace("fmc-model-debug") << n << " -> " << r << std::endl;
+        //AlwaysAssert( fm->areEqual( itut->second[i], r ) );
       }
-      Trace("fmc-model-debug") << std::endl;
-      //possibly get default
-      if( needsDefault ){
-        Node nmb = d_qe->getTermDatabase()->getModelBasisOpTerm(op);
-        //add default value if necessary
-        if( fm->hasTerm( nmb ) ){
-          Trace("fmc-model-debug") << "Add default " << nmb << std::endl;
-          add_conds.push_back( nmb );
-          add_values.push_back( nmb );
-        }else{
-          Node vmb = getSomeDomainElement(fm, nmb.getType());
-          Trace("fmc-model-debug") << "Add default to default representative " << nmb << " ";
-          Trace("fmc-model-debug") << fm->d_rep_set.d_type_reps[nmb.getType()].size() << std::endl;
-          add_conds.push_back( nmb );
-          add_values.push_back( vmb );
-        }
+    }else{
+      Trace("fmc-model-debug") << "No model values for " << op << " ... " << std::endl;
+    }
+    Trace("fmc-model-debug") << std::endl;
+    //possibly get default
+    if( needsDefault ){
+      Node nmb = d_qe->getTermDatabase()->getModelBasisOpTerm(op);
+      //add default value if necessary
+      if( fm->hasTerm( nmb ) ){
+        Trace("fmc-model-debug") << "Add default " << nmb << std::endl;
+        add_conds.push_back( nmb );
+        add_values.push_back( nmb );
+      }else{
+        Node vmb = getSomeDomainElement(fm, nmb.getType());
+        Trace("fmc-model-debug") << "Add default to default representative " << nmb << " ";
+        Trace("fmc-model-debug") << fm->d_rep_set.d_type_reps[nmb.getType()].size() << std::endl;
+        add_conds.push_back( nmb );
+        add_values.push_back( vmb );
       }
+    }
 
-      std::vector< Node > conds;
-      std::vector< Node > values;
-      std::vector< Node > entry_conds;
-      //get the entries for the mdoel
-      for( size_t i=0; i<add_conds.size(); i++ ){
-        Node c = add_conds[i];
-        Node v = add_values[i];
-        std::vector< Node > children;
-        std::vector< Node > entry_children;
-        children.push_back(op);
-        entry_children.push_back(op);
-        bool hasNonStar = false;
-        for( unsigned i=0; i<c.getNumChildren(); i++) {
-          Node ri = fm->getUsedRepresentative( c[i] );
-          children.push_back(ri);
-          bool isStar = false;
-          if( options::mbqiMode()!=quantifiers::MBQI_FMC_INTERVAL || !ri.getType().isInteger() ){
-            if (fm->isModelBasisTerm(ri) ) {
-              ri = fm->getStar( ri.getType() );
-              isStar = true;
-            }else{
-              hasNonStar = true;
-            }
-          }
-          if( !isStar && !ri.isConst() ){
-            Trace("fmc-warn") << "Warning : model for " << op << " has non-constant argument in model " << ri << " (from " << c[i] << ")" << std::endl;
-            Assert( false );
+    std::vector< Node > conds;
+    std::vector< Node > values;
+    std::vector< Node > entry_conds;
+    //get the entries for the model
+    for( size_t i=0; i<add_conds.size(); i++ ){
+      Node c = add_conds[i];
+      Node v = add_values[i];
+      std::vector< Node > children;
+      std::vector< Node > entry_children;
+      children.push_back(op);
+      entry_children.push_back(op);
+      bool hasNonStar = false;
+      for( unsigned i=0; i<c.getNumChildren(); i++) {
+        Node ri = fm->getRepresentative( c[i] );
+        children.push_back(ri);
+        bool isStar = false;
+        if( options::mbqiMode()!=quantifiers::MBQI_FMC_INTERVAL || !ri.getType().isInteger() ){
+          if (fm->isModelBasisTerm(ri) ) {
+            ri = fm->getStar( ri.getType() );
+            isStar = true;
+          }else{
+            hasNonStar = true;
           }
-          entry_children.push_back(ri);
         }
-        Node n = NodeManager::currentNM()->mkNode( APPLY_UF, children );
-        Node nv = fm->getUsedRepresentative( v );
-        if( !nv.isConst() ){
-          Trace("fmc-warn") << "Warning : model for " << op << " has non-constant value in model " << nv << std::endl;
+        if( !isStar && !ri.isConst() ){
+          Trace("fmc-warn") << "Warning : model for " << op << " has non-constant argument in model " << ri << " (from " << c[i] << ")" << std::endl;
           Assert( false );
         }
-        Node en = (useSimpleModels() && hasNonStar) ? n : NodeManager::currentNM()->mkNode( APPLY_UF, entry_children );
-        if( std::find(conds.begin(), conds.end(), n )==conds.end() ){
-          Trace("fmc-model-debug") << "- add " << n << " -> " << nv << " (entry is " << en << ")" << std::endl;
-          conds.push_back(n);
-          values.push_back(nv);
-          entry_conds.push_back(en);
-        }
-        else {
-          Trace("fmc-model-debug") << "Already have entry for : " << n << " -> " << nv << " (entry is " << en << ")" << std::endl;
-        }
+        entry_children.push_back(ri);
+      }
+      Node n = NodeManager::currentNM()->mkNode( APPLY_UF, children );
+      Node nv = fm->getRepresentative( v );
+      if( !nv.isConst() ){
+        Trace("fmc-warn") << "Warning : model for " << op << " has non-constant value in model " << nv << std::endl;
+        Assert( false );
       }
+      Node en = (useSimpleModels() && hasNonStar) ? n : NodeManager::currentNM()->mkNode( APPLY_UF, entry_children );
+      if( std::find(conds.begin(), conds.end(), n )==conds.end() ){
+        Trace("fmc-model-debug") << "- add " << n << " -> " << nv << " (entry is " << en << ")" << std::endl;
+        conds.push_back(n);
+        values.push_back(nv);
+        entry_conds.push_back(en);
+      }
+      else {
+        Trace("fmc-model-debug") << "Already have entry for : " << n << " -> " << nv << " (entry is " << en << ")" << std::endl;
+      }
+    }
 
 
-      //sort based on # default arguments
-      std::vector< int > indices;
-      ModelBasisArgSort mbas;
-      for (int i=0; i<(int)conds.size(); i++) {
-        d_qe->getTermDatabase()->computeModelBasisArgAttribute( conds[i] );
-        mbas.d_terms.push_back(conds[i]);
-        indices.push_back(i);
-      }
-      std::sort( indices.begin(), indices.end(), mbas );
+    //sort based on # default arguments
+    std::vector< int > indices;
+    ModelBasisArgSort mbas;
+    for (int i=0; i<(int)conds.size(); i++) {
+      d_qe->getTermDatabase()->computeModelBasisArgAttribute( conds[i] );
+      mbas.d_terms.push_back(conds[i]);
+      indices.push_back(i);
+    }
+    std::sort( indices.begin(), indices.end(), mbas );
 
-      for (int i=0; i<(int)indices.size(); i++) {
-        fm->d_models[op]->addEntry(fm, entry_conds[indices[i]], values[indices[i]]);
-      }
+    for (int i=0; i<(int)indices.size(); i++) {
+      fm->d_models[op]->addEntry(fm, entry_conds[indices[i]], values[indices[i]]);
+    }
 
 
-      if( options::mbqiMode()==quantifiers::MBQI_FMC_INTERVAL ){
-        convertIntervalModel( fm, op );
-      }
+    if( options::mbqiMode()==quantifiers::MBQI_FMC_INTERVAL ){
+      convertIntervalModel( fm, op );
+    }
 
-      Trace("fmc-model-simplify") << "Before simplification : " << std::endl;
-      fm->d_models[op]->debugPrint("fmc-model-simplify", op, this);
-      Trace("fmc-model-simplify") << std::endl;
+    Trace("fmc-model-simplify") << "Before simplification : " << std::endl;
+    fm->d_models[op]->debugPrint("fmc-model-simplify", op, this);
+    Trace("fmc-model-simplify") << std::endl;
 
-      Trace("fmc-model-simplify") << "Simplifying " << op << "..." << std::endl;
-      fm->d_models[op]->simplify( this, fm );
+    Trace("fmc-model-simplify") << "Simplifying " << op << "..." << std::endl;
+    fm->d_models[op]->simplify( this, fm );
 
-      fm->d_models[op]->debugPrint("fmc-model", op, this);
-      Trace("fmc-model") << std::endl;
+    fm->d_models[op]->debugPrint("fmc-model", op, this);
+    Trace("fmc-model") << std::endl;
 
-      //for debugging
-      /*
-      for( size_t i=0; i<fm->d_uf_terms[op].size(); i++ ){
-        std::vector< Node > inst;
-        for( unsigned j=0; j<fm->d_uf_terms[op][i].getNumChildren(); j++ ){
-          Node r = fm->getUsedRepresentative( fm->d_uf_terms[op][i][j] );
-          inst.push_back( r );
-        }
-        Node ev = fm->d_models[op]->evaluate( fm, inst );
-        Trace("fmc-model-debug") << ".....Checking eval( " << fm->d_uf_terms[op][i] << " ) = " << ev << std::endl;
-        AlwaysAssert( fm->areEqual( ev, fm->d_uf_terms[op][i] ) );
+    //for debugging
+    /*
+    for( size_t i=0; i<fm->d_uf_terms[op].size(); i++ ){
+      std::vector< Node > inst;
+      for( unsigned j=0; j<fm->d_uf_terms[op][i].getNumChildren(); j++ ){
+        Node r = fm->getRepresentative( fm->d_uf_terms[op][i][j] );
+        inst.push_back( r );
       }
-      */
-    }
-  }else{
-    //make function values
-    for( std::map<Node, Def * >::iterator it = fm->d_models.begin(); it != fm->d_models.end(); ++it ){
-      m->d_uf_models[ it->first ] = getFunctionValue( fm, it->first, "$x" );
+      Node ev = fm->d_models[op]->evaluate( fm, inst );
+      Trace("fmc-model-debug") << ".....Checking eval( " << fm->d_uf_terms[op][i] << " ) = " << ev << std::endl;
+      AlwaysAssert( fm->areEqual( ev, fm->d_uf_terms[op][i] ) );
     }
-    TheoryEngineModelBuilder::processBuildModel( m, fullModel );
-    //mark that the model has been set
-    fm->markModelSet();
-    //debug the model
-    debugModel( fm );
+    */
+  }
+  Assert( d_addedLemmas==0 );
+  
+  //make function values
+  for( std::map<Node, Def * >::iterator it = fm->d_models.begin(); it != fm->d_models.end(); ++it ){
+    m->d_uf_models[ it->first ] = getFunctionValue( fm, it->first, "$x" );
   }
+  return TheoryEngineModelBuilder::processBuildModel( m );
 }
 
 void FullModelChecker::preInitializeType( FirstOrderModelFmc * fm, TypeNode tn ){
@@ -617,6 +615,7 @@ int FullModelChecker::doExhaustiveInstantiation( FirstOrderModel * fm, Node f, i
         //model check the quantifier
         doCheck(fmfmc, f, d_quant_models[f], f[1]);
         Trace("fmc") << "Definition for quantifier " << f << " is : " << std::endl;
+        Assert( !d_quant_models[f].d_cond.empty() );
         d_quant_models[f].debugPrint("fmc", Node::null(), this);
         Trace("fmc") << std::endl;
 
@@ -676,7 +675,7 @@ int FullModelChecker::doExhaustiveInstantiation( FirstOrderModel * fm, Node f, i
                 cond.insert( cond.end(), inst.begin(), inst.end() );
                 //need to do exhaustive instantiate algorithm to set things properly (should only add one instance)
                 Node c = mkCond( cond );
-                int prevInst = d_addedLemmas;
+                unsigned prevInst = d_addedLemmas;
                 exhaustiveInstantiate( fmfmc, f, c, -1 );
                 if( d_addedLemmas==prevInst ){
                   d_star_insts[f].push_back(i);
@@ -779,7 +778,7 @@ bool FullModelChecker::exhaustiveInstantiate(FirstOrderModelFmc * fm, Node f, No
         Node rr = riter.getCurrentTerm( i );
         Node r = rr;
         //if( r.getType().isSort() ){
-        r = fm->getUsedRepresentative( r );
+        r = fm->getRepresentative( r );
         //}else{
         //  r = fm->getCurrentModelValue( r );
         //}
@@ -857,7 +856,7 @@ void FullModelChecker::doCheck(FirstOrderModelFmc * fm, Node f, Def & d, Node n
       if( !fm->hasTerm(n) ){
         r = getSomeDomainElement(fm, n.getType() );
       }
-      r = fm->getUsedRepresentative( r );
+      r = fm->getRepresentative( r );
     }
     Trace("fmc-debug") << "Add constant entry..." << std::endl;
     d.addEntry(fm, mkCondDefault(fm, f), r);
@@ -890,7 +889,7 @@ void FullModelChecker::doCheck(FirstOrderModelFmc * fm, Node f, Def & d, Node n
       */
     } else {
       if( !var_ch.empty() ){
-        if( n.getKind()==EQUAL ){
+        if( n.getKind()==EQUAL && !n[0].getType().isBoolean() ){
           if( var_ch.size()==2 ){
             Trace("fmc-debug") << "Do variable equality " << n << std::endl;
             doVariableEquality( fm, f, d, n );
@@ -943,7 +942,7 @@ void FullModelChecker::doVariableEquality( FirstOrderModelFmc * fm, Node f, Def
         getSomeDomainElement( fm, tn );  //to verify the type is initialized
       }
       for (unsigned i=0; i<fm->d_rep_set.d_type_reps[tn].size(); i++) {
-        Node r = fm->getUsedRepresentative( fm->d_rep_set.d_type_reps[tn][i] );
+        Node r = fm->getRepresentative( fm->d_rep_set.d_type_reps[tn][i] );
         cond[j+1] = r;
         cond[k+1] = r;
         d.addEntry( fm, mkCond(cond), d_true);
@@ -1273,7 +1272,7 @@ Node FullModelChecker::mkArrayCond( Node a ) {
 }
 
 Node FullModelChecker::evaluateInterpreted( Node n, std::vector< Node > & vals ) {
-  if( n.getKind()==EQUAL ){
+  if( n.getKind()==EQUAL && !n[0].getType().isBoolean() ){
     if (!vals[0].isNull() && !vals[1].isNull()) {
       return vals[0]==vals[1] ? d_true : d_false;
     }else{
diff --git a/src/theory/quantifiers/full_model_check.h b/src/theory/quantifiers/full_model_check.h
index 7d21b41..c5d0059 100644
--- a/src/theory/quantifiers/full_model_check.h
+++ b/src/theory/quantifiers/full_model_check.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -144,10 +144,8 @@ public:
   Node getFunctionValue(FirstOrderModelFmc * fm, Node op, const char* argPrefix );
 
   /** process build model */  
-  void preProcessBuildModel(TheoryModel* m, bool fullModel); 
-  void processBuildModel(TheoryModel* m, bool fullModel);
-  /** get current model value */
-  Node getCurrentUfModelValue( FirstOrderModelFmc* fm, Node n, std::vector< Node > & args, bool partial );
+  bool preProcessBuildModel(TheoryModel* m); 
+  bool processBuildModel(TheoryModel* m);
 
   bool useSimpleModels();
 };/* class FullModelChecker */
diff --git a/src/theory/quantifiers/fun_def_engine.cpp b/src/theory/quantifiers/fun_def_engine.cpp
index cf1d146..354d90b 100644
--- a/src/theory/quantifiers/fun_def_engine.cpp
+++ b/src/theory/quantifiers/fun_def_engine.cpp
@@ -2,9 +2,9 @@
 /*! \file fun_def_engine.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Tim King
+ **   Andrew Reynolds, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/fun_def_engine.h b/src/theory/quantifiers/fun_def_engine.h
index 3b95281..ea1dbbc 100644
--- a/src/theory/quantifiers/fun_def_engine.h
+++ b/src/theory/quantifiers/fun_def_engine.h
@@ -2,9 +2,9 @@
 /*! \file fun_def_engine.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Tim King
+ **   Andrew Reynolds, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/fun_def_process.cpp b/src/theory/quantifiers/fun_def_process.cpp
index 1172fb9..064d6c8 100644
--- a/src/theory/quantifiers/fun_def_process.cpp
+++ b/src/theory/quantifiers/fun_def_process.cpp
@@ -2,9 +2,9 @@
 /*! \file fun_def_process.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Tim King
+ **   Andrew Reynolds, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -94,13 +94,15 @@ void FunDefFmf::simplify( std::vector< Node >& assertions, bool doRewrite ) {
     }
   }
   //second pass : rewrite assertions
+  std::map< int, std::map< Node, Node > > visited;
+  std::map< int, std::map< Node, Node > > visited_cons;
   for( unsigned i=0; i<assertions.size(); i++ ){
     int is_fd = std::find( fd_assertions.begin(), fd_assertions.end(), i )!=fd_assertions.end() ? 1 : 0;
     //constant boolean function definitions do not add domain constraints
     if( is_fd==0 || ( is_fd==1 && assertions[i][1].getKind()==EQUAL ) ){
       std::vector< Node > constraints;
       Trace("fmf-fun-def-rewrite") << "Rewriting " << assertions[i] << ", is_fd = " << is_fd << std::endl;
-      Node n = simplifyFormula( assertions[i], true, true, constraints, is_fd==1 ? subs_head[i] : Node::null(), is_fd );
+      Node n = simplifyFormula( assertions[i], true, true, constraints, is_fd==1 ? subs_head[i] : Node::null(), is_fd, visited, visited_cons );
       Assert( constraints.empty() );
       if( n!=assertions[i] ){
         n = Rewriter::rewrite( n );
@@ -115,104 +117,135 @@ void FunDefFmf::simplify( std::vector< Node >& assertions, bool doRewrite ) {
 }
 
 //is_fun_def 1 : top of fun-def, 2 : top of fun-def body, 0 : not top
-Node FunDefFmf::simplifyFormula( Node n, bool pol, bool hasPol, std::vector< Node >& constraints, Node hd, int is_fun_def ) {
-  Trace("fmf-fun-def-debug") << "Simplify " << n << " " << pol << " " << hasPol << " " << is_fun_def << std::endl;
-  if( n.getKind()==FORALL ){
-    Node c = simplifyFormula( n[1], pol, hasPol, constraints, hd, is_fun_def );
-    //append prenex to constraints
-    for( unsigned i=0; i<constraints.size(); i++ ){
-      constraints[i] = NodeManager::currentNM()->mkNode( FORALL, n[0], constraints[i] );
-      constraints[i] = Rewriter::rewrite( constraints[i] );
-    }
-    if( c!=n[1] ){
-      return NodeManager::currentNM()->mkNode( FORALL, n[0], c );
-    }else{
-      return n;
+Node FunDefFmf::simplifyFormula( Node n, bool pol, bool hasPol, std::vector< Node >& constraints, Node hd, int is_fun_def,
+                                 std::map< int, std::map< Node, Node > >& visited,
+                                 std::map< int, std::map< Node, Node > >& visited_cons ) {
+  Assert( constraints.empty() );
+  int index = is_fun_def + 3*( hasPol ? ( pol ? 1 : -1 ) : 0 );
+  std::map< Node, Node >::iterator itv = visited[index].find( n );
+  if( itv!=visited[index].end() ){
+    //constraints.insert( visited_cons[index]
+    std::map< Node, Node >::iterator itvc = visited_cons[index].find( n );
+    if( itvc != visited_cons[index].end() ){
+      constraints.push_back( itvc->second );
     }
+    return itv->second;
   }else{
-    Node nn = n;
-    bool isBool = n.getType().isBoolean();
-    if( isBool && n.getKind()!=APPLY_UF && is_fun_def!=2 ){
-      std::vector< Node > children;
-      bool childChanged = false;
-      for( unsigned i=0; i<n.getNumChildren(); i++ ){
-        Node c = n[i];
-        //do not process LHS of definition
-        if( is_fun_def!=1 || c!=hd ){
-          bool newHasPol;
-          bool newPol;
-          QuantPhaseReq::getPolarity( n, i, hasPol, pol, newHasPol, newPol );
-          //get child constraints
-          std::vector< Node > cconstraints;
-          c = simplifyFormula( n[i], newPol, newHasPol, cconstraints, hd, is_fun_def==1 ? 2 : 0 );
-          constraints.insert( constraints.end(), cconstraints.begin(), cconstraints.end() );
-        }
-        children.push_back( c );
-        childChanged = c!=n[i] || childChanged;
+    Node ret;
+    Trace("fmf-fun-def-debug2") << "Simplify " << n << " " << pol << " " << hasPol << " " << is_fun_def << std::endl;
+    if( n.getKind()==FORALL ){
+      Node c = simplifyFormula( n[1], pol, hasPol, constraints, hd, is_fun_def, visited, visited_cons );
+      //append prenex to constraints
+      for( unsigned i=0; i<constraints.size(); i++ ){
+        constraints[i] = NodeManager::currentNM()->mkNode( FORALL, n[0], constraints[i] );
+        constraints[i] = Rewriter::rewrite( constraints[i] );
       }
-      if( childChanged ){
-        nn = NodeManager::currentNM()->mkNode( n.getKind(), children );
+      if( c!=n[1] ){
+        ret = NodeManager::currentNM()->mkNode( FORALL, n[0], c );
+      }else{
+        ret = n;
       }
     }else{
-      //simplify term
-      simplifyTerm( n, constraints );
-    }
-    if( !constraints.empty() && isBool && hasPol ){
-      std::vector< Node > c;
-      c.push_back( nn );
-      //conjoin with current
-      for( unsigned i=0; i<constraints.size(); i++ ){
+      Node nn = n;
+      bool isBool = n.getType().isBoolean();
+      if( isBool && n.getKind()!=APPLY_UF && is_fun_def!=2 ){
+        std::vector< Node > children;
+        bool childChanged = false;
+        for( unsigned i=0; i<n.getNumChildren(); i++ ){
+          Node c = n[i];
+          //do not process LHS of definition
+          if( is_fun_def!=1 || c!=hd ){
+            bool newHasPol;
+            bool newPol;
+            QuantPhaseReq::getPolarity( n, i, hasPol, pol, newHasPol, newPol );
+            //get child constraints
+            std::vector< Node > cconstraints;
+            c = simplifyFormula( n[i], newPol, newHasPol, cconstraints, hd, is_fun_def==1 ? 2 : 0, visited, visited_cons );
+            constraints.insert( constraints.end(), cconstraints.begin(), cconstraints.end() );
+          }
+          children.push_back( c );
+          childChanged = c!=n[i] || childChanged;
+        }
+        if( childChanged ){
+          nn = NodeManager::currentNM()->mkNode( n.getKind(), children );
+        }
+      }else{
+        //simplify term
+        std::map< Node, bool > visited;
+        simplifyTerm( n, constraints, visited );
+      }
+      if( !constraints.empty() && isBool && hasPol ){
+        //conjoin with current
+        Node cons = constraints.size()==1 ? constraints[0] : NodeManager::currentNM()->mkNode( AND, constraints );
         if( pol ){
-          c.push_back( constraints[i] );
+          ret = NodeManager::currentNM()->mkNode( AND, nn, cons );
         }else{
-          c.push_back( constraints[i].negate() );
+          ret = NodeManager::currentNM()->mkNode( OR, nn, cons.negate() );
         }
+        constraints.clear();
+      }else{
+        ret = nn;
       }
-      constraints.clear();
-      return c.size()==1 ? c[0] : NodeManager::currentNM()->mkNode( pol ? AND : OR, c );
-    }else{
-      return nn;
     }
+    if( !constraints.empty() ){
+      Node cons;
+      //flatten to AND node for the purposes of caching
+      if( constraints.size()>1 ){
+        cons = NodeManager::currentNM()->mkNode( AND, constraints );
+        cons = Rewriter::rewrite( cons );
+        constraints.clear();
+        constraints.push_back( cons );
+      }else{
+        cons = constraints[0];
+      }
+      visited_cons[index][n] = cons;
+      Assert( constraints.size()==1 && constraints[0]==cons );
+    }
+    visited[index][n] = ret;
+    return ret;
   }
 }
 
-void FunDefFmf::simplifyTerm( Node n, std::vector< Node >& constraints ) {
-  Trace("fmf-fun-def-debug") << "Simplify term " << n << std::endl;
-  if( n.getKind()==ITE ){
-    simplifyTerm( n[0], constraints );
-    std::vector< Node > ccons1;
-    std::vector< Node > ccons2;
-    simplifyTerm( n[1], ccons1 );
-    simplifyTerm( n[2], ccons2 );
-    if( !ccons1.empty() || !ccons2.empty() ){
-      Node n1 = ccons1.empty() ? NodeManager::currentNM()->mkConst( true ) : ( ccons1.size()==1 ? ccons1[0] : NodeManager::currentNM()->mkNode( AND, ccons1 ) );
-      Node n2 = ccons2.empty() ? NodeManager::currentNM()->mkConst( true ) : ( ccons2.size()==1 ? ccons2[0] : NodeManager::currentNM()->mkNode( AND, ccons2 ) );
-      constraints.push_back( NodeManager::currentNM()->mkNode( ITE, n[0], n1, n2 ) );
-    }
-  }else{
-    if( n.getKind()==APPLY_UF ){
-      //check if f is defined, if so, we must enforce domain constraints for this f-application
-      Node f = n.getOperator();
-      std::map< Node, TypeNode >::iterator it = d_sorts.find( f );
-      if( it!=d_sorts.end() ){
-        //create existential
-        Node z = NodeManager::currentNM()->mkBoundVar("?z", it->second );
-        Node bvl = NodeManager::currentNM()->mkNode( BOUND_VAR_LIST, z );
-        std::vector< Node > children;
-        for( unsigned j=0; j<n.getNumChildren(); j++ ){
-          Node uz = NodeManager::currentNM()->mkNode( APPLY_UF, d_input_arg_inj[f][j], z );
-          children.push_back( uz.eqNode( n[j] ) );
+void FunDefFmf::simplifyTerm( Node n, std::vector< Node >& constraints, std::map< Node, bool >& visited ) {
+  if( visited.find( n )==visited.end() ){
+    visited[n] = true;
+    Trace("fmf-fun-def-debug") << "Simplify term " << n << std::endl;
+    if( n.getKind()==ITE ){
+      simplifyTerm( n[0], constraints, visited );
+      std::vector< Node > ccons1;
+      std::vector< Node > ccons2;
+      simplifyTerm( n[1], ccons1, visited );
+      simplifyTerm( n[2], ccons2, visited );
+      if( !ccons1.empty() || !ccons2.empty() ){
+        Node n1 = ccons1.empty() ? NodeManager::currentNM()->mkConst( true ) : ( ccons1.size()==1 ? ccons1[0] : NodeManager::currentNM()->mkNode( AND, ccons1 ) );
+        Node n2 = ccons2.empty() ? NodeManager::currentNM()->mkConst( true ) : ( ccons2.size()==1 ? ccons2[0] : NodeManager::currentNM()->mkNode( AND, ccons2 ) );
+        constraints.push_back( NodeManager::currentNM()->mkNode( ITE, n[0], n1, n2 ) );
+      }
+    }else{
+      if( n.getKind()==APPLY_UF ){
+        //check if f is defined, if so, we must enforce domain constraints for this f-application
+        Node f = n.getOperator();
+        std::map< Node, TypeNode >::iterator it = d_sorts.find( f );
+        if( it!=d_sorts.end() ){
+          //create existential
+          Node z = NodeManager::currentNM()->mkBoundVar("?z", it->second );
+          Node bvl = NodeManager::currentNM()->mkNode( BOUND_VAR_LIST, z );
+          std::vector< Node > children;
+          for( unsigned j=0; j<n.getNumChildren(); j++ ){
+            Node uz = NodeManager::currentNM()->mkNode( APPLY_UF, d_input_arg_inj[f][j], z );
+            children.push_back( uz.eqNode( n[j] ) );
+          }
+          Node bd = children.size()==1 ? children[0] : NodeManager::currentNM()->mkNode( AND, children );
+          bd = bd.negate();
+          Node ex = NodeManager::currentNM()->mkNode( FORALL, bvl, bd );
+          ex = ex.negate();
+          constraints.push_back( ex );
+          Trace("fmf-fun-def-debug") << "---> add constraint " << ex << std::endl;
         }
-        Node bd = children.size()==1 ? children[0] : NodeManager::currentNM()->mkNode( AND, children );
-        bd = bd.negate();
-        Node ex = NodeManager::currentNM()->mkNode( FORALL, bvl, bd );
-        ex = ex.negate();
-        constraints.push_back( ex );
-        Trace("fmf-fun-def-debug") << "---> add constraint " << ex << std::endl;
       }
-    }
-    for( unsigned i=0; i<n.getNumChildren(); i++ ){
-      simplifyTerm( n[i], constraints );
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        simplifyTerm( n[i], constraints, visited );
+      }
     }
   }
 }
diff --git a/src/theory/quantifiers/fun_def_process.h b/src/theory/quantifiers/fun_def_process.h
index 1f6ee65..e7a5332 100644
--- a/src/theory/quantifiers/fun_def_process.h
+++ b/src/theory/quantifiers/fun_def_process.h
@@ -2,9 +2,9 @@
 /*! \file fun_def_process.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Tim King
+ **   Andrew Reynolds, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -32,9 +32,11 @@ namespace quantifiers {
 class FunDefFmf {
 private:
   //simplify
-  Node simplifyFormula( Node n, bool pol, bool hasPol, std::vector< Node >& constraints, Node hd, int is_fun_def = 0 );
+  Node simplifyFormula( Node n, bool pol, bool hasPol, std::vector< Node >& constraints, Node hd, int is_fun_def,
+                        std::map< int, std::map< Node, Node > >& visited,
+                        std::map< int, std::map< Node, Node > >& visited_cons );
   //simplify term
-  void simplifyTerm( Node n, std::vector< Node >& constraints );
+  void simplifyTerm( Node n, std::vector< Node >& constraints, std::map< Node, bool >& visited );
 public:
   FunDefFmf(){}
   ~FunDefFmf(){}
diff --git a/src/theory/quantifiers/inst_match.cpp b/src/theory/quantifiers/inst_match.cpp
index 12e15d3..e24b8f9 100644
--- a/src/theory/quantifiers/inst_match.cpp
+++ b/src/theory/quantifiers/inst_match.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -129,6 +129,7 @@ void InstMatch::setValue( int i, TNode n ) {
 }
 
 bool InstMatch::set( QuantifiersEngine* qe, int i, TNode n ) {
+  Assert( i>=0 );
   if( !d_vals[i].isNull() ){
     if( qe->getEqualityQuery()->areEqual( d_vals[i], n ) ){
       return true;
diff --git a/src/theory/quantifiers/inst_match.h b/src/theory/quantifiers/inst_match.h
index 6844692..8d41c75 100644
--- a/src/theory/quantifiers/inst_match.h
+++ b/src/theory/quantifiers/inst_match.h
@@ -2,9 +2,9 @@
 /*! \file inst_match.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Morgan Deters, Tim King
+ **   Andrew Reynolds, Morgan Deters, Francois Bobot
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -80,8 +80,6 @@ public:
   /** set */
   void setValue( int i, TNode n );
   bool set( QuantifiersEngine* qe, int i, TNode n );
-  /* Node used for matching the trigger */
-  Node d_matched;
 };/* class InstMatch */
 
 inline std::ostream& operator<<(std::ostream& out, const InstMatch& m) {
diff --git a/src/theory/quantifiers/inst_match_generator.cpp b/src/theory/quantifiers/inst_match_generator.cpp
index 7cf9868..9202062 100644
--- a/src/theory/quantifiers/inst_match_generator.cpp
+++ b/src/theory/quantifiers/inst_match_generator.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -41,6 +41,7 @@ InstMatchGenerator::InstMatchGenerator( Node pat ){
   d_match_pattern_type = pat.getType();
   d_next = NULL;
   d_matchPolicy = MATCH_GEN_DEFAULT;
+  d_independent_gen = false;
 }
 
 InstMatchGenerator::InstMatchGenerator() {
@@ -49,6 +50,7 @@ InstMatchGenerator::InstMatchGenerator() {
   d_active_add = false;
   d_next = NULL;
   d_matchPolicy = MATCH_GEN_DEFAULT;
+  d_independent_gen = false;
 }
 
 InstMatchGenerator::~InstMatchGenerator() throw() {
@@ -66,7 +68,9 @@ void InstMatchGenerator::setActiveAdd(bool val){
 }
 
 int InstMatchGenerator::getActiveScore( QuantifiersEngine * qe ) {
-  if( Trigger::isAtomicTrigger( d_match_pattern ) ){
+  if( d_match_pattern.isNull() ){
+    return -1;
+  }else if( Trigger::isAtomicTrigger( d_match_pattern ) ){
     Node f = qe->getTermDatabase()->getMatchOperator( d_match_pattern );
     unsigned ngt = qe->getTermDatabase()->getNumGroundTerms( f );
     Trace("trigger-active-sel-debug") << "Number of ground terms for " << f << " is " << ngt << std::endl;
@@ -127,7 +131,6 @@ void InstMatchGenerator::initialize( Node q, QuantifiersEngine* qe, std::vector<
         if( cimg ){
           d_children.push_back( cimg );
           d_children_index.push_back( i );
-          gens.push_back( cimg );
           d_children_types.push_back( 1 );
         }else{
           if( d_match_pattern[i].getKind()==INST_CONSTANT && qa==q ){
@@ -182,16 +185,17 @@ void InstMatchGenerator::initialize( Node q, QuantifiersEngine* qe, std::vector<
       d_matchPolicy = MATCH_GEN_INTERNAL_ERROR;
     }
   }
+  gens.insert( gens.end(), d_children.begin(), d_children.end() );
 }
 
 /** get match (not modulo equality) */
-bool InstMatchGenerator::getMatch( Node f, Node t, InstMatch& m, QuantifiersEngine* qe ){
+int InstMatchGenerator::getMatch( Node f, Node t, InstMatch& m, QuantifiersEngine* qe ){
   Trace("matching") << "Matching " << t << " against pattern " << d_match_pattern << " ("
                     << m << ")" << ", " << d_children.size() << ", pattern is " << d_pattern << std::endl;
   Assert( !d_match_pattern.isNull() );
   if( d_matchPolicy==MATCH_GEN_INTERNAL_ERROR ){
     Trace("matching-fail") << "Internal error for match generator." << std::endl;
-    return false;
+    return -2;
   }else{
     EqualityQuery* q = qe->getEqualityQuery();
     bool success = true;
@@ -274,34 +278,40 @@ bool InstMatchGenerator::getMatch( Node f, Node t, InstMatch& m, QuantifiersEngi
         }
       }
     }
+    int ret_val = -1;
     if( success ){
       Trace("matching-debug2") << "Reset children..." << std::endl;
       //now, fit children into match
       //we will be requesting candidates for matching terms for each child
       for( unsigned i=0; i<d_children.size(); i++ ){
-        d_children[i]->reset( t[ d_children_index[i] ], qe );
+        if( !d_children[i]->reset( t[ d_children_index[i] ], qe ) ){
+          success = false;
+          break;
+        }
+      }
+      if( success ){
+        Trace("matching-debug2") << "Continue next " << d_next << std::endl;
+        ret_val = continueNextMatch( f, m, qe );
       }
-      Trace("matching-debug2") << "Continue next " << d_next << std::endl;
-      success = continueNextMatch( f, m, qe );
     }
-    if( !success ){
+    if( ret_val<0 ){
       //m = InstMatch( &prev );
       for( unsigned i=0; i<prev.size(); i++ ){
         m.d_vals[prev[i]] = Node::null();
       }
     }
-    return success;
+    return ret_val;
   }
 }
 
-bool InstMatchGenerator::continueNextMatch( Node f, InstMatch& m, QuantifiersEngine* qe ){
+int InstMatchGenerator::continueNextMatch( Node f, InstMatch& m, QuantifiersEngine* qe ){
   if( d_next!=NULL ){
     return d_next->getNextMatch( f, m, qe );
   }else{
     if( d_active_add ){
-      return qe->addInstantiation( f, m );
+      return qe->addInstantiation( f, m ) ? 1 : -1;
     }else{
-      return true;
+      return 1;
     }
   }
 }
@@ -318,9 +328,10 @@ void InstMatchGenerator::resetInstantiationRound( QuantifiersEngine* qe ){
   if( d_next ){
     d_next->resetInstantiationRound( qe );
   }
+  d_curr_exclude_match.clear();
 }
 
-void InstMatchGenerator::reset( Node eqc, QuantifiersEngine* qe ){
+bool InstMatchGenerator::reset( Node eqc, QuantifiersEngine* qe ){
   eqc = qe->getEqualityQuery()->getRepresentative( eqc );
   Trace("matching-debug2") << this << " reset " << eqc << "." << std::endl;
   if( !d_eq_class_rel.isNull() && d_eq_class_rel.getKind()!=INST_CONSTANT ){
@@ -333,32 +344,59 @@ void InstMatchGenerator::reset( Node eqc, QuantifiersEngine* qe ){
   //just look in equivalence class of the RHS
   d_cg->reset( d_eq_class );
   d_needsReset = false;
+  
+  //generate the first candidate preemptively
+  d_curr_first_candidate = Node::null();
+  Node t;
+  do {
+    t = d_cg->getNextCandidate();
+    if( d_curr_exclude_match.find( t )==d_curr_exclude_match.end() ){
+      d_curr_first_candidate = t;
+    }
+  }while( !t.isNull() && d_curr_first_candidate.isNull() );
+  Trace("matching-summary") << "Reset " << d_match_pattern << " in " << eqc << " returns " << !d_curr_first_candidate.isNull() << "." << std::endl;
+
+  return !d_curr_first_candidate.isNull();
 }
 
-bool InstMatchGenerator::getNextMatch( Node f, InstMatch& m, QuantifiersEngine* qe ){
+int InstMatchGenerator::getNextMatch( Node f, InstMatch& m, QuantifiersEngine* qe ){
   if( d_needsReset ){
     Trace("matching") << "Reset not done yet, must do the reset..." << std::endl;
     reset( d_eq_class, qe );
   }
-  m.d_matched = Node::null();
+  d_curr_matched = Node::null();
   Trace("matching") << this << " " << d_match_pattern << " get next match " << m << " in eq class " << d_eq_class << std::endl;
-  bool success = false;
-  Node t;
+  int success = -1;
+  Node t = d_curr_first_candidate;
   do{
-    //get the next candidate term t
-    t = d_cg->getNextCandidate();
     Trace("matching-debug2") << "Matching candidate : " << t << std::endl;
     //if t not null, try to fit it into match m
     if( !t.isNull() ){
-      Assert( t.getType().isComparableTo( d_match_pattern_type ) );
-      success = getMatch( f, t, m, qe );
+      if( d_curr_exclude_match.find( t )==d_curr_exclude_match.end() ){
+        Assert( t.getType().isComparableTo( d_match_pattern_type ) );
+        Trace("matching-summary") << "Try " << d_match_pattern << " : " << t << std::endl;
+        success = getMatch( f, t, m, qe );
+        if( d_independent_gen && success<0 ){
+          Assert( d_eq_class.isNull() );
+          d_curr_exclude_match[t] = true;
+        }
+      }
+      //get the next candidate term t
+      if( success<0 ){
+        t = d_cg->getNextCandidate();
+      }else{
+        d_curr_first_candidate = d_cg->getNextCandidate();
+      }
     }
-  }while( !success && !t.isNull() );
-  m.d_matched = t;
-  if( !success ){
+  }while( success<0 && !t.isNull() );
+  d_curr_matched = t;
+  if( success<0 ){
+    Trace("matching-summary") << "..." << d_match_pattern << " failed, reset." << std::endl;
     Trace("matching") << this << " failed, reset " << d_eq_class << std::endl;
     //we failed, must reset
     reset( d_eq_class, qe );
+  }else{
+    Trace("matching-summary") << "..." << d_match_pattern << " success." << std::endl;
   }
   return success;
 }
@@ -369,7 +407,7 @@ int InstMatchGenerator::addInstantiations( Node f, InstMatch& baseMatch, Quantif
   //try to add instantiation for each match produced
   int addedLemmas = 0;
   InstMatch m( f );
-  while( getNextMatch( f, m, qe ) ){
+  while( getNextMatch( f, m, qe )>0 ){
     if( !d_active_add ){
       m.add( baseMatch );
       if( qe->addInstantiation( f, m ) ){
@@ -394,17 +432,43 @@ int InstMatchGenerator::addInstantiations( Node f, InstMatch& baseMatch, Quantif
 InstMatchGenerator* InstMatchGenerator::mkInstMatchGenerator( Node q, Node pat, QuantifiersEngine* qe ) {
   std::vector< Node > pats;
   pats.push_back( pat );
-  return mkInstMatchGenerator( q, pats, qe );
+  std::map< Node, InstMatchGenerator * > pat_map_init;
+  return mkInstMatchGenerator( q, pats, qe, pat_map_init );
+}
+
+InstMatchGenerator* InstMatchGenerator::mkInstMatchGeneratorMulti( Node q, std::vector< Node >& pats, QuantifiersEngine* qe ) {
+  Assert( pats.size()>1 );
+  InstMatchGeneratorMultiLinear * imgm = new InstMatchGeneratorMultiLinear( q, pats, qe );
+  std::vector< InstMatchGenerator* > gens;
+  imgm->initialize(q, qe, gens);
+  Assert( gens.size()==pats.size() );
+  std::vector< Node > patsn;
+  std::map< Node, InstMatchGenerator * > pat_map_init;
+  for( unsigned i=0; i<gens.size(); i++ ){
+    Node pn = gens[i]->d_match_pattern;
+    patsn.push_back( pn );
+    pat_map_init[pn] = gens[i];
+  }
+  //return mkInstMatchGenerator( q, patsn, qe, pat_map_init );
+  imgm->d_next = mkInstMatchGenerator( q, patsn, qe, pat_map_init );
+  return imgm;
 }
 
-InstMatchGenerator* InstMatchGenerator::mkInstMatchGenerator( Node q, std::vector< Node >& pats, QuantifiersEngine* qe ) {
+InstMatchGenerator* InstMatchGenerator::mkInstMatchGenerator( Node q, std::vector< Node >& pats, QuantifiersEngine* qe, 
+                                                              std::map< Node, InstMatchGenerator * >& pat_map_init ) {
   size_t pCounter = 0;
   InstMatchGenerator* prev = NULL;
   InstMatchGenerator* oinit = NULL;
   while( pCounter<pats.size() ){
     size_t counter = 0;
     std::vector< InstMatchGenerator* > gens;
-    InstMatchGenerator* init = new InstMatchGenerator(pats[pCounter]);
+    InstMatchGenerator* init;
+    std::map< Node, InstMatchGenerator * >::iterator iti = pat_map_init.find( pats[pCounter] );
+    if( iti==pat_map_init.end() ){
+      init = new InstMatchGenerator(pats[pCounter]);
+    }else{
+      init = iti->second;
+    }
     if(pCounter==0){
       oinit = init;
     }
@@ -429,16 +493,18 @@ VarMatchGeneratorBooleanTerm::VarMatchGeneratorBooleanTerm( Node var, Node comp
   d_var_num[0] = var.getAttribute(InstVarNumAttribute());
 }
 
-bool VarMatchGeneratorBooleanTerm::getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe ) {
+int VarMatchGeneratorBooleanTerm::getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe ) {
+  int ret_val = -1;
   if( !d_eq_class.isNull() ){
     Node s = NodeManager::currentNM()->mkConst(qe->getEqualityQuery()->areEqual( d_eq_class, d_pattern ));
     d_eq_class = Node::null();
     d_rm_prev = m.get( d_var_num[0] ).isNull();
     if( !m.set( qe, d_var_num[0], s ) ){
-      return false;
+      return -1;
     }else{
-      if( continueNextMatch( q, m, qe ) ){
-        return true;
+      ret_val = continueNextMatch( q, m, qe );
+      if( ret_val>0 ){
+        return ret_val;
       }
     }
   }
@@ -446,7 +512,7 @@ bool VarMatchGeneratorBooleanTerm::getNextMatch( Node q, InstMatch& m, Quantifie
     m.d_vals[d_var_num[0]] = Node::null();
     d_rm_prev = false;
   }
-  return false;
+  return ret_val;
 }
 
 VarMatchGeneratorTermSubs::VarMatchGeneratorTermSubs( Node var, Node subs ) :
@@ -455,7 +521,8 @@ VarMatchGeneratorTermSubs::VarMatchGeneratorTermSubs( Node var, Node subs ) :
   d_var_type = d_var.getType();
 }
 
-bool VarMatchGeneratorTermSubs::getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe ) {
+int VarMatchGeneratorTermSubs::getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe ) {
+  int ret_val = -1;
   if( !d_eq_class.isNull() ){
     Trace("var-trigger-matching") << "Matching " << d_eq_class << " against " << d_var << " in " << d_subs << std::endl;
     Node s = d_subs.substitute( d_var, d_eq_class );
@@ -465,10 +532,11 @@ bool VarMatchGeneratorTermSubs::getNextMatch( Node q, InstMatch& m, QuantifiersE
     //if( s.getType().isSubtypeOf( d_var_type ) ){
     d_rm_prev = m.get( d_var_num[0] ).isNull();
     if( !m.set( qe, d_var_num[0], s ) ){
-      return false;
+      return -1;
     }else{
-      if( continueNextMatch( q, m, qe ) ){
-        return true;
+      ret_val = continueNextMatch( q, m, qe );
+      if( ret_val>0 ){
+        return ret_val;
       }
     }
   }
@@ -476,25 +544,133 @@ bool VarMatchGeneratorTermSubs::getNextMatch( Node q, InstMatch& m, QuantifiersE
     m.d_vals[d_var_num[0]] = Node::null();
     d_rm_prev = false;
   }
-  return false;
+  return -1;
 }
 
+InstMatchGeneratorMultiLinear::InstMatchGeneratorMultiLinear( Node q, std::vector< Node >& pats, QuantifiersEngine* qe ) {
+  //order patterns to maximize eager matching failures
+  std::map< Node, std::vector< Node > > var_contains;
+  qe->getTermDatabase()->getVarContains( q, pats, var_contains );
+  std::map< Node, std::vector< Node > > var_to_node;
+  for( std::map< Node, std::vector< Node > >::iterator it = var_contains.begin(); it != var_contains.end(); ++it ){
+    for( unsigned i=0; i<it->second.size(); i++ ){
+      var_to_node[ it->second[i] ].push_back( it->first );
+    }
+  }
+  std::vector< Node > pats_ordered;
+  std::vector< bool > pats_ordered_independent;
+  std::map< Node, bool > var_bound;
+  while( pats_ordered.size()<pats.size() ){
+    // score is lexographic ( bound vars, shared vars )
+    int score_max_1 = -1;
+    int score_max_2 = -1;
+    int score_index = -1;
+    for( unsigned i=0; i<pats.size(); i++ ){
+      Node p = pats[i];
+      if( std::find( pats_ordered.begin(), pats_ordered.end(), p )==pats_ordered.end() ){
+        int score_1 = 0;
+        int score_2 = 0;
+        for( unsigned j=0; j<var_contains[p].size(); j++ ){
+          Node v = var_contains[p][j];
+          if( var_bound.find( v )!=var_bound.end() ){
+            score_1++;
+          }else if( var_to_node[v].size()>1 ){
+            score_2++;
+          }
+        }
+        if( score_index==-1 || score_1>score_max_1 || ( score_1==score_max_1 && score_2>score_max_2 ) ){
+          score_index = i;
+          score_max_1 = score_1;
+          score_max_2 = score_2;
+        }
+      }
+    }
+    //update the variable bounds
+    Node mp = pats[score_index];
+    for( unsigned i=0; i<var_contains[mp].size(); i++ ){
+      var_bound[var_contains[mp][i]] = true;
+    }
+    pats_ordered.push_back( mp );
+    pats_ordered_independent.push_back( score_max_1==0 );
+  }
+  
+  Trace("multi-trigger-linear") << "Make children for linear multi trigger." << std::endl;
+  for( unsigned i=0; i<pats_ordered.size(); i++ ){
+    Trace("multi-trigger-linear") << "...make for " << pats_ordered[i] << std::endl;
+    InstMatchGenerator * cimg = Trigger::getInstMatchGenerator( q, pats_ordered[i] );
+    Assert( cimg!=NULL );
+    d_children.push_back( cimg );
+    if( i==0 ){  //TODO : improve
+      cimg->setIndependent();
+    }
+  }
+}
+
+InstMatchGeneratorMultiLinear::~InstMatchGeneratorMultiLinear() throw() {
+
+}
+
+int InstMatchGeneratorMultiLinear::resetChildren( QuantifiersEngine* qe ){
+  for( unsigned i=0; i<d_children.size(); i++ ){
+    if( !d_children[i]->reset( Node::null(), qe ) ){
+      return -2;
+    }
+  }
+  return 1;
+}
+
+bool InstMatchGeneratorMultiLinear::reset( Node eqc, QuantifiersEngine* qe ) {
+  Assert( eqc.isNull() );
+  if( options::multiTriggerLinear() ){
+    return true;
+  }else{
+    return resetChildren( qe )>0;
+  }
+}
+
+int InstMatchGeneratorMultiLinear::getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe ) {
+  Trace("multi-trigger-linear-debug") << "InstMatchGeneratorMultiLinear::getNextMatch : reset " << std::endl;
+  if( options::multiTriggerLinear() ){
+    //reset everyone
+    int rc_ret = resetChildren( qe );
+    if( rc_ret<0 ){
+      return rc_ret;
+    }
+  }
+  Trace("multi-trigger-linear-debug") << "InstMatchGeneratorMultiLinear::getNextMatch : continue match " << std::endl;
+  Assert( d_next!=NULL );
+  int ret_val = continueNextMatch( q, m, qe ); 
+  if( ret_val>0 ){
+    Trace("multi-trigger-linear") << "Successful multi-trigger instantiation." << std::endl;
+    if( options::multiTriggerLinear() ){
+      // now, restrict everyone
+      for( unsigned i=0; i<d_children.size(); i++ ){
+        Node mi = d_children[i]->d_curr_matched;
+        Trace("multi-trigger-linear") << "   child " << i << " match : " << mi << std::endl;
+        d_children[i]->excludeMatch( mi );
+      }
+    }
+  }
+  return ret_val;
+}
+
+
 /** constructors */
 InstMatchGeneratorMulti::InstMatchGeneratorMulti( Node q, std::vector< Node >& pats, QuantifiersEngine* qe ) :
 d_f( q ){
-  Debug("smart-multi-trigger") << "Making smart multi-trigger for " << q << std::endl;
+  Trace("multi-trigger-cache") << "Making smart multi-trigger for " << q << std::endl;
   std::map< Node, std::vector< Node > > var_contains;
   qe->getTermDatabase()->getVarContains( q, pats, var_contains );
   //convert to indicies
   for( std::map< Node, std::vector< Node > >::iterator it = var_contains.begin(); it != var_contains.end(); ++it ){
-    Debug("smart-multi-trigger") << "Pattern " << it->first << " contains: ";
+    Trace("multi-trigger-cache") << "Pattern " << it->first << " contains: ";
     for( int i=0; i<(int)it->second.size(); i++ ){
-      Debug("smart-multi-trigger") << it->second[i] << " ";
+      Trace("multi-trigger-cache") << it->second[i] << " ";
       int index = it->second[i].getAttribute(InstVarNumAttribute());
       d_var_contains[ it->first ].push_back( index );
       d_var_to_node[ index ].push_back( it->first );
     }
-    Debug("smart-multi-trigger") << std::endl;
+    Trace("multi-trigger-cache") << std::endl;
   }
   for( unsigned i=0; i<pats.size(); i++ ){
     Node n = pats[i];
@@ -506,7 +682,7 @@ d_f( q ){
     int numSharedVars = 0;
     for( unsigned j=0; j<d_var_contains[n].size(); j++ ){
       if( d_var_to_node[ d_var_contains[n][j] ].size()==1 ){
-        Debug("smart-multi-trigger") << "Var " << d_var_contains[n][j] << " is unique to " << pats[i] << std::endl;
+        Trace("multi-trigger-cache") << "Var " << d_var_contains[n][j] << " is unique to " << pats[i] << std::endl;
         unique_vars.push_back( d_var_contains[n][j] );
       }else{
         shared_vars[ d_var_contains[n][j] ] = true;
@@ -530,11 +706,11 @@ d_f( q ){
       index = index==0 ? (int)(pats.size()-1) : (index-1);
     }
     vars.insert( vars.end(), unique_vars.begin(), unique_vars.end() );
-    Debug("smart-multi-trigger") << "   Index[" << i << "]: ";
+    Trace("multi-trigger-cache") << "   Index[" << i << "]: ";
     for( unsigned j=0; j<vars.size(); j++ ){
-      Debug("smart-multi-trigger") << vars[j] << " ";
+      Trace("multi-trigger-cache") << vars[j] << " ";
     }
-    Debug("smart-multi-trigger") << std::endl;
+    Trace("multi-trigger-cache") << std::endl;
     //make ordered inst match trie
     d_imtio[i] = new InstMatchTrie::ImtIndexOrder;
     d_imtio[i]->d_order.insert( d_imtio[i]->d_order.begin(), vars.begin(), vars.end() );
@@ -559,26 +735,30 @@ void InstMatchGeneratorMulti::resetInstantiationRound( QuantifiersEngine* qe ){
 }
 
 /** reset, eqc is the equivalence class to search in (any if eqc=null) */
-void InstMatchGeneratorMulti::reset( Node eqc, QuantifiersEngine* qe ){
+bool InstMatchGeneratorMulti::reset( Node eqc, QuantifiersEngine* qe ){
   for( unsigned i=0; i<d_children.size(); i++ ){
-    d_children[i]->reset( eqc, qe );
+    if( !d_children[i]->reset( eqc, qe ) ){
+      //return false;
+    }
   }
+  return true;
 }
 
 int InstMatchGeneratorMulti::addInstantiations( Node q, InstMatch& baseMatch, QuantifiersEngine* qe ){
   int addedLemmas = 0;
-  Debug("smart-multi-trigger") << "Process smart multi trigger" << std::endl;
+  Trace("multi-trigger-cache") << "Process smart multi trigger" << std::endl;
   for( unsigned i=0; i<d_children.size(); i++ ){
-    Debug("smart-multi-trigger") << "Calculate matches " << i << std::endl;
+    Trace("multi-trigger-cache") << "Calculate matches " << i << std::endl;
     std::vector< InstMatch > newMatches;
     InstMatch m( q );
-    while( d_children[i]->getNextMatch( q, m, qe ) ){
+    while( d_children[i]->getNextMatch( q, m, qe )>0 ){
       //m.makeRepresentative( qe );
       newMatches.push_back( InstMatch( &m ) );
       m.clear();
     }
-    Debug("smart-multi-trigger") << "Made " << newMatches.size() << " new matches for index " << i << std::endl;
+    Trace("multi-trigger-cache") << "Made " << newMatches.size() << " new matches for index " << i << std::endl;
     for( unsigned j=0; j<newMatches.size(); j++ ){
+      Trace("multi-trigger-cache2") << "...processing " << j << " / " << newMatches.size() << ", #lemmas = " << addedLemmas << std::endl;
       processNewMatch( qe, newMatches[j], i, addedLemmas );
       if( qe->inConflict() ){
         return addedLemmas;
@@ -594,7 +774,7 @@ void InstMatchGeneratorMulti::processNewMatch( QuantifiersEngine* qe, InstMatch&
   //possibly only do the following if we know that new matches will be produced?
   //the issue is that instantiations are filtered in quantifiers engine, and so there is no guarentee that
   // we can safely skip the following lines, even when we have already produced this match.
-  Debug("smart-multi-trigger") << "Child " << fromChildIndex << " produced match " << m << std::endl;
+  Trace("multi-trigger-cache-debug") << "Child " << fromChildIndex << " produced match " << m << std::endl;
   //process new instantiations
   int childIndex = (fromChildIndex+1)%(int)d_children.size();
   std::vector< IndexedTrie > unique_var_tries;
@@ -696,7 +876,7 @@ void InstMatchGeneratorMulti::processNewInstantiations2( QuantifiersEngine* qe,
     //m is an instantiation
     if( qe->addInstantiation( d_f, m ) ){
       addedLemmas++;
-      Debug("smart-multi-trigger") << "-> Produced instantiation " << m << std::endl;
+      Trace("multi-trigger-cache-debug") << "-> Produced instantiation " << m << std::endl;
     }
   }
 }
@@ -775,8 +955,10 @@ void InstMatchGeneratorSimple::addInstantiations( InstMatch& m, QuantifiersEngin
     Debug("simple-trigger") << "Actual term is " << t << std::endl;
     //convert to actual used terms
     for( std::map< int, int >::iterator it = d_var_num.begin(); it != d_var_num.end(); ++it ){
-      Debug("simple-trigger") << "...set " << it->second << " " << t[it->first] << std::endl;
-      m.setValue( it->second, t[it->first] );
+      if( it->second>=0 ){
+        Debug("simple-trigger") << "...set " << it->second << " " << t[it->first] << std::endl;
+        m.setValue( it->second, t[it->first] );
+      }
     }
     if( qe->addInstantiation( d_f, m ) ){
       addedLemmas++;
diff --git a/src/theory/quantifiers/inst_match_generator.h b/src/theory/quantifiers/inst_match_generator.h
index c238e3c..882d786 100644
--- a/src/theory/quantifiers/inst_match_generator.h
+++ b/src/theory/quantifiers/inst_match_generator.h
@@ -2,9 +2,9 @@
 /*! \file inst_match_generator.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Andrew Reynolds, Clark Barrett
+ **   Morgan Deters, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -37,9 +37,9 @@ public:
   /** reset instantiation round (call this at beginning of instantiation round) */
   virtual void resetInstantiationRound( QuantifiersEngine* qe ) = 0;
   /** reset, eqc is the equivalence class to search in (any if eqc=null) */
-  virtual void reset( Node eqc, QuantifiersEngine* qe ) = 0;
+  virtual bool reset( Node eqc, QuantifiersEngine* qe ) = 0;
   /** get the next match.  must call reset( eqc ) before this function. */
-  virtual bool getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe ) = 0;
+  virtual int getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe ) = 0;
   /** add instantiations directly */
   virtual int addInstantiations( Node q, InstMatch& baseMatch, QuantifiersEngine* qe ) = 0;
   /** set active add */
@@ -67,12 +67,18 @@ protected:
   Node d_eq_class_rel;
   /** variable numbers */
   std::map< int, int > d_var_num;
+  /** excluded matches */
+  std::map< Node, bool > d_curr_exclude_match;
+  /** first candidate */
+  Node d_curr_first_candidate;
+  /** indepdendent generate (failures should be cached) */
+  bool d_independent_gen;
   /** initialize pattern */
   void initialize( Node q, QuantifiersEngine* qe, std::vector< InstMatchGenerator * > & gens );
   /** children types 0 : variable, 1 : child term, -1 : ground term */
   std::vector< int > d_children_types;
   /** continue */
-  bool continueNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe );
+  int continueNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe );
 public:
   enum {
     //options for producing matches
@@ -85,7 +91,7 @@ public:
       d_match_pattern and t should have the same shape.
       only valid for use where !d_match_pattern.isNull().
   */
-  bool getMatch( Node q, Node t, InstMatch& m, QuantifiersEngine* qe );
+  int getMatch( Node q, Node t, InstMatch& m, QuantifiersEngine* qe );
 
   /** constructors */
   InstMatchGenerator( Node pat );
@@ -102,22 +108,28 @@ public:
   TypeNode d_match_pattern_type;
   /** match pattern op */
   Node d_match_pattern_op;
+  /** what matched */
+  Node d_curr_matched;
 public:
   /** reset instantiation round (call this whenever equivalence classes have changed) */
   void resetInstantiationRound( QuantifiersEngine* qe );
   /** reset, eqc is the equivalence class to search in (any if eqc=null) */
-  void reset( Node eqc, QuantifiersEngine* qe );
+  bool reset( Node eqc, QuantifiersEngine* qe );
   /** get the next match.  must call reset( eqc ) before this function. */
-  bool getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe );
+  int getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe );
   /** add instantiations */
   int addInstantiations( Node q, InstMatch& baseMatch, QuantifiersEngine* qe );
 
   bool d_active_add;
   void setActiveAdd( bool val );
   int getActiveScore( QuantifiersEngine * qe );
+  void excludeMatch( Node n ) { d_curr_exclude_match[n] = true; }
+  void setIndependent() { d_independent_gen = true; }
 
   static InstMatchGenerator* mkInstMatchGenerator( Node q, Node pat, QuantifiersEngine* qe );
-  static InstMatchGenerator* mkInstMatchGenerator( Node q, std::vector< Node >& pats, QuantifiersEngine* qe );
+  static InstMatchGenerator* mkInstMatchGeneratorMulti( Node q, std::vector< Node >& pats, QuantifiersEngine* qe );
+  static InstMatchGenerator* mkInstMatchGenerator( Node q, std::vector< Node >& pats, QuantifiersEngine* qe, 
+                                                   std::map< Node, InstMatchGenerator * >& pat_map_init );
 };/* class InstMatchGenerator */
 
 //match generator for boolean term ITEs
@@ -130,9 +142,12 @@ public:
   /** reset instantiation round (call this at beginning of instantiation round) */
   void resetInstantiationRound( QuantifiersEngine* qe ){}
   /** reset, eqc is the equivalence class to search in (any if eqc=null) */
-  void reset( Node eqc, QuantifiersEngine* qe ){ d_eq_class = eqc; }
+  bool reset( Node eqc, QuantifiersEngine* qe ){ 
+    d_eq_class = eqc; 
+    return true;
+  }
   /** get the next match.  must call reset( eqc ) before this function. */
-  bool getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe );
+  int getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe );
   /** add instantiations directly */
   int addInstantiations( Node q, InstMatch& baseMatch, QuantifiersEngine* qe ){ return 0; }
 };
@@ -149,13 +164,33 @@ public:
   /** reset instantiation round (call this at beginning of instantiation round) */
   void resetInstantiationRound( QuantifiersEngine* qe ){}
   /** reset, eqc is the equivalence class to search in (any if eqc=null) */
-  void reset( Node eqc, QuantifiersEngine* qe ){ d_eq_class = eqc; }
+  bool reset( Node eqc, QuantifiersEngine* qe ){ 
+    d_eq_class = eqc; 
+    return true;
+  }
   /** get the next match.  must call reset( eqc ) before this function. */
-  bool getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe );
+  int getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe );
   /** add instantiations directly */
   int addInstantiations( Node q, InstMatch& baseMatch, QuantifiersEngine* qe ) { return 0; }
 };
 
+
+/** smart multi-trigger implementation */
+class InstMatchGeneratorMultiLinear : public InstMatchGenerator {
+private:
+  int resetChildren( QuantifiersEngine* qe );
+public:
+  /** constructors */
+  InstMatchGeneratorMultiLinear( Node q, std::vector< Node >& pats, QuantifiersEngine* qe );
+  /** destructor */
+  virtual ~InstMatchGeneratorMultiLinear() throw();
+  /** reset, eqc is the equivalence class to search in (any if eqc=null) */
+  bool reset( Node eqc, QuantifiersEngine* qe );
+  /** get the next match.  must call reset( eqc ) before this function.*/
+  int getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe );
+};/* class InstMatchGeneratorMulti */
+
+
 /** smart multi-trigger implementation */
 class InstMatchGeneratorMulti : public IMGenerator {
 private:
@@ -196,9 +231,9 @@ public:
   /** reset instantiation round (call this whenever equivalence classes have changed) */
   void resetInstantiationRound( QuantifiersEngine* qe );
   /** reset, eqc is the equivalence class to search in (any if eqc=null) */
-  void reset( Node eqc, QuantifiersEngine* qe );
+  bool reset( Node eqc, QuantifiersEngine* qe );
   /** get the next match.  must call reset( eqc ) before this function. (not implemented) */
-  bool getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe ) { return false; }
+  int getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe ) { return -1; }
   /** add instantiations */
   int addInstantiations( Node q, InstMatch& baseMatch, QuantifiersEngine* qe );
 };/* class InstMatchGeneratorMulti */
@@ -229,9 +264,9 @@ public:
   /** reset instantiation round (call this whenever equivalence classes have changed) */
   void resetInstantiationRound( QuantifiersEngine* qe );
   /** reset, eqc is the equivalence class to search in (any if eqc=null) */
-  void reset( Node eqc, QuantifiersEngine* qe ) {}
+  bool reset( Node eqc, QuantifiersEngine* qe ) { return true; }
   /** get the next match.  must call reset( eqc ) before this function. (not implemented) */
-  bool getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe ) { return false; }
+  int getNextMatch( Node q, InstMatch& m, QuantifiersEngine* qe ) { return -1; }
   /** add instantiations */
   int addInstantiations( Node q, InstMatch& baseMatch, QuantifiersEngine* qe );
   /** get active score */
diff --git a/src/theory/quantifiers/inst_propagator.cpp b/src/theory/quantifiers/inst_propagator.cpp
index 4109955..49de464 100644
--- a/src/theory/quantifiers/inst_propagator.cpp
+++ b/src/theory/quantifiers/inst_propagator.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -91,7 +91,7 @@ bool EqualityQueryInstProp::areDisequal( Node a, Node b ) {
 
 /** get the equality engine associated with this query */
 eq::EqualityEngine* EqualityQueryInstProp::getEngine() {
-  return d_qe->getMasterEqualityEngine();
+  return d_qe->getActiveEqualityEngine();
 }
 
 /** get the equivalence class of a */
@@ -367,7 +367,7 @@ bool EqualityQueryInstProp::isPropagateLiteral( Node n ) {
   }else{
     Kind ak = n.getKind()==NOT ? n[0].getKind() : n.getKind();
     if( ak==EQUAL ){
-      Node atom = n.getKind() ? n[0] : n;
+      Node atom = n.getKind()==NOT ? n[0] : n;
       return !atom[0].getType().isBoolean();
     }else{
       Assert( ak!=NOT );
diff --git a/src/theory/quantifiers/inst_propagator.h b/src/theory/quantifiers/inst_propagator.h
index 6201cf1..6c058c2 100644
--- a/src/theory/quantifiers/inst_propagator.h
+++ b/src/theory/quantifiers/inst_propagator.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/inst_strategy_cbqi.cpp b/src/theory/quantifiers/inst_strategy_cbqi.cpp
index 1f18377..0c2822c 100644
--- a/src/theory/quantifiers/inst_strategy_cbqi.cpp
+++ b/src/theory/quantifiers/inst_strategy_cbqi.cpp
@@ -2,9 +2,9 @@
 /*! \file inst_strategy_cbqi.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Morgan Deters, Tim King
+ **   Andrew Reynolds, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -120,6 +120,7 @@ bool InstStrategyCbqi::registerCbqiLemma( Node q ) {
           if( std::find( d_parent_quant[q].begin(), d_parent_quant[q].end(), qi )==d_parent_quant[q].end() ){
             d_parent_quant[q].push_back( qi );
             d_children_quant[qi].push_back( q );
+            Assert( hasAddedCbqiLemma( qi ) );
             Node qicel = d_quantEngine->getTermDatabase()->getCounterexampleLiteral( qi );
             dep.push_back( qi );
             dep.push_back( qicel );
@@ -495,21 +496,49 @@ bool InstStrategyCbqi::hasNonCbqiOperator( Node n, std::map< Node, bool >& visit
   }
   return false;
 }
-int InstStrategyCbqi::hasNonCbqiVariable( Node q ){
-  int hmin = 1;
-  for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
-    TypeNode tn = q[0][i].getType();
-    int handled = -1;
+
+// -1 : not cbqi sort, 0 : cbqi sort, 1 : cbqi sort regardless of quantifier body
+int InstStrategyCbqi::isCbqiSort( TypeNode tn, std::map< TypeNode, int >& visited ) {
+  std::map< TypeNode, int >::iterator itv = visited.find( tn );
+  if( itv==visited.end() ){
+    visited[tn] = 0;
+    int ret = -1;
     if( tn.isInteger() || tn.isReal() || tn.isBoolean() || tn.isBitVector() ){
-      handled = 0;
+      ret = 0;
     }else if( tn.isDatatype() ){
-      handled = 0;
+      ret = 1;
+      const Datatype& dt = ((DatatypeType)tn.toType()).getDatatype();
+      for( unsigned i=0; i<dt.getNumConstructors(); i++ ){
+        for( unsigned j=0; j<dt[i].getNumArgs(); j++ ){
+          TypeNode crange = TypeNode::fromType( ((SelectorType)dt[i][j].getType()).getRangeType() );
+          int cret = isCbqiSort( crange, visited );
+          if( cret==-1 ){
+            visited[tn] = -1;
+            return -1;
+          }else if( cret<ret ){
+            ret = cret;
+          }
+        }
+      }
     }else if( tn.isSort() ){
       QuantEPR * qepr = d_quantEngine->getQuantEPR();
       if( qepr!=NULL ){
-        handled = qepr->isEPR( tn ) ? 1 : -1;
+        ret = qepr->isEPR( tn ) ? 1 : -1;
       }
     }
+    visited[tn] = ret;
+    return ret;
+  }else{
+    return itv->second;
+  }
+}
+
+int InstStrategyCbqi::hasNonCbqiVariable( Node q ){
+  int hmin = 1;
+  for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
+    TypeNode tn = q[0][i].getType();
+    std::map< TypeNode, int > visited;
+    int handled = isCbqiSort( tn, visited );
     if( handled==-1 ){
       return -1;
     }else if( handled<hmin ){
@@ -594,8 +623,10 @@ Node InstStrategyCbqi::getNextDecisionRequestProc( Node q, std::map< Node, bool
 
 Node InstStrategyCbqi::getNextDecisionRequest( unsigned& priority ){
   std::map< Node, bool > proc;
-  for( unsigned i=0; i<d_quantEngine->getModel()->getNumAssertedQuantifiers(); i++ ){
-    Node q = d_quantEngine->getModel()->getAssertedQuantifier( i );
+  //for( unsigned i=0; i<d_quantEngine->getModel()->getNumAssertedQuantifiers(); i++ ){
+  //  Node q = d_quantEngine->getModel()->getAssertedQuantifier( i );
+  for( NodeSet::const_iterator it = d_added_cbqi_lemma.begin(); it != d_added_cbqi_lemma.end(); ++it ){
+    Node q = *it;
     Node d = getNextDecisionRequestProc( q, proc );
     if( !d.isNull() ){
       priority = 0;
diff --git a/src/theory/quantifiers/inst_strategy_cbqi.h b/src/theory/quantifiers/inst_strategy_cbqi.h
index 2cd5f6e..a1e6a2b 100644
--- a/src/theory/quantifiers/inst_strategy_cbqi.h
+++ b/src/theory/quantifiers/inst_strategy_cbqi.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -58,6 +58,7 @@ protected:
   /** helper functions */
   int hasNonCbqiVariable( Node q );
   bool hasNonCbqiOperator( Node n, std::map< Node, bool >& visited );
+  int isCbqiSort( TypeNode tn, std::map< TypeNode, int >& visited );
   /** get next decision request with dependency checking */
   Node getNextDecisionRequestProc( Node q, std::map< Node, bool >& proc );  
   /** process functions */
diff --git a/src/theory/quantifiers/inst_strategy_e_matching.cpp b/src/theory/quantifiers/inst_strategy_e_matching.cpp
index f2ed81d..582b6ba 100644
--- a/src/theory/quantifiers/inst_strategy_e_matching.cpp
+++ b/src/theory/quantifiers/inst_strategy_e_matching.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -659,6 +659,10 @@ void FullSaturation::check( Theory::Effort e, unsigned quant_e ) {
 }
 
 bool FullSaturation::process( Node f, bool fullEffort ){
+  // ignore if constant true (rare case of non-standard quantifier whose body is rewritten to true)
+  if( f[1].isConst() && f[1].getConst<bool>() ){
+    return false;
+  }
   //first, try from relevant domain
   RelevantDomain * rd = d_quantEngine->getRelevantDomain();
   unsigned rstart = options::fullSaturateQuantRd() ? 0 : 1;
@@ -670,7 +674,10 @@ bool FullSaturation::process( Node f, bool fullEffort ){
       }else{
         Trace("inst-alg") << "-> Ground term instantiate " << f << "..." << std::endl;
       }
+      Assert( rd!=NULL );
+      Trace("inst-alg-debug") << "Compute relevant domain..." << std::endl;
       rd->compute();
+      Trace("inst-alg-debug") << "...finished" << std::endl;
       unsigned final_max_i = 0;
       std::vector< unsigned > maxs;
       std::vector< bool > max_zero;
@@ -767,7 +774,7 @@ bool FullSaturation::process( Node f, bool fullEffort ){
       }
     }
   }
-  //term enumerator?
+  //TODO : term enumerator?
   return false;
 }
 
diff --git a/src/theory/quantifiers/inst_strategy_e_matching.h b/src/theory/quantifiers/inst_strategy_e_matching.h
index e6d9932..5a4f8e4 100644
--- a/src/theory/quantifiers/inst_strategy_e_matching.h
+++ b/src/theory/quantifiers/inst_strategy_e_matching.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/instantiation_engine.cpp b/src/theory/quantifiers/instantiation_engine.cpp
index afeed1e..c90a3c3 100644
--- a/src/theory/quantifiers/instantiation_engine.cpp
+++ b/src/theory/quantifiers/instantiation_engine.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/instantiation_engine.h b/src/theory/quantifiers/instantiation_engine.h
index 79963cb..308024f 100644
--- a/src/theory/quantifiers/instantiation_engine.h
+++ b/src/theory/quantifiers/instantiation_engine.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/local_theory_ext.cpp b/src/theory/quantifiers/local_theory_ext.cpp
index ada28c0..cf5fe3b 100644
--- a/src/theory/quantifiers/local_theory_ext.cpp
+++ b/src/theory/quantifiers/local_theory_ext.cpp
@@ -2,9 +2,9 @@
 /*! \file local_theory_ext.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Tim King
+ **   Andrew Reynolds, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -143,7 +143,7 @@ void LtePartialInst::check( Theory::Effort e, unsigned quant_e ) {
 
 void LtePartialInst::reset() {
   d_reps.clear();
-  eq::EqualityEngine* ee = d_quantEngine->getMasterEqualityEngine();
+  eq::EqualityEngine* ee = d_quantEngine->getActiveEqualityEngine();
   eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( ee );
   while( !eqcs_i.isFinished() ){
     TNode r = (*eqcs_i);
diff --git a/src/theory/quantifiers/local_theory_ext.h b/src/theory/quantifiers/local_theory_ext.h
index 04a6bc9..68b6a56 100644
--- a/src/theory/quantifiers/local_theory_ext.h
+++ b/src/theory/quantifiers/local_theory_ext.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/macros.cpp b/src/theory/quantifiers/macros.cpp
index 96d682a..6b071f8 100644
--- a/src/theory/quantifiers/macros.cpp
+++ b/src/theory/quantifiers/macros.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -44,7 +44,7 @@ bool QuantifierMacros::simplify( std::vector< Node >& assertions, bool doRewrite
     Trace("macros") << "Find macros, ground=" << d_ground_macros << "..." << std::endl;
     //first, collect macro definitions
     std::vector< Node > macro_assertions;
-    for( unsigned i=0; i<assertions.size(); i++ ){
+    for( int i=0; i<(int)assertions.size(); i++ ){
       Trace("macros-debug") << "  process assertion " << assertions[i] << std::endl;
       if( processAssertion( assertions[i] ) ){
         PROOF( 
@@ -167,6 +167,7 @@ bool QuantifierMacros::isBoundVarApplyUf( Node n ) {
   Assert( n.getKind()==APPLY_UF );
   TypeNode tno = n.getOperator().getType();
   std::map< Node, bool > vars;
+  // allow if a vector of unique variables of the same type as UF arguments
   for( unsigned i=0; i<n.getNumChildren(); i++ ){
     if( n[i].getKind()!=BOUND_VARIABLE ){
       return false;
@@ -174,11 +175,6 @@ bool QuantifierMacros::isBoundVarApplyUf( Node n ) {
     if( n[i].getType()!=tno[i] ){
       return false;
     }
-    if( !tno[i].isSort() && !tno[i].isReal() && ( !tno[i].isDatatype() || tno[i].isParametricDatatype() ) && 
-        !tno[i].isBitVector() && !tno[i].isString() && !tno[i].isFloatingPoint() ){
-      //only non-parametric types are supported
-      return false;
-    }
     if( vars.find( n[i] )==vars.end() ){
       vars[n[i]] = true;
     }else{
@@ -331,6 +327,7 @@ bool QuantifierMacros::process( Node n, bool pol, std::vector< Node >& args, Nod
   }else{
     //literal case
     if( isMacroLiteral( n, pol ) ){
+      Trace("macros-debug") << "Check macro literal : " << n << std::endl;
       std::map< Node, bool > visited;
       std::vector< Node > candidates;
       for( size_t i=0; i<n.getNumChildren(); i++ ){
@@ -339,6 +336,7 @@ bool QuantifierMacros::process( Node n, bool pol, std::vector< Node >& args, Nod
       for( size_t i=0; i<candidates.size(); i++ ){
         Node m = candidates[i];
         Node op = m.getOperator();
+        Trace("macros-debug") << "Check macro candidate : " << m << std::endl;
         if( d_macro_defs.find( op )==d_macro_defs.end() ){
           std::vector< Node > fvs;
           visited.clear();
@@ -416,17 +414,21 @@ Node QuantifierMacros::simplify( Node n ){
         if( it!=d_macro_defs.end() && !it->second.isNull() ){
           //only apply if children are subtypes of arguments
           bool success = true;
+          // FIXME : this can be eliminated when we have proper typing rules
           std::vector< Node > cond;
           TypeNode tno = op.getType();
           for( unsigned i=0; i<children.size(); i++ ){
-            if( !TermDb::getEnsureTypeCondition( children[i], tno[i], cond ) ){
+            Node etc = TypeNode::getEnsureTypeCondition( children[i], tno[i] );
+            if( etc.isNull() ){
               //if this does fail, we are incomplete, since we are eliminating quantified formula corresponding to op, 
               //  and not ensuring it applies to n when its types are correct.
-              //however, this should never fail: we never process types for which we cannot constuct conditions that ensure correct types, e.g. (is-int t).
-              Assert( false );
+              //Assert( false );
               success = false;
               break;
+            }else if( !etc.isConst() ){
+              cond.push_back( etc );
             }
+            Assert( children[i].getType().isSubtypeOf( tno[i] ) );
           }
           if( success ){
             //do substitution if necessary
diff --git a/src/theory/quantifiers/macros.h b/src/theory/quantifiers/macros.h
index 60af7ad..bd6a96c 100644
--- a/src/theory/quantifiers/macros.h
+++ b/src/theory/quantifiers/macros.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/model_builder.cpp b/src/theory/quantifiers/model_builder.cpp
index 090f273..41c68a1 100644
--- a/src/theory/quantifiers/model_builder.cpp
+++ b/src/theory/quantifiers/model_builder.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -35,7 +35,7 @@ using namespace CVC4::theory::quantifiers;
 
 
 QModelBuilder::QModelBuilder( context::Context* c, QuantifiersEngine* qe ) :
-TheoryEngineModelBuilder( qe->getTheoryEngine() ), d_curr_model( c, NULL ), d_qe( qe ){
+TheoryEngineModelBuilder( qe->getTheoryEngine() ), d_qe( qe ){
 
 }
 
@@ -43,46 +43,46 @@ bool QModelBuilder::optUseModel() {
   return options::mbqiMode()!=MBQI_NONE || options::fmfBound();
 }
 
-void QModelBuilder::preProcessBuildModel(TheoryModel* m, bool fullModel) {
-  preProcessBuildModelStd( m, fullModel );
+bool QModelBuilder::preProcessBuildModel(TheoryModel* m) {
+  return preProcessBuildModelStd( m );
 }
 
-void QModelBuilder::preProcessBuildModelStd(TheoryModel* m, bool fullModel) {
-  if( !fullModel ){
-    if( options::fmfEmptySorts() || options::fmfFunWellDefinedRelevant() ){
-      FirstOrderModel * fm = (FirstOrderModel*)m;
-      //traverse equality engine
-      std::map< TypeNode, bool > eqc_usort;
-      eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( fm->d_equalityEngine );
-      while( !eqcs_i.isFinished() ){
-        TypeNode tr = (*eqcs_i).getType();
-        eqc_usort[tr] = true;
-        ++eqcs_i;
-      }
-      //look at quantified formulas
-      for( unsigned i=0; i<fm->getNumAssertedQuantifiers(); i++ ){
-        Node q = fm->getAssertedQuantifier( i, true );
-        if( fm->isQuantifierActive( q ) ){
-          //check if any of these quantified formulas can be set inactive
-          if( options::fmfEmptySorts() ){
-            for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
-              TypeNode tn = q[0][i].getType();
-              //we are allowed to assume the type is empty
-              if( tn.isSort() && eqc_usort.find( tn )==eqc_usort.end() ){
-                Trace("model-engine-debug") << "Empty domain quantified formula : " << q << std::endl;
-                fm->setQuantifierActive( q, false );
-              }
+bool QModelBuilder::preProcessBuildModelStd(TheoryModel* m) {
+  d_addedLemmas = 0;
+  d_triedLemmas = 0;
+  if( options::fmfEmptySorts() || options::fmfFunWellDefinedRelevant() ){
+    FirstOrderModel * fm = (FirstOrderModel*)m;
+    //traverse equality engine
+    std::map< TypeNode, bool > eqc_usort;
+    eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( fm->d_equalityEngine );
+    while( !eqcs_i.isFinished() ){
+      TypeNode tr = (*eqcs_i).getType();
+      eqc_usort[tr] = true;
+      ++eqcs_i;
+    }
+    //look at quantified formulas
+    for( unsigned i=0; i<fm->getNumAssertedQuantifiers(); i++ ){
+      Node q = fm->getAssertedQuantifier( i, true );
+      if( fm->isQuantifierActive( q ) ){
+        //check if any of these quantified formulas can be set inactive
+        if( options::fmfEmptySorts() ){
+          for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
+            TypeNode tn = q[0][i].getType();
+            //we are allowed to assume the type is empty
+            if( tn.isSort() && eqc_usort.find( tn )==eqc_usort.end() ){
+              Trace("model-engine-debug") << "Empty domain quantified formula : " << q << std::endl;
+              fm->setQuantifierActive( q, false );
             }
-          }else if( options::fmfFunWellDefinedRelevant() ){
-            if( q[0].getNumChildren()==1 ){
-              TypeNode tn = q[0][0].getType();
-              if( tn.getAttribute(AbsTypeFunDefAttribute()) ){
-                //Trace("model-engine-debug2") << "...possible irrelevant function def : " << q << ", #rr = " << d_quantEngine->getModel()->d_rep_set.getNumRelevantGroundReps( tn ) << std::endl;
-                //we are allowed to assume the introduced type is empty
-                if( eqc_usort.find( tn )==eqc_usort.end() ){
-                  Trace("model-engine-debug") << "Irrelevant function definition : " << q << std::endl;
-                  fm->setQuantifierActive( q, false );
-                }
+          }
+        }else if( options::fmfFunWellDefinedRelevant() ){
+          if( q[0].getNumChildren()==1 ){
+            TypeNode tn = q[0][0].getType();
+            if( tn.getAttribute(AbsTypeFunDefAttribute()) ){
+              //Trace("model-engine-debug2") << "...possible irrelevant function def : " << q << ", #rr = " << d_quantEngine->getModel()->d_rep_set.getNumRelevantGroundReps( tn ) << std::endl;
+              //we are allowed to assume the introduced type is empty
+              if( eqc_usort.find( tn )==eqc_usort.end() ){
+                Trace("model-engine-debug") << "Irrelevant function definition : " << q << std::endl;
+                fm->setQuantifierActive( q, false );
               }
             }
           }
@@ -90,11 +90,13 @@ void QModelBuilder::preProcessBuildModelStd(TheoryModel* m, bool fullModel) {
       }
     }
   }
+  return true;
 }
 
-void QModelBuilder::debugModel( FirstOrderModel* fm ){
+void QModelBuilder::debugModel( TheoryModel* m ){
   //debug the model: cycle through all instantiations for all quantifiers, report ones that are not true
   if( Trace.isOn("quant-check-model") ){
+    FirstOrderModel* fm = (FirstOrderModel*)m;
     Trace("quant-check-model") << "Testing quantifier instantiations..." << std::endl;
     int tests = 0;
     int bad = 0;
@@ -164,122 +166,119 @@ QModelBuilder( c, qe ), d_basisNoMatch( c ) {
 
 }
 
+/*
 Node QModelBuilderIG::getCurrentUfModelValue( FirstOrderModel* fm, Node n, std::vector< Node > & args, bool partial ) {
   return n;
 }
+*/
 
-void QModelBuilderIG::processBuildModel( TheoryModel* m, bool fullModel ) {
+bool QModelBuilderIG::processBuildModel( TheoryModel* m ) {
   FirstOrderModel* f = (FirstOrderModel*)m;
   FirstOrderModelIG* fm = f->asFirstOrderModelIG();
-  Trace("model-engine-debug") << "Process build model, fullModel = " << fullModel << " " << optUseModel() << std::endl;
-  if( fullModel ){
-    Assert( d_curr_model==fm );
-    //update models
-    for( std::map< Node, uf::UfModelTree >::iterator it = fm->d_uf_model_tree.begin(); it != fm->d_uf_model_tree.end(); ++it ){
-      it->second.update( fm );
-      Trace("model-func") << "QModelBuilder: Make function value from tree " << it->first << std::endl;
-      //construct function values
-      fm->d_uf_models[ it->first ] = it->second.getFunctionValue( "$x" );
+  Trace("model-engine-debug") << "Process build model " << optUseModel() << std::endl;
+  d_didInstGen = false;
+  //reset the internal information
+  reset( fm );
+  //only construct first order model if optUseModel() is true
+  if( optUseModel() ){
+    Trace("model-engine-debug") << "Initializing " << fm->getNumAssertedQuantifiers() << " quantifiers..." << std::endl;
+    //check if any quantifiers are un-initialized
+    for( unsigned i=0; i<fm->getNumAssertedQuantifiers(); i++ ){
+      Node q = fm->getAssertedQuantifier( i );
+      if( d_qe->getModel()->isQuantifierActive( q ) ){
+        int lems = initializeQuantifier( q, q );
+        d_statistics.d_init_inst_gen_lemmas += lems;
+        d_addedLemmas += lems;
+        if( d_qe->inConflict() ){
+          break;
+        }
+      }
     }
-    TheoryEngineModelBuilder::processBuildModel( m, fullModel );
-    //mark that the model has been set
-    fm->markModelSet();
-    //debug the model
-    debugModel( fm );
-  }else{
-    d_curr_model = fm;
-    d_didInstGen = false;
-    //reset the internal information
-    reset( fm );
-    //only construct first order model if optUseModel() is true
-    if( optUseModel() ){
-      Trace("model-engine-debug") << "Initializing " << fm->getNumAssertedQuantifiers() << " quantifiers..." << std::endl;
-      //check if any quantifiers are un-initialized
+    if( d_addedLemmas>0 ){
+      Trace("model-engine") << "Initialize, Added Lemmas = " << d_addedLemmas << std::endl;
+      return false;
+    }else{
+      Assert( !d_qe->inConflict() );
+      //initialize model
+      fm->initialize();
+      //analyze the functions
+      Trace("model-engine-debug") << "Analyzing model..." << std::endl;
+      analyzeModel( fm );
+      //analyze the quantifiers
+      Trace("model-engine-debug") << "Analyzing quantifiers..." << std::endl;
+      d_uf_prefs.clear();
       for( unsigned i=0; i<fm->getNumAssertedQuantifiers(); i++ ){
         Node q = fm->getAssertedQuantifier( i );
-        if( d_qe->getModel()->isQuantifierActive( q ) ){
-          int lems = initializeQuantifier( q, q );
-          d_statistics.d_init_inst_gen_lemmas += lems;
-          d_addedLemmas += lems;
-          if( d_qe->inConflict() ){
-            break;
-          }
-        }
+        analyzeQuantifier( fm, q );
       }
-      if( d_addedLemmas>0 ){
-        Trace("model-engine") << "Initialize, Added Lemmas = " << d_addedLemmas << std::endl;
-      }else{
-        Assert( !d_qe->inConflict() );
-        //initialize model
-        fm->initialize();
-        //analyze the functions
-        Trace("model-engine-debug") << "Analyzing model..." << std::endl;
-        analyzeModel( fm );
-        //analyze the quantifiers
-        Trace("model-engine-debug") << "Analyzing quantifiers..." << std::endl;
-        d_uf_prefs.clear();
-        for( unsigned i=0; i<fm->getNumAssertedQuantifiers(); i++ ){
-          Node q = fm->getAssertedQuantifier( i );
-          analyzeQuantifier( fm, q );
-        }
 
-        //if applicable, find exceptions to model via inst-gen
-        if( options::fmfInstGen() ){
-          d_didInstGen = true;
-          d_instGenMatches = 0;
-          d_numQuantSat = 0;
-          d_numQuantInstGen = 0;
-          d_numQuantNoInstGen = 0;
-          d_numQuantNoSelForm = 0;
-          //now, see if we know that any exceptions via InstGen exist
-          Trace("model-engine-debug") << "Perform InstGen techniques for quantifiers..." << std::endl;
-          for( unsigned i=0; i<fm->getNumAssertedQuantifiers(); i++ ){
-            Node f = fm->getAssertedQuantifier( i );
-            if( d_qe->getModel()->isQuantifierActive( f ) ){
-              int lems = doInstGen( fm, f );
-              d_statistics.d_inst_gen_lemmas += lems;
-              d_addedLemmas += lems;
-              //temporary
-              if( lems>0 ){
-                d_numQuantInstGen++;
-              }else if( hasInstGen( f ) ){
-                d_numQuantNoInstGen++;
-              }else{
-                d_numQuantNoSelForm++;
-              }
-              if( d_qe->inConflict() || ( options::fmfInstGenOneQuantPerRound() && lems>0 ) ){
-                break;
-              }
+      //if applicable, find exceptions to model via inst-gen
+      if( options::fmfInstGen() ){
+        d_didInstGen = true;
+        d_instGenMatches = 0;
+        d_numQuantSat = 0;
+        d_numQuantInstGen = 0;
+        d_numQuantNoInstGen = 0;
+        d_numQuantNoSelForm = 0;
+        //now, see if we know that any exceptions via InstGen exist
+        Trace("model-engine-debug") << "Perform InstGen techniques for quantifiers..." << std::endl;
+        for( unsigned i=0; i<fm->getNumAssertedQuantifiers(); i++ ){
+          Node f = fm->getAssertedQuantifier( i );
+          if( d_qe->getModel()->isQuantifierActive( f ) ){
+            int lems = doInstGen( fm, f );
+            d_statistics.d_inst_gen_lemmas += lems;
+            d_addedLemmas += lems;
+            //temporary
+            if( lems>0 ){
+              d_numQuantInstGen++;
+            }else if( hasInstGen( f ) ){
+              d_numQuantNoInstGen++;
             }else{
-              d_numQuantSat++;
+              d_numQuantNoSelForm++;
             }
-          }
-          Trace("model-engine-debug") << "Quantifiers sat/ig/n-ig/null " << d_numQuantSat << " / " << d_numQuantInstGen << " / ";
-          Trace("model-engine-debug") << d_numQuantNoInstGen << " / " << d_numQuantNoSelForm << std::endl;
-          Trace("model-engine-debug") << "Inst-gen # matches examined = " << d_instGenMatches << std::endl;
-          if( Trace.isOn("model-engine") ){
-            if( d_addedLemmas>0 ){
-              Trace("model-engine") << "InstGen, added lemmas = " << d_addedLemmas << std::endl;
-            }else{
-              Trace("model-engine") << "No InstGen lemmas..." << std::endl;
+            if( d_qe->inConflict() || ( options::fmfInstGenOneQuantPerRound() && lems>0 ) ){
+              break;
             }
+          }else{
+            d_numQuantSat++;
           }
         }
-        //construct the model if necessary
-        if( d_addedLemmas==0 ){
-          //if no immediate exceptions, build the model
-          //  this model will be an approximation that will need to be tested via exhaustive instantiation
-          Trace("model-engine-debug") << "Building model..." << std::endl;
-          //build model for UF
-          for( std::map< Node, uf::UfModelTree >::iterator it = fm->d_uf_model_tree.begin(); it != fm->d_uf_model_tree.end(); ++it ){
-            Trace("model-engine-debug-uf") << "Building model for " << it->first << "..." << std::endl;
-            constructModelUf( fm, it->first );
+        Trace("model-engine-debug") << "Quantifiers sat/ig/n-ig/null " << d_numQuantSat << " / " << d_numQuantInstGen << " / ";
+        Trace("model-engine-debug") << d_numQuantNoInstGen << " / " << d_numQuantNoSelForm << std::endl;
+        Trace("model-engine-debug") << "Inst-gen # matches examined = " << d_instGenMatches << std::endl;
+        if( Trace.isOn("model-engine") ){
+          if( d_addedLemmas>0 ){
+            Trace("model-engine") << "InstGen, added lemmas = " << d_addedLemmas << std::endl;
+          }else{
+            Trace("model-engine") << "No InstGen lemmas..." << std::endl;
           }
-          Trace("model-engine-debug") << "Done building models." << std::endl;
         }
       }
+      //construct the model if necessary
+      if( d_addedLemmas==0 ){
+        //if no immediate exceptions, build the model
+        //  this model will be an approximation that will need to be tested via exhaustive instantiation
+        Trace("model-engine-debug") << "Building model..." << std::endl;
+        //build model for UF
+        for( std::map< Node, uf::UfModelTree >::iterator it = fm->d_uf_model_tree.begin(); it != fm->d_uf_model_tree.end(); ++it ){
+          Trace("model-engine-debug-uf") << "Building model for " << it->first << "..." << std::endl;
+          constructModelUf( fm, it->first );
+        }
+        Trace("model-engine-debug") << "Done building models." << std::endl;
+      }else{
+        return false;
+      }
     }
   }
+  //update models
+  for( std::map< Node, uf::UfModelTree >::iterator it = fm->d_uf_model_tree.begin(); it != fm->d_uf_model_tree.end(); ++it ){
+    it->second.update( fm );
+    Trace("model-func") << "QModelBuilder: Make function value from tree " << it->first << std::endl;
+    //construct function values
+    fm->d_uf_models[ it->first ] = it->second.getFunctionValue( "$x" );
+  }
+  Assert( d_addedLemmas==0 );
+  return TheoryEngineModelBuilder::processBuildModel( m );
 }
 
 int QModelBuilderIG::initializeQuantifier( Node f, Node fp ){
@@ -330,10 +329,11 @@ void QModelBuilderIG::analyzeModel( FirstOrderModel* fm ){
   for( std::map< Node, uf::UfModelTree >::iterator it = fmig->d_uf_model_tree.begin(); it != fmig->d_uf_model_tree.end(); ++it ){
     Node op = it->first;
     TermArgBasisTrie tabt;
-    for( size_t i=0; i<fmig->d_uf_terms[op].size(); i++ ){
-      Node n = fmig->d_uf_terms[op][i];
-      //for calculating if op is constant
-      if( d_qe->getTermDatabase()->isTermActive( n ) ){
+    std::map< Node, std::vector< Node > >::iterator itut = fmig->d_uf_terms.find( op );
+    if( itut!=fmig->d_uf_terms.end() ){
+      for( size_t i=0; i<itut->second.size(); i++ ){
+        Node n = fmig->d_uf_terms[op][i];
+        //for calculating if op is constant
         Node v = fmig->getRepresentative( n );
         if( i==0 ){
           d_uf_prefs[op].d_const_val = v;
@@ -341,9 +341,8 @@ void QModelBuilderIG::analyzeModel( FirstOrderModel* fm ){
           d_uf_prefs[op].d_const_val = Node::null();
           break;
         }
-      }
-      //for calculating terms that we don't need to consider
-      if( d_qe->getTermDatabase()->isTermActive( n ) || n.getAttribute(ModelBasisArgAttribute())!=0 ){
+        //for calculating terms that we don't need to consider
+        //if( d_qe->getTermDatabase()->isTermActive( n ) || n.getAttribute(ModelBasisArgAttribute())!=0 ){
         if( d_basisNoMatch.find( n )==d_basisNoMatch.end() ){
           //need to consider if it is not congruent modulo model basis
           if( !tabt.addTerm( fmig, n ) ){
@@ -407,13 +406,6 @@ QModelBuilderIG::Statistics::~Statistics(){
   smtStatisticsRegistry()->unregisterStat(&d_eval_lits_unknown);
 }
 
-bool QModelBuilderIG::isTermActive( Node n ){
-  return d_qe->getTermDatabase()->isTermActive( n ) || //it is not congruent to another active term
-         ( n.getAttribute(ModelBasisArgAttribute())!=0 && d_basisNoMatch.find( n )==d_basisNoMatch.end() ); //or it has model basis arguments
-                                                                                                      //and is not congruent modulo model basis
-                                                                                                      //to another active term
-}
-
 //do exhaustive instantiation
 int QModelBuilderIG::doExhaustiveInstantiation( FirstOrderModel * fm, Node f, int effort ) {
   if( optUseModel() ){
@@ -733,9 +725,11 @@ void QModelBuilderDefault::constructModelUf( FirstOrderModel* fm, Node op ){
     Node defaultTerm = d_qe->getTermDatabase()->getModelBasisOpTerm( op );
     Trace("fmf-model-cons") << "Construct model for " << op << "..." << std::endl;
     //set the values in the model
-    for( size_t i=0; i<fmig->d_uf_terms[op].size(); i++ ){
-      Node n = fmig->d_uf_terms[op][i];
-      if( isTermActive( n ) ){
+    std::map< Node, std::vector< Node > >::iterator itut = fmig->d_uf_terms.find( op );
+    if( itut!=fmig->d_uf_terms.end() ){
+      for( size_t i=0; i<itut->second.size(); i++ ){
+        Node n = itut->second[i];
+        // only consider unique up to congruence (in model equality engine)?
         Node v = fmig->getRepresentative( n );
         Trace("fmf-model-cons") << "Set term " << n << " : " << fmig->d_rep_set.getIndexFor( v ) << " " << v << std::endl;
         //if this assertion did not help the model, just consider it ground
diff --git a/src/theory/quantifiers/model_builder.h b/src/theory/quantifiers/model_builder.h
index e1f5865..2900320 100644
--- a/src/theory/quantifiers/model_builder.h
+++ b/src/theory/quantifiers/model_builder.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -29,12 +29,13 @@ namespace quantifiers {
 class QModelBuilder : public TheoryEngineModelBuilder
 {
 protected:
-  //the model we are working with
-  context::CDO< FirstOrderModel* > d_curr_model;
   //quantifiers engine
   QuantifiersEngine* d_qe;
-  void preProcessBuildModel(TheoryModel* m, bool fullModel);
-  void preProcessBuildModelStd(TheoryModel* m, bool fullModel);
+  bool preProcessBuildModel(TheoryModel* m); //must call preProcessBuildModelStd
+  bool preProcessBuildModelStd(TheoryModel* m);
+  /** number of lemmas generated while building model */
+  unsigned d_addedLemmas;
+  unsigned d_triedLemmas;
 public:
   QModelBuilder( context::Context* c, QuantifiersEngine* qe );
   virtual ~QModelBuilder() throw() {}
@@ -45,13 +46,13 @@ public:
   virtual int doExhaustiveInstantiation( FirstOrderModel * fm, Node f, int effort ) { return false; }
   //whether to construct model
   virtual bool optUseModel();
-  /** number of lemmas generated while building model */
-  int d_addedLemmas;
-  int d_triedLemmas;
   /** exist instantiation ? */
   virtual bool existsInstantiation( Node f, InstMatch& m, bool modEq = true, bool modInst = false ) { return false; }
   //debug model
-  void debugModel( FirstOrderModel* fm );
+  virtual void debugModel( TheoryModel* m );
+  //statistics 
+  unsigned getNumAddedLemmas() { return d_addedLemmas; }
+  unsigned getNumTriedLemmas() { return d_triedLemmas; }
 };
 
 
@@ -87,9 +88,7 @@ protected:
   //whether inst gen was done
   bool d_didInstGen;
   /** process build model */
-  virtual void processBuildModel( TheoryModel* m, bool fullModel );
-  /** get current model value */
-  Node getCurrentUfModelValue( FirstOrderModel* fm, Node n, std::vector< Node > & args, bool partial );
+  virtual bool processBuildModel( TheoryModel* m );
 protected:
   //reset
   virtual void reset( FirstOrderModel* fm ) = 0;
@@ -132,8 +131,6 @@ public:
     ~Statistics();
   };
   Statistics d_statistics;
-  // is term active
-  bool isTermActive( Node n );
   // is term selected
   virtual bool isTermSelected( Node n ) { return false; }
   /** quantifier has inst-gen definition */
diff --git a/src/theory/quantifiers/model_engine.cpp b/src/theory/quantifiers/model_engine.cpp
index 9496f63..c431871 100644
--- a/src/theory/quantifiers/model_engine.cpp
+++ b/src/theory/quantifiers/model_engine.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -155,7 +155,7 @@ int ModelEngine::checkModel(){
   //Trace("model-engine-debug") << "Flattening representatives...." << std::endl;
   //d_quantEngine->getEqualityQuery()->flattenRepresentatives( fm->d_rep_set.d_type_reps );
 
-  //for debugging
+  //for debugging, setup
   for( std::map< TypeNode, std::vector< Node > >::iterator it = fm->d_rep_set.d_type_reps.begin();
        it != fm->d_rep_set.d_type_reps.end(); ++it ){
     if( it->first.isSort() ){
@@ -167,7 +167,7 @@ int ModelEngine::checkModel(){
       Trace("model-engine-debug") << std::endl;
       Trace("model-engine-debug") << "   Term reps : ";
       for( size_t i=0; i<it->second.size(); i++ ){
-        Node r = d_quantEngine->getEqualityQuery()->getInternalRepresentative( it->second[i], Node::null(), 0 );
+        Node r = d_quantEngine->getInternalRepresentative( it->second[i], Node::null(), 0 );
         Trace("model-engine-debug") << r << " ";
       }
       Trace("model-engine-debug") << std::endl;
@@ -237,8 +237,8 @@ int ModelEngine::checkModel(){
 void ModelEngine::exhaustiveInstantiate( Node f, int effort ){
   //first check if the builder can do the exhaustive instantiation
   quantifiers::QModelBuilder * mb = d_quantEngine->getModelBuilder();
-  mb->d_triedLemmas = 0;
-  mb->d_addedLemmas = 0;
+  unsigned prev_alem = mb->getNumAddedLemmas();
+  unsigned prev_tlem = mb->getNumTriedLemmas();
   int retEi = mb->doExhaustiveInstantiation( d_quantEngine->getModel(), f, effort );
   if( retEi!=0 ){
     if( retEi<0 ){
@@ -247,9 +247,9 @@ void ModelEngine::exhaustiveInstantiate( Node f, int effort ){
     }else{
       Trace("fmf-exh-inst") << "-> Builder determined instantiation(s)." << std::endl;
     }
-    d_triedLemmas += mb->d_triedLemmas;
-    d_addedLemmas += mb->d_addedLemmas;
-    d_quantEngine->d_statistics.d_instantiations_fmf_mbqi += mb->d_addedLemmas;
+    d_triedLemmas += mb->getNumTriedLemmas()-prev_tlem;
+    d_addedLemmas += mb->getNumAddedLemmas()-prev_alem;
+    d_quantEngine->d_statistics.d_instantiations_fmf_mbqi += mb->getNumAddedLemmas();
   }else{
     if( Trace.isOn("fmf-exh-inst-debug") ){
       Trace("fmf-exh-inst-debug") << "   Instantiation Constants: ";
diff --git a/src/theory/quantifiers/model_engine.h b/src/theory/quantifiers/model_engine.h
index 728539e..ad77ae8 100644
--- a/src/theory/quantifiers/model_engine.h
+++ b/src/theory/quantifiers/model_engine.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quant_conflict_find.cpp b/src/theory/quantifiers/quant_conflict_find.cpp
index 420a3d2..20d470d 100644
--- a/src/theory/quantifiers/quant_conflict_find.cpp
+++ b/src/theory/quantifiers/quant_conflict_find.cpp
@@ -2,9 +2,9 @@
 /*! \file quant_conflict_find.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Clark Barrett, Tim King, Andrew Reynolds
+ **   Clark Barrett, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -615,7 +615,8 @@ bool QuantInfo::isTConstraintSpurious( QuantConflictFind * p, std::vector< Node
       }
     }
   }
-  return false;
+  // spurious if quantifiers engine is in conflict
+  return p->d_quantEngine->inConflict();
 }
 
 bool QuantInfo::isPropagatingInstance( QuantConflictFind * p, Node n ) {
@@ -2079,70 +2080,76 @@ void QuantConflictFind::check( Theory::Effort level, unsigned quant_e ) {
                 //try to make a matches making the body false
                 Trace("qcf-check-debug") << "Get next match..." << std::endl;
                 while( qi->getNextMatch( this ) ){
-                  Trace("qcf-inst") << "*** Produced match at effort " << e << " : " << std::endl;
-                  qi->debugPrintMatch("qcf-inst");
-                  Trace("qcf-inst") << std::endl;
-                  if( !qi->isMatchSpurious( this ) ){
-                    std::vector< int > assigned;
-                    if( qi->completeMatch( this, assigned ) ){
-                      std::vector< Node > terms;
-                      qi->getMatch( terms );
-                      bool tcs = qi->isTConstraintSpurious( this, terms );
-                      if( !tcs ){
-                        //for debugging
-                        if( Debug.isOn("qcf-check-inst") ){
-                          Node inst = d_quantEngine->getInstantiation( q, terms );
-                          Debug("qcf-check-inst") << "Check instantiation " << inst << "..." << std::endl;
-                          Assert( !getTermDatabase()->isEntailed( inst, true ) );
-                          Assert( getTermDatabase()->isEntailed( inst, false ) || e>effort_conflict );
-                        }
-                        if( d_quantEngine->addInstantiation( q, terms ) ){
-                          Trace("qcf-check") << "   ... Added instantiation" << std::endl;
-                          Trace("qcf-inst") << "*** Was from effort " << e << " : " << std::endl;
-                          qi->debugPrintMatch("qcf-inst");
-                          Trace("qcf-inst") << std::endl;
-                          ++addedLemmas;
-                          if( e==effort_conflict ){
-                            d_quantEngine->markRelevant( q );
-                            ++(d_quantEngine->d_statistics.d_instantiations_qcf);
-                            if( options::qcfAllConflict() ){
-                              isConflict = true;
-                            }else{
-                              d_conflict.set( true );
+                  if( d_quantEngine->inConflict() ){
+                    Trace("qcf-check") << "   ... Quantifiers engine discovered conflict, ";
+                    Trace("qcf-check") << "probably related to disequal congruent terms in master equality engine" << std::endl;
+                    break;
+                  }else{
+                    Trace("qcf-inst") << "*** Produced match at effort " << e << " : " << std::endl;
+                    qi->debugPrintMatch("qcf-inst");
+                    Trace("qcf-inst") << std::endl;
+                    if( !qi->isMatchSpurious( this ) ){
+                      std::vector< int > assigned;
+                      if( qi->completeMatch( this, assigned ) ){
+                        std::vector< Node > terms;
+                        qi->getMatch( terms );
+                        bool tcs = qi->isTConstraintSpurious( this, terms );
+                        if( !tcs ){
+                          //for debugging
+                          if( Debug.isOn("qcf-check-inst") ){
+                            Node inst = d_quantEngine->getInstantiation( q, terms );
+                            Debug("qcf-check-inst") << "Check instantiation " << inst << "..." << std::endl;
+                            Assert( !getTermDatabase()->isEntailed( inst, true ) );
+                            Assert( getTermDatabase()->isEntailed( inst, false ) || e>effort_conflict );
+                          }
+                          if( d_quantEngine->addInstantiation( q, terms ) ){
+                            Trace("qcf-check") << "   ... Added instantiation" << std::endl;
+                            Trace("qcf-inst") << "*** Was from effort " << e << " : " << std::endl;
+                            qi->debugPrintMatch("qcf-inst");
+                            Trace("qcf-inst") << std::endl;
+                            ++addedLemmas;
+                            if( e==effort_conflict ){
+                              d_quantEngine->markRelevant( q );
+                              ++(d_quantEngine->d_statistics.d_instantiations_qcf);
+                              if( options::qcfAllConflict() ){
+                                isConflict = true;
+                              }else{
+                                d_conflict.set( true );
+                              }
+                              break;
+                            }else if( e==effort_prop_eq ){
+                              d_quantEngine->markRelevant( q );
+                              ++(d_quantEngine->d_statistics.d_instantiations_qcf);
                             }
+                          }else{
+                            Trace("qcf-inst") << "   ... Failed to add instantiation" << std::endl;
+                            //this should only happen if the algorithm generates the same propagating instance twice this round
+                            //in this case, break to avoid exponential behavior
                             break;
-                          }else if( e==effort_prop_eq ){
-                            d_quantEngine->markRelevant( q );
-                            ++(d_quantEngine->d_statistics.d_instantiations_qcf);
                           }
                         }else{
-                          Trace("qcf-inst") << "   ... Failed to add instantiation" << std::endl;
-                          //this should only happen if the algorithm generates the same propagating instance twice this round
-                          //in this case, break to avoid exponential behavior
-                          break;
+                          Trace("qcf-inst") << "   ... Spurious instantiation (match is T-inconsistent)" << std::endl;
                         }
+                        //clean up assigned
+                        qi->revertMatch( this, assigned );
+                        d_tempCache.clear();
                       }else{
-                        Trace("qcf-inst") << "   ... Spurious instantiation (match is T-inconsistent)" << std::endl;
+                        Trace("qcf-inst") << "   ... Spurious instantiation (cannot assign unassigned variables)" << std::endl;
                       }
-                      //clean up assigned
-                      qi->revertMatch( this, assigned );
-                      d_tempCache.clear();
                     }else{
-                      Trace("qcf-inst") << "   ... Spurious instantiation (cannot assign unassigned variables)" << std::endl;
+                      Trace("qcf-inst") << "   ... Spurious instantiation (match is inconsistent)" << std::endl;
                     }
-                  }else{
-                    Trace("qcf-inst") << "   ... Spurious instantiation (match is inconsistent)" << std::endl;
                   }
                 }
                 Trace("qcf-check") << "Done, conflict = " << d_conflict << std::endl;
-                if( d_conflict ){
+                if( d_conflict || d_quantEngine->inConflict() ){
                   break;
                 }
               }
             }
           }
         }
-        if( addedLemmas>0 ){
+        if( addedLemmas>0 || d_quantEngine->inConflict() ){
           break;
         }
       }
diff --git a/src/theory/quantifiers/quant_conflict_find.h b/src/theory/quantifiers/quant_conflict_find.h
index dc8a9ac..794787b 100644
--- a/src/theory/quantifiers/quant_conflict_find.h
+++ b/src/theory/quantifiers/quant_conflict_find.h
@@ -2,9 +2,9 @@
 /*! \file quant_conflict_find.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Clark Barrett, Tim King, Andrew Reynolds
+ **   Clark Barrett, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quant_equality_engine.cpp b/src/theory/quantifiers/quant_equality_engine.cpp
index 46a8b7c..b402128 100644
--- a/src/theory/quantifiers/quant_equality_engine.cpp
+++ b/src/theory/quantifiers/quant_equality_engine.cpp
@@ -2,9 +2,9 @@
 /*! \file quant_equality_engine.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Tim King
+ **   Andrew Reynolds, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quant_equality_engine.h b/src/theory/quantifiers/quant_equality_engine.h
index 26654de..f827b4f 100644
--- a/src/theory/quantifiers/quant_equality_engine.h
+++ b/src/theory/quantifiers/quant_equality_engine.h
@@ -2,9 +2,9 @@
 /*! \file quant_equality_engine.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Tim King
+ **   Andrew Reynolds, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quant_split.cpp b/src/theory/quantifiers/quant_split.cpp
index 63935f1..282ff3b 100644
--- a/src/theory/quantifiers/quant_split.cpp
+++ b/src/theory/quantifiers/quant_split.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quant_split.h b/src/theory/quantifiers/quant_split.h
index 3e3b088..daf4114 100644
--- a/src/theory/quantifiers/quant_split.h
+++ b/src/theory/quantifiers/quant_split.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quant_util.cpp b/src/theory/quantifiers/quant_util.cpp
index 163c576..21ad032 100644
--- a/src/theory/quantifiers/quant_util.cpp
+++ b/src/theory/quantifiers/quant_util.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -29,7 +29,7 @@ unsigned QuantifiersModule::needsModel( Theory::Effort e ) {
 }
 
 eq::EqualityEngine * QuantifiersModule::getEqualityEngine() {
-  return d_quantEngine->getMasterEqualityEngine();
+  return d_quantEngine->getActiveEqualityEngine();
 }
 
 bool QuantifiersModule::areEqual( TNode n1, TNode n2 ) {
@@ -136,6 +136,14 @@ Node QuantArith::mkNode( std::map< Node, Node >& msum ) {
   return children.size()>1 ? NodeManager::currentNM()->mkNode( PLUS, children ) : (children.size()==1 ? children[0] : NodeManager::currentNM()->mkConst( Rational(0) ));
 }
 
+Node QuantArith::mkCoeffTerm( Node coeff, Node t ) {
+  if( coeff.isNull() ){
+    return t;
+  }else{
+    return NodeManager::currentNM()->mkNode( kind::MULT, coeff, t );
+  }
+}
+
 // given (msum <k> 0), solve (veq_c * v <k> val) or (val <k> veq_c * v), where:
 // veq_c is either null (meaning 1), or positive.
 // return value 1: veq_c*v is RHS, -1: veq_c*v is LHS, 0: failed.
diff --git a/src/theory/quantifiers/quant_util.h b/src/theory/quantifiers/quant_util.h
index b426413..42fb738 100644
--- a/src/theory/quantifiers/quant_util.h
+++ b/src/theory/quantifiers/quant_util.h
@@ -2,9 +2,9 @@
 /*! \file quant_util.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Andrew Reynolds, Tim King
+ **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -91,6 +91,7 @@ public:
   static bool getMonomialSum( Node n, std::map< Node, Node >& msum );
   static bool getMonomialSumLit( Node lit, std::map< Node, Node >& msum );
   static Node mkNode( std::map< Node, Node >& msum );
+  static Node mkCoeffTerm( Node coeff, Node t );
   //return 1 : solved on LHS, return -1 : solved on RHS, return 0: failed
   static int isolate( Node v, std::map< Node, Node >& msum, Node & veq_c, Node & val, Kind k );
   static int isolate( Node v, std::map< Node, Node >& msum, Node & veq, Kind k, bool doCoeff = false );
diff --git a/src/theory/quantifiers/quantifiers_attributes.cpp b/src/theory/quantifiers/quantifiers_attributes.cpp
index b797f4c..2261fd0 100644
--- a/src/theory/quantifiers/quantifiers_attributes.cpp
+++ b/src/theory/quantifiers/quantifiers_attributes.cpp
@@ -2,9 +2,9 @@
 /*! \file quantifiers_attributes.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Morgan Deters, Tim King
+ **   Andrew Reynolds, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quantifiers_attributes.h b/src/theory/quantifiers/quantifiers_attributes.h
index 53cef79..93a4ef4 100644
--- a/src/theory/quantifiers/quantifiers_attributes.h
+++ b/src/theory/quantifiers/quantifiers_attributes.h
@@ -2,9 +2,9 @@
 /*! \file quantifiers_attributes.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Andrew Reynolds, Tim King
+ **   Morgan Deters, Paul Meng, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/quantifiers_rewriter.cpp b/src/theory/quantifiers/quantifiers_rewriter.cpp
index 2b7e19c..2d4a6e9 100644
--- a/src/theory/quantifiers/quantifiers_rewriter.cpp
+++ b/src/theory/quantifiers/quantifiers_rewriter.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -510,16 +510,17 @@ Node QuantifiersRewriter::computeProcessTerms( Node body, std::vector< Node >& n
     Node fbody = TermDb::getFunDefBody( q );
     Assert( !body.isNull() );
     Trace("quantifiers-rewrite-debug") << "Decompose " << h << " / " << fbody << " as function definition for " << q << "." << std::endl;
-    Node r = computeProcessTerms2( fbody, true, true, curr_cond, 0, cache, icache, new_vars, new_conds );
+    Node r = computeProcessTerms2( fbody, true, true, curr_cond, 0, cache, icache, new_vars, new_conds, false );
+    Assert( new_vars.size()==h.getNumChildren() );
     return Rewriter::rewrite( NodeManager::currentNM()->mkNode( EQUAL, h, r ) );
   }else{
-    return computeProcessTerms2( body, true, true, curr_cond, 0, cache, icache, new_vars, new_conds );
+    return computeProcessTerms2( body, true, true, curr_cond, 0, cache, icache, new_vars, new_conds, options::elimExtArithQuant() );
   }
 }
 
 Node QuantifiersRewriter::computeProcessTerms2( Node body, bool hasPol, bool pol, std::map< Node, bool >& currCond, int nCurrCond,
                                                 std::map< Node, Node >& cache, std::map< Node, Node >& icache,
-                                                std::vector< Node >& new_vars, std::vector< Node >& new_conds ) {
+                                                std::vector< Node >& new_vars, std::vector< Node >& new_conds, bool elimExtArith ) {
   Trace("quantifiers-rewrite-term-debug2") << "computeProcessTerms " << body << " " << hasPol << " " << pol << std::endl;
   Node ret;
   std::map< Node, Node >::iterator iti = cache.find( body );
@@ -593,14 +594,14 @@ Node QuantifiersRewriter::computeProcessTerms2( Node body, bool hasPol, bool pol
           bool newHasPol;
           bool newPol;
           QuantPhaseReq::getPolarity( body, i, hasPol, pol, newHasPol, newPol );
-          Node nn = computeProcessTerms2( body[i], newHasPol, newPol, currCond, nCurrCond, cache, icache, new_vars, new_conds );
+          Node nn = computeProcessTerms2( body[i], newHasPol, newPol, currCond, nCurrCond, cache, icache, new_vars, new_conds, elimExtArith );
           if( body.getKind()==ITE && i==0 ){
             int res = getEntailedCond( nn, currCond );
             Trace("quantifiers-rewrite-term-debug") << "Condition for " << body << " is " << nn << ", entailment check=" << res << std::endl;
             if( res==1 ){
-              ret = computeProcessTerms2( body[1], hasPol, pol, currCond, nCurrCond, cache, icache, new_vars, new_conds );
+              ret = computeProcessTerms2( body[1], hasPol, pol, currCond, nCurrCond, cache, icache, new_vars, new_conds, elimExtArith );
             }else if( res==-1 ){
-              ret = computeProcessTerms2( body[2], hasPol, pol, currCond, nCurrCond, cache, icache, new_vars, new_conds );
+              ret = computeProcessTerms2( body[2], hasPol, pol, currCond, nCurrCond, cache, icache, new_vars, new_conds, elimExtArith );
             }
           }
           children.push_back( nn );
@@ -681,7 +682,7 @@ Node QuantifiersRewriter::computeProcessTerms2( Node body, bool hasPol, bool pol
         ret = ite_v;
       }
       */
-    }else if( options::elimExtArithQuant() ){
+    }else if( elimExtArith ){
       if( ret.getKind()==INTS_DIVISION_TOTAL || ret.getKind()==INTS_MODULUS_TOTAL ){
         Node num = ret[0];
         Node den = ret[1];
@@ -1133,21 +1134,27 @@ Node QuantifiersRewriter::computePrenex( Node body, std::vector< Node >& args, s
   return body;
 }
 
-Node QuantifiersRewriter::computePrenexAgg( Node n, bool topLevel ){
+Node QuantifiersRewriter::computePrenexAgg( Node n, bool topLevel, std::map< unsigned, std::map< Node, Node > >& visited ){
+  unsigned tindex = topLevel ? 0 : 1;
+  std::map< Node, Node >::iterator itv = visited[tindex].find( n );
+  if( itv!=visited[tindex].end() ){
+    return itv->second;
+  }
   if( containsQuantifiers( n ) ){
+    Node ret = n;
     if( topLevel && options::prenexQuant()==PRENEX_QUANT_DISJ_NORMAL && ( n.getKind()==AND || ( n.getKind()==NOT && n[0].getKind()==OR ) ) ){
       std::vector< Node > children;
       Node nc = n.getKind()==NOT ? n[0] : n;
       for( unsigned i=0; i<nc.getNumChildren(); i++ ){
-        Node ncc = computePrenexAgg( nc[i], true );
+        Node ncc = computePrenexAgg( nc[i], true, visited );
         if( n.getKind()==NOT ){
           ncc = ncc.negate();        
         }
         children.push_back( ncc );
       }
-      return NodeManager::currentNM()->mkNode( AND, children );
+      ret = NodeManager::currentNM()->mkNode( AND, children );
     }else if( n.getKind()==NOT ){
-      return computePrenexAgg( n[0], false ).negate();
+      ret = computePrenexAgg( n[0], false, visited ).negate();
     }else if( n.getKind()==FORALL ){
     /*
       Node nn = computePrenexAgg( n[1], false );
@@ -1162,10 +1169,10 @@ Node QuantifiersRewriter::computePrenexAgg( Node n, bool topLevel ){
       std::vector< Node > children;
       if( n[1].getKind()==OR && options::prenexQuant()==PRENEX_QUANT_DISJ_NORMAL ){
         for( unsigned i=0; i<n[1].getNumChildren(); i++ ){
-          children.push_back( computePrenexAgg( n[1][i], false ) );
+          children.push_back( computePrenexAgg( n[1][i], false, visited ) );
         }
       }else{
-        children.push_back( computePrenexAgg( n[1], false ) );
+        children.push_back( computePrenexAgg( n[1], false, visited ) );
       }
       std::vector< Node > args;
       for( unsigned i=0; i<n[0].getNumChildren(); i++ ){
@@ -1181,14 +1188,15 @@ Node QuantifiersRewriter::computePrenexAgg( Node n, bool topLevel ){
           children[i] = children[i][1];
         }
       }
+      // TODO : keep the pattern
       Node nb = children.size()==1 ? children[0] : NodeManager::currentNM()->mkNode( OR, children );
-      return mkForall( args, nb, true );
+      ret = mkForall( args, nb, true );
     }else{
       std::vector< Node > args;
       std::vector< Node > nargs;
       Node nn = computePrenex( n, args, nargs, true, true );
       if( n!=nn ){
-        Node nnn = computePrenexAgg( nn, false );
+        Node nnn = computePrenexAgg( nn, false, visited );
         //merge prenex
         if( nnn.getKind()==FORALL ){
           for( unsigned i=0; i<nnn[0].getNumChildren(); i++ ){
@@ -1212,12 +1220,14 @@ Node QuantifiersRewriter::computePrenexAgg( Node n, bool topLevel ){
         if( !args.empty() ){
           nnn = mkForall( args, nnn, true );
         }
-        return nnn;
+        ret = nnn;
       }else{
         Assert( args.empty() );
         Assert( nargs.empty() );
       }
     }
+    visited[tindex][n] = ret;
+    return ret;
   }
   return n;
 }
@@ -1821,7 +1831,8 @@ Node QuantifiersRewriter::preprocess( Node n, bool isInst ) {
   //pull all quantifiers globally
   if( options::prenexQuant()==PRENEX_QUANT_DISJ_NORMAL || options::prenexQuant()==PRENEX_QUANT_NORMAL ){
     Trace("quantifiers-prenex") << "Prenexing : " << n << std::endl;
-    n = quantifiers::QuantifiersRewriter::computePrenexAgg( n, true );
+    std::map< unsigned, std::map< Node, Node > > visited;
+    n = quantifiers::QuantifiersRewriter::computePrenexAgg( n, true, visited );
     n = Rewriter::rewrite( n );
     Trace("quantifiers-prenex") << "Prenexing returned : " << n << std::endl;
     //Assert( isPrenexNormalForm( n ) );
diff --git a/src/theory/quantifiers/quantifiers_rewriter.h b/src/theory/quantifiers/quantifiers_rewriter.h
index 90a22f4..0edea5f 100644
--- a/src/theory/quantifiers/quantifiers_rewriter.h
+++ b/src/theory/quantifiers/quantifiers_rewriter.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -43,7 +43,7 @@ private:
   static void computeArgVec2( std::vector< Node >& args, std::vector< Node >& activeArgs, Node n, Node ipl );
   static Node computeProcessTerms2( Node body, bool hasPol, bool pol, std::map< Node, bool >& currCond, int nCurrCond,
                                     std::map< Node, Node >& cache, std::map< Node, Node >& icache,
-                                    std::vector< Node >& new_vars, std::vector< Node >& new_conds );
+                                    std::vector< Node >& new_vars, std::vector< Node >& new_conds, bool elimExtArith );
   static void computeDtTesterIteSplit( Node n, std::map< Node, Node >& pcons, std::map< Node, std::map< int, Node > >& ncons, std::vector< Node >& conj );
   static bool isConditionalVariableElim( Node n, int pol=0 );
   static bool isVariableElim( Node v, Node s );
@@ -60,7 +60,7 @@ public:
   static Node computeProcessTerms( Node body, std::vector< Node >& new_vars, std::vector< Node >& new_conds, Node q, QAttributes& qa );
   static Node computeCondSplit( Node body, QAttributes& qa );
   static Node computePrenex( Node body, std::vector< Node >& args, std::vector< Node >& nargs, bool pol, bool prenexAgg );
-  static Node computePrenexAgg( Node n, bool topLevel );
+  static Node computePrenexAgg( Node n, bool topLevel, std::map< unsigned, std::map< Node, Node > >& visited );
   static Node computeSplit( std::vector< Node >& args, Node body, QAttributes& qa );
   static Node computeVarElimination( Node body, std::vector< Node >& args, QAttributes& qa );
 private:
diff --git a/src/theory/quantifiers/relevant_domain.cpp b/src/theory/quantifiers/relevant_domain.cpp
index 8166925..9bc47a5 100644
--- a/src/theory/quantifiers/relevant_domain.cpp
+++ b/src/theory/quantifiers/relevant_domain.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -69,7 +69,7 @@ void RelevantDomain::RDomain::removeRedundantTerms( QuantifiersEngine * qe ) {
 
 
 
-RelevantDomain::RelevantDomain( QuantifiersEngine* qe, FirstOrderModel* m ) : d_qe( qe ), d_model( m ){
+RelevantDomain::RelevantDomain( QuantifiersEngine* qe ) : d_qe( qe ){
    d_is_computed = false;
 }
 
@@ -105,8 +105,9 @@ void RelevantDomain::compute(){
         it2->second->reset();
       }
     }
-    for( unsigned i=0; i<d_model->getNumAssertedQuantifiers(); i++ ){
-      Node q = d_model->getAssertedQuantifier( i );
+    FirstOrderModel* fm = d_qe->getModel();
+    for( unsigned i=0; i<fm->getNumAssertedQuantifiers(); i++ ){
+      Node q = fm->getAssertedQuantifier( i );
       Node icf = d_qe->getTermDatabase()->getInstConstantBody( q );
       Trace("rel-dom-debug") << "compute relevant domain for " << icf << std::endl;
       computeRelevantDomain( q, icf, true, true );
@@ -151,6 +152,7 @@ void RelevantDomain::compute(){
 }
 
 void RelevantDomain::computeRelevantDomain( Node q, Node n, bool hasPol, bool pol ) {
+  Trace("rel-dom-debug") << "Compute relevant domain " << n << "..." << std::endl;
   Node op = d_qe->getTermDatabase()->getMatchOperator( n );
   for( unsigned i=0; i<n.getNumChildren(); i++ ){
     if( !op.isNull() ){
@@ -171,7 +173,7 @@ void RelevantDomain::computeRelevantDomain( Node q, Node n, bool hasPol, bool po
     }
   }
 
-  if( ( n.getKind()==EQUAL || n.getKind()==GEQ ) && TermDb::hasInstConstAttr( n ) ){
+  if( ( ( n.getKind()==EQUAL && !n[0].getType().isBoolean() ) || n.getKind()==GEQ ) && TermDb::hasInstConstAttr( n ) ){
     //compute the information for what this literal does
     computeRelevantDomainLit( q, hasPol, pol, n );
     if( d_rel_dom_lit[hasPol][pol][n].d_merge ){
@@ -190,6 +192,7 @@ void RelevantDomain::computeRelevantDomain( Node q, Node n, bool hasPol, bool po
       }
     }
   }
+  Trace("rel-dom-debug") << "...finished Compute relevant domain " << n << std::endl;
 }
 
 void RelevantDomain::computeRelevantDomainOpCh( RDomain * rf, Node n ) {
@@ -237,43 +240,45 @@ void RelevantDomain::computeRelevantDomainLit( Node q, bool hasPol, bool pol, No
         d_rel_dom_lit[hasPol][pol][n].d_rd[1] = NULL;
       }else{
         //solve the inequality for one/two variables, if possible
-        std::map< Node, Node > msum;
-        if( QuantArith::getMonomialSumLit( n, msum ) ){
-          Node var;
-          Node var2;
-          bool hasNonVar = false;
-          for( std::map< Node, Node >::iterator it = msum.begin(); it != msum.end(); ++it ){
-            if( !it->first.isNull() && it->first.getKind()==INST_CONSTANT ){
-              if( var.isNull() ){
-                var = it->first;
-              }else if( var2.isNull() ){
-                var2 = it->first;
+        if( n[0].getType().isReal() ){
+          std::map< Node, Node > msum;
+          if( QuantArith::getMonomialSumLit( n, msum ) ){
+            Node var;
+            Node var2;
+            bool hasNonVar = false;
+            for( std::map< Node, Node >::iterator it = msum.begin(); it != msum.end(); ++it ){
+              if( !it->first.isNull() && it->first.getKind()==INST_CONSTANT ){
+                if( var.isNull() ){
+                  var = it->first;
+                }else if( var2.isNull() ){
+                  var2 = it->first;
+                }else{
+                  hasNonVar = true;
+                }
               }else{
                 hasNonVar = true;
               }
-            }else{
-              hasNonVar = true;
             }
-          }
-          if( !var.isNull() ){
-            if( var2.isNull() ){
-              //single variable solve
-              Node veq_c;
-              Node val;
-              int ires = QuantArith::isolate( var, msum, veq_c, val, n.getKind() );
-              if( ires!=0 ){
-                if( veq_c.isNull() ){
-                  r_add = val;
-                  varLhs = (ires==1);
-                  d_rel_dom_lit[hasPol][pol][n].d_rd[0] = getRDomain( q, var.getAttribute(InstVarNumAttribute()), false );
-                  d_rel_dom_lit[hasPol][pol][n].d_rd[1] = NULL;
+            if( !var.isNull() ){
+              if( var2.isNull() ){
+                //single variable solve
+                Node veq_c;
+                Node val;
+                int ires = QuantArith::isolate( var, msum, veq_c, val, n.getKind() );
+                if( ires!=0 ){
+                  if( veq_c.isNull() ){
+                    r_add = val;
+                    varLhs = (ires==1);
+                    d_rel_dom_lit[hasPol][pol][n].d_rd[0] = getRDomain( q, var.getAttribute(InstVarNumAttribute()), false );
+                    d_rel_dom_lit[hasPol][pol][n].d_rd[1] = NULL;
+                  }
                 }
+              }else if( !hasNonVar ){
+                //merge the domains
+                d_rel_dom_lit[hasPol][pol][n].d_rd[0] = getRDomain( q, var.getAttribute(InstVarNumAttribute()), false );
+                d_rel_dom_lit[hasPol][pol][n].d_rd[1] = getRDomain( q, var2.getAttribute(InstVarNumAttribute()), false );
+                d_rel_dom_lit[hasPol][pol][n].d_merge = true;
               }
-            }else if( !hasNonVar ){
-              //merge the domains
-              d_rel_dom_lit[hasPol][pol][n].d_rd[0] = getRDomain( q, var.getAttribute(InstVarNumAttribute()), false );
-              d_rel_dom_lit[hasPol][pol][n].d_rd[1] = getRDomain( q, var2.getAttribute(InstVarNumAttribute()), false );
-              d_rel_dom_lit[hasPol][pol][n].d_merge = true;
             }
           }
         }
diff --git a/src/theory/quantifiers/relevant_domain.h b/src/theory/quantifiers/relevant_domain.h
index 1d6a2af..6594b73 100644
--- a/src/theory/quantifiers/relevant_domain.h
+++ b/src/theory/quantifiers/relevant_domain.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -43,7 +43,6 @@ private:
   std::map< RDomain *, Node > d_rn_map;
   std::map< RDomain *, int > d_ri_map;
   QuantifiersEngine* d_qe;
-  FirstOrderModel* d_model;
   void computeRelevantDomain( Node q, Node n, bool hasPol, bool pol );
   void computeRelevantDomainOpCh( RDomain * rf, Node n );
   bool d_is_computed;
@@ -63,7 +62,7 @@ private:
   std::map< bool, std::map< bool, std::map< Node, RDomainLit > > > d_rel_dom_lit;
   void computeRelevantDomainLit( Node q, bool hasPol, bool pol, Node n );
 public:
-  RelevantDomain( QuantifiersEngine* qe, FirstOrderModel* m );
+  RelevantDomain( QuantifiersEngine* qe );
   virtual ~RelevantDomain();
   /* reset */
   bool reset( Theory::Effort e );
diff --git a/src/theory/quantifiers/rewrite_engine.cpp b/src/theory/quantifiers/rewrite_engine.cpp
index 3e6b0ff..f60d27c 100644
--- a/src/theory/quantifiers/rewrite_engine.cpp
+++ b/src/theory/quantifiers/rewrite_engine.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/rewrite_engine.h b/src/theory/quantifiers/rewrite_engine.h
index ef3337e..34994f9 100644
--- a/src/theory/quantifiers/rewrite_engine.h
+++ b/src/theory/quantifiers/rewrite_engine.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/symmetry_breaking.cpp b/src/theory/quantifiers/symmetry_breaking.cpp
index 2a2b135..a821848 100644
--- a/src/theory/quantifiers/symmetry_breaking.cpp
+++ b/src/theory/quantifiers/symmetry_breaking.cpp
@@ -2,9 +2,9 @@
 /*! \file symmetry_breaking.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Tim King, Morgan Deters
+ **   Andrew Reynolds, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/symmetry_breaking.h b/src/theory/quantifiers/symmetry_breaking.h
index e682955..466e6d9 100644
--- a/src/theory/quantifiers/symmetry_breaking.h
+++ b/src/theory/quantifiers/symmetry_breaking.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/term_database.cpp b/src/theory/quantifiers/term_database.cpp
index d394c8f..7d4f5b4 100644
--- a/src/theory/quantifiers/term_database.cpp
+++ b/src/theory/quantifiers/term_database.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Francois Bobot, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -204,7 +204,7 @@ void TermDb::addTerm( Node n, std::set< Node >& added, bool withinQuant, bool wi
 
 void TermDb::computeArgReps( TNode n ) {
   if( d_arg_reps.find( n )==d_arg_reps.end() ){
-    eq::EqualityEngine * ee = d_quantEngine->getTheoryEngine()->getMasterEqualityEngine();
+    eq::EqualityEngine * ee = d_quantEngine->getActiveEqualityEngine();
     for( unsigned j=0; j<n.getNumChildren(); j++ ){
       TNode r = ee->hasTerm( n[j] ) ? ee->getRepresentative( n[j] ) : n[j];
       d_arg_reps[n].push_back( r );
@@ -215,7 +215,7 @@ void TermDb::computeArgReps( TNode n ) {
 void TermDb::computeUfEqcTerms( TNode f ) {
   if( d_func_map_eqc_trie.find( f )==d_func_map_eqc_trie.end() ){
     d_func_map_eqc_trie[f].clear();
-    eq::EqualityEngine * ee = d_quantEngine->getTheoryEngine()->getMasterEqualityEngine();
+    eq::EqualityEngine * ee = d_quantEngine->getActiveEqualityEngine();
     for( unsigned i=0; i<d_op_map[f].size(); i++ ){
       TNode n = d_op_map[f][i];
       if( hasTermCurrent( n ) ){
@@ -234,7 +234,7 @@ void TermDb::computeUfTerms( TNode f ) {
     d_op_nonred_count[ f ] = 0;
     std::map< Node, std::vector< Node > >::iterator it = d_op_map.find( f );
     if( it!=d_op_map.end() ){
-      eq::EqualityEngine* ee = d_quantEngine->getMasterEqualityEngine();
+      eq::EqualityEngine* ee = d_quantEngine->getActiveEqualityEngine();
       Trace("term-db-debug") << "Adding terms for operator " << f << std::endl;
       unsigned congruentCount = 0;
       unsigned nonCongruentCount = 0;
@@ -278,10 +278,12 @@ void TermDb::computeUfTerms( TNode f ) {
                   Trace("term-db-lemma") << "Disequal congruent terms : " << at << " " << n << "!!!!" << std::endl;
                   if( !d_quantEngine->getTheoryEngine()->needCheck() ){
                     Trace("term-db-lemma") << "  all theories passed with no lemmas." << std::endl;
+                    // we should be a full effort check, prior to theory combination
                   }
                   Trace("term-db-lemma") << "  add lemma : " << lem << std::endl;
                 }
                 d_quantEngine->addLemma( lem );
+                d_quantEngine->setConflict();
                 d_consistent_ee = false;
                 return;
               }
@@ -307,7 +309,8 @@ void TermDb::computeUfTerms( TNode f ) {
 
 bool TermDb::inRelevantDomain( TNode f, unsigned i, TNode r ) {
   computeUfTerms( f );
-  Assert( d_quantEngine->getTheoryEngine()->getMasterEqualityEngine()->getRepresentative( r )==r );
+  Assert( !d_quantEngine->getActiveEqualityEngine()->hasTerm( r ) || 
+          d_quantEngine->getActiveEqualityEngine()->getRepresentative( r )==r );
   std::map< Node, std::map< unsigned, std::vector< Node > > >::iterator it = d_func_map_rel_dom.find( f );
   if( it != d_func_map_rel_dom.end() ){
     std::map< unsigned, std::vector< Node > >::iterator it2 = it->second.find( i );
@@ -578,7 +581,7 @@ bool TermDb::hasTermCurrent( Node n, bool useMode ) {
   if( !useMode ){
     return d_has_map.find( n )!=d_has_map.end();
   }else{
-    //return d_quantEngine->getMasterEqualityEngine()->hasTerm( n ); //some assertions are not sent to EE
+    //return d_quantEngine->getActiveEqualityEngine()->hasTerm( n ); //some assertions are not sent to EE
     if( options::termDbMode()==TERM_DB_ALL ){
       return true;
     }else if( options::termDbMode()==TERM_DB_RELEVANT ){
@@ -630,7 +633,7 @@ Node TermDb::getEligibleTermInEqc( TNode r ) {
     std::map< Node, Node >::iterator it = d_term_elig_eqc.find( r );
     if( it==d_term_elig_eqc.end() ){
       Node h;
-      eq::EqualityEngine* ee = d_quantEngine->getMasterEqualityEngine();
+      eq::EqualityEngine* ee = d_quantEngine->getActiveEqualityEngine();
       eq::EqClassIterator eqc_i = eq::EqClassIterator( r, ee );
       while( h.isNull() && !eqc_i.isFinished() ){
         TNode n = (*eqc_i);
@@ -680,7 +683,7 @@ bool TermDb::reset( Theory::Effort effort ){
   d_func_map_rel_dom.clear();
   d_consistent_ee = true;
 
-  eq::EqualityEngine* ee = d_quantEngine->getMasterEqualityEngine();
+  eq::EqualityEngine* ee = d_quantEngine->getActiveEqualityEngine();
   //compute has map
   if( options::termDbMode()==TERM_DB_RELEVANT || options::lteRestrictInstClosure() ){
     d_has_map.clear();
@@ -1838,20 +1841,6 @@ Node TermDb::ensureType( Node n, TypeNode tn ) {
   }
 }
 
-bool TermDb::getEnsureTypeCondition( Node n, TypeNode tn, std::vector< Node >& cond ) {
-  TypeNode ntn = n.getType();
-  Assert( ntn.isComparableTo( tn ) );
-  if( !ntn.isSubtypeOf( tn ) ){
-    if( tn.isInteger() ){
-      cond.push_back( NodeManager::currentNM()->mkNode( IS_INTEGER, n ) );
-      return true;
-    }
-    return false;
-  }else{
-    return true;
-  }
-}
-
 void TermDb::getRelevancyCondition( Node n, std::vector< Node >& cond ) {
   if( n.getKind()==APPLY_SELECTOR_TOTAL ){
     unsigned scindex = Datatype::cindexOf(n.getOperator().toExpr());
@@ -3274,7 +3263,7 @@ void TermDbSygus::registerEvalTerm( Node n ) {
   }
 }
 
-void TermDbSygus::registerModelValue( Node a, Node v, std::vector< Node >& lems ) {
+void TermDbSygus::registerModelValue( Node a, Node v, std::vector< Node >& terms, std::vector< Node >& vals, std::vector< Node >& exps ) {
   std::map< Node, std::map< Node, bool > >::iterator its = d_subterms.find( a );
   if( its!=d_subterms.end() ){
     Trace("sygus-eager") << "registerModelValue : " << a << ", has " << its->second.size() << " registered subterms." << std::endl;
@@ -3288,7 +3277,7 @@ void TermDbSygus::registerModelValue( Node a, Node v, std::vector< Node >& lems
         Node vn = n.substitute( at, vt );
         vn = Rewriter::rewrite( vn );
         unsigned start = d_node_mv_args_proc[n][vn];
-        Node antec = n.eqNode( vn ).negate();
+        Node antec = n.eqNode( vn );
         TypeNode tn = n.getType();
         Assert( tn.isDatatype() );
         const Datatype& dt = ((DatatypeType)(tn).toType()).getDatatype();
@@ -3306,10 +3295,16 @@ void TermDbSygus::registerModelValue( Node a, Node v, std::vector< Node >& lems
         for( unsigned i=start; i<it->second.size(); i++ ){
           Assert( vars.size()==it->second[i].size() );
           Node sBTerm = bTerm.substitute( vars.begin(), vars.end(), it->second[i].begin(), it->second[i].end() );
-          Node lem = NodeManager::currentNM()->mkNode(EQUAL, d_evals[n][i], sBTerm ); 
-          lem = NodeManager::currentNM()->mkNode( OR, antec, lem );
-          Trace("sygus-eager") << "Lemma : " << lem << std::endl;
-          lems.push_back( lem );
+          sBTerm = Rewriter::rewrite( sBTerm );
+          //Node lem = NodeManager::currentNM()->mkNode(EQUAL, d_evals[n][i], sBTerm ); 
+          //lem = NodeManager::currentNM()->mkNode( OR, antec.negate(), lem );
+          terms.push_back( d_evals[n][i] );
+          vals.push_back( sBTerm );
+          exps.push_back( antec );
+          Trace("sygus-eager") << "Conclude : " << d_evals[n][i] << " == " << sBTerm << std::endl;
+          Trace("sygus-eager") << "   from " << antec << std::endl;
+          //Trace("sygus-eager") << "Lemma : " << lem << std::endl;
+          //lems.push_back( lem );
         }
         d_node_mv_args_proc[n][vn] = it->second.size();
       }
@@ -3317,6 +3312,74 @@ void TermDbSygus::registerModelValue( Node a, Node v, std::vector< Node >& lems
   }
 }
 
+
+Node TermDbSygus::unfold( Node en, std::map< Node, Node >& vtm, std::vector< Node >& exp, bool track_exp ) {
+  if( en.getKind()==kind::APPLY_UF ){
+    Node ev = en[0];
+    if( track_exp ){
+      std::map< Node, Node >::iterator itv = vtm.find( en[0] );
+      if( itv!=vtm.end() ){
+        ev = itv->second;
+      }else{
+        Assert( false );
+      }
+      Assert( en[0].getType()==ev.getType() );
+      Assert( ev.isConst() );
+    }
+    Assert( ev.getKind()==kind::APPLY_CONSTRUCTOR );
+    std::vector< Node > args;
+    for( unsigned i=1; i<en.getNumChildren(); i++ ){
+      args.push_back( en[i] );
+    }
+    const Datatype& dt = ((DatatypeType)(ev.getType()).toType()).getDatatype();
+    unsigned i = Datatype::indexOf( ev.getOperator().toExpr() );
+    if( track_exp ){
+      //explanation
+      Node ee = NodeManager::currentNM()->mkNode( kind::APPLY_TESTER, Node::fromExpr( dt[i].getTester() ), en[0] );
+      if( std::find( exp.begin(), exp.end(), ee )==exp.end() ){
+        exp.push_back( ee );
+      }
+    }
+    std::map< int, Node > pre;
+    for( unsigned j=0; j<dt[i].getNumArgs(); j++ ){
+      std::vector< Node > cc;
+      //get the evaluation argument for the selector
+      const Datatype & ad = ((DatatypeType)dt[i][j].getRangeType()).getDatatype();
+      cc.push_back( Node::fromExpr( ad.getSygusEvaluationFunc() ) );
+      Node s = en[0].getKind()==kind::APPLY_CONSTRUCTOR ? en[0][j] : NodeManager::currentNM()->mkNode( kind::APPLY_SELECTOR_TOTAL, Node::fromExpr( dt[i][j].getSelector() ), en[0] );
+      cc.push_back( s );
+      if( track_exp ){
+        //update vtm map
+        vtm[s] = ev[j];
+      }
+      cc.insert( cc.end(), args.begin(), args.end() );
+      pre[j] = NodeManager::currentNM()->mkNode( kind::APPLY_UF, cc );
+    }
+    std::map< TypeNode, int > var_count; 
+    Node ret = mkGeneric( dt, i, var_count, pre );
+    // if it is a variable, apply the substitution
+    if( ret.getKind()==kind::BOUND_VARIABLE ){
+      //replace by argument
+      Node var_list = Node::fromExpr( dt.getSygusVarList() );
+      //TODO : set argument # on sygus variables
+      for( unsigned j=0; j<var_list.getNumChildren(); j++ ){
+        if( var_list[j]==ret ){
+          ret = args[j];
+          break;
+        }
+      }
+      Assert( ret.isConst() );
+    }else if( ret.getKind()==APPLY ){
+      //must expand definitions to account for defined functions in sygus grammars
+      ret = Node::fromExpr( smt::currentSmtEngine()->expandDefinitions( ret.toExpr() ) );
+    }
+    return ret;
+  }else{
+    Assert( en.isConst() );
+  }
+  return en;
+}
+
 }/* CVC4::theory::quantifiers namespace */
 }/* CVC4::theory namespace */
 }/* CVC4 namespace */
diff --git a/src/theory/quantifiers/term_database.h b/src/theory/quantifiers/term_database.h
index 9f43c1d..912961e 100644
--- a/src/theory/quantifiers/term_database.h
+++ b/src/theory/quantifiers/term_database.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -473,8 +473,6 @@ public:
   bool containsVtsInfinity( Node n, bool isFree = false );
   /** ensure type */
   static Node ensureType( Node n, TypeNode tn );
-  /** get ensure type condition */
-  static bool getEnsureTypeCondition( Node n, TypeNode tn, std::vector< Node >& cond );
   /** get relevancy condition */
   static void getRelevancyCondition( Node n, std::vector< Node >& cond );
 private:
@@ -672,7 +670,13 @@ private:
   std::map< Node, std::map< Node, unsigned > > d_node_mv_args_proc;
 public:
   void registerEvalTerm( Node n );
-  void registerModelValue( Node n, Node v, std::vector< Node >& lems );
+  void registerModelValue( Node n, Node v, std::vector< Node >& exps, std::vector< Node >& terms, std::vector< Node >& vals );
+  Node unfold( Node en, std::map< Node, Node >& vtm, std::vector< Node >& exp, bool track_exp = true );
+  Node unfold( Node en ){
+    std::map< Node, Node > vtm;
+    std::vector< Node > exp;
+    return unfold( en, vtm, exp, false );
+  }
 };
 
 }/* CVC4::theory::quantifiers namespace */
diff --git a/src/theory/quantifiers/theory_quantifiers.cpp b/src/theory/quantifiers/theory_quantifiers.cpp
index 0b4f3c0..64160dc 100644
--- a/src/theory/quantifiers/theory_quantifiers.cpp
+++ b/src/theory/quantifiers/theory_quantifiers.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -35,8 +35,7 @@ using namespace CVC4::theory;
 using namespace CVC4::theory::quantifiers;
 
 TheoryQuantifiers::TheoryQuantifiers(Context* c, context::UserContext* u, OutputChannel& out, Valuation valuation, const LogicInfo& logicInfo) :
-    Theory(THEORY_QUANTIFIERS, c, u, out, valuation, logicInfo),
-  d_masterEqualityEngine(0)
+    Theory(THEORY_QUANTIFIERS, c, u, out, valuation, logicInfo)
 {
   d_numInstantiations = 0;
   d_baseDecLevel = -1;
@@ -55,7 +54,7 @@ TheoryQuantifiers::~TheoryQuantifiers() {
 }
 
 void TheoryQuantifiers::setMasterEqualityEngine(eq::EqualityEngine* eq) {
-  d_masterEqualityEngine = eq;
+
 }
 
 void TheoryQuantifiers::addSharedTerm(TNode t) {
@@ -88,10 +87,12 @@ void TheoryQuantifiers::presolve() {
   }
 }
 
-void TheoryQuantifiers::ppNotifyAssertions( std::vector< Node >& assertions ) {
-  Trace("quantifiers-presolve") << "TheoryQuantifiers::ppNotifyAssertions" << std::endl;
-  if( getQuantifiersEngine() ){
-    getQuantifiersEngine()->ppNotifyAssertions( assertions );
+void TheoryQuantifiers::ppNotifyAssertions(
+    const std::vector<Node>& assertions) {
+  Trace("quantifiers-presolve")
+      << "TheoryQuantifiers::ppNotifyAssertions" << std::endl;
+  if (getQuantifiersEngine()) {
+    getQuantifiersEngine()->ppNotifyAssertions(assertions);
   }
 }
 
@@ -116,16 +117,14 @@ void TheoryQuantifiers::computeCareGraph() {
   //do nothing
 }
 
-void TheoryQuantifiers::collectModelInfo(TheoryModel* m, bool fullModel) {
-  if(fullModel) {
-    for(assertions_iterator i = facts_begin(); i != facts_end(); ++i) {
-      if((*i).assertion.getKind() == kind::NOT) {
-        Debug("quantifiers::collectModelInfo") << "got quant FALSE: " << (*i).assertion[0] << endl;
-        m->assertPredicate((*i).assertion[0], false);
-      } else {
-        Debug("quantifiers::collectModelInfo") << "got quant TRUE : " << *i << endl;
-        m->assertPredicate(*i, true);
-      }
+void TheoryQuantifiers::collectModelInfo(TheoryModel* m) {
+  for(assertions_iterator i = facts_begin(); i != facts_end(); ++i) {
+    if((*i).assertion.getKind() == kind::NOT) {
+      Debug("quantifiers::collectModelInfo") << "got quant FALSE: " << (*i).assertion[0] << endl;
+      m->assertPredicate((*i).assertion[0], false);
+    } else {
+      Debug("quantifiers::collectModelInfo") << "got quant TRUE : " << *i << endl;
+      m->assertPredicate(*i, true);
     }
   }
 }
diff --git a/src/theory/quantifiers/theory_quantifiers.h b/src/theory/quantifiers/theory_quantifiers.h
index 308514b..d141250 100644
--- a/src/theory/quantifiers/theory_quantifiers.h
+++ b/src/theory/quantifiers/theory_quantifiers.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Tim King, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -44,9 +44,6 @@ private:
   /** number of instantiations */
   int d_numInstantiations;
   int d_baseDecLevel;
-
-  eq::EqualityEngine* d_masterEqualityEngine;
-
 private:
   void computeCareGraph();
 
@@ -61,15 +58,14 @@ public:
   void notifyEq(TNode lhs, TNode rhs);
   void preRegisterTerm(TNode n);
   void presolve();
-  void ppNotifyAssertions( std::vector< Node >& assertions );
+  void ppNotifyAssertions(const std::vector<Node>& assertions);
   void check(Effort e);
   Node getNextDecisionRequest( unsigned& priority );
   Node getValue(TNode n);
-  void collectModelInfo( TheoryModel* m, bool fullModel );
+  void collectModelInfo( TheoryModel* m );
   void shutdown() { }
   std::string identify() const { return std::string("TheoryQuantifiers"); }
   void setUserAttribute(const std::string& attr, Node n, std::vector<Node> node_values, std::string str_value);
-  eq::EqualityEngine* getMasterEqualityEngine() { return d_masterEqualityEngine; }
   bool ppDontRewriteSubterm(TNode atom) { return atom.getKind() == kind::FORALL || atom.getKind() == kind::EXISTS; }
 private:
   void assertUniversal( Node n );
diff --git a/src/theory/quantifiers/theory_quantifiers_type_rules.h b/src/theory/quantifiers/theory_quantifiers_type_rules.h
index 6ba57af..f3e68b9 100644
--- a/src/theory/quantifiers/theory_quantifiers_type_rules.h
+++ b/src/theory/quantifiers/theory_quantifiers_type_rules.h
@@ -2,9 +2,9 @@
 /*! \file theory_quantifiers_type_rules.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Morgan Deters, Tim King
+ **   Andrew Reynolds, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/quantifiers/trigger.cpp b/src/theory/quantifiers/trigger.cpp
index 1bfc53b..20933c7 100644
--- a/src/theory/quantifiers/trigger.cpp
+++ b/src/theory/quantifiers/trigger.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -58,7 +58,12 @@ Trigger::Trigger( QuantifiersEngine* qe, Node f, std::vector< Node >& nodes )
       d_mg->setActiveAdd(true);
     }
   }else{
-    d_mg = new InstMatchGeneratorMulti( f, d_nodes, qe );
+    if( options::multiTriggerCache() ){
+      d_mg = new InstMatchGeneratorMulti( f, d_nodes, qe );
+    }else{
+      d_mg = InstMatchGenerator::mkInstMatchGeneratorMulti( f, d_nodes, qe );
+      d_mg->setActiveAdd(true);
+    }
     //d_mg = InstMatchGenerator::mkInstMatchGenerator( d_nodes, qe );
     //d_mg->setActiveAdd();
   }
@@ -92,13 +97,8 @@ void Trigger::reset( Node eqc ){
 }
 
 bool Trigger::getNextMatch( Node f, InstMatch& m ){
-  bool retVal = d_mg->getNextMatch( f, m, d_quantEngine );
-  return retVal;
-}
-
-bool Trigger::getMatch( Node f, Node t, InstMatch& m ){
-  //FIXME: this assumes d_mg is an inst match generator
-  return ((InstMatchGenerator*)d_mg)->getMatch( f, t, m, d_quantEngine );
+  int retVal = d_mg->getNextMatch( f, m, d_quantEngine );
+  return retVal>0;
 }
 
 Node Trigger::getInstPattern(){
@@ -398,96 +398,97 @@ bool Trigger::isSimpleTrigger( Node n ){
 }
 
 //store triggers in reqPol, indicating their polarity (if any) they must appear to falsify the quantified formula
-bool Trigger::collectPatTerms2( Node q, Node n, std::map< Node, Node >& visited, std::map< Node, TriggerTermInfo >& tinfo, 
+void Trigger::collectPatTerms2( Node q, Node n, std::map< Node, std::vector< Node > >& visited, std::map< Node, TriggerTermInfo >& tinfo, 
                                 quantifiers::TriggerSelMode tstrt, std::vector< Node >& exclude, std::vector< Node >& added,
-                                bool pol, bool hasPol, bool epol, bool hasEPol ){
-  std::map< Node, Node >::iterator itv = visited.find( n );
+                                bool pol, bool hasPol, bool epol, bool hasEPol, bool knowIsUsable ){
+  std::map< Node, std::vector< Node > >::iterator itv = visited.find( n );
   if( itv==visited.end() ){
-    visited[ n ] = Node::null();
+    visited[ n ].clear();
     Trace("auto-gen-trigger-debug2") << "Collect pat terms " << n << " " << pol << " " << hasPol << " " << epol << " " << hasEPol << std::endl;
-    bool retVal = false;
     if( n.getKind()!=FORALL && n.getKind()!=INST_CONSTANT ){
-      bool rec = true;
       Node nu;
       bool nu_single = false;
-      if( n.getKind()!=NOT && std::find( exclude.begin(), exclude.end(), n )==exclude.end() ){
+      if( knowIsUsable ){
+        nu = n;
+      }else if( n.getKind()!=NOT && std::find( exclude.begin(), exclude.end(), n )==exclude.end() ){
         nu = getIsUsableTrigger( n, q );
-        if( !nu.isNull() ){
-          Assert( nu.getKind()!=NOT );
-          Trace("auto-gen-trigger-debug2") << "...found usable trigger : " << nu << std::endl;
-          Node reqEq;
-          if( nu.getKind()==EQUAL ){
-            if( isAtomicTrigger( nu[0] ) && !quantifiers::TermDb::hasInstConstAttr(nu[1]) ){
-              if( hasPol ){
-                reqEq = nu[1];
-              }
-              nu = nu[0];
-            }
-          }
-          Assert( reqEq.isNull() || !quantifiers::TermDb::hasInstConstAttr( reqEq ) );
-          Assert( isUsableTrigger( nu, q ) );
-          //do not add if already excluded
-          bool add = true;
-          if( n!=nu ){
-            std::map< Node, Node >::iterator itvu = visited.find( nu );
-            if( itvu!=visited.end() && itvu->second.isNull() ){
-              add = false;
-            }
-          }
-          if( add ){
-            Trace("auto-gen-trigger-debug2") << "...add usable trigger : " << nu << std::endl;
-            visited[ nu ] = nu;
-            tinfo[ nu ].init( q, nu, hasEPol ? ( epol ? 1 : -1 ) : 0, reqEq );
-            nu_single = tinfo[ nu ].d_fv.size()==q[0].getNumChildren();
-            retVal = true;
-            if( tstrt==quantifiers::TRIGGER_SEL_MAX || ( tstrt==quantifiers::TRIGGER_SEL_MIN_SINGLE_MAX && !nu_single ) ){
-              rec = false;
-            }
-          }
+        if( !nu.isNull() && nu!=n ){
+          collectPatTerms2( q, nu, visited, tinfo, tstrt, exclude, added, pol, hasPol, epol, hasEPol, true );
+          // copy to n
+          visited[n].insert( visited[n].end(), added.begin(), added.end() );
+          return;
         }
       }
-      if( rec ){
-        Node nrec = nu.isNull() ? n : nu;
-        std::vector< Node > added2;
-        for( unsigned i=0; i<nrec.getNumChildren(); i++ ){
-          bool newHasPol, newPol;
-          bool newHasEPol, newEPol;
-          QuantPhaseReq::getPolarity( nrec, i, hasPol, pol, newHasPol, newPol );
-          QuantPhaseReq::getEntailPolarity( nrec, i, hasEPol, epol, newHasEPol, newEPol );
-          if( collectPatTerms2( q, nrec[i], visited, tinfo, tstrt, exclude, added2, newPol, newHasPol, newEPol, newHasEPol ) ){
-            retVal = true;
+      if( !nu.isNull() ){
+        Assert( nu==n );
+        Assert( nu.getKind()!=NOT );
+        Trace("auto-gen-trigger-debug2") << "...found usable trigger : " << nu << std::endl;
+        Node reqEq;
+        if( nu.getKind()==EQUAL ){
+          if( isAtomicTrigger( nu[0] ) && !quantifiers::TermDb::hasInstConstAttr(nu[1]) ){
+            if( hasPol ){
+              reqEq = nu[1];
+            }
+            nu = nu[0];
           }
         }
-        if( !nu.isNull() ){
-          bool rm_nu = false;
-          //discard if we added a subterm as a trigger with all variables that nu has
-          for( unsigned i=0; i<added2.size(); i++ ){
-            Assert( tinfo.find( added2[i] )!=tinfo.end() );
-            if( added2[i]!=nu ){
+        Assert( reqEq.isNull() || !quantifiers::TermDb::hasInstConstAttr( reqEq ) );
+        Assert( isUsableTrigger( nu, q ) );
+        //tinfo.find( nu )==tinfo.end()
+        Trace("auto-gen-trigger-debug2") << "...add usable trigger : " << nu << std::endl;
+        tinfo[ nu ].init( q, nu, hasEPol ? ( epol ? 1 : -1 ) : 0, reqEq );
+        nu_single = tinfo[ nu ].d_fv.size()==q[0].getNumChildren();
+      }
+      Node nrec = nu.isNull() ? n : nu;
+      std::vector< Node > added2;
+      for( unsigned i=0; i<nrec.getNumChildren(); i++ ){
+        bool newHasPol, newPol;
+        bool newHasEPol, newEPol;
+        QuantPhaseReq::getPolarity( nrec, i, hasPol, pol, newHasPol, newPol );
+        QuantPhaseReq::getEntailPolarity( nrec, i, hasEPol, epol, newHasEPol, newEPol );
+        collectPatTerms2( q, nrec[i], visited, tinfo, tstrt, exclude, added2, newPol, newHasPol, newEPol, newHasEPol );
+      }
+      // if this is not a usable trigger, don't worry about caching the results, since triggers do not contain non-usable subterms
+      if( !nu.isNull() ){
+        bool rm_nu = false;
+        for( unsigned i=0; i<added2.size(); i++ ){
+          Trace("auto-gen-trigger-debug2") << "..." << nu << " added child " << i << " : " << added2[i] << std::endl;
+          Assert( added2[i]!=nu );
+          // if child was not already removed
+          if( tinfo.find( added2[i] )!=tinfo.end() ){
+            if( tstrt==quantifiers::TRIGGER_SEL_MAX || ( tstrt==quantifiers::TRIGGER_SEL_MIN_SINGLE_MAX && !nu_single ) ){
+              //discard all subterms
+              Trace("auto-gen-trigger-debug2") << "......remove it." << std::endl;
+              visited[ added2[i] ].clear();
+              tinfo.erase( added2[i] );
+            }else{
               if( tinfo[ nu ].d_fv.size()==tinfo[ added2[i] ].d_fv.size() ){
+                //discard if we added a subterm as a trigger with all variables that nu has
+                Trace("auto-gen-trigger-debug2") << "......subsumes parent." << std::endl;
                 rm_nu = true;
               }
-              added.push_back( added2[i] );
-            }else{
-              Assert( false );
+              if( std::find( added.begin(), added.end(), added2[i] )==added.end() ){
+                added.push_back( added2[i] );
+              }
             }
           }
-          if( rm_nu && ( tstrt==quantifiers::TRIGGER_SEL_MIN || ( tstrt==quantifiers::TRIGGER_SEL_MIN_SINGLE_ALL && nu_single ) ) ){
-            visited[nu] = Node::null();
-            tinfo.erase( nu );
-          }else{
+        }
+        if( rm_nu && ( tstrt==quantifiers::TRIGGER_SEL_MIN || ( tstrt==quantifiers::TRIGGER_SEL_MIN_SINGLE_ALL && nu_single ) ) ){
+          tinfo.erase( nu );
+        }else{
+          if( std::find( added.begin(), added.end(), nu )==added.end() ){
             added.push_back( nu );
           }
         }
+        visited[n].insert( visited[n].end(), added.begin(), added.end() );
       }
     }
-    return retVal;
   }else{
-    if( itv->second.isNull() ){
-      return false;
-    }else{
-      added.push_back( itv->second );
-      return true;
+    for( unsigned i=0; i<itv->second.size(); ++i ){
+      Node t = itv->second[i];
+      if( std::find( added.begin(), added.end(), t )==added.end() ){
+        added.push_back( t );
+      }
     }
   }
 }
@@ -572,7 +573,7 @@ bool Trigger::isLocalTheoryExt( Node n, std::vector< Node >& vars, std::vector<
 
 void Trigger::collectPatTerms( Node q, Node n, std::vector< Node >& patTerms, quantifiers::TriggerSelMode tstrt, std::vector< Node >& exclude, 
                                std::map< Node, TriggerTermInfo >& tinfo, bool filterInst ){
-  std::map< Node, Node > visited;
+  std::map< Node, std::vector< Node > > visited;
   if( filterInst ){
     //immediately do not consider any term t for which another term is an instance of t
     std::vector< Node > patTerms2;
@@ -606,7 +607,7 @@ void Trigger::collectPatTerms( Node q, Node n, std::vector< Node >& patTerms, qu
       //do not consider terms that have instances
       for( unsigned i=0; i<patTerms2.size(); i++ ){
         if( std::find( temp.begin(), temp.end(), patTerms2[i] )==temp.end() ){
-          visited[ patTerms2[i] ] = Node::null();
+          visited[ patTerms2[i] ].clear();
         }
       }
     }
@@ -614,9 +615,7 @@ void Trigger::collectPatTerms( Node q, Node n, std::vector< Node >& patTerms, qu
   std::vector< Node > added;
   collectPatTerms2( q, n, visited, tinfo, tstrt, exclude, added, true, true, false, true );
   for( std::map< Node, TriggerTermInfo >::iterator it = tinfo.begin(); it != tinfo.end(); ++it ){
-    if( !visited[it->first].isNull() ){
-      patTerms.push_back( it->first );
-    }
+    patTerms.push_back( it->first );
   }
 }
 
diff --git a/src/theory/quantifiers/trigger.h b/src/theory/quantifiers/trigger.h
index 6316273..afab98c 100644
--- a/src/theory/quantifiers/trigger.h
+++ b/src/theory/quantifiers/trigger.h
@@ -2,9 +2,9 @@
 /*! \file trigger.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters, Andrew Reynolds
+ **   Andrew Reynolds, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -67,11 +67,6 @@ class Trigger {
   void reset( Node eqc );
   /** get next match.  must call reset( eqc ) once before this function. */
   bool getNextMatch( Node f, InstMatch& m );
-  /** get the match against ground term or formula t.
-      the trigger and t should have the same shape.
-      Currently the trigger should not be a multi-trigger.
-  */
-  bool getMatch( Node f, Node t, InstMatch& m);
   /** return whether this is a multi-trigger */
   bool isMultiTrigger() { return d_nodes.size()>1; }
   /** get inst pattern list */
@@ -142,9 +137,9 @@ private:
   static Node getIsUsableEq( Node q, Node eq );
   static bool isUsableEqTerms( Node q, Node n1, Node n2 );
   /** collect all APPLY_UF pattern terms for f in n */
-  static bool collectPatTerms2( Node q, Node n, std::map< Node, Node >& visited, std::map< Node, TriggerTermInfo >& tinfo, 
+  static void collectPatTerms2( Node q, Node n, std::map< Node, std::vector< Node > >& visited, std::map< Node, TriggerTermInfo >& tinfo, 
                                 quantifiers::TriggerSelMode tstrt, std::vector< Node >& exclude, std::vector< Node >& added,
-                                bool pol, bool hasPol, bool epol, bool hasEPol );
+                                bool pol, bool hasPol, bool epol, bool hasEPol, bool knowIsUsable = false );
 
   std::vector< Node > d_nodes;
 
diff --git a/src/theory/quantifiers_engine.cpp b/src/theory/quantifiers_engine.cpp
index ba50f9e..faf14e0 100644
--- a/src/theory/quantifiers_engine.cpp
+++ b/src/theory/quantifiers_engine.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -80,6 +80,7 @@ QuantifiersEngine::QuantifiersEngine(context::Context* c, context::UserContext*
   d_util.push_back( d_term_db );
 
   if( options::instPropagate() ){
+    // notice that this option is incompatible with options::qcfAllConflict()
     d_inst_prop = new quantifiers::InstPropagator( this );
     d_util.push_back( d_inst_prop );
     d_inst_notify.push_back( d_inst_prop->getInstantiationNotify() );
@@ -91,22 +92,13 @@ QuantifiersEngine::QuantifiersEngine(context::Context* c, context::UserContext*
   d_curr_effort_level = QEFFORT_NONE;
   d_conflict = false;
   d_hasAddedLemma = false;
+  d_useModelEe = false;
   //don't add true lemma
   d_lemmas_produced_c[d_term_db->d_true] = true;
 
   Trace("quant-engine-debug") << "Initialize quantifiers engine." << std::endl;
   Trace("quant-engine-debug") << "Initialize model, mbqi : " << options::mbqiMode() << std::endl;
 
-  //the model object
-  if( options::mbqiMode()==quantifiers::MBQI_FMC ||
-      options::mbqiMode()==quantifiers::MBQI_FMC_INTERVAL || options::fmfBound() ||
-      options::mbqiMode()==quantifiers::MBQI_TRUST ){
-    d_model = new quantifiers::fmcheck::FirstOrderModelFmc( this, c, "FirstOrderModelFmc" );
-  }else if( options::mbqiMode()==quantifiers::MBQI_ABS ){
-    d_model = new quantifiers::FirstOrderModelAbs( this, c, "FirstOrderModelAbs" );
-  }else{
-    d_model = new quantifiers::FirstOrderModelIG( this, c, "FirstOrderModelIG" );
-  }
   if( options::relevantTriggers() ){
     d_quant_rel = new QuantRelevance( false );
   }else{
@@ -127,6 +119,7 @@ QuantifiersEngine::QuantifiersEngine(context::Context* c, context::UserContext*
   d_i_cbqi = NULL;
   d_qsplit = NULL;
   d_anti_skolem = NULL;
+  d_model = NULL;
   d_model_engine = NULL;
   d_bint = NULL;
   d_rr_engine = NULL;
@@ -224,14 +217,14 @@ void QuantifiersEngine::finishInit(){
   if( options::cbqi() ){
     d_i_cbqi = new quantifiers::InstStrategyCegqi( this );
     d_modules.push_back( d_i_cbqi );
-    if( options::cbqiModel() ){
-      needsBuilder = true;
-    }
+    //if( options::cbqiModel() ){
+    //  needsBuilder = true;
+    //}
   }
   if( options::ceGuidedInst() ){
     d_ceg_inst = new quantifiers::CegInstantiation( this, c );
     d_modules.push_back( d_ceg_inst );
-    needsBuilder = true;
+    //needsBuilder = true;
   }  
   //finite model finding
   if( options::finiteModelFind() ){
@@ -241,6 +234,7 @@ void QuantifiersEngine::finishInit(){
     }
     d_model_engine = new quantifiers::ModelEngine( c, this );
     d_modules.push_back( d_model_engine );
+    //finite model finder has special ways of building the model
     needsBuilder = true;
   }
   if( options::quantRewriteRules() ){
@@ -276,27 +270,32 @@ void QuantifiersEngine::finishInit(){
     d_modules.push_back( d_fs );
     needsRelDom = true;
   }
- 
+  
   if( needsRelDom ){
-    d_rel_dom = new quantifiers::RelevantDomain( this, d_model );
+    d_rel_dom = new quantifiers::RelevantDomain( this );
     d_util.push_back( d_rel_dom );
   }
-
+  
+  // if we require specialized ways of building the model
   if( needsBuilder ){
     Trace("quant-engine-debug") << "Initialize model engine, mbqi : " << options::mbqiMode() << " " << options::fmfBound() << std::endl;
     if( options::mbqiMode()==quantifiers::MBQI_FMC || options::mbqiMode()==quantifiers::MBQI_FMC_INTERVAL ||
         options::mbqiMode()==quantifiers::MBQI_TRUST || options::fmfBound() ){
       Trace("quant-engine-debug") << "...make fmc builder." << std::endl;
+      d_model = new quantifiers::fmcheck::FirstOrderModelFmc( this, c, "FirstOrderModelFmc" );
       d_builder = new quantifiers::fmcheck::FullModelChecker( c, this );
     }else if( options::mbqiMode()==quantifiers::MBQI_ABS ){
       Trace("quant-engine-debug") << "...make abs mbqi builder." << std::endl;
+      d_model = new quantifiers::FirstOrderModelAbs( this, c, "FirstOrderModelAbs" );
       d_builder = new quantifiers::AbsMbqiBuilder( c, this );
     }else{
       Trace("quant-engine-debug") << "...make default model builder." << std::endl;
+      d_model = new quantifiers::FirstOrderModelIG( this, c, "FirstOrderModelIG" );
       d_builder = new quantifiers::QModelBuilderDefault( c, this );
     }
+  }else{
+    d_model = new quantifiers::FirstOrderModelIG( this, c, "FirstOrderModelIG" );
   }
-
 }
 
 QuantifiersModule * QuantifiersEngine::getOwner( Node q ) {
@@ -358,29 +357,49 @@ void QuantifiersEngine::presolve() {
   }
 }
 
-void QuantifiersEngine::ppNotifyAssertions( std::vector< Node >& assertions ) {
-  Trace("quant-engine-proc") << "ppNotifyAssertions in QE, #assertions = " << assertions.size() << " check epr = " << (d_qepr!=NULL) << std::endl;
-  if( ( options::instLevelInputOnly() && options::instMaxLevel()!=-1 ) || d_qepr!=NULL ){
-    for( unsigned i=0; i<assertions.size(); i++ ) {
-      if( options::instLevelInputOnly() && options::instMaxLevel()!=-1 ){
-        setInstantiationLevelAttr( assertions[i], 0 );
+void QuantifiersEngine::ppNotifyAssertions(
+    const std::vector<Node>& assertions) {
+  Trace("quant-engine-proc")
+      << "ppNotifyAssertions in QE, #assertions = " << assertions.size()
+      << " check epr = " << (d_qepr != NULL) << std::endl;
+  if ((options::instLevelInputOnly() && options::instMaxLevel() != -1) ||
+      d_qepr != NULL) {
+    for (unsigned i = 0; i < assertions.size(); i++) {
+      if (options::instLevelInputOnly() && options::instMaxLevel() != -1) {
+        setInstantiationLevelAttr(assertions[i], 0);
       }
-      if( d_qepr!=NULL ){
-        d_qepr->registerAssertion( assertions[i] );
+      if (d_qepr != NULL) {
+        d_qepr->registerAssertion(assertions[i]);
       }
     }
-    if( d_qepr!=NULL ){
-      //must handle sources of other new constants e.g. separation logic
-      //FIXME: cleanup
-      ((sep::TheorySep*)getTheoryEngine()->theoryOf( THEORY_SEP ))->initializeBounds();
-      d_qepr->finishInit(); 
+    if (d_qepr != NULL) {
+      // must handle sources of other new constants e.g. separation logic
+      // FIXME: cleanup
+      sep::TheorySep* theory_sep =
+          static_cast<sep::TheorySep*>(getTheoryEngine()->theoryOf(THEORY_SEP));
+      theory_sep->initializeBounds();
+      d_qepr->finishInit();
     }
   }
 }
 
 void QuantifiersEngine::check( Theory::Effort e ){
   CodeTimer codeTimer(d_statistics.d_time);
-  if( !getMasterEqualityEngine()->consistent() ){
+  d_useModelEe = options::quantModelEe() && ( e>=Theory::EFFORT_LAST_CALL );
+  // if we want to use the model's equality engine, build the model now
+  if( d_useModelEe && !d_model->isBuilt() ){
+    Trace("quant-engine-debug") << "Build the model." << std::endl;
+    if( !d_te->getModelBuilder()->buildModel( d_model ) ){
+      //we are done if model building was unsuccessful
+      flushLemmas();
+      if( d_hasAddedLemma ){
+        Trace("quant-engine-debug") << "...failed." << std::endl;
+        return;
+      }
+    }
+  }
+  
+  if( !getActiveEqualityEngine()->consistent() ){
     Trace("quant-engine-debug") << "Master equality engine not consistent, return." << std::endl;
     return;
   }
@@ -405,7 +424,6 @@ void QuantifiersEngine::check( Theory::Effort e ){
   d_conflict = false;
   d_hasAddedLemma = false;
   bool setIncomplete = false;
-  bool usedModelBuilder = false;
 
   Trace("quant-engine-debug2") << "Quantifiers Engine call to check, level = " << e << ", needsCheck=" << needsCheck << std::endl;
   if( needsCheck ){
@@ -503,20 +521,18 @@ void QuantifiersEngine::check( Theory::Effort e ){
     Trace("quant-engine-debug") << "Check modules that needed check..." << std::endl;
     for( unsigned quant_e = QEFFORT_CONFLICT; quant_e<=QEFFORT_LAST_CALL; quant_e++ ){
       d_curr_effort_level = quant_e;
-      bool success = true;
       //build the model if any module requested it
-      if( needsModelE==quant_e ){
-        Assert( d_builder!=NULL );
+      if( needsModelE==quant_e && !d_model->isBuilt() ){
+        // theory engine's model builder is quantifier engine's builder if it has one
+        Assert( !d_builder || d_builder==d_te->getModelBuilder() );
         Trace("quant-engine-debug") << "Build model..." << std::endl;
-        usedModelBuilder = true;
-        d_builder->d_addedLemmas = 0;
-        d_builder->buildModel( d_model, false );
-        //we are done if model building was unsuccessful
-        if( d_builder->d_addedLemmas>0 ){
-          success = false;
+        if( !d_te->getModelBuilder()->buildModel( d_model ) ){
+          //we are done if model building was unsuccessful
+          Trace("quant-engine-debug") << "...added lemmas." << std::endl;
+          flushLemmas();
         }
       }
-      if( success ){
+      if( !d_hasAddedLemma ){
         //check each module
         for( unsigned i=0; i<qm.size(); i++ ){
           Trace("quant-engine-debug") << "Check " << qm[i]->identify().c_str() << " at effort " << quant_e << "..." << std::endl;
@@ -526,9 +542,9 @@ void QuantifiersEngine::check( Theory::Effort e ){
             break;
           }
         }
+        //flush all current lemmas
+        flushLemmas();
       }
-      //flush all current lemmas
-      flushLemmas();
       //if we have added one, stop
       if( d_hasAddedLemma ){
         break;
@@ -625,13 +641,12 @@ void QuantifiersEngine::check( Theory::Effort e ){
   //SAT case
   if( e==Theory::EFFORT_LAST_CALL && !d_hasAddedLemma ){
     if( options::produceModels() ){
-      if( usedModelBuilder ){
-        Trace("quant-engine-debug") << "Build completed model..." << std::endl;
-        d_builder->buildModel( d_model, true );
-      }else if( !d_model->isModelSet() ){
+      if( d_model->isBuilt() ){
+        Trace("quant-engine-debug") << "Already built model using model builder, finish..." << std::endl;
+      }else{
         //use default model builder when no module built the model
-        Trace("quant-engine-debug") << "Build the model..." << std::endl;
-        d_te->getModelBuilder()->buildModel( d_model, true );
+        Trace("quant-engine-debug") << "Build the default model..." << std::endl;
+        d_te->getModelBuilder()->buildModel( d_model );
         Trace("quant-engine-debug") << "Done building the model." << std::endl;
       }
     }
@@ -918,32 +933,37 @@ void QuantifiersEngine::setInstantiationLevelAttr( Node n, uint64_t level ){
   }
 }
 
-Node QuantifiersEngine::getSubstitute( Node n, std::vector< Node >& terms ){
-  if( n.getKind()==INST_CONSTANT ){
-    Debug("check-inst") << "Substitute inst constant : " << n << std::endl;
-    return terms[n.getAttribute(InstVarNumAttribute())];
-  }else{
-    //if( !quantifiers::TermDb::hasInstConstAttr( n ) ){
-      //Debug("check-inst") << "No inst const attr : " << n << std::endl;
-      //return n;
-    //}else{
-      //Debug("check-inst") << "Recurse on : " << n << std::endl;
-    std::vector< Node > cc;
-    if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
-      cc.push_back( n.getOperator() );
-    }
-    bool changed = false;
-    for( unsigned i=0; i<n.getNumChildren(); i++ ){
-      Node c = getSubstitute( n[i], terms );
-      cc.push_back( c );
-      changed = changed || c!=n[i];
-    }
-    if( changed ){
-      Node ret = NodeManager::currentNM()->mkNode( n.getKind(), cc );
-      return ret;
+Node QuantifiersEngine::getSubstitute( Node n, std::vector< Node >& terms, std::map< Node, Node >& visited ){
+  std::map< Node, Node >::iterator itv = visited.find( n );
+  if( itv==visited.end() ){
+    Node ret = n;
+    if( n.getKind()==INST_CONSTANT ){
+      Debug("check-inst") << "Substitute inst constant : " << n << std::endl;
+      ret = terms[n.getAttribute(InstVarNumAttribute())];
     }else{
-      return n;
+      //if( !quantifiers::TermDb::hasInstConstAttr( n ) ){
+        //Debug("check-inst") << "No inst const attr : " << n << std::endl;
+        //return n;
+      //}else{
+        //Debug("check-inst") << "Recurse on : " << n << std::endl;
+      std::vector< Node > cc;
+      if( n.getMetaKind() == kind::metakind::PARAMETERIZED ){
+        cc.push_back( n.getOperator() );
+      }
+      bool changed = false;
+      for( unsigned i=0; i<n.getNumChildren(); i++ ){
+        Node c = getSubstitute( n[i], terms, visited );
+        cc.push_back( c );
+        changed = changed || c!=n[i];
+      }
+      if( changed ){
+        ret = NodeManager::currentNM()->mkNode( n.getKind(), cc );
+      }
     }
+    visited[n] = ret;
+    return ret;
+  }else{
+    return itv->second;
   }
 }
 
@@ -973,7 +993,8 @@ Node QuantifiersEngine::getInstantiation( Node q, std::vector< Node >& vars, std
     }else{
       //do optimized version
       Node icb = d_term_db->getInstConstantBody( q );
-      body = getSubstitute( icb, terms );
+      std::map< Node, Node > visited;
+      body = getSubstitute( icb, terms, visited );
       if( Debug.isOn("check-inst") ){
         Node body2 = q[ 1 ].substitute( vars.begin(), vars.end(), terms.begin(), terms.end() );
         if( body!=body2 ){
@@ -1084,7 +1105,7 @@ bool QuantifiersEngine::addInstantiation( Node q, std::vector< Node >& terms, bo
     }
     if( mkRep ){
       //pick the best possible representative for instantiation, based on past use and simplicity of term
-      terms[i] = d_eq_query->getInternalRepresentative( terms[i], q, i );
+      terms[i] = getInternalRepresentative( terms[i], q, i );
     }else{
       //ensure the type is correct
       terms[i] = quantifiers::TermDb::ensureType( terms[i], q[0][i].getType() );
@@ -1178,6 +1199,16 @@ bool QuantifiersEngine::addInstantiation( Node q, std::vector< Node >& terms, bo
   //construct the lemma
   Trace("inst-assert") << "(assert " << body << ")" << std::endl;
   body = Rewriter::rewrite(body);
+  
+  if( d_useModelEe && options::instNoModelTrue() ){
+    Node val_body = d_model->getValue( body );
+    if( val_body==d_term_db->d_true ){
+      Trace("inst-add-debug") << " --> True in model." << std::endl;
+      ++(d_statistics.d_inst_duplicate_model_true);
+      return false;
+    }
+  }
+  
   Node lem;
   if( rlv_cond.empty() ){
     lem = NodeManager::currentNM()->mkNode( kind::OR, q.negate(), body );
@@ -1226,8 +1257,7 @@ bool QuantifiersEngine::addInstantiation( Node q, std::vector< Node >& terms, bo
       for( unsigned j=0; j<d_inst_notify.size(); j++ ){
         if( !d_inst_notify[j]->notifyInstantiation( d_curr_effort_level, q, lem, terms, body ) ){
           Trace("inst-add-debug") << "...we are in conflict." << std::endl;
-          d_conflict = true;
-          d_conflict_c = true;
+          setConflict();
           Assert( !d_lemmas_waiting.empty() );
           break;
         }
@@ -1295,6 +1325,11 @@ void QuantifiersEngine::markRelevant( Node q ) {
   d_model->markRelevant( q );
 }
 
+void QuantifiersEngine::setConflict() { 
+  d_conflict = true; 
+  d_conflict_c = true; 
+}
+
 bool QuantifiersEngine::getInstWhenNeedsCheck( Theory::Effort e ) {
   Trace("quant-engine-debug2") << "Get inst when needs check, counts=" << d_ierCounter << ", " << d_ierCounter_lc << std::endl;
   //determine if we should perform check, based on instWhenMode
@@ -1571,6 +1606,7 @@ QuantifiersEngine::Statistics::Statistics()
       d_inst_duplicate("QuantifiersEngine::Duplicate_Inst", 0),
       d_inst_duplicate_eq("QuantifiersEngine::Duplicate_Inst_Eq", 0),
       d_inst_duplicate_ent("QuantifiersEngine::Duplicate_Inst_Entailed", 0),
+      d_inst_duplicate_model_true("QuantifiersEngine::Duplicate_Inst_Model_True", 0),
       d_triggers("QuantifiersEngine::Triggers", 0),
       d_simple_triggers("QuantifiersEngine::Triggers_Simple", 0),
       d_multi_triggers("QuantifiersEngine::Triggers_Multi", 0),
@@ -1596,6 +1632,7 @@ QuantifiersEngine::Statistics::Statistics()
   smtStatisticsRegistry()->registerStat(&d_inst_duplicate);
   smtStatisticsRegistry()->registerStat(&d_inst_duplicate_eq);
   smtStatisticsRegistry()->registerStat(&d_inst_duplicate_ent);
+  smtStatisticsRegistry()->registerStat(&d_inst_duplicate_model_true);
   smtStatisticsRegistry()->registerStat(&d_triggers);
   smtStatisticsRegistry()->registerStat(&d_simple_triggers);
   smtStatisticsRegistry()->registerStat(&d_multi_triggers);
@@ -1623,6 +1660,7 @@ QuantifiersEngine::Statistics::~Statistics(){
   smtStatisticsRegistry()->unregisterStat(&d_inst_duplicate);
   smtStatisticsRegistry()->unregisterStat(&d_inst_duplicate_eq);
   smtStatisticsRegistry()->unregisterStat(&d_inst_duplicate_ent);
+  smtStatisticsRegistry()->unregisterStat(&d_inst_duplicate_model_true);
   smtStatisticsRegistry()->unregisterStat(&d_triggers);
   smtStatisticsRegistry()->unregisterStat(&d_simple_triggers);
   smtStatisticsRegistry()->unregisterStat(&d_multi_triggers);
@@ -1640,11 +1678,27 @@ QuantifiersEngine::Statistics::~Statistics(){
 }
 
 eq::EqualityEngine* QuantifiersEngine::getMasterEqualityEngine(){
-  return getTheoryEngine()->getMasterEqualityEngine();
+  return d_te->getMasterEqualityEngine();
+}
+
+eq::EqualityEngine* QuantifiersEngine::getActiveEqualityEngine() {
+  if( d_useModelEe ){
+    return d_model->d_equalityEngine;
+  }else{
+    return d_te->getMasterEqualityEngine();
+  }
+}
+
+Node QuantifiersEngine::getInternalRepresentative( Node a, Node q, int index ){
+  bool prevModelEe = d_useModelEe;
+  d_useModelEe = false;
+  Node ret = d_eq_query->getInternalRepresentative( a, q, index );
+  d_useModelEe = prevModelEe;
+  return ret;
 }
 
 void QuantifiersEngine::debugPrintEqualityEngine( const char * c ) {
-  eq::EqualityEngine* ee = getMasterEqualityEngine();
+  eq::EqualityEngine* ee = getActiveEqualityEngine();
   eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( ee );
   std::map< TypeNode, int > typ_num;
   while( !eqcs_i.isFinished() ){
@@ -1922,7 +1976,7 @@ void EqualityQueryQuantifiersEngine::flattenRepresentatives( std::map< TypeNode,
 }
 
 eq::EqualityEngine* EqualityQueryQuantifiersEngine::getEngine(){
-  return d_qe->getMasterEqualityEngine();
+  return d_qe->getActiveEqualityEngine();
 }
 
 void EqualityQueryQuantifiersEngine::getEquivalenceClass( Node a, std::vector< Node >& eqc ){
diff --git a/src/theory/quantifiers_engine.h b/src/theory/quantifiers_engine.h
index 150b394..92dfcda 100644
--- a/src/theory/quantifiers_engine.h
+++ b/src/theory/quantifiers_engine.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -39,11 +39,6 @@ namespace theory {
 
 class QuantifiersEngine;
 
-namespace quantifiers {
-  class TermDb;
-  class TermDbSygus;
-}
-
 class InstantiationNotify {
 public:
   InstantiationNotify(){}
@@ -53,6 +48,8 @@ public:
 };
 
 namespace quantifiers {
+  class TermDb;
+  class TermDbSygus;
   class FirstOrderModel;
   //modules
   class InstantiationEngine;
@@ -165,6 +162,8 @@ private:  //this information is reset during check
   context::CDO< bool > d_conflict_c;
   /** has added lemma this round */
   bool d_hasAddedLemma;
+  /** whether to use model equality engine */
+  bool d_useModelEe;
 private:
   /** list of all quantifiers seen */
   std::map< Node, bool > d_quants;
@@ -280,7 +279,7 @@ public:
   /** presolve */
   void presolve();
   /** notify preprocessed assertion */
-  void ppNotifyAssertions( std::vector< Node >& assertions );
+  void ppNotifyAssertions(const std::vector<Node>& assertions);
   /** check at level */
   void check( Theory::Effort e );
   /** notify that theories were combined */
@@ -306,9 +305,9 @@ private:
   bool removeInstantiationInternal( Node q, std::vector< Node >& terms );
   /** set instantiation level attr */
   static void setInstantiationLevelAttr( Node n, Node qn, uint64_t level );
-public:
   /** flush lemmas */
   void flushLemmas();
+public:
   /** get instantiation */
   Node getInstantiation( Node q, std::vector< Node >& vars, std::vector< Node >& terms, bool doVts = false );
   /** get instantiation */
@@ -316,7 +315,7 @@ public:
   /** get instantiation */
   Node getInstantiation( Node q, std::vector< Node >& terms, bool doVts = false );
   /** do substitution */
-  Node getSubstitute( Node n, std::vector< Node >& terms );
+  Node getSubstitute( Node n, std::vector< Node >& terms, std::map< Node, Node >& visited );
   /** add lemma lem */
   bool addLemma( Node lem, bool doCache = true, bool doRewrite = true );
   /** remove pending lemma */
@@ -341,6 +340,8 @@ public:
   bool hasAddedLemma() { return !d_lemmas_waiting.empty() || d_hasAddedLemma; }
   /** is in conflict */
   bool inConflict() { return d_conflict; }
+  /** set conflict */
+  void setConflict();
   /** get number of waiting lemmas */
   unsigned getNumLemmasWaiting() { return d_lemmas_waiting.size(); }
   /** get needs check */
@@ -366,9 +367,13 @@ public:
   void eqNotifyPostMerge(TNode t1, TNode t2);
   void eqNotifyDisequal(TNode t1, TNode t2, TNode reason);
   /** get the master equality engine */
-  eq::EqualityEngine* getMasterEqualityEngine() ;
+  eq::EqualityEngine* getMasterEqualityEngine();
+  /** get the active equality engine */
+  eq::EqualityEngine* getActiveEqualityEngine();
   /** debug print equality engine */
   void debugPrintEqualityEngine( const char * c );
+  /** get internal representative */
+  Node getInternalRepresentative( Node a, Node q, int index );
 public:
   /** print instantiations */
   void printInstantiations( std::ostream& out );
@@ -402,6 +407,7 @@ public:
     IntStat d_inst_duplicate;
     IntStat d_inst_duplicate_eq;
     IntStat d_inst_duplicate_ent;
+    IntStat d_inst_duplicate_model_true;
     IntStat d_triggers;
     IntStat d_simple_triggers;
     IntStat d_multi_triggers;
diff --git a/src/theory/rep_set.cpp b/src/theory/rep_set.cpp
index c308b9c..cd1fac2 100644
--- a/src/theory/rep_set.cpp
+++ b/src/theory/rep_set.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/rep_set.h b/src/theory/rep_set.h
index 9368d36..41044b5 100644
--- a/src/theory/rep_set.h
+++ b/src/theory/rep_set.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/rewriter.cpp b/src/theory/rewriter.cpp
index 0df1225..27ab761 100644
--- a/src/theory/rewriter.cpp
+++ b/src/theory/rewriter.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Dejan Jovanovic, Morgan Deters, Liana Hadarean
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/rewriter.h b/src/theory/rewriter.h
index aed93a4..ba8b12f 100644
--- a/src/theory/rewriter.h
+++ b/src/theory/rewriter.h
@@ -2,9 +2,9 @@
 /*! \file rewriter.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Tim King
+ **   Dejan Jovanovic, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/rewriter_attributes.h b/src/theory/rewriter_attributes.h
index 5f709de..ec120ff 100644
--- a/src/theory/rewriter_attributes.h
+++ b/src/theory/rewriter_attributes.h
@@ -2,9 +2,9 @@
 /*! \file rewriter_attributes.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Tim King
+ **   Dejan Jovanovic, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/rewriter_tables_template.h b/src/theory/rewriter_tables_template.h
index 4d41c02..9ea9a96 100644
--- a/src/theory/rewriter_tables_template.h
+++ b/src/theory/rewriter_tables_template.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Dejan Jovanovic, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/sep/kinds b/src/theory/sep/kinds
index 358c63f..b83515d 100644
--- a/src/theory/sep/kinds
+++ b/src/theory/sep/kinds
@@ -12,7 +12,7 @@ properties check propagate presolve getNextDecisionRequest
 
 rewriter ::CVC4::theory::sep::TheorySepRewriter "theory/sep/theory_sep_rewriter.h"
 
-variable SEP_NIL "separation nil"
+nullaryoperator SEP_NIL "separation nil"
 
 operator SEP_EMP 2 "separation empty heap"
 operator SEP_PTO 2 "points to relation"
@@ -25,5 +25,6 @@ typerule SEP_PTO ::CVC4::theory::sep::SepPtoTypeRule
 typerule SEP_STAR ::CVC4::theory::sep::SepStarTypeRule
 typerule SEP_WAND ::CVC4::theory::sep::SepWandTypeRule
 typerule SEP_LABEL ::CVC4::theory::sep::SepLabelTypeRule
+typerule SEP_NIL ::CVC4::theory::sep::SepNilTypeRule
 
 endtheory
diff --git a/src/theory/sep/theory_sep.cpp b/src/theory/sep/theory_sep.cpp
index 4f31f10..93d4124 100644
--- a/src/theory/sep/theory_sep.cpp
+++ b/src/theory/sep/theory_sep.cpp
@@ -1,13 +1,13 @@
 /*********************                                                        */
 /*! \file theory_sep.cpp
  ** \verbatim
- ** Original author: Andrew Reynolds
- ** Major contributors: none
- ** Minor contributors (to current version): none
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Tim King, Mathias Preiner
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2014  New York University and The University of Iowa
- ** See the file COPYING in the top-level source directory for licensing
- ** information.\endverbatim
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
  **
  ** \brief Implementation of the theory of sep.
  **
@@ -200,7 +200,7 @@ void TheorySep::computeCareGraph() {
 /////////////////////////////////////////////////////////////////////////////
 
 
-void TheorySep::collectModelInfo( TheoryModel* m, bool fullModel ){
+void TheorySep::collectModelInfo( TheoryModel* m ){
   set<Node> termSet;
 
   // Compute terms appearing in assertions and shared terms
@@ -881,18 +881,20 @@ TypeNode TheorySep::getDataType( Node n ) {
   return d_type_data;
 }
 
-//must process assertions at preprocess so that quantified assertions are processed properly
-void TheorySep::ppNotifyAssertions( std::vector< Node >& assertions ) {
-  std::map< int, std::map< Node, int > > visited;
-  std::map< int, std::map< Node, std::vector< Node > > > references;
-  std::map< int, std::map< Node, bool > > references_strict;
-  for( unsigned i=0; i<assertions.size(); i++ ){
+// Must process assertions at preprocess so that quantified assertions are
+// processed properly.
+void TheorySep::ppNotifyAssertions(const std::vector<Node>& assertions) {
+  std::map<int, std::map<Node, int> > visited;
+  std::map<int, std::map<Node, std::vector<Node> > > references;
+  std::map<int, std::map<Node, bool> > references_strict;
+  for (unsigned i = 0; i < assertions.size(); i++) {
     Trace("sep-pp") << "Process assertion : " << assertions[i] << std::endl;
-    processAssertion( assertions[i], visited, references, references_strict, true, true, false );
+    processAssertion(assertions[i], visited, references, references_strict,
+                     true, true, false);
   }
-  //if data type is unconstrained, assume a fresh uninterpreted sort
-  if( !d_type_ref.isNull() ){
-    if( d_type_data.isNull() ){
+  // if data type is unconstrained, assume a fresh uninterpreted sort
+  if (!d_type_ref.isNull()) {
+    if (d_type_data.isNull()) {
       d_type_data = NodeManager::currentNM()->mkSort("_sep_U");
       Trace("sep-type") << "Sep: assume data type " << d_type_data << std::endl;
       d_loc_to_data_type[d_type_ref] = d_type_data;
@@ -1224,7 +1226,7 @@ Node TheorySep::getBaseLabel( TypeNode tn ) {
 Node TheorySep::getNilRef( TypeNode tn ) {
   std::map< TypeNode, Node >::iterator it = d_nil_ref.find( tn );
   if( it==d_nil_ref.end() ){
-    Node nil = NodeManager::currentNM()->mkUniqueVar( tn, kind::SEP_NIL );
+    Node nil = NodeManager::currentNM()->mkNullaryOperator( tn, kind::SEP_NIL );
     setNilRef( tn, nil );
     return nil;
   }else{
diff --git a/src/theory/sep/theory_sep.h b/src/theory/sep/theory_sep.h
index 816f91c..1786584 100644
--- a/src/theory/sep/theory_sep.h
+++ b/src/theory/sep/theory_sep.h
@@ -1,13 +1,13 @@
 /*********************                                                        */
 /*! \file theory_sep.h
  ** \verbatim
- ** Original author: Andrew Reynolds
- ** Major contributors: Dejan Jovanovic, Clark Barrett
- ** Minor contributors (to current version): Tim King, Andrew Reynolds
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Mathias Preiner, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2014  New York University and The University of Iowa
- ** See the file COPYING in the top-level source directory for licensing
- ** information.\endverbatim
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
  **
  ** \brief Theory of sep
  **
@@ -79,8 +79,8 @@ class TheorySep : public Theory {
 
   PPAssertStatus ppAssert(TNode in, SubstitutionMap& outSubstitutions);
   Node ppRewrite(TNode atom);
-  
-  void ppNotifyAssertions( std::vector< Node >& assertions );
+
+  void ppNotifyAssertions(const std::vector<Node>& assertions);
   /////////////////////////////////////////////////////////////////////////////
   // T-PROPAGATION / REGISTRATION
   /////////////////////////////////////////////////////////////////////////////
@@ -110,7 +110,7 @@ class TheorySep : public Theory {
 
   public:
 
-  void collectModelInfo(TheoryModel* m, bool fullModel);
+  void collectModelInfo(TheoryModel* m);
   void postProcessModel(TheoryModel* m);
 
   /////////////////////////////////////////////////////////////////////////////
diff --git a/src/theory/sep/theory_sep_rewriter.cpp b/src/theory/sep/theory_sep_rewriter.cpp
index 8e9939f..513eada 100644
--- a/src/theory/sep/theory_sep_rewriter.cpp
+++ b/src/theory/sep/theory_sep_rewriter.cpp
@@ -1,13 +1,13 @@
 /*********************                                                        */
 /*! \file theory_sep_rewriter.cpp
  ** \verbatim
- ** Original author: Andrew Reynolds
- ** Major contributors: none
- ** Minor contributors (to current version): none
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Mathias Preiner
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2014  New York University and The University of Iowa
- ** See the file COPYING in the top-level source directory for licensing
- ** information.\endverbatim
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
  **
  ** \brief [[ Add one-line brief description here ]]
  **
@@ -164,7 +164,7 @@ RewriteResponse TheorySepRewriter::postRewrite(TNode node) {
 Node TheorySepRewriter::preSkolemEmp( Node n, bool pol, std::map< bool, std::map< Node, Node > >& visited ) {
   std::map< Node, Node >::iterator it = visited[pol].find( n );
   if( it==visited[pol].end() ){
-    Trace("ajr-temp") << "Pre-skolem emp " << n << " with pol " << pol << std::endl;
+    Trace("sep-preprocess") << "Pre-skolem emp " << n << " with pol " << pol << std::endl;
     Node ret = n;
     if( n.getKind()==kind::SEP_EMP ){
       if( !pol ){
diff --git a/src/theory/sep/theory_sep_rewriter.h b/src/theory/sep/theory_sep_rewriter.h
index 58b79c7..61b2ee3 100644
--- a/src/theory/sep/theory_sep_rewriter.h
+++ b/src/theory/sep/theory_sep_rewriter.h
@@ -1,13 +1,13 @@
 /*********************                                                        */
 /*! \file theory_sep_rewriter.h
  ** \verbatim
- ** Original author: Andrew Reynolds
- ** Major contributors: none
- ** Minor contributors (to current version): none
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Mathias Preiner
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2014  New York University and The University of Iowa
- ** See the file COPYING in the top-level source directory for licensing
- ** information.\endverbatim
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
  **
  ** \brief [[ Add one-line brief description here ]]
  **
diff --git a/src/theory/sep/theory_sep_type_rules.h b/src/theory/sep/theory_sep_type_rules.h
index 23e725a..e9177e0 100644
--- a/src/theory/sep/theory_sep_type_rules.h
+++ b/src/theory/sep/theory_sep_type_rules.h
@@ -1,13 +1,13 @@
 /*********************                                                        */
 /*! \file theory_sep_type_rules.h
  ** \verbatim
- ** Original author: Andrew Reynolds
- ** Major contributors: none
- ** Minor contributors (to current version): none
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Mathias Preiner
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2014  New York University and The University of Iowa
- ** See the file COPYING in the top-level source directory for licensing
- ** information.\endverbatim
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
  **
  ** \brief Typing and cardinality rules for the theory of sep
  **
@@ -99,6 +99,17 @@ struct SepLabelTypeRule {
   }
 };/* struct SepLabelTypeRule */
 
+struct SepNilTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::SEP_NIL);
+    Assert(check);
+    TypeNode type = n.getType();
+    return type;
+  }
+};/* struct SepLabelTypeRule */
+
+
 }/* CVC4::theory::sep namespace */
 }/* CVC4::theory namespace */
 }/* CVC4 namespace */
diff --git a/src/theory/sets/kinds b/src/theory/sets/kinds
index ab0ca34..34fef7d 100644
--- a/src/theory/sets/kinds
+++ b/src/theory/sets/kinds
@@ -44,11 +44,14 @@ operator SINGLETON     1  "the set of the single element given as a parameter"
 operator INSERT        2: "set obtained by inserting elements (first N-1 parameters) into a set (the last parameter)"
 operator CARD          1  "set cardinality operator"
 operator COMPLEMENT    1  "set COMPLEMENT (with respect to finite universe)"
+nullaryoperator UNIVERSE_SET "(finite) universe set, all set variables must be interpreted as subsets of it."
 
 operator JOIN 		   2  "set join"
 operator PRODUCT 	   2  "set cartesian product"
 operator TRANSPOSE 	   1  "set transpose"
 operator TCLOSURE      1  "set transitive closure"
+operator JOIN_IMAGE	   2  "set join image"
+operator IDEN 	   	   1  "set identity"
 
 typerule UNION          ::CVC4::theory::sets::SetsBinaryOperatorTypeRule
 typerule INTERSECTION   ::CVC4::theory::sets::SetsBinaryOperatorTypeRule
@@ -60,13 +63,14 @@ typerule EMPTYSET       ::CVC4::theory::sets::EmptySetTypeRule
 typerule INSERT         ::CVC4::theory::sets::InsertTypeRule
 typerule CARD           ::CVC4::theory::sets::CardTypeRule
 typerule COMPLEMENT     ::CVC4::theory::sets::ComplementTypeRule
+typerule UNIVERSE_SET   ::CVC4::theory::sets::UniverseSetTypeRule
 
 typerule JOIN 			::CVC4::theory::sets::RelBinaryOperatorTypeRule
 typerule PRODUCT 		::CVC4::theory::sets::RelBinaryOperatorTypeRule
 typerule TRANSPOSE 		::CVC4::theory::sets::RelTransposeTypeRule
 typerule TCLOSURE 	    ::CVC4::theory::sets::RelTransClosureTypeRule
-
-variable UNIVERSE_SET "(finite) universe set, all set variables must be interpreted as subsets of it."
+typerule JOIN_IMAGE	    ::CVC4::theory::sets::JoinImageTypeRule
+typerule IDEN 			::CVC4::theory::sets::RelIdenTypeRule
 
 construle UNION         ::CVC4::theory::sets::SetsBinaryOperatorTypeRule
 construle INTERSECTION  ::CVC4::theory::sets::SetsBinaryOperatorTypeRule
@@ -80,5 +84,7 @@ construle JOIN 			::CVC4::theory::sets::RelBinaryOperatorTypeRule
 construle PRODUCT 		::CVC4::theory::sets::RelBinaryOperatorTypeRule
 construle TRANSPOSE 	::CVC4::theory::sets::RelTransposeTypeRule
 construle TCLOSURE 	    ::CVC4::theory::sets::RelTransClosureTypeRule
+construle JOIN_IMAGE 	::CVC4::theory::sets::JoinImageTypeRule
+construle IDEN 			::CVC4::theory::sets::RelIdenTypeRule
 
 endtheory
diff --git a/src/theory/sets/normal_form.h b/src/theory/sets/normal_form.h
index 6379fb2..bb715ff 100644
--- a/src/theory/sets/normal_form.h
+++ b/src/theory/sets/normal_form.h
@@ -2,9 +2,9 @@
 /*! \file normal_form.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Kshitij Bansal, Tim King
+ **   Kshitij Bansal, Tim King, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/sets/rels_utils.h b/src/theory/sets/rels_utils.h
index df14bf5..5f4c7d7 100644
--- a/src/theory/sets/rels_utils.h
+++ b/src/theory/sets/rels_utils.h
@@ -1,13 +1,13 @@
 /*********************                                                        */
 /*! \file rels_utils.h
  ** \verbatim
- ** Original author: Paul Meng
- ** Major contributors: none
- ** Minor contributors (to current version): none
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Mathias Preiner
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2014  New York University and The University of Iowa
- ** See the file COPYING in the top-level source directory for licensing
- ** information.\endverbatim
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
  **
  ** \brief Sets theory implementation.
  **
diff --git a/src/theory/sets/theory_sets.cpp b/src/theory/sets/theory_sets.cpp
index 52afe05..4992f65 100644
--- a/src/theory/sets/theory_sets.cpp
+++ b/src/theory/sets/theory_sets.cpp
@@ -2,9 +2,9 @@
 /*! \file theory_sets.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Kshitij Bansal, Tim King, Morgan Deters
+ **   Kshitij Bansal, Andrew Reynolds, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -39,15 +39,19 @@ void TheorySets::addSharedTerm(TNode n) {
 }
 
 void TheorySets::check(Effort e) {
-  if (done() && !fullEffort(e)) {
+  if (done() && e < Theory::EFFORT_FULL) {
     return;
   }
   TimerStat::CodeTimer checkTimer(d_checkTime);
   d_internal->check(e);
 }
 
-void TheorySets::collectModelInfo(TheoryModel* m, bool fullModel) {
-  d_internal->collectModelInfo(m, fullModel);
+bool TheorySets::needsCheckLastEffort() {
+  return d_internal->needsCheckLastEffort();
+}
+
+void TheorySets::collectModelInfo(TheoryModel* m) {
+  d_internal->collectModelInfo(m);
 }
 
 void TheorySets::computeCareGraph() {
@@ -70,6 +74,10 @@ void TheorySets::preRegisterTerm(TNode node) {
   d_internal->preRegisterTerm(node);
 }
 
+Theory::PPAssertStatus TheorySets::ppAssert(TNode in, SubstitutionMap& outSubstitutions) {
+  return d_internal->ppAssert( in, outSubstitutions );
+}
+
 void TheorySets::presolve() {
   d_internal->presolve();
 }
diff --git a/src/theory/sets/theory_sets.h b/src/theory/sets/theory_sets.h
index 2ebb994..bbc6ae0 100644
--- a/src/theory/sets/theory_sets.h
+++ b/src/theory/sets/theory_sets.h
@@ -2,9 +2,9 @@
 /*! \file theory_sets.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Kshitij Bansal, Tim King
+ **   Kshitij Bansal, Paul Meng, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -49,8 +49,10 @@ public:
   void addSharedTerm(TNode);
 
   void check(Effort);
+  
+  bool needsCheckLastEffort();
 
-  void collectModelInfo(TheoryModel*, bool fullModel);
+  void collectModelInfo(TheoryModel* m);
 
   void computeCareGraph();
 
@@ -64,6 +66,8 @@ public:
 
   void preRegisterTerm(TNode node);
 
+  PPAssertStatus ppAssert(TNode in, SubstitutionMap& outSubstitutions);
+
   void presolve();
 
   void propagate(Effort);
diff --git a/src/theory/sets/theory_sets_private.cpp b/src/theory/sets/theory_sets_private.cpp
index e53fec0..f70db98 100644
--- a/src/theory/sets/theory_sets_private.cpp
+++ b/src/theory/sets/theory_sets_private.cpp
@@ -2,9 +2,9 @@
 /*! \file theory_sets_private.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Kshitij Bansal, Tim King, Andrew Reynolds
+ **   Andrew Reynolds, Kshitij Bansal, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -48,6 +48,7 @@ TheorySetsPrivate::TheorySetsPrivate(TheorySets& external,
   d_proxy_to_term(u),
   d_lemmas_produced(u),
   d_card_processed(u),
+  d_var_elim(u),
   d_external(external),
   d_notify(*this),
   d_equalityEngine(d_notify, c, "theory::sets::TheorySetsPrivate", true),
@@ -156,7 +157,7 @@ void TheorySetsPrivate::eqNotifyPostMerge(TNode t1, TNode t2){
         }
         if( add ){
           if( !s1.isNull() && s2.isNull() ){
-            Assert( m2[1].getType()==s1.getType() );
+            Assert( m2[1].getType().isComparableTo( s1.getType() ) );
             Assert( ee_areEqual( m2[1], s1 ) );
             Node exp = NodeManager::currentNM()->mkNode( kind::AND, m2[1].eqNode( s1 ), m2 );
             if( s1.getKind()==kind::SINGLETON ){
@@ -243,6 +244,18 @@ bool TheorySetsPrivate::ee_areDisequal( Node a, Node b ) {
   }
 }
 
+bool TheorySetsPrivate::ee_areCareDisequal( Node a, Node b ) {
+  if( d_equalityEngine.isTriggerTerm(a, THEORY_SETS) && d_equalityEngine.isTriggerTerm(b, THEORY_SETS) ){
+    TNode a_shared = d_equalityEngine.getTriggerTermRepresentative(a, THEORY_SETS);
+    TNode b_shared = d_equalityEngine.getTriggerTermRepresentative(b, THEORY_SETS);
+    EqualityStatus eqStatus = d_external.d_valuation.getEqualityStatus(a_shared, b_shared);
+    if( eqStatus==EQUALITY_FALSE_AND_PROPAGATED || eqStatus==EQUALITY_FALSE || eqStatus==EQUALITY_FALSE_IN_MODEL ){
+      return true;
+    }
+  }
+  return false;
+}
+
 bool TheorySetsPrivate::isEntailed( Node n, bool polarity ) {
   if( n.getKind()==kind::NOT ){
     return isEntailed( n[0], !polarity );
@@ -332,7 +345,7 @@ bool TheorySetsPrivate::isSetDisequalityEntailed( Node r1, Node r2 ) {
                 break;
               }
             }
-            //TODO: this can be generalized : maintain map to abstract domain ( set -> cardinality )
+          //TODO: this can be generalized : maintain map to abstract domain ( set -> cardinality )
           //if a has positive member that is negative member in b 
           }else if( itpmb!=d_pol_mems[1].end() ){
             for( std::map< Node, Node >::iterator itnm = itpmb->second.begin(); itnm != itpmb->second.end(); ++itnm ){
@@ -505,6 +518,7 @@ void TheorySetsPrivate::fullEffortCheck(){
     Assert( d_equalityEngine.consistent() );
     d_sentLemma = false;
     d_addedFact = false;
+    d_full_check_incomplete = false;
     d_set_eqc.clear();
     d_set_eqc_list.clear();
     d_eqc_emptyset.clear();
@@ -512,6 +526,9 @@ void TheorySetsPrivate::fullEffortCheck(){
     d_eqc_singleton.clear();
     d_congruent.clear();
     d_nvar_sets.clear();
+    d_var_set.clear();
+    d_most_common_type.clear();
+    d_most_common_type_term.clear();
     d_pol_mems[0].clear();
     d_pol_mems[1].clear();
     d_members_index.clear();
@@ -529,9 +546,14 @@ void TheorySetsPrivate::fullEffortCheck(){
       Node eqc = (*eqcs_i);
       bool isSet = false;
       TypeNode tn = eqc.getType();
+      //common type node and term
+      TypeNode tnc;
+      Node tnct;
       if( tn.isSet() ){
         isSet = true;
         d_set_eqc.push_back( eqc );
+        tnc = tn.getSetElementType();
+        tnct = eqc;
       }
       Trace("sets-eqc") << "[" << eqc << "] : ";
       eq::EqClassIterator eqc_i = eq::EqClassIterator( eqc, &d_equalityEngine );
@@ -540,6 +562,17 @@ void TheorySetsPrivate::fullEffortCheck(){
         if( n!=eqc ){
           Trace("sets-eqc") << n << " ";
         }
+        TypeNode tnn = n.getType();
+        if( isSet ){
+          Assert( tnn.isSet() );
+          TypeNode tnnel = tnn.getSetElementType();
+          tnc = TypeNode::mostCommonTypeNode( tnc, tnnel );
+          Assert( !tnc.isNull() );
+          //update the common type term
+          if( tnc==tnnel ){
+            tnct = n;
+          }
+        }
         if( n.getKind()==kind::MEMBER ){
           if( eqc.isConst() ){
             Node s = d_equalityEngine.getRepresentative( n[1] );
@@ -572,9 +605,15 @@ void TheorySetsPrivate::fullEffortCheck(){
               d_congruent[n] = d_singleton_index[r];
             }
           }else if( n.getKind()==kind::EMPTYSET ){
-            d_eqc_emptyset[tn] = eqc;
+            d_eqc_emptyset[tnn] = eqc;
           }else if( n.getKind()==kind::UNIVERSE_SET ){
-            d_eqc_univset[tn] = eqc;
+            if( options::setsExt() ){
+              d_eqc_univset[tnn] = eqc;
+            }else{
+              std::stringstream ss;
+              ss << "Symbols complement and universe set are not supported in default mode, try --sets-ext." << std::endl;
+              throw LogicException(ss.str());
+            }
           }else{
             Node r1 = d_equalityEngine.getRepresentative( n[0] );
             Node r2 = d_equalityEngine.getRepresentative( n[1] );
@@ -590,8 +629,8 @@ void TheorySetsPrivate::fullEffortCheck(){
           d_set_eqc_list[eqc].push_back( n );
         }else if( n.getKind()==kind::CARD ){
           d_card_enabled = true;
-          TypeNode tn = n[0].getType().getSetElementType();
-          if( tn.isInterpretedFinite() ){
+          TypeNode tnc = n[0].getType().getSetElementType();
+          if( tnc.isInterpretedFinite() ){
             std::stringstream ss;
             ss << "ERROR: cannot use cardinality on sets with finite element type." << std::endl;
             throw LogicException(ss.str());
@@ -608,10 +647,20 @@ void TheorySetsPrivate::fullEffortCheck(){
           }
           if( isSet ){
             d_set_eqc_list[eqc].push_back( n );
+            if( n.getKind()==kind::VARIABLE ){
+              if( d_var_set.find( eqc )==d_var_set.end() ){
+                d_var_set[eqc] = n;
+              }
+            }
           }
         }
         ++eqc_i;
       }
+      if( isSet ){
+        Assert( tnct.getType().getSetElementType()==tnc );
+        d_most_common_type[eqc] = tnc;
+        d_most_common_type_term[eqc] = tnct;
+      }
       Trace("sets-eqc") << std::endl;
       ++eqcs_i;
     }
@@ -636,46 +685,50 @@ void TheorySetsPrivate::fullEffortCheck(){
           Trace("sets-mem") << std::endl;
         }
       }
-    
-      checkDownwardsClosure( lemmas );
-      if( options::setsInferAsLemmas() ){
-        flushLemmas( lemmas );
-      }
+      checkSubtypes( lemmas );
+      flushLemmas( lemmas, true );
       if( !hasProcessed() ){
-        checkUpwardsClosure( lemmas );
-        flushLemmas( lemmas );
+      
+        checkDownwardsClosure( lemmas );
+        if( options::setsInferAsLemmas() ){
+          flushLemmas( lemmas );
+        }
         if( !hasProcessed() ){
-          std::vector< Node > intro_sets;
-          //for cardinality
-          if( d_card_enabled ){
-            checkCardBuildGraph( lemmas );
-            flushLemmas( lemmas );
-            if( !hasProcessed() ){
-              checkMinCard( lemmas );
+          checkUpwardsClosure( lemmas );
+          flushLemmas( lemmas );
+          if( !hasProcessed() ){
+            std::vector< Node > intro_sets;
+            //for cardinality
+            if( d_card_enabled ){
+              checkCardBuildGraph( lemmas );
               flushLemmas( lemmas );
               if( !hasProcessed() ){
-                checkCardCycles( lemmas );
+                checkMinCard( lemmas );
                 flushLemmas( lemmas );
                 if( !hasProcessed() ){
-                  checkNormalForms( lemmas, intro_sets );
+                  checkCardCycles( lemmas );
                   flushLemmas( lemmas );
+                  if( !hasProcessed() ){
+                    checkNormalForms( lemmas, intro_sets );
+                    flushLemmas( lemmas );
+                  }
                 }
               }
             }
-          }
-          if( !hasProcessed() ){
-            checkDisequalities( lemmas );
-            flushLemmas( lemmas );
             if( !hasProcessed() ){
-              //introduce splitting on venn regions (absolute last resort)
-              if( d_card_enabled && !hasProcessed() && !intro_sets.empty() ){
-                Assert( intro_sets.size()==1 );
-                Trace("sets-intro") << "Introduce term : " << intro_sets[0] << std::endl;
-                Trace("sets-intro") << "  Actual Intro : ";
-                debugPrintSet( intro_sets[0], "sets-nf" );
-                Trace("sets-nf") << std::endl;
-                Node k = getProxy( intro_sets[0] );
-                d_sentLemma = true;
+              checkDisequalities( lemmas );
+              flushLemmas( lemmas );
+              if( !hasProcessed() ){
+                //introduce splitting on venn regions (absolute last resort)
+                if( d_card_enabled && !hasProcessed() && !intro_sets.empty() ){
+                  Assert( intro_sets.size()==1 );
+                  Trace("sets-intro") << "Introduce term : " << intro_sets[0] << std::endl;
+                  Trace("sets-intro") << "  Actual Intro : ";
+                  debugPrintSet( intro_sets[0], "sets-nf" );
+                  Trace("sets-nf") << std::endl;
+                  Node k = getProxy( intro_sets[0] );
+                  d_sentLemma = true;
+                }
               }
             }
           }
@@ -686,6 +739,36 @@ void TheorySetsPrivate::fullEffortCheck(){
   Trace("sets") << "----- End full effort check, conflict=" << d_conflict << ", lemma=" << d_sentLemma << std::endl;
 }
 
+void TheorySetsPrivate::checkSubtypes( std::vector< Node >& lemmas ) {
+ for( unsigned i=0; i<d_set_eqc.size(); i++ ){
+    Node s = d_set_eqc[i];
+    TypeNode mct = d_most_common_type[s];
+    std::map< Node, std::map< Node, Node > >::iterator it = d_pol_mems[0].find( s );
+    if( it!=d_pol_mems[0].end() ){
+      for( std::map< Node, Node >::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2 ){
+        if( !it2->first.getType().isSubtypeOf( mct ) ){          
+          Node mctt = d_most_common_type_term[s];
+          std::vector< Node > exp;
+          exp.push_back( it2->second );
+          Assert( ee_areEqual( mctt, it2->second[1] ) );
+          exp.push_back( mctt.eqNode( it2->second[1] ) );
+          Node etc = TypeNode::getEnsureTypeCondition( it2->first, mct );
+          if( !etc.isNull() ){
+            assertInference( etc, exp, lemmas, "subtype-clash" );
+            if( d_conflict ){
+              return;
+            } 
+          }else{
+            // very strange situation : we have a member in a set that is not a subtype, and we do not have a type condition for it
+            d_full_check_incomplete = true;
+            Trace("sets-incomplete") << "Sets : incomplete because of unknown type constraint." << std::endl;
+          }
+        }
+      }
+    }
+  }
+}
+
 void TheorySetsPrivate::checkDownwardsClosure( std::vector< Node >& lemmas ) {
   Trace("sets") << "Downwards closure..." << std::endl;
   //downwards closure
@@ -746,6 +829,7 @@ void TheorySetsPrivate::checkUpwardsClosure( std::vector< Node >& lemmas ) {
           Node r2 = it2->first;
           //see if there are members in second argument
           std::map< Node, std::map< Node, Node > >::iterator itm2 = d_pol_mems[0].find( r2 );
+          std::map< Node, std::map< Node, Node > >::iterator itm2n = d_pol_mems[1].find( r2 );
           if( itm2!=d_pol_mems[0].end() || k!=kind::INTERSECTION ){
             Trace("sets-debug") << "Checking " << it2->second << ", members = " << (itm1!=d_pol_mems[0].end()) << ", " << (itm2!=d_pol_mems[0].end()) << std::endl;
             //for all members of r1
@@ -770,6 +854,14 @@ void TheorySetsPrivate::checkUpwardsClosure( std::vector< Node >& lemmas ) {
                     addEqualityToExp( it2->second[1], itm2->second[xr][1], exp );
                     addEqualityToExp( x, itm2->second[xr][0], exp );
                     valid = true;
+                  }else{
+                    // if not, check whether it is definitely not a member, if unknown, split
+                    bool not_in_r2 = itm2n!=d_pol_mems[1].end() && itm2n->second.find( xr )!=itm2n->second.end();
+                    if( !not_in_r2 ){
+                      exp.push_back( NodeManager::currentNM()->mkNode( kind::MEMBER, x, it2->second[1] ) );
+                      valid = true;
+                      inferType = 1;
+                    }
                   }
                 }else{
                   Assert( k==kind::SETMINUS );
@@ -841,20 +933,45 @@ void TheorySetsPrivate::checkUpwardsClosure( std::vector< Node >& lemmas ) {
     }
   }
   if( !hasProcessed() ){
-    //universal sets
-    Trace("sets-debug") << "Check universe sets..." << std::endl;
-    //all elements must be in universal set
-    for( std::map< Node, std::map< Node, Node > >::iterator it = d_pol_mems[0].begin(); it != d_pol_mems[0].end(); ++it ){
-      TypeNode tn = it->first.getType();
-      std::map< TypeNode, Node >::iterator itu = d_eqc_univset.find( tn );
-      if( itu==d_eqc_univset.end() || itu->second!=it->first ){
-        Node u = getUnivSet( tn );
-        for( std::map< Node, Node >::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2 ){
-          Node mem = it2->second;
-          Node fact = NodeManager::currentNM()->mkNode( kind::MEMBER, mem[0], u );
-          assertInference( fact, mem, lemmas, "upuniv" );
-          if( d_conflict ){
-            return;
+    if( options::setsExt() ){
+      //universal sets
+      Trace("sets-debug") << "Check universe sets..." << std::endl;
+      //all elements must be in universal set
+      for( std::map< Node, std::map< Node, Node > >::iterator it = d_pol_mems[0].begin(); it != d_pol_mems[0].end(); ++it ){
+        //if equivalence class contains a variable
+        std::map< Node, Node >::iterator itv = d_var_set.find( it->first );
+        if( itv!=d_var_set.end() ){
+          //the variable in the equivalence class
+          Node v = itv->second;
+          std::map< TypeNode, Node > univ_set;
+          for( std::map< Node, Node >::iterator it2 = it->second.begin(); it2 != it->second.end(); ++it2 ){
+            Node e = it2->second[0];
+            TypeNode tn = NodeManager::currentNM()->mkSetType( e.getType() );
+            Node u;
+            std::map< TypeNode, Node >::iterator itu = univ_set.find( tn );
+            if( itu==univ_set.end() ){
+              std::map< TypeNode, Node >::iterator itu = d_eqc_univset.find( tn );
+              // if the universe does not yet exist, or is not in this equivalence class
+              if( itu==d_eqc_univset.end() || itu->second!=it->first ){
+                u = getUnivSet( tn );
+              }
+              univ_set[tn] = u;
+            }else{
+              u = itu->second;
+            }
+            if( !u.isNull() ){
+              Assert( it2->second.getKind()==kind::MEMBER );
+              std::vector< Node > exp;
+              exp.push_back( it2->second );
+              if( v!=it2->second[1] ){
+                exp.push_back( v.eqNode( it2->second[1] ) );
+              }
+              Node fact = NodeManager::currentNM()->mkNode( kind::MEMBER, it2->second[0], u );
+              assertInference( fact, exp, lemmas, "upuniv" );
+              if( d_conflict ){
+                return;
+              }
+            }
           }
         }
       }
@@ -1455,22 +1572,24 @@ void TheorySetsPrivate::checkMinCard( std::vector< Node >& lemmas ) {
   }
 }
 
-void TheorySetsPrivate::flushLemmas( std::vector< Node >& lemmas ) {
-  //do lemmas
+void TheorySetsPrivate::flushLemmas( std::vector< Node >& lemmas, bool preprocess ) {
   for( unsigned i=0; i<lemmas.size(); i++ ){
-    Node lem = lemmas[i];
-    if( d_lemmas_produced.find(lem)==d_lemmas_produced.end() ){
-      Trace("sets-lemma-debug") << "Send lemma : " << lem << std::endl;
-      d_lemmas_produced.insert(lem);
-      d_external.d_out->lemma(lem);
-      d_sentLemma = true;
-    }else{
-      Trace("sets-lemma-debug") << "Already sent lemma : " << lem << std::endl;
-    }
+    flushLemma( lemmas[i], preprocess );
   }
   lemmas.clear();
 }
 
+void TheorySetsPrivate::flushLemma( Node lem, bool preprocess ) {
+  if( d_lemmas_produced.find(lem)==d_lemmas_produced.end() ){
+    Trace("sets-lemma-debug") << "Send lemma : " << lem << std::endl;
+    d_lemmas_produced.insert(lem);
+    d_external.d_out->lemma(lem, false, preprocess);
+    d_sentLemma = true;
+  }else{
+    Trace("sets-lemma-debug") << "Already sent lemma : " << lem << std::endl;
+  }
+}
+
 Node TheorySetsPrivate::getProxy( Node n ) {
   if( n.getKind()==kind::EMPTYSET || n.getKind()==kind::SINGLETON || n.getKind()==kind::INTERSECTION || n.getKind()==kind::SETMINUS || n.getKind()==kind::UNION ){
     NodeMap::const_iterator it = d_proxy.find( n );
@@ -1519,7 +1638,24 @@ Node TheorySetsPrivate::getEmptySet( TypeNode tn ) {
 Node TheorySetsPrivate::getUnivSet( TypeNode tn ) {
   std::map< TypeNode, Node >::iterator it = d_univset.find( tn );
   if( it==d_univset.end() ){
-    Node n = NodeManager::currentNM()->mkUniqueVar(tn, kind::UNIVERSE_SET);
+    Node n = NodeManager::currentNM()->mkNullaryOperator(tn, kind::UNIVERSE_SET);
+    for( it = d_univset.begin(); it != d_univset.end(); ++it ){
+      Node n1;
+      Node n2;
+      if( tn.isSubtypeOf( it->first ) ){
+        n1 = n;
+        n2 = it->second;
+      }else if( it->first.isSubtypeOf( tn ) ){
+        n1 = it->second;
+        n2 = n;
+      }
+      if( !n1.isNull() ){
+        Node ulem = NodeManager::currentNM()->mkNode( kind::SUBSET, n1, n2 );
+        Trace("sets-lemma") << "Sets::Lemma : " << ulem << " by univ-type" << std::endl;
+        d_external.d_out->lemma( ulem );
+        d_sentLemma = true;
+      }
+    }
     d_univset[tn] = n;
     return n;
   }else{
@@ -1553,12 +1689,21 @@ void TheorySetsPrivate::debugPrintSet( Node s, const char * c ) {
   }
 }
 
+void TheorySetsPrivate::lastCallEffortCheck() {
+  Trace("sets") << "----- Last call effort check ------" << std::endl;
+
+}
+
 /**************************** TheorySetsPrivate *****************************/
 /**************************** TheorySetsPrivate *****************************/
 /**************************** TheorySetsPrivate *****************************/
 
 void TheorySetsPrivate::check(Theory::Effort level) {
   Trace("sets-check") << "Sets check effort " << level << std::endl;
+  if( level == Theory::EFFORT_LAST_CALL ){
+    lastCallEffortCheck();
+    return;
+  }
   while(!d_external.done() && !d_conflict) {
     // Get all the assertions
     Assertion assertion = d_external.get();
@@ -1577,12 +1722,17 @@ void TheorySetsPrivate::check(Theory::Effort level) {
         if( !d_conflict && !d_sentLemma ){
           //invoke relations solver
           d_rels->check(level);  
-          if( d_card_enabled && d_rels_enabled ){
-            //incomplete if we have both cardinality constraints and relational operators?
+          if( d_card_enabled && ( d_rels_enabled || options::setsExt() ) ){
+            //if cardinality constraints are enabled,
+            //  then model construction may fail in there are relational operators, or universe set.
             // TODO: should internally check model, return unknown if fail
-            d_external.d_out->setIncomplete();
+            d_full_check_incomplete = true;
+            Trace("sets-incomplete") << "Sets : incomplete because of extended operators." << std::endl;
           }
         }
+        if( d_full_check_incomplete ){
+          d_external.d_out->setIncomplete();
+        }
       }
     }else{
       if( options::setsRelEager() ){
@@ -1593,6 +1743,12 @@ void TheorySetsPrivate::check(Theory::Effort level) {
   Trace("sets-check") << "Sets finish Check effort " << level << std::endl;
 }/* TheorySetsPrivate::check() */
 
+bool TheorySetsPrivate::needsCheckLastEffort() {
+  if( !d_var_elim.empty() ){
+    return true;
+  }
+  return false;
+}
 
 /************************ Sharing ************************/
 /************************ Sharing ************************/
@@ -1617,20 +1773,13 @@ void TheorySetsPrivate::addCarePairs( quantifiers::TermArgTrie * t1, quantifiers
           Assert( d_equalityEngine.hasTerm(x) );
           Assert( d_equalityEngine.hasTerm(y) );
           Assert( !ee_areDisequal( x, y ) );
+          Assert( !ee_areCareDisequal( x, y ) );
           if( !d_equalityEngine.areEqual( x, y ) ){
             Trace("sets-cg") << "Arg #" << k << " is " << x << " " << y << std::endl;
             if( d_equalityEngine.isTriggerTerm(x, THEORY_SETS) && d_equalityEngine.isTriggerTerm(y, THEORY_SETS) ){
               TNode x_shared = d_equalityEngine.getTriggerTermRepresentative(x, THEORY_SETS);
               TNode y_shared = d_equalityEngine.getTriggerTermRepresentative(y, THEORY_SETS);
-              Trace("sets-cg") << "Arg #" << k << " shared term is " << x_shared << " " << y_shared << std::endl;
-              EqualityStatus eqStatus = d_external.d_valuation.getEqualityStatus(x_shared, y_shared);
-              Trace("sets-cg") << "...eq status is " << eqStatus << std::endl;
-              if( eqStatus==EQUALITY_FALSE_AND_PROPAGATED || eqStatus==EQUALITY_FALSE || eqStatus==EQUALITY_FALSE_IN_MODEL ){
-                //an argument is disequal, we are done
-                return;
-              }else{
-                currentPairs.push_back(make_pair(x_shared, y_shared));
-              }
+              currentPairs.push_back(make_pair(x_shared, y_shared));
             }else if( isCareArg( f1, k ) && isCareArg( f2, k ) ){
               //splitting on sets (necessary for handling set of sets properly)
               if( x.getType().isSet() ){
@@ -1663,8 +1812,10 @@ void TheorySetsPrivate::addCarePairs( quantifiers::TermArgTrie * t1, quantifiers
         std::map< TNode, quantifiers::TermArgTrie >::iterator it2 = it;
         ++it2;
         for( ; it2 != t1->d_data.end(); ++it2 ){
-          if( !ee_areDisequal(it->first, it2->first) ){
-            addCarePairs( &it->second, &it2->second, arity, depth+1, n_pairs );
+          if( !d_equalityEngine.areDisequal(it->first, it2->first, false) ){
+            if( !ee_areCareDisequal(it->first, it2->first) ){
+              addCarePairs( &it->second, &it2->second, arity, depth+1, n_pairs );
+            }
           }
         }
       }
@@ -1672,8 +1823,10 @@ void TheorySetsPrivate::addCarePairs( quantifiers::TermArgTrie * t1, quantifiers
       //add care pairs based on product of indices, non-disequal arguments
       for( std::map< TNode, quantifiers::TermArgTrie >::iterator it = t1->d_data.begin(); it != t1->d_data.end(); ++it ){
         for( std::map< TNode, quantifiers::TermArgTrie >::iterator it2 = t2->d_data.begin(); it2 != t2->d_data.end(); ++it2 ){
-          if( !ee_areDisequal(it->first, it2->first) ){
-            addCarePairs( &it->second, &it2->second, arity, depth+1, n_pairs );
+          if( !d_equalityEngine.areDisequal(it->first, it2->first, false) ){
+            if( !ee_areCareDisequal(it->first, it2->first) ){
+              addCarePairs( &it->second, &it2->second, arity, depth+1, n_pairs );
+            }
           }
         }
       }
@@ -1705,8 +1858,11 @@ void TheorySetsPrivate::computeCareGraph() {
           }
         }
         if( hasCareArg ){
+          Trace("sets-cg-debug") << "......adding." << std::endl;
           index[tn].addTerm( f1, reps );
           arity = reps.size();
+        }else{
+          Trace("sets-cg-debug") << "......skip." << std::endl;
         }
       }
       if( arity>0 ){
@@ -1764,7 +1920,7 @@ EqualityStatus TheorySetsPrivate::getEqualityStatus(TNode a, TNode b) {
 /******************** Model generation ********************/
 
 
-void TheorySetsPrivate::collectModelInfo(TheoryModel* m, bool fullModel) {
+void TheorySetsPrivate::collectModelInfo(TheoryModel* m) {
   Trace("sets-model") << "Set collect model info" << std::endl;
   set<Node> termSet;
   // Compute terms appearing in assertions and shared terms
@@ -2003,6 +2159,50 @@ void TheorySetsPrivate::preRegisterTerm(TNode node)
 }
 
 
+Theory::PPAssertStatus TheorySetsPrivate::ppAssert(TNode in, SubstitutionMap& outSubstitutions) {
+  Theory::PPAssertStatus status = Theory::PP_ASSERT_STATUS_UNSOLVED;
+  
+  //TODO: allow variable elimination for sets when setsExt = true
+  
+  //this is based off of Theory::ppAssert
+  Node var;
+  if (in.getKind() == kind::EQUAL) {
+    if (in[0].isVar() && !in[1].hasSubterm(in[0]) &&
+        (in[1].getType()).isSubtypeOf(in[0].getType()) ){
+      if( !in[0].getType().isSet() || !options::setsExt() ){
+        outSubstitutions.addSubstitution(in[0], in[1]);
+        var = in[0];
+        status = Theory::PP_ASSERT_STATUS_SOLVED;
+      }
+    }else if (in[1].isVar() && !in[0].hasSubterm(in[1]) &&
+        (in[0].getType()).isSubtypeOf(in[1].getType())){
+      if( !in[1].getType().isSet() || !options::setsExt() ){
+        outSubstitutions.addSubstitution(in[1], in[0]);
+        var = in[1];
+        status = Theory::PP_ASSERT_STATUS_SOLVED;
+      }
+    }else if (in[0].isConst() && in[1].isConst()) {
+      if (in[0] != in[1]) {
+        status = Theory::PP_ASSERT_STATUS_CONFLICT;
+      }
+    }
+  }
+  
+  if( status==Theory::PP_ASSERT_STATUS_SOLVED ){
+    Trace("sets-var-elim") << "Sets : ppAssert variable eliminated : " << in << ", var = " << var << std::endl;
+    /*
+    if( var.getType().isSet() ){
+      //we must ensure that subs is included in the universe set
+      d_var_elim[var] = true;
+    } 
+    */
+    if( options::setsExt() ){
+      Assert( !var.getType().isSet() ); 
+    }
+  }
+  return status;
+}
+  
 void TheorySetsPrivate::presolve() {
 
 }
diff --git a/src/theory/sets/theory_sets_private.h b/src/theory/sets/theory_sets_private.h
index 6d7b57c..7bc17c9 100644
--- a/src/theory/sets/theory_sets_private.h
+++ b/src/theory/sets/theory_sets_private.h
@@ -2,9 +2,9 @@
 /*! \file theory_sets_private.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Kshitij Bansal, Tim King, Andrew Reynolds
+ **   Andrew Reynolds, Kshitij Bansal, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -56,6 +56,7 @@ public:
 private:
   bool ee_areEqual( Node a, Node b );
   bool ee_areDisequal( Node a, Node b );
+  bool ee_areCareDisequal( Node a, Node b );
   NodeIntMap d_members;
   std::map< Node, std::vector< Node > > d_members_data;
   bool assertFact( Node fact, Node exp );
@@ -69,13 +70,15 @@ private:
   // send lemma ( n OR (NOT n) ) immediately
   void split( Node n, int reqPol=0 );
   void fullEffortCheck();
+  void checkSubtypes( std::vector< Node >& lemmas );
   void checkDownwardsClosure( std::vector< Node >& lemmas );
   void checkUpwardsClosure( std::vector< Node >& lemmas );
   void checkDisequalities( std::vector< Node >& lemmas );
   bool isMember( Node x, Node s );
   bool isSetDisequalityEntailed( Node s, Node t );
   
-  void flushLemmas( std::vector< Node >& lemmas );
+  void flushLemmas( std::vector< Node >& lemmas, bool preprocess = false );
+  void flushLemma( Node lem, bool preprocess = false );
   Node getProxy( Node n );
   Node getCongruent( Node n );
   Node getEmptySet( TypeNode tn );
@@ -113,6 +116,7 @@ private:
   
   bool d_sentLemma;
   bool d_addedFact;
+  bool d_full_check_incomplete;
   NodeMap d_proxy;  
   NodeMap d_proxy_to_term;  
   NodeSet d_lemmas_produced;
@@ -126,6 +130,9 @@ private:
   std::map< TypeNode, Node > d_univset;
   std::map< Node, Node > d_congruent;
   std::map< Node, std::vector< Node > > d_nvar_sets;
+  std::map< Node, Node > d_var_set;
+  std::map< Node, TypeNode > d_most_common_type;
+  std::map< Node, Node > d_most_common_type_term;
   std::map< Node, std::map< Node, Node > > d_pol_mems[2];
   std::map< Node, std::map< Node, Node > > d_members_index;
   std::map< Node, Node > d_singleton_index;
@@ -148,6 +155,9 @@ private:
   void checkNormalForms( std::vector< Node >& lemmas, std::vector< Node >& intro_sets );
   void checkNormalForm( Node eqc, std::vector< Node >& intro_sets );
   void checkMinCard( std::vector< Node >& lemmas );
+private: //for universe set
+  NodeBoolMap d_var_elim;
+  void lastCallEffortCheck();
 public:
 
   /**
@@ -165,8 +175,10 @@ public:
   void addSharedTerm(TNode);
 
   void check(Theory::Effort);
+  
+  bool needsCheckLastEffort();
 
-  void collectModelInfo(TheoryModel*, bool fullModel);
+  void collectModelInfo(TheoryModel* m);
 
   void computeCareGraph();
 
@@ -176,6 +188,8 @@ public:
 
   void preRegisterTerm(TNode node);
 
+  Theory::PPAssertStatus ppAssert(TNode in, SubstitutionMap& outSubstitutions);
+  
   void presolve();
 
   void propagate(Theory::Effort);
diff --git a/src/theory/sets/theory_sets_rels.cpp b/src/theory/sets/theory_sets_rels.cpp
index b5b7c90..34c17a3 100644
--- a/src/theory/sets/theory_sets_rels.cpp
+++ b/src/theory/sets/theory_sets_rels.cpp
@@ -1,13 +1,13 @@
 /*********************                                                        */
 /*! \file theory_sets_rels.cpp
  ** \verbatim
- ** Original author: Paul Meng
- ** Major contributors: none
- ** Minor contributors (to current version): none
+ ** Top contributors (to current version):
+ **   Paul Meng, Andrew Reynolds, Mathias Preiner
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2014  New York University and The University of Iowa
- ** See the file COPYING in the top-level source directory for licensing
- ** information.\endverbatim
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
  **
  ** \brief Sets theory implementation.
  **
@@ -31,8 +31,6 @@ typedef std::map< Node, std::hash_set< Node, NodeHashFunction > >::iterator
 typedef std::map< Node, std::map< kind::Kind_t, std::vector< Node > > >::iterator               TERM_IT;
 typedef std::map< Node, std::map< Node, std::hash_set< Node, NodeHashFunction > > >::iterator   TC_IT;
 
-int TheorySetsRels::EqcInfo::counter        = 0;
-
   void TheorySetsRels::check(Theory::Effort level) {
     Trace("rels") << "\n[sets-rels] ******************************* Start the relational solver, effort = " << level << " *******************************\n" << std::endl;
     if(Theory::fullEffort(level)) {
@@ -60,8 +58,6 @@ int TheorySetsRels::EqcInfo::counter        = 0;
 
         if( kind_terms.find(kind::TRANSPOSE) != kind_terms.end() ) {
           std::vector<Node> tp_terms = kind_terms[kind::TRANSPOSE];
-          // exp is a membership term and tp_terms contains all
-          // transposed terms that are equal to the right hand side of exp
           if( tp_terms.size() > 0 ) {
             applyTransposeRule( tp_terms );
             applyTransposeRule( tp_terms[0], rel_rep, exp );
@@ -69,9 +65,6 @@ int TheorySetsRels::EqcInfo::counter        = 0;
         }
         if( kind_terms.find(kind::JOIN) != kind_terms.end() ) {
           std::vector<Node> join_terms = kind_terms[kind::JOIN];
-          // exp is a membership term and join_terms contains all
-          // terms involving "join" operator that are in the same
-          // equivalence class with the right hand side of exp
           for( unsigned int j = 0; j < join_terms.size(); j++ ) {
             applyJoinRule( join_terms[j], rel_rep, exp );
           }
@@ -88,6 +81,18 @@ int TheorySetsRels::EqcInfo::counter        = 0;
             applyTCRule( mem, tc_terms[j], rel_rep, exp );
           }
         }
+        if( kind_terms.find(kind::JOIN_IMAGE) != kind_terms.end() ) {
+          std::vector<Node> join_image_terms = kind_terms[kind::JOIN_IMAGE];
+          for( unsigned int j = 0; j < join_image_terms.size(); j++ ) {
+            applyJoinImageRule( mem, join_image_terms[j], exp );
+          }
+        }
+        if( kind_terms.find(kind::IDEN) != kind_terms.end() ) {
+          std::vector<Node> iden_terms = kind_terms[kind::IDEN];
+          for( unsigned int j = 0; j < iden_terms.size(); j++ ) {
+            applyIdenRule( mem, iden_terms[j], exp );
+          }
+        }
       }
       m_it++;
     }
@@ -117,7 +122,18 @@ int TheorySetsRels::EqcInfo::counter        = 0;
               buildTCGraphForRel( *term_it );
               term_it++;
             }
-
+          } else if( k_t_it->first == kind::JOIN_IMAGE ) {
+            std::vector<Node>::iterator term_it = k_t_it->second.begin();
+            while( term_it != k_t_it->second.end() ) {
+              computeMembersForJoinImageTerm( *term_it );
+              term_it++;
+            }
+          } else if( k_t_it->first == kind::IDEN ) {
+            std::vector<Node>::iterator term_it = k_t_it->second.begin();
+            while( term_it != k_t_it->second.end() ) {
+              computeMembersForIdenTerm( *term_it );
+              term_it++;
+            }
           }
           k_t_it++;
         }
@@ -138,7 +154,7 @@ int TheorySetsRels::EqcInfo::counter        = 0;
       Node                      eqc_rep  = (*eqcs_i);
       eq::EqClassIterator       eqc_i   = eq::EqClassIterator( eqc_rep, d_eqEngine );
 
-      Trace("rels-ee") << "[sets-rels-ee] Eqc term representative: " << eqc_rep << std::endl;
+      Trace("rels-ee") << "[sets-rels-ee] Eqc term representative: " << eqc_rep << " with type " << eqc_rep.getType() << std::endl;
 
       while( !eqc_i.isFinished() ){
         Node eqc_node = (*eqc_i);
@@ -147,8 +163,9 @@ int TheorySetsRels::EqcInfo::counter        = 0;
 
         if( getRepresentative(eqc_rep) == getRepresentative(d_trueNode) ||
             getRepresentative(eqc_rep) == getRepresentative(d_falseNode) ) {
+
           // collect membership info
-          if( eqc_node.getKind() == kind::MEMBER && eqc_node[1].getType().getSetElementType().isTuple() ) {
+          if( eqc_node.getKind() == kind::MEMBER && eqc_node[1].getType().getSetElementType().isTuple()) {
             Node tup_rep = getRepresentative( eqc_node[0] );
             Node rel_rep = getRepresentative( eqc_node[1] );
 
@@ -165,16 +182,13 @@ int TheorySetsRels::EqcInfo::counter        = 0;
                 computeTupleReps(tup_rep);
                 d_membership_trie[rel_rep].addTerm(tup_rep, d_tuple_reps[tup_rep]);
               }
-            } else {
-              if( safelyAddToMap(d_rReps_nonMemberReps_cache, rel_rep, tup_rep) ) {
-                addToMap(d_rReps_nonMemberReps_exp_cache, rel_rep, reason);
-              }
             }
           }
         // collect relational terms info
         } else if( eqc_rep.getType().isSet() && eqc_rep.getType().getSetElementType().isTuple() ) {
           if( eqc_node.getKind() == kind::TRANSPOSE || eqc_node.getKind() == kind::JOIN ||
-              eqc_node.getKind() == kind::PRODUCT || eqc_node.getKind() == kind::TCLOSURE ) {
+              eqc_node.getKind() == kind::PRODUCT || eqc_node.getKind() == kind::TCLOSURE ||
+              eqc_node.getKind() == kind::JOIN_IMAGE || eqc_node.getKind() == kind::IDEN ) {
             std::vector<Node> terms;
             std::map< kind::Kind_t, std::vector<Node> >  rel_terms;
             TERM_IT terms_it = d_terms_cache.find(eqc_rep);
@@ -211,22 +225,221 @@ int TheorySetsRels::EqcInfo::counter        = 0;
     Trace("rels-debug") << "[Theory::Rels] Done with collecting relational terms!" << std::endl;
   }
 
+  /* JOIN-IMAGE UP  :   (x, x1) IS_IN R, ..., (x, xn) IS_IN R  (R JOIN_IMAGE n)
+  *                     -------------------------------------------------------
+  *                     x IS_IN (R JOIN_IMAGE n) || NOT DISTINCT(x1, ... , xn)
+  *
+  */
+
+  void TheorySetsRels::computeMembersForJoinImageTerm( Node join_image_term ) {
+    Trace("rels-debug") << "\n[Theory::Rels] *********** Compute members for JoinImage Term = " << join_image_term << std::endl;
+    MEM_IT rel_mem_it = d_rReps_memberReps_cache.find( getRepresentative( join_image_term[0] ) );
+
+    if( rel_mem_it == d_rReps_memberReps_cache.end() ) {
+      return;
+    }
+
+    Node join_image_rel = join_image_term[0];
+    std::hash_set< Node, NodeHashFunction > hasChecked;
+    Node join_image_rel_rep = getRepresentative( join_image_rel );
+    std::vector< Node >::iterator mem_rep_it = (*rel_mem_it).second.begin();
+    MEM_IT rel_mem_exp_it = d_rReps_memberReps_exp_cache.find( join_image_rel_rep );
+    std::vector< Node >::iterator mem_rep_exp_it = (*rel_mem_exp_it).second.begin();
+    unsigned int min_card = join_image_term[1].getConst<Rational>().getNumerator().getUnsignedInt();
+
+    while( mem_rep_it != (*rel_mem_it).second.end() ) {
+      Node fst_mem_rep = RelsUtils::nthElementOfTuple( *mem_rep_it, 0 );
+
+      if( hasChecked.find( fst_mem_rep ) != hasChecked.end() ) {
+        ++mem_rep_it;
+        ++mem_rep_exp_it;
+        continue;
+      }
+      hasChecked.insert( fst_mem_rep );
+
+      Datatype dt = join_image_term.getType().getSetElementType().getDatatype();
+      Node new_membership = NodeManager::currentNM()->mkNode(kind::MEMBER,
+                                                             NodeManager::currentNM()->mkNode( kind::APPLY_CONSTRUCTOR,
+                                                                                               Node::fromExpr(dt[0].getConstructor()), fst_mem_rep ),
+                                                             join_image_term);
+      if( holds( new_membership ) ) {
+        ++mem_rep_it;
+        ++mem_rep_exp_it;
+        continue;
+      }
+
+      std::vector< Node > reasons;
+      std::vector< Node > existing_members;
+      std::vector< Node >::iterator mem_rep_exp_it_snd = (*rel_mem_exp_it).second.begin();
+
+      while( mem_rep_exp_it_snd != (*rel_mem_exp_it).second.end() ) {
+        Node fst_element_snd_mem = RelsUtils::nthElementOfTuple( (*mem_rep_exp_it_snd)[0], 0 );
+
+        if( areEqual( fst_mem_rep,  fst_element_snd_mem ) ) {
+          bool notExist = true;
+          std::vector< Node >::iterator existing_mem_it = existing_members.begin();
+          Node snd_element_snd_mem = RelsUtils::nthElementOfTuple( (*mem_rep_exp_it_snd)[0], 1 );
+
+          while( existing_mem_it != existing_members.end() ) {
+            if( areEqual( (*existing_mem_it), snd_element_snd_mem ) ) {
+              notExist = false;
+              break;
+            }
+            ++existing_mem_it;
+          }
+
+          if( notExist ) {
+            existing_members.push_back( snd_element_snd_mem );
+            reasons.push_back( *mem_rep_exp_it_snd );
+            if( fst_mem_rep != fst_element_snd_mem ) {
+              reasons.push_back( NodeManager::currentNM()->mkNode( kind::EQUAL, fst_mem_rep, fst_element_snd_mem ) );
+            }
+            if( join_image_rel != (*mem_rep_exp_it_snd)[1] ) {
+              reasons.push_back( NodeManager::currentNM()->mkNode( kind::EQUAL, (*mem_rep_exp_it_snd)[1], join_image_rel ));
+            }
+            if( existing_members.size() == min_card ) {
+              if( min_card >= 2) {
+                new_membership = NodeManager::currentNM()->mkNode( kind::OR, new_membership, NodeManager::currentNM()->mkNode( kind::NOT, NodeManager::currentNM()->mkNode( kind::DISTINCT, existing_members ) ));
+              }
+              Assert(reasons.size() >= 1);
+              sendInfer( new_membership, reasons.size() > 1 ? NodeManager::currentNM()->mkNode( kind::AND, reasons) : reasons[0], "JOIN-IMAGE UP" );
+              break;
+            }
+          }
+        }
+        ++mem_rep_exp_it_snd;
+      }
+      ++mem_rep_it;
+      ++mem_rep_exp_it;
+    }
+    Trace("rels-debug") << "\n[Theory::Rels] *********** Done with computing members for JoinImage Term" << join_image_term << "*********** " << std::endl;
+  }
+
+  /* JOIN-IMAGE DOWN  : (x) IS_IN (R JOIN_IMAGE n)
+  *                     -------------------------------------------------------
+  *                     (x, x1) IS_IN R .... (x, xn) IS_IN R  DISTINCT(x1, ... , xn)
+  *
+  */
+
+  void TheorySetsRels::applyJoinImageRule( Node mem_rep, Node join_image_term, Node exp ) {
+    Trace("rels-debug") << "\n[Theory::Rels] *********** applyJoinImageRule on " << join_image_term
+                        << " with mem_rep = " << mem_rep  << " and exp = " << exp << std::endl;
+    if( d_rel_nodes.find( join_image_term ) == d_rel_nodes.end() ) {
+      computeMembersForJoinImageTerm( join_image_term );
+      d_rel_nodes.insert( join_image_term );
+    }
+
+    Node join_image_rel = join_image_term[0];
+    Node join_image_rel_rep = getRepresentative( join_image_rel );
+    MEM_IT rel_mem_it = d_rReps_memberReps_cache.find( join_image_rel_rep );
+    unsigned int min_card = join_image_term[1].getConst<Rational>().getNumerator().getUnsignedInt();
+
+    if( rel_mem_it != d_rReps_memberReps_cache.end() ) {
+      if( d_membership_trie.find( join_image_rel_rep ) != d_membership_trie.end() ) {
+        computeTupleReps( mem_rep );
+        if( d_membership_trie[join_image_rel_rep].findSuccessors(d_tuple_reps[mem_rep]).size() >= min_card ) {
+          return;
+        }
+      }
+    }
+
+    Node reason = exp;
+    Node conclusion = d_trueNode;
+    std::vector< Node > distinct_skolems;
+    Node fst_mem_element = RelsUtils::nthElementOfTuple( exp[0], 0 );
+
+    if( exp[1] != join_image_term ) {
+      reason = NodeManager::currentNM()->mkNode( kind::AND, reason, NodeManager::currentNM()->mkNode( kind::EQUAL, exp[1], join_image_term ) );
+    }
+    for( unsigned int i = 0; i < min_card; i++ ) {
+      Node skolem = NodeManager::currentNM()->mkSkolem( "jig", join_image_rel.getType()[0].getTupleTypes()[0] );
+      distinct_skolems.push_back( skolem );
+      conclusion = NodeManager::currentNM()->mkNode( kind::AND, conclusion, NodeManager::currentNM()->mkNode( kind::MEMBER, RelsUtils::constructPair( join_image_rel, fst_mem_element, skolem ), join_image_rel ) );
+    }
+    if( distinct_skolems.size() >= 2 ) {
+      conclusion =  NodeManager::currentNM()->mkNode( kind::AND, conclusion, NodeManager::currentNM()->mkNode( kind::DISTINCT, distinct_skolems ) );
+    }
+    sendInfer( conclusion, reason, "JOIN-IMAGE DOWN" );
+    Trace("rels-debug") << "\n[Theory::Rels] *********** Done with applyJoinImageRule ***********" << std::endl;
+
+  }
+
+
+  /* IDENTITY-DOWN  : (x, y) IS_IN IDEN(R)
+  *               -------------------------------------------------------
+  *                   x = y,  (x IS_IN R)
+  *
+  */
+
+  void TheorySetsRels::applyIdenRule( Node mem_rep, Node iden_term, Node exp) {
+    Trace("rels-debug") << "\n[Theory::Rels] *********** applyIdenRule on " << iden_term
+                        << " with mem_rep = " << mem_rep  << " and exp = " << exp << std::endl;
+    if( d_rel_nodes.find( iden_term ) == d_rel_nodes.end() ) {
+      computeMembersForIdenTerm( iden_term );
+      d_rel_nodes.insert( iden_term );
+    }
+    Node reason = exp;
+    Node fst_mem = RelsUtils::nthElementOfTuple( exp[0], 0 );
+    Node snd_mem = RelsUtils::nthElementOfTuple( exp[0], 1 );
+    Datatype dt = iden_term[0].getType().getSetElementType().getDatatype();
+    Node fact = NodeManager::currentNM()->mkNode( kind::MEMBER, NodeManager::currentNM()->mkNode( kind::APPLY_CONSTRUCTOR, Node::fromExpr(dt[0].getConstructor()), fst_mem ), iden_term[0] );
+
+    if( exp[1] != iden_term ) {
+      reason = NodeManager::currentNM()->mkNode( kind::AND, reason, NodeManager::currentNM()->mkNode( kind::EQUAL, exp[1], iden_term ) );
+    }
+    sendInfer( NodeManager::currentNM()->mkNode( kind::AND, fact, NodeManager::currentNM()->mkNode( kind::EQUAL, fst_mem, snd_mem ) ), reason, "IDENTITY-DOWN" );
+    Trace("rels-debug") << "\n[Theory::Rels] *********** Done with applyIdenRule on " << iden_term << std::endl;
+  }
+
+  /* IDEN UP  : (x) IS_IN R        IDEN(R) IN T
+  *             --------------------------------
+  *                   (x, x) IS_IN IDEN(R)
+  *
+  */
+
+  void TheorySetsRels::computeMembersForIdenTerm( Node iden_term ) {
+    Trace("rels-debug") << "\n[Theory::Rels] *********** Compute members for Iden Term = " << iden_term << std::endl;
+    Node iden_term_rel = iden_term[0];
+    Node iden_term_rel_rep = getRepresentative( iden_term_rel );
+
+    if( d_rReps_memberReps_cache.find( iden_term_rel_rep ) == d_rReps_memberReps_cache.end() ) {
+      return;
+    }
+
+    MEM_IT rel_mem_exp_it = d_rReps_memberReps_exp_cache.find( iden_term_rel_rep );
+    std::vector< Node >::iterator mem_rep_exp_it = (*rel_mem_exp_it).second.begin();
+
+    while( mem_rep_exp_it != (*rel_mem_exp_it).second.end() ) {
+      Node reason = *mem_rep_exp_it;
+      Node fst_exp_mem = RelsUtils::nthElementOfTuple( (*mem_rep_exp_it)[0], 0 );
+      Node new_mem = RelsUtils::constructPair( iden_term, fst_exp_mem, fst_exp_mem );
+
+      if( (*mem_rep_exp_it)[1] != iden_term_rel ) {
+        reason = NodeManager::currentNM()->mkNode( kind::AND, reason, NodeManager::currentNM()->mkNode( kind::EQUAL, (*mem_rep_exp_it)[1], iden_term_rel ) );
+      }
+      sendInfer( NodeManager::currentNM()->mkNode( kind::MEMBER, new_mem, iden_term ), reason, "IDENTITY-UP" );
+      ++mem_rep_exp_it;
+    }
+    Trace("rels-debug") << "\n[Theory::Rels] *********** Done with computing members for Iden Term = " << iden_term << std::endl;
+  }
+
+
   /*
    * Construct transitive closure graph for tc_rep based on the members of tc_r_rep
    */
 
   /*
+   * TCLOSURE TCLOSURE(x) = x | x.x | x.x.x | ... (| is union)
    *
-   *
-   * transitive closure rule 1:   y = (TCLOSURE x)
-   *                           ---------------------------------------------
-   *                              y = x | x.x | x.x.x | ... (| is union)
+   * TCLOSURE-UP I:   (a, b) IS_IN x            TCLOSURE(x) in T
+   *              ---------------------------------------------
+   *                              (a, b) IS_IN TCLOSURE(x)
    *
    *
    *
-   * transitive closure rule 2:   TCLOSURE(x)
-   *                            -----------------------------------------------------------
-   *                              x <= TCLOSURE(x) && (x JOIN x) <= TCLOSURE(x) ....
+   * TCLOSURE-UP II : (a, b) IS_IN TCLOSURE(x)  (b, c) IS_IN TCLOSURE(x)
+   *              -----------------------------------------------------------
+   *                            (a, c) IS_IN TCLOSURE(x)
    *
    */
   void TheorySetsRels::applyTCRule( Node mem_rep, Node tc_rel, Node tc_rel_rep, Node exp ) {
@@ -435,7 +648,7 @@ int TheorySetsRels::EqcInfo::counter        = 0;
     if( cur_set != tc_graph.end() ) {
       for( std::hash_set< Node, NodeHashFunction >::iterator set_it = cur_set->second.begin();
            set_it != cur_set->second.end(); set_it++ ) {
-        Node new_pair = constructPair( tc_rel, cur_node_rep, *set_it );
+        Node new_pair = RelsUtils::constructPair( tc_rel, cur_node_rep, *set_it );
         std::vector< Node > new_reasons( reasons );
         new_reasons.push_back( rel_tc_graph_exps.find( new_pair )->second );
         doTCInference( tc_rel, new_reasons, tc_graph, rel_tc_graph_exps, start_node_rep, *set_it, seen );
@@ -491,7 +704,7 @@ int TheorySetsRels::EqcInfo::counter        = 0;
     Node fact_2   = NodeManager::currentNM()->mkNode(kind::MEMBER, mem2, pt_rel[1]);
 
     if( pt_rel != exp[1] ) {
-      reason = NodeManager::currentNM()->mkNode(kind::AND, exp, explain(NodeManager::currentNM()->mkNode(kind::EQUAL, pt_rel, exp[1])));
+      reason = NodeManager::currentNM()->mkNode(kind::AND, exp, NodeManager::currentNM()->mkNode(kind::EQUAL, pt_rel, exp[1]));
     }
     sendInfer( fact_1, reason, "product-split" );
     sendInfer( fact_2, reason, "product-split" );
@@ -549,6 +762,7 @@ int TheorySetsRels::EqcInfo::counter        = 0;
     computeTupleReps(mem2);
 
     std::vector<Node> elements = d_membership_trie[r1_rep].findTerms(d_tuple_reps[mem1]);
+
     for(unsigned int j = 0; j < elements.size(); j++) {
       std::vector<Node> new_tup;
       new_tup.push_back(elements[j]);
@@ -569,18 +783,14 @@ int TheorySetsRels::EqcInfo::counter        = 0;
   }
 
   /*
-   * transpose-occur rule:   [NOT] (a, b) IS_IN X   (TRANSPOSE X) occurs
-   *                         -------------------------------------------------------
-   *                         [NOT] (b, a) IS_IN (TRANSPOSE X)
+   * transpose-occur rule:    (a, b) IS_IN X   (TRANSPOSE X) in T
+   *                         ---------------------------------------
+   *                            (b, a) IS_IN (TRANSPOSE X)
    *
-   * transpose-reverse rule:    [NOT] (a, b) IS_IN (TRANSPOSE X)
-   *                         ------------------------------------------------
-   *                            [NOT] (b, a) IS_IN X
+   * transpose-reverse rule:    (a, b) IS_IN (TRANSPOSE X)
+   *                         ---------------------------------------
+   *                            (b, a) IS_IN X
    *
-   * Not implemented yet!
-   * transpose-equal rule:   [NOT]  (TRANSPOSE X) = (TRANSPOSE Y)
-   *                         -----------------------------------------------
-   *                         [NOT]  (X = Y)
    */
   void TheorySetsRels::applyTransposeRule( std::vector<Node> tp_terms ) {
     if( tp_terms.size() < 1) {
@@ -809,9 +1019,6 @@ int TheorySetsRels::EqcInfo::counter        = 0;
     doTCLemmas();
     Trace("rels-debug") << "[Theory::Rels] **************** Done with doPendingLemmas !" << std::endl;
     d_tuple_reps.clear();
-//    d_id_node.clear();
-//    d_node_id.clear();
-    d_tuple_reps.clear();
     d_rReps_memberReps_exp_cache.clear();
     d_terms_cache.clear();
     d_lemmas_out.clear();
@@ -824,9 +1031,12 @@ int TheorySetsRels::EqcInfo::counter        = 0;
     d_tcr_tcGraph.clear();
     d_tc_lemmas_last.clear();
   }
+
+
   bool TheorySetsRels::isRelationKind( Kind k ) {
     return k == kind::TRANSPOSE || k == kind::PRODUCT || k == kind::JOIN || k == kind::TCLOSURE;
   }
+
   void TheorySetsRels::doTCLemmas() {
     Trace("rels-debug") << "[Theory::Rels] **************** Start doTCLemmas !" << std::endl;
     std::map< Node, std::vector< Node > >::iterator tc_lemma_it = d_tc_lemmas_last.begin();
@@ -971,11 +1181,6 @@ int TheorySetsRels::EqcInfo::counter        = 0;
     }
   }
 
-  inline Node TheorySetsRels::constructPair(Node tc_rep, Node a, Node b) {
-    Datatype dt = tc_rep.getType().getSetElementType().getDatatype();
-    return NodeManager::currentNM()->mkNode(kind::APPLY_CONSTRUCTOR, Node::fromExpr(dt[0].getConstructor()), a, b);
-  }
-
   /*
    * Node n[0] is a tuple variable, reduce n[0] to a concrete representation,
    * which is (e1, ..., en) where e1, ... ,en are concrete elements of tuple n[0].
@@ -1003,7 +1208,6 @@ int TheorySetsRels::EqcInfo::counter        = 0;
                                   eq::EqualityEngine* eq,
                                   context::CDO<bool>* conflict,
                                   TheorySets& d_set ):
-    d_vec_size(c),
     d_eqEngine(eq),
     d_conflict(conflict),
     d_sets_theory(d_set),
@@ -1017,6 +1221,8 @@ int TheorySetsRels::EqcInfo::counter        = 0;
     d_eqEngine->addFunctionKind(kind::JOIN);
     d_eqEngine->addFunctionKind(kind::TRANSPOSE);
     d_eqEngine->addFunctionKind(kind::TCLOSURE);
+    d_eqEngine->addFunctionKind(kind::JOIN_IMAGE);
+    d_eqEngine->addFunctionKind(kind::IDEN);
   }
 
   TheorySetsRels::~TheorySetsRels() {
@@ -1051,6 +1257,27 @@ int TheorySetsRels::EqcInfo::counter        = 0;
     }
   }
 
+  std::vector<Node> TupleTrie::findSuccessors( std::vector< Node >& reps, int argIndex ) {
+    std::vector<Node>   nodes;
+    std::map< Node, TupleTrie >::iterator it;
+
+    if( argIndex==(int)reps.size() ){
+      it = d_data.begin();
+      while(it != d_data.end()) {
+        nodes.push_back(it->first);
+        it++;
+      }
+      return nodes;
+    }else{
+      it = d_data.find( reps[argIndex] );
+      if( it==d_data.end() ){
+        return nodes;
+      }else{
+        return it->second.findSuccessors( reps, argIndex+1 );
+      }
+    }
+  }
+
   Node TupleTrie::existsTerm( std::vector< Node >& reps, int argIndex ) {
     if( argIndex==(int)reps.size() ){
       if( d_data.empty() ){        
@@ -1090,403 +1317,273 @@ int TheorySetsRels::EqcInfo::counter        = 0;
     }
   }
 
-  Node TheorySetsRels::explain( Node literal ){
-    //use lazy explanations
-    return literal;
-  }
-
   TheorySetsRels::EqcInfo::EqcInfo( context::Context* c ) :
-  d_mem(c), d_mem_exp(c), d_in(c), d_out(c),
-  d_tp(c), d_pt(c), d_join(c), d_tc(c) {}
-
-  // Create an integer id for tuple element
-  int TheorySetsRels::getOrMakeElementRepId(EqcInfo* ei, Node e_rep) {
-    Trace("rels-std") << "[sets-rels] getOrMakeElementRepId:" << " e_rep = " << e_rep << std::endl;
-    std::map< Node, int >::iterator nid_it  = d_node_id.find(e_rep);
-
-    if( nid_it == d_node_id.end() ) {
-      if( d_eqEngine->hasTerm(e_rep) ) {
-        // it is possible that e's rep changes at this moment, thus we need to know the previous rep id of eqc of e
-        eq::EqClassIterator rep_eqc_i = eq::EqClassIterator( e_rep, d_eqEngine );
-        while( !rep_eqc_i.isFinished() ) {
-          std::map< Node, int >::iterator id_it = d_node_id.find(*rep_eqc_i);
-
-          if( id_it != d_node_id.end() ) {
-            d_id_node[id_it->second]    = e_rep;
-            d_node_id[e_rep]            = id_it->second;
-            return id_it->second;
-          }
-          rep_eqc_i++;
-        }
-      }
-      d_id_node[ei->counter]    = e_rep;
-      d_node_id[e_rep]          = ei->counter;
-      ei->counter++;
-      return ei->counter-1;
-    }
-    Trace("rels-std") << "[sets-rels] finish getOrMakeElementRepId:" << " e_rep = " << e_rep << std::endl;
-    return nid_it->second;
-  }
-
-  bool TheorySetsRels::insertIntoIdList(IdList& idList, int mem) {
-    IdList::const_iterator      idListIt = idList.begin();
-    while(idListIt != idList.end()) {
-      if(*idListIt == mem) {
-        return false;
-      }
-      idListIt++;
-    }
-    idList.push_back(mem);
-    return true;
-  }
-
-  void TheorySetsRels::addTCMemAndSendInfer( EqcInfo* tc_ei, Node membership, Node exp, bool fromRel ) {
-    Trace("rels-std") << "[sets-rels] addTCMemAndSendInfer:" << " membership = " << membership << " from a relation? " << fromRel<< std::endl;
-
-    Node     fst     = RelsUtils::nthElementOfTuple(membership[0], 0);
-    Node     snd     = RelsUtils::nthElementOfTuple(membership[0], 1);
-    Node     fst_rep = getRepresentative(fst);
-    Node     snd_rep = getRepresentative(snd);
-    Node     mem_rep = RelsUtils::constructPair(membership[1], fst_rep, snd_rep);
-
-    if(tc_ei->d_mem.find(mem_rep) != tc_ei->d_mem.end()) {
-      return;
-    }
-
-    int fst_rep_id = getOrMakeElementRepId( tc_ei, fst_rep );
-    int snd_rep_id = getOrMakeElementRepId( tc_ei, snd_rep );
-
-    std::hash_set<int>       in_reachable;
-    std::hash_set<int>       out_reachable;
-    collectReachableNodes(tc_ei->d_id_inIds, fst_rep_id, in_reachable);
-    collectReachableNodes(tc_ei->d_id_outIds, snd_rep_id, out_reachable);
+  d_mem(c), d_mem_exp(c), d_tp(c), d_pt(c), d_tc(c), d_rel_tc(c) {}
 
-    // If fst_rep is inserted into in_lst successfully,
-    // save rep pair's exp and send out TC inference lemmas.
-    // Otherwise, mem's rep is already in the TC and return.
-    if( addId(tc_ei->d_id_inIds, snd_rep_id, fst_rep_id) ) {
-      Node reason       = exp == Node::null() ? explain(membership) : exp;
-      if(!fromRel && tc_ei->d_tc.get() != membership[1]) {
-        reason  = NodeManager::currentNM()->mkNode(kind::AND,reason, explain(NodeManager::currentNM()->mkNode(kind::EQUAL,tc_ei->d_tc.get(), membership[1])));
-      }
-      if(fst != fst_rep) {
-        reason  = NodeManager::currentNM()->mkNode(kind::AND,reason, explain(NodeManager::currentNM()->mkNode(kind::EQUAL,fst, fst_rep)));
-      }
-      if(snd != snd_rep) {
-        reason  = NodeManager::currentNM()->mkNode(kind::AND,reason, explain(NodeManager::currentNM()->mkNode(kind::EQUAL,snd, snd_rep)));
-      }
-      tc_ei->d_mem_exp[mem_rep] = reason;
-      Trace("rels-std") << "Added member " << mem_rep << " for " << tc_ei->d_tc.get()<< " with reason = " << reason << std::endl;
-      tc_ei->d_mem.insert(mem_rep);
-      Trace("rels-std") << "Added in membership arrow for " << snd_rep << " from: " << fst_rep << std::endl;
-    } else {
-      // Nothing inserted into the eqc
-      return;
-    }
-    Trace("rels-std") << "Add out membership arrow for " << fst_rep << " to : " << snd_rep << std::endl;
-    addId(tc_ei->d_id_inIds, fst_rep_id, snd_rep_id);
-    sendTCInference(tc_ei, in_reachable, out_reachable, mem_rep, fst_rep, snd_rep, fst_rep_id, snd_rep_id);
-  }
-
-  Node TheorySetsRels::explainTCMem(EqcInfo* ei, Node pair, Node fst, Node snd) {
-    Trace("rels-tc") << "explainTCMem ############ pair = " << pair << std::endl;
-    if(ei->d_mem_exp.find(pair) != ei->d_mem_exp.end()) {
-      return (*ei->d_mem_exp.find(pair)).second;
-    }
-    NodeMap::iterator   mem_exp_it      = ei->d_mem_exp.begin();
-
-    while(mem_exp_it != ei->d_mem_exp.end()) {
-      Node      tuple   = (*mem_exp_it).first;
-      Node      fst_e   = RelsUtils::nthElementOfTuple(tuple, 0);
-      Node      snd_e   = RelsUtils::nthElementOfTuple(tuple, 1);
-      Node      reason  = (*mem_exp_it).second;
-
-      if(areEqual(fst, fst_e) && areEqual(snd, snd_e)) {
-        if( fst != fst_e) {
-          reason = NodeManager::currentNM()->mkNode(kind::AND, reason, explain( NodeManager::currentNM()->mkNode(kind::EQUAL, fst, fst_e)) );
-        }
-        if( snd != snd_e) {
-          reason = NodeManager::currentNM()->mkNode(kind::AND, reason, explain( NodeManager::currentNM()->mkNode(kind::EQUAL, snd, snd_e)) );
-        }
-        return reason;
-      }
-      ++mem_exp_it;
-    }
-    if(!ei->d_tc.get().isNull()) {
-      Node      rel_rep = getRepresentative(ei->d_tc.get()[0]);
-      EqcInfo*  rel_ei  = getOrMakeEqcInfo(rel_rep);
-      if(rel_ei != NULL) {
-        NodeMap::iterator rel_mem_exp_it = rel_ei->d_mem_exp.begin();
-        while(rel_mem_exp_it != rel_ei->d_mem_exp.end()) {
-          Node  exp     = rel_rep == ei->d_tc.get()[0] ? d_trueNode : explain(NodeManager::currentNM()->mkNode(kind::EQUAL,rel_rep, ei->d_tc.get()[0]));
-          Node  tuple   = (*rel_mem_exp_it).first;
-          Node  fst_e   = RelsUtils::nthElementOfTuple(tuple, 0);
-          Node  snd_e   = RelsUtils::nthElementOfTuple(tuple, 1);
-
-          if(areEqual(fst, fst_e) && areEqual(snd, snd_e)) {
-            if( fst != fst_e) {
-              exp = NodeManager::currentNM()->mkNode(kind::AND, exp, explain( NodeManager::currentNM()->mkNode(kind::EQUAL, fst, fst_e)) );
-            }
-            if( snd != snd_e) {
-              exp = NodeManager::currentNM()->mkNode(kind::AND, exp, explain( NodeManager::currentNM()->mkNode(kind::EQUAL, snd, snd_e)) );
+  void TheorySetsRels::eqNotifyNewClass( Node n ) {
+    Trace("rels-std") << "[sets-rels] eqNotifyNewClass:" << " t = " << n << std::endl;
+    if(n.getKind() == kind::TRANSPOSE || n.getKind() == kind::PRODUCT || n.getKind() == kind::TCLOSURE) {
+      getOrMakeEqcInfo( n, true );
+      if( n.getKind() == kind::TCLOSURE ) {
+        Node relRep_of_tc = getRepresentative( n[0] );
+        EqcInfo*  rel_ei = getOrMakeEqcInfo( relRep_of_tc, true );
+
+        if( rel_ei->d_rel_tc.get().isNull() ) {
+          rel_ei->d_rel_tc = n;
+          Node exp = relRep_of_tc == n[0] ? d_trueNode : NodeManager::currentNM()->mkNode( kind::EQUAL, relRep_of_tc, n[0] );
+          for( NodeSet::const_iterator mem_it = rel_ei->d_mem.begin(); mem_it != rel_ei->d_mem.end(); mem_it++ ) {
+            Node mem_exp = (*rel_ei->d_mem_exp.find(*mem_it)).second;
+            exp = NodeManager::currentNM()->mkNode( kind::AND, exp, mem_exp);
+            if( mem_exp[1] != relRep_of_tc ) {
+              exp = NodeManager::currentNM()->mkNode( kind::AND, exp, NodeManager::currentNM()->mkNode(kind::EQUAL, relRep_of_tc, mem_exp[1] ) );
             }
-            return NodeManager::currentNM()->mkNode(kind::AND, exp, (*rel_mem_exp_it).second);
+            sendMergeInfer( NodeManager::currentNM()->mkNode(kind::MEMBER, mem_exp[0], n), exp, "TCLOSURE-UP I" );
           }
-          ++rel_mem_exp_it;
         }
       }
     }
-    Trace("rels-tc") << "End explainTCMem ############ pair = " << pair << std::endl;
-    return Node::null();
-  }
-
-  void TheorySetsRels::sendTCInference(EqcInfo* tc_ei, std::hash_set<int> in_reachable, std::hash_set<int> out_reachable, Node mem_rep, Node fst_rep, Node snd_rep, int id1, int id2) {
-    Trace("rels-std") << "Start making TC inference after adding a member " << mem_rep << " to " << tc_ei->d_tc.get() << std::endl;
-
-    Node exp            = explainTCMem(tc_ei, mem_rep, fst_rep, snd_rep);
-    Assert(!exp.isNull());
-    sendMergeInfer(NodeManager::currentNM()->mkNode(kind::MEMBER, mem_rep, tc_ei->d_tc.get()), exp, "TC-Infer");
-    std::hash_set<int>::iterator        in_reachable_it = in_reachable.begin();
-
-    while(in_reachable_it != in_reachable.end()) {
-      Node    in_node   = d_id_node[*in_reachable_it];
-      Node    in_pair   = RelsUtils::constructPair(tc_ei->d_tc.get(), in_node, fst_rep);
-      Node    new_pair  = RelsUtils::constructPair(tc_ei->d_tc.get(), in_node, snd_rep);
-      Node    tc_exp    = explainTCMem(tc_ei, in_pair, in_node, fst_rep);
-      Node    reason    =  tc_exp.isNull() ? exp : NodeManager::currentNM()->mkNode(kind::AND,tc_exp, exp);
-
-      tc_ei->d_mem_exp[new_pair] = reason;
-      tc_ei->d_mem.insert(new_pair);
-      sendMergeInfer(NodeManager::currentNM()->mkNode(kind::MEMBER, new_pair, tc_ei->d_tc.get()), reason, "TC-Infer");
-      in_reachable_it++;
-    }
-
-    std::hash_set<int>::iterator        out_reachable_it = out_reachable.begin();
-    while(out_reachable_it != out_reachable.end()) {
-      Node    out_node        = d_id_node[*out_reachable_it];
-      Node    out_pair        = RelsUtils::constructPair(tc_ei->d_tc.get(), snd_rep, out_node);
-      Node    reason          = explainTCMem(tc_ei, out_pair, snd_rep, out_node);
-      Assert(reason != Node::null());
-
-      std::hash_set<int>::iterator        in_reachable_it = in_reachable.begin();
-
-      while(in_reachable_it != in_reachable.end()) {
-        Node    in_node         = d_id_node[*in_reachable_it];
-        Node    in_pair         = RelsUtils::constructPair(tc_ei->d_tc.get(), in_node, snd_rep);
-        Node    new_pair        = RelsUtils::constructPair(tc_ei->d_tc.get(), in_node, out_node);
-        Node    in_pair_exp     = explainTCMem(tc_ei, in_pair, in_node, snd_rep);
-
-        Assert(in_pair_exp != Node::null());
-        reason  = NodeManager::currentNM()->mkNode(kind::AND,reason, in_pair_exp);
-        tc_ei->d_mem_exp[new_pair] = reason;
-        tc_ei->d_mem.insert(new_pair);
-        sendMergeInfer(NodeManager::currentNM()->mkNode(kind::MEMBER, new_pair, tc_ei->d_tc.get()), reason, "TC-Infer");
-        in_reachable_it++;
-      }
-      out_reachable_it++;
-    }
-  }
-
-  void TheorySetsRels::collectReachableNodes(std::map< int, std::vector< int > >& id_map, int start_id, std::hash_set< int >& reachable_set, bool firstRound) {
-    Trace("rels-std") << "****  Collecting reachable nodes for node with id " << start_id << std::endl;
-    if(reachable_set.find(start_id) != reachable_set.end()) {
-      return;
-    }
-    if(!firstRound) {
-      reachable_set.insert(start_id);
-    }
-
-    std::vector< int > id_list              = getIdList(id_map, start_id);
-    std::vector< int >::iterator id_list_it = id_list.begin();
-
-    while( id_list_it != id_list.end() ) {
-      collectReachableNodes( id_map, *id_list_it, reachable_set, false );
-      id_list_it++;
-    }
-  }
-
-  void TheorySetsRels::eqNotifyNewClass( Node n ) {
-    Trace("rels-std") << "[sets-rels] eqNotifyNewClass:" << " t = " << n << std::endl;
-    if(isRel(n) && (n.getKind() == kind::TRANSPOSE ||
-                    n.getKind() == kind::PRODUCT ||
-                    n.getKind() == kind::JOIN ||
-                    n.getKind() == kind::TCLOSURE)) {
-      getOrMakeEqcInfo( n, true );
-    }
   }
 
   // Merge t2 into t1, t1 will be the rep of the new eqc
   void TheorySetsRels::eqNotifyPostMerge( Node t1, Node t2 ) {
-    Trace("rels-std") << "[sets-rels] eqNotifyPostMerge:" << " t1 = " << t1 << " t2 = " << t2 << std::endl;
-
-    // Merge membership constraint with "true" or "false" eqc
-    if( (t1 == d_trueNode || t1 == d_falseNode) && t2.getKind() == kind::MEMBER && t2[0].getType().isTuple() ) {
+    Trace("rels-std") << "[sets-rels-std] eqNotifyPostMerge:" << " t1 = " << t1 << " t2 = " << t2 << std::endl;
+
+    // Merge membership constraint with "true" eqc
+    if( t1 == d_trueNode && t2.getKind() == kind::MEMBER && t2[0].getType().isTuple() ) {
+      Node      mem_rep  = getRepresentative( t2[0] );
+      Node      t2_1rep  = getRepresentative( t2[1] );
+      EqcInfo*  ei       = getOrMakeEqcInfo( t2_1rep, true );
+      if(ei->d_mem.contains(mem_rep)) {
+        return;
+      }
+      Node exp = t2;
 
-      Assert(t1 == d_trueNode || t1 == d_falseNode);
-      bool      polarity        = t1 == d_trueNode;
-      Node      t2_1rep         = getRepresentative(t2[1]);
-      EqcInfo*  ei              = getOrMakeEqcInfo( t2_1rep, true );
+      ei->d_mem.insert( mem_rep );
+      ei->d_mem_exp.insert( mem_rep, exp );
 
-      if( polarity ) {
-        ei->d_mem.insert(t2[0]);
-        ei->d_mem_exp[t2[0]] = explain(t2);
-      }
       // Process a membership constraint that a tuple is a member of transpose of rel
       if( !ei->d_tp.get().isNull() ) {
-        Node exp = polarity ? explain(t2) : explain(t2.negate());
-        if(ei->d_tp.get() != t2[1]) {
-          exp = NodeManager::currentNM()->mkNode(kind::AND, explain(NodeManager::currentNM()->mkNode(kind::EQUAL, ei->d_tp.get(), t2[1]) ), exp );
+        if( ei->d_tp.get() != t2[1] ) {
+          exp = NodeManager::currentNM()->mkNode(kind::AND, NodeManager::currentNM()->mkNode(kind::EQUAL, ei->d_tp.get(), t2[1]), t2 );
         }
-        sendInferTranspose( polarity, t2[0], ei->d_tp.get(), exp, true );
+        sendInferTranspose( t2[0], ei->d_tp.get(), exp );
       }
       // Process a membership constraint that a tuple is a member of product of rel
       if( !ei->d_pt.get().isNull() ) {
-        Node exp = polarity ? explain(t2) : explain(t2.negate());
-        if(ei->d_pt.get() != t2[1]) {
-          exp = NodeManager::currentNM()->mkNode(kind::AND, explain(NodeManager::currentNM()->mkNode(kind::EQUAL, ei->d_pt.get(), t2[1]) ), exp );
+        if( ei->d_pt.get() != t2[1] ) {
+          exp = NodeManager::currentNM()->mkNode(kind::AND, NodeManager::currentNM()->mkNode(kind::EQUAL, ei->d_pt.get(), t2[1]), t2 );
         }
-        sendInferProduct( polarity, t2[0], ei->d_pt.get(), exp );
+        sendInferProduct( t2[0], ei->d_pt.get(), exp );
+      }
+
+      if( !ei->d_rel_tc.get().isNull() ) {
+        if( ei->d_rel_tc.get()[0] != t2[1] ) {
+          exp = NodeManager::currentNM()->mkNode(kind::AND, NodeManager::currentNM()->mkNode(kind::EQUAL, ei->d_rel_tc.get()[0], t2[1]), t2 );
+        }
+        sendMergeInfer(NodeManager::currentNM()->mkNode(kind::MEMBER, t2[0], ei->d_rel_tc.get()), exp, "TCLOSURE-UP I");
       }
       // Process a membership constraint that a tuple is a member of transitive closure of rel
-      if( polarity && !ei->d_tc.get().isNull() ) {
-        addTCMemAndSendInfer( ei, t2, Node::null() );
+      if( !ei->d_tc.get().isNull() ) {
+        sendInferTClosure( t2, ei );
       }
 
     // Merge two relation eqcs
     } else if( t1.getType().isSet() && t2.getType().isSet() && t1.getType().getSetElementType().isTuple() ) {
-      mergeTransposeEqcs(t1, t2);
-      mergeProductEqcs(t1, t2);
-      mergeTCEqcs(t1, t2);
-    }
-
-    Trace("rels-std") << "[sets-rels] done with eqNotifyPostMerge:" << " t1 = " << t1 << " t2 = " << t2 << std::endl;
-  }
-
-  void TheorySetsRels::mergeTCEqcs(Node t1, Node t2) {
-    Trace("rels-std") << "[sets-rels] Merge TC eqcs t1 = " << t1 << " and t2 = " << t2 << std::endl;
+      EqcInfo* t1_ei = getOrMakeEqcInfo( t1 );
+      EqcInfo* t2_ei = getOrMakeEqcInfo( t2 );
 
-    EqcInfo* t1_ei = getOrMakeEqcInfo(t1);
-    EqcInfo* t2_ei = getOrMakeEqcInfo(t2);
-
-    if(t1_ei != NULL && t2_ei != NULL) {
-      if(!t1_ei->d_tc.get().isNull()) {
-        NodeSet::const_iterator     mem_it  = t2_ei->d_mem.begin();
-        while(mem_it != t2_ei->d_mem.end()) {
-          addTCMemAndSendInfer(t1_ei, NodeManager::currentNM()->mkNode(kind::MEMBER,*mem_it, t1_ei->d_tc.get()), (*t2_ei->d_mem_exp.find(*mem_it)).second);
-          mem_it++;
-        }
-      } else if(!t2_ei->d_tc.get().isNull()) {
-        t1_ei->d_tc.set(t2_ei->d_tc);
-        NodeSet::const_iterator     t1_mem_it  = t1_ei->d_mem.begin();
-
-        while(t1_mem_it != t1_ei->d_mem.end()) {
-          NodeMap::const_iterator       reason_it       = t1_ei->d_mem_exp.find(*t1_mem_it);
-          Assert(reason_it != t1_ei->d_mem_exp.end());
-          addTCMemAndSendInfer(t1_ei, NodeManager::currentNM()->mkNode(kind::MEMBER,*t1_mem_it, t1_ei->d_tc.get()), (*reason_it).second);
-          t1_mem_it++;
+      if( t1_ei != NULL && t2_ei != NULL ) {
+        if( !t1_ei->d_tp.get().isNull() && !t2_ei->d_tp.get().isNull() ) {
+          sendInferTranspose(t1_ei->d_tp.get(), t2_ei->d_tp.get(), NodeManager::currentNM()->mkNode(kind::EQUAL, t1_ei->d_tp.get(), t2_ei->d_tp.get() ) );
         }
-
-        NodeSet::const_iterator     t2_mem_it  = t2_ei->d_mem.begin();
-
-        while(t2_mem_it != t2_ei->d_mem.end()) {
-          addTCMemAndSendInfer(t1_ei, NodeManager::currentNM()->mkNode(kind::MEMBER,*t2_mem_it, t2_ei->d_tc.get()), (*t2_ei->d_mem_exp.find(*t2_mem_it)).second);
-          t2_mem_it++;
+        std::vector< Node > t2_new_mems;
+        std::vector< Node > t2_new_exps;
+        NodeSet::const_iterator t2_mem_it = t2_ei->d_mem.begin();
+        NodeSet::const_iterator t1_mem_it = t1_ei->d_mem.begin();
+
+        for( ; t2_mem_it != t2_ei->d_mem.end(); t2_mem_it++ ) {
+          if( !t1_ei->d_mem.contains( *t2_mem_it ) ) {
+            Node t2_mem_exp = (*t2_ei->d_mem_exp.find(*t2_mem_it)).second;
+
+            if( t2_ei->d_tp.get().isNull() && !t1_ei->d_tp.get().isNull() ) {
+              Node reason = t1_ei->d_tp.get() == (t2_mem_exp)[1]
+                            ? (t2_mem_exp) : NodeManager::currentNM()->mkNode(kind::AND, t2_mem_exp, NodeManager::currentNM()->mkNode(kind::EQUAL, (t2_mem_exp)[1], t1_ei->d_tp.get()));
+              sendInferTranspose( t2_mem_exp[0], t1_ei->d_tp.get(), reason );
+            }
+            if( t2_ei->d_pt.get().isNull() && !t1_ei->d_pt.get().isNull() ) {
+              Node reason = t1_ei->d_pt.get() == (t2_mem_exp)[1]
+                            ? (t2_mem_exp) : NodeManager::currentNM()->mkNode(kind::AND, t2_mem_exp, NodeManager::currentNM()->mkNode(kind::EQUAL, (t2_mem_exp)[1], t1_ei->d_pt.get()));
+              sendInferProduct( t2_mem_exp[0], t1_ei->d_pt.get(), reason );
+            }
+            if( t2_ei->d_tc.get().isNull() && !t1_ei->d_tc.get().isNull() ) {
+              sendInferTClosure( t2_mem_exp, t1_ei );
+            }
+            if( t2_ei->d_rel_tc.get().isNull() && !t1_ei->d_rel_tc.get().isNull() ) {
+              Node reason = t1_ei->d_rel_tc.get()[0] == t2_mem_exp[1] ?
+                            t2_mem_exp : NodeManager::currentNM()->mkNode(kind::AND, NodeManager::currentNM()->mkNode(kind::EQUAL, t1_ei->d_rel_tc.get()[0], t2_mem_exp[1]), t2_mem_exp );
+              sendMergeInfer(NodeManager::currentNM()->mkNode(kind::MEMBER, t2_mem_exp[0], t1_ei->d_rel_tc.get()), reason, "TCLOSURE-UP I");
+            }
+            t2_new_mems.push_back( *t2_mem_it );
+            t2_new_exps.push_back( t2_mem_exp );
+          }
         }
-      }
-    }
-    Trace("rels-std") << "[sets-rels] Done with merging TC eqcs t1 = " << t1 << " and t2 = " << t2 << std::endl;
-  }
-
-
-
-
-  void TheorySetsRels::mergeProductEqcs(Node t1, Node t2) {
-    Trace("rels-std") << "[sets-rels] Merge PRODUCT eqcs t1 = " << t1 << " and t2 = " << t2 << std::endl;
-    EqcInfo* t1_ei = getOrMakeEqcInfo(t1);
-    EqcInfo* t2_ei = getOrMakeEqcInfo(t2);
-
-    if(t1_ei != NULL && t2_ei != NULL) {
-      // Apply Product rule on (non)members of t2 and t1->pt
-      if(!t1_ei->d_pt.get().isNull()) {
-        for(NodeSet::key_iterator itr = t2_ei->d_mem.key_begin(); itr != t2_ei->d_mem.key_end(); itr++) {
-          if(!t1_ei->d_mem.contains(*itr)) {
-            sendInferProduct( true, *itr, t1_ei->d_pt.get(), NodeManager::currentNM()->mkNode(kind::AND,explain(NodeManager::currentNM()->mkNode(kind::EQUAL,t1_ei->d_pt.get(), t2)), explain(NodeManager::currentNM()->mkNode(kind::MEMBER,*itr, t2))) );
+        for( ; t1_mem_it != t1_ei->d_mem.end(); t1_mem_it++ ) {
+          if( !t2_ei->d_mem.contains( *t1_mem_it ) ) {
+            Node t1_mem_exp = (*t1_ei->d_mem_exp.find(*t1_mem_it)).second;
+            if( t1_ei->d_tp.get().isNull() && !t2_ei->d_tp.get().isNull() ) {
+              Node reason = t2_ei->d_tp.get() == (t1_mem_exp)[1]
+                            ? (t1_mem_exp) : NodeManager::currentNM()->mkNode(kind::AND, t1_mem_exp, NodeManager::currentNM()->mkNode(kind::EQUAL, (t1_mem_exp)[1], t2_ei->d_tp.get()));
+              sendInferTranspose( (t1_mem_exp)[0], t2_ei->d_tp.get(), reason );
+            }
+            if( t1_ei->d_pt.get().isNull() && !t2_ei->d_pt.get().isNull() ) {
+              Node reason = t2_ei->d_pt.get() == (t1_mem_exp)[1]
+                            ? (t1_mem_exp) : NodeManager::currentNM()->mkNode(kind::AND, t1_mem_exp, NodeManager::currentNM()->mkNode(kind::EQUAL, (t1_mem_exp)[1], t2_ei->d_pt.get()));
+              sendInferProduct( (t1_mem_exp)[0], t2_ei->d_pt.get(), reason );
+            }
+            if( t1_ei->d_tc.get().isNull() && !t2_ei->d_tc.get().isNull() ) {
+              sendInferTClosure(t1_mem_exp, t2_ei );
+            }
+            if( t1_ei->d_rel_tc.get().isNull() && !t2_ei->d_rel_tc.get().isNull() ) {
+              Node reason = t2_ei->d_rel_tc.get()[0] == t1_mem_exp[1] ?
+                            t1_mem_exp : NodeManager::currentNM()->mkNode(kind::AND, NodeManager::currentNM()->mkNode(kind::EQUAL, t2_ei->d_rel_tc.get()[0], t1_mem_exp[1]), t1_mem_exp );
+              sendMergeInfer(NodeManager::currentNM()->mkNode(kind::MEMBER, t1_mem_exp[0], t2_ei->d_rel_tc.get()), reason, "TCLOSURE-UP I");
+            }
           }
         }
-      } else if(!t2_ei->d_pt.get().isNull()) {
-        t1_ei->d_pt.set(t2_ei->d_pt);
-        for(NodeSet::key_iterator itr = t1_ei->d_mem.key_begin(); itr != t1_ei->d_mem.key_end(); itr++) {
-          if(!t2_ei->d_mem.contains(*itr)) {
-            sendInferProduct( true, *itr, t2_ei->d_pt.get(), NodeManager::currentNM()->mkNode(kind::AND,explain(NodeManager::currentNM()->mkNode(kind::EQUAL,t1, t2_ei->d_pt.get())), explain(NodeManager::currentNM()->mkNode(kind::MEMBER,*itr, t1))) );
+        std::vector< Node >::iterator t2_new_mem_it = t2_new_mems.begin();
+        std::vector< Node >::iterator t2_new_exp_it = t2_new_exps.begin();
+        for( ; t2_new_mem_it != t2_new_mems.end(); t2_new_mem_it++, t2_new_exp_it++ ) {
+          t1_ei->d_mem.insert( *t2_new_mem_it );
+          t1_ei->d_mem_exp.insert( *t2_new_mem_it, *t2_new_exp_it );
+        }
+        if( t1_ei->d_tp.get().isNull() && !t2_ei->d_tp.get().isNull() ) {
+          t1_ei->d_tp.set(t2_ei->d_tp.get());
+        }
+        if( t1_ei->d_pt.get().isNull() && !t2_ei->d_pt.get().isNull() ) {
+          t1_ei->d_pt.set(t2_ei->d_pt.get());
+        }
+        if( t1_ei->d_tc.get().isNull() && !t2_ei->d_tc.get().isNull() ) {
+          t1_ei->d_tc.set(t2_ei->d_tc.get());
+        }
+        if( t1_ei->d_rel_tc.get().isNull() && !t2_ei->d_rel_tc.get().isNull() ) {
+          t1_ei->d_rel_tc.set(t2_ei->d_rel_tc.get());
+        }
+      } else if( t1_ei != NULL ) {
+        if( (t2.getKind() == kind::TRANSPOSE && t1_ei->d_tp.get().isNull()) ||
+            (t2.getKind() == kind::PRODUCT && t1_ei->d_pt.get().isNull()) ||
+            (t2.getKind() == kind::TCLOSURE && t1_ei->d_tc.get().isNull()) ) {
+          NodeSet::const_iterator t1_mem_it = t1_ei->d_mem.begin();
+
+          if( t2.getKind() == kind::TRANSPOSE ) {
+            t1_ei->d_tp = t2;
+          } else if( t2.getKind() == kind::PRODUCT ) {
+            t1_ei->d_pt = t2;
+          } else if( t2.getKind() == kind::TCLOSURE ) {
+            t1_ei->d_tc = t2;
+          }
+          for( ; t1_mem_it != t1_ei->d_mem.end(); t1_mem_it++ ) {
+            Node t1_exp = (*t1_ei->d_mem_exp.find(*t1_mem_it)).second;
+            if( t2.getKind() == kind::TRANSPOSE ) {
+              Node reason = t2 == t1_exp[1]
+                            ? (t1_exp) : NodeManager::currentNM()->mkNode(kind::AND, (t1_exp), NodeManager::currentNM()->mkNode(kind::EQUAL, (t1_exp)[1], t2));
+              sendInferTranspose( (t1_exp)[0], t2, reason );
+            } else if( t2.getKind() == kind::PRODUCT ) {
+              Node reason = t2 == (t1_exp)[1]
+                            ? (t1_exp) : NodeManager::currentNM()->mkNode(kind::AND, (t1_exp), NodeManager::currentNM()->mkNode(kind::EQUAL, (t1_exp)[1], t2));
+              sendInferProduct( (t1_exp)[0], t2, reason );
+            } else if( t2.getKind() == kind::TCLOSURE ) {
+              sendInferTClosure( t1_exp, t1_ei );
+            }
           }
         }
-      }
-    // t1 was created already and t2 was not
-    } else if(t1_ei != NULL) {
-      if(t1_ei->d_pt.get().isNull() && t2.getKind() == kind::PRODUCT) {
-        t1_ei->d_pt.set( t2 );
-      }
-    } else if(t2_ei != NULL){
-      t1_ei = getOrMakeEqcInfo(t1, true);
-      if(t1_ei->d_pt.get().isNull() && !t2_ei->d_pt.get().isNull()) {
-        t1_ei->d_pt.set(t2_ei->d_pt);
-        for(NodeSet::key_iterator itr = t2_ei->d_mem.key_begin(); itr != t2_ei->d_mem.key_end(); itr++) {
-          t1_ei->d_mem.insert(*itr);
-          t1_ei->d_mem_exp.insert(*itr, t2_ei->d_mem_exp[*itr]);
+      } else if( t2_ei != NULL ) {
+        EqcInfo* new_t1_ei = getOrMakeEqcInfo( t1, true );
+        if( new_t1_ei->d_tp.get().isNull() && !t2_ei->d_tp.get().isNull() ) {
+          new_t1_ei->d_tp.set(t2_ei->d_tp.get());
+        }
+        if( new_t1_ei->d_pt.get().isNull() && !t2_ei->d_pt.get().isNull() ) {
+          new_t1_ei->d_pt.set(t2_ei->d_pt.get());
+        }
+        if( new_t1_ei->d_tc.get().isNull() && !t2_ei->d_tc.get().isNull() ) {
+          new_t1_ei->d_tc.set(t2_ei->d_tc.get());
+        }
+        if( new_t1_ei->d_rel_tc.get().isNull() && !t2_ei->d_rel_tc.get().isNull() ) {
+          new_t1_ei->d_rel_tc.set(t2_ei->d_rel_tc.get());
+        }
+        if( (t1.getKind() == kind::TRANSPOSE && t2_ei->d_tp.get().isNull()) ||
+            (t1.getKind() == kind::PRODUCT && t2_ei->d_pt.get().isNull()) ||
+            (t1.getKind() == kind::TCLOSURE && t2_ei->d_tc.get().isNull()) ) {
+          NodeSet::const_iterator t2_mem_it = t2_ei->d_mem.begin();
+
+          for( ; t2_mem_it != t2_ei->d_mem.end(); t2_mem_it++ ) {
+            Node t2_exp = (*t1_ei->d_mem_exp.find(*t2_mem_it)).second;
+
+            if( t1.getKind() == kind::TRANSPOSE ) {
+              Node reason = t1 == (t2_exp)[1]
+                            ? (t2_exp) : NodeManager::currentNM()->mkNode(kind::AND, (t2_exp), NodeManager::currentNM()->mkNode(kind::EQUAL, (t2_exp)[1], t1));
+              sendInferTranspose( (t2_exp)[0], t1, reason );
+            } else if( t1.getKind() == kind::PRODUCT ) {
+              Node reason = t1 == (t2_exp)[1]
+                            ? (t2_exp) : NodeManager::currentNM()->mkNode(kind::AND, (t2_exp), NodeManager::currentNM()->mkNode(kind::EQUAL, (t2_exp)[1], t1));
+              sendInferProduct( (t2_exp)[0], t1, reason );
+            } else if( t1.getKind() == kind::TCLOSURE ) {
+              sendInferTClosure( t2_exp, new_t1_ei );
+            }
+          }
         }
       }
     }
-  }
 
-  void TheorySetsRels::mergeTransposeEqcs( Node t1, Node t2 ) {
-    Trace("rels-std") << "[sets-rels] Merge TRANSPOSE eqcs t1 = " << t1 << " and t2 = " << t2 << std::endl;
-    EqcInfo* t1_ei = getOrMakeEqcInfo( t1 );
-    EqcInfo* t2_ei = getOrMakeEqcInfo( t2 );
+    Trace("rels-std") << "[sets-rels] done with eqNotifyPostMerge:" << " t1 = " << t1 << " t2 = " << t2 << std::endl;
+  }
 
-    if( t1_ei != NULL && t2_ei != NULL ) {
-      Trace("rels-std") << "[sets-rels] 0 Merge TRANSPOSE eqcs t1 = " << t1 << " and t2 = " << t2 << std::endl;
-      // TP(t1) = TP(t2) -> t1 = t2;
-      if( !t1_ei->d_tp.get().isNull() && !t2_ei->d_tp.get().isNull() ) {
-        sendInferTranspose( true, t1_ei->d_tp.get(), t2_ei->d_tp.get(), explain(NodeManager::currentNM()->mkNode(kind::EQUAL,t1, t2)) );
+  void TheorySetsRels::sendInferTClosure( Node new_mem_exp, EqcInfo* ei ) {
+    NodeSet::const_iterator mem_it = ei->d_mem.begin();
+    Node mem_rep = getRepresentative( new_mem_exp[0] );
+    Node new_mem_rel = new_mem_exp[1];
+    Node new_mem_fst = RelsUtils::nthElementOfTuple( new_mem_exp[0], 0 );
+    Node new_mem_snd = RelsUtils::nthElementOfTuple( new_mem_exp[0], 1 );
+    for( ; mem_it != ei->d_mem.end(); mem_it++ ) {
+      if( *mem_it == mem_rep ) {
+        continue;
       }
-      // Apply transpose rule on (non)members of t2 and t1->tp
-      if( !t1_ei->d_tp.get().isNull() ) {
-        for( NodeSet::key_iterator itr = t2_ei->d_mem.key_begin(); itr != t2_ei->d_mem.key_end(); itr++ ) {
-          if( !t1_ei->d_mem.contains( *itr ) ) {
-            sendInferTranspose( true, *itr, t1_ei->d_tp.get(), NodeManager::currentNM()->mkNode(kind::AND, explain(NodeManager::currentNM()->mkNode(kind::EQUAL,t1_ei->d_tp.get(), t2)), explain(NodeManager::currentNM()->mkNode(kind::MEMBER,*itr, t2))) );
-          }
+      Node d_mem_exp = (*ei->d_mem_exp.find(*mem_it)).second;
+      Node d_mem_fst = RelsUtils::nthElementOfTuple( d_mem_exp[0], 0 );
+      Node d_mem_snd = RelsUtils::nthElementOfTuple( d_mem_exp[0], 1 );
+      Node d_mem_rel = d_mem_exp[1];
+      if( areEqual( new_mem_fst, d_mem_snd) ) {
+        Node reason = NodeManager::currentNM()->mkNode( kind::AND, new_mem_exp, d_mem_exp );
+        reason = NodeManager::currentNM()->mkNode( kind::AND, reason, NodeManager::currentNM()->mkNode(kind::EQUAL, new_mem_fst, d_mem_snd ) );
+        if( new_mem_rel != ei->d_tc.get() ) {
+          reason = NodeManager::currentNM()->mkNode( kind::AND, reason, NodeManager::currentNM()->mkNode(kind::EQUAL, new_mem_rel, ei->d_tc.get() ) );
         }
-        // Apply transpose rule on members of t1 and t2->tp
-      } else if( !t2_ei->d_tp.get().isNull() ) {
-        t1_ei->d_tp.set( t2_ei->d_tp );
-        for( NodeSet::key_iterator itr = t1_ei->d_mem.key_begin(); itr != t1_ei->d_mem.key_end(); itr++ ) {
-          if( !t2_ei->d_mem.contains(*itr) ) {
-            sendInferTranspose( true, *itr, t2_ei->d_tp.get(), NodeManager::currentNM()->mkNode(kind::AND, explain(NodeManager::currentNM()->mkNode(kind::EQUAL,t1, t2_ei->d_tp.get())), explain(NodeManager::currentNM()->mkNode(kind::MEMBER,*itr, t1))) );
-          }
+        if( d_mem_rel != ei->d_tc.get() ) {
+          reason = NodeManager::currentNM()->mkNode( kind::AND, reason, NodeManager::currentNM()->mkNode(kind::EQUAL, d_mem_rel, ei->d_tc.get() ) );
         }
+        Node new_membership = NodeManager::currentNM()->mkNode( kind::MEMBER, RelsUtils::constructPair( d_mem_rel, d_mem_fst, new_mem_snd ), ei->d_tc.get() );
+        sendMergeInfer( new_membership, reason, "TCLOSURE-UP II" );
       }
-    // t1 was created already and t2 was not
-    } else if(t1_ei != NULL) {
-      if( t1_ei->d_tp.get().isNull() && t2.getKind() == kind::TRANSPOSE ) {
-        t1_ei->d_tp.set( t2 );
-      }
-    } else if( t2_ei != NULL ){
-      t1_ei = getOrMakeEqcInfo( t1, true );
-      if( t1_ei->d_tp.get().isNull() && !t2_ei->d_tp.get().isNull() ) {
-        t1_ei->d_tp.set( t2_ei->d_tp );
-        for( NodeSet::key_iterator itr = t2_ei->d_mem.key_begin(); itr != t2_ei->d_mem.key_end(); itr++ ) {
-          t1_ei->d_mem.insert( *itr );
-          t1_ei->d_mem_exp.insert( *itr, t2_ei->d_mem_exp[*itr] );
+      if( areEqual( new_mem_snd, d_mem_fst ) ) {
+        Node reason = NodeManager::currentNM()->mkNode( kind::AND, new_mem_exp, d_mem_exp );
+        reason = NodeManager::currentNM()->mkNode( kind::AND, reason, NodeManager::currentNM()->mkNode(kind::EQUAL, new_mem_snd, d_mem_fst ) );
+        if( new_mem_rel != ei->d_tc.get() ) {
+          reason = NodeManager::currentNM()->mkNode( kind::AND, reason, NodeManager::currentNM()->mkNode(kind::EQUAL, new_mem_rel, ei->d_tc.get() ) );
+        }
+        if( d_mem_rel != ei->d_tc.get() ) {
+          reason = NodeManager::currentNM()->mkNode( kind::AND, reason, NodeManager::currentNM()->mkNode(kind::EQUAL, d_mem_rel, ei->d_tc.get() ) );
         }
+        Node new_membership = NodeManager::currentNM()->mkNode( kind::MEMBER, RelsUtils::constructPair( d_mem_rel, new_mem_fst, d_mem_snd ), ei->d_tc.get() );
+        sendMergeInfer( new_membership, reason, "TCLOSURE-UP II" );
       }
     }
   }
 
+
   void TheorySetsRels::doPendingMerge() {
     for( NodeList::const_iterator itr = d_pending_merge.begin(); itr != d_pending_merge.end(); itr++ ) {
       if( !holds(*itr) ) {
         if( d_lemmas_produced.find(*itr)==d_lemmas_produced.end() ) {
-          Trace("rels-lemma") << "[std-sets-rels-lemma] Send out a merge fact as lemma: "
+          Trace("rels-std-lemma") << "[std-sets-rels-lemma] Send out a merge fact as lemma: "
                               << *itr << std::endl;
           d_sets_theory.d_out->lemma( *itr );
           d_lemmas_produced.insert(*itr);
@@ -1495,41 +1592,31 @@ int TheorySetsRels::EqcInfo::counter        = 0;
     }
   }
 
-  void TheorySetsRels::sendInferTranspose( bool polarity, Node t1, Node t2, Node exp, bool reverseOnly ) {
+  // t1 and t2 can be both relations
+  // or t1 is a tuple, t2 is a transposed relation
+  void TheorySetsRels::sendInferTranspose( Node t1, Node t2, Node exp ) {
     Assert( t2.getKind() == kind::TRANSPOSE );
-    if( !polarity ) {
-      return;
-    }
-    if( polarity && isRel(t1) && isRel(t2) ) {
+
+    if( isRel(t1) && isRel(t2) ) {
       Assert(t1.getKind() == kind::TRANSPOSE);
       sendMergeInfer(NodeManager::currentNM()->mkNode(kind::EQUAL, t1[0], t2[0]), exp, "Transpose-Equal");
       return;
     }
-
-    if( reverseOnly ) {
-      sendMergeInfer( NodeManager::currentNM()->mkNode(kind::MEMBER, RelsUtils::reverseTuple(t1), t2[0]), exp, "Transpose-Rule" );
-    } else {
-      sendMergeInfer(NodeManager::currentNM()->mkNode(kind::MEMBER, t1, t2), exp, "Transpose-Rule");
-      sendMergeInfer(NodeManager::currentNM()->mkNode(kind::MEMBER, RelsUtils::reverseTuple(t1), t2[0]), exp, "Transpose-Rule");
-    }
+    sendMergeInfer(NodeManager::currentNM()->mkNode(kind::MEMBER, RelsUtils::reverseTuple(t1), t2[0]), exp, "Transpose-Rule");
   }
 
   void TheorySetsRels::sendMergeInfer( Node fact, Node reason, const char * c ) {
     if( !holds( fact ) ) {
       Node lemma = NodeManager::currentNM()->mkNode( kind::IMPLIES, reason, fact);
       d_pending_merge.push_back(lemma);
-      Trace("std-rels") << "[std-rels-lemma] Generate a lemma by applying " << c
+      Trace("rels-std") << "[std-rels-lemma] Generate a lemma by applying " << c
                         << ": " << lemma << std::endl;
     }
   }
 
-  void TheorySetsRels::sendInferProduct( bool polarity, Node member, Node pt_rel, Node exp ) {
+  void TheorySetsRels::sendInferProduct( Node member, Node pt_rel, Node exp ) {
     Assert( pt_rel.getKind() == kind::PRODUCT );
 
-    if(!polarity) {
-      return;
-    }
-
     std::vector<Node>   r1_element;
     std::vector<Node>   r2_element;
     Node                r1      = pt_rel[0];
@@ -1573,8 +1660,6 @@ int TheorySetsRels::EqcInfo::counter        = 0;
           ei->d_pt = n;
         } else if( n.getKind() == kind::TCLOSURE ) {
           ei->d_tc = n;
-        } else if( n.getKind() == kind::JOIN ) {
-          ei->d_join = n;
         }
         return ei;
       }else{
@@ -1628,48 +1713,6 @@ int TheorySetsRels::EqcInfo::counter        = 0;
     }
   }
 
-  bool TheorySetsRels::addId( std::map< int, std::vector< int > >& id_map, int key, int id ) {
-    int n_data = d_vec_size[key];
-    int len    = n_data < (int)id_map[key].size() ? n_data : id_map[key].size();
-
-    for( int i = 0; i < len; i++ ) {
-      if( id_map[key][i] == id) {
-        return false;
-      }
-    }
-    if( n_data < (int)id_map[key].size() ) {
-      id_map[key][n_data] = id;
-    } else {
-      id_map[key].push_back( id );
-    }
-    d_vec_size[key] = n_data+1;
-    return true;
-  }
-
-  std::vector< int > TheorySetsRels::getIdList( std::map< int, std::vector< int > >& id_map, int key ) {
-    std::vector< int > id_list;
-    int n_data = d_vec_size[key];
-    int len    = n_data < (int)id_map[key].size() ? n_data : id_map[key].size();
-
-    for( int i = 0; i < len; i++ ) {
-      id_list.push_back(id_map[key][i]);
-    }
-    return id_list;
-  }
-
 }
 }
 }
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/theory/sets/theory_sets_rels.h b/src/theory/sets/theory_sets_rels.h
index 65a1c41..1677067 100644
--- a/src/theory/sets/theory_sets_rels.h
+++ b/src/theory/sets/theory_sets_rels.h
@@ -1,13 +1,13 @@
 /*********************                                                        */
 /*! \file theory_sets_rels.h
  ** \verbatim
- ** Original author: Paul Meng
- ** Major contributors: none
- ** Minor contributors (to current version): none
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Paul Meng, Mathias Preiner
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2014  New York University and The University of Iowa
- ** See the file COPYING in the top-level source directory for licensing
- ** information.\endverbatim
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
  **
  ** \brief Sets theory implementation.
  **
@@ -36,6 +36,7 @@ public:
   std::map< Node, TupleTrie > d_data;
 public:
   std::vector<Node> findTerms( std::vector< Node >& reps, int argIndex = 0 );
+  std::vector<Node> findSuccessors( std::vector< Node >& reps, int argIndex = 0 );
   Node existsTerm( std::vector< Node >& reps, int argIndex = 0 );
   bool addTerm( Node n, std::vector< Node >& reps, int argIndex = 0 );
   void debugPrint( const char * c, Node n, unsigned depth = 0 );
@@ -45,12 +46,7 @@ public:
 class TheorySetsRels {
 
   typedef context::CDChunkList< Node >                            NodeList;
-  typedef context::CDChunkList< int >                             IdList;
-  typedef context::CDHashMap< int, IdList* >                      IdListMap;
   typedef context::CDHashSet< Node, NodeHashFunction >            NodeSet;
-  typedef context::CDHashMap< Node, bool, NodeHashFunction >      NodeBoolMap;
-  typedef context::CDHashMap< Node, NodeList*, NodeHashFunction > NodeListMap;
-  typedef context::CDHashMap< Node, NodeSet*, NodeHashFunction >  NodeSetMap;
   typedef context::CDHashMap< Node, Node, NodeHashFunction >      NodeMap;
 
 public:
@@ -71,7 +67,6 @@ private:
    * d_not_mem tuples that are not members of this equivalence class
    * d_tp is a node of kind TRANSPOSE (if any) in this equivalence class,
    * d_pt is a node of kind PRODUCT (if any) in this equivalence class,
-   * d_join is a node of kind JOIN (if any) in this equivalence class,
    * d_tc is a node of kind TCLOSURE (if any) in this equivalence class,
    */
   class EqcInfo
@@ -79,43 +74,19 @@ private:
   public:
     EqcInfo( context::Context* c );
     ~EqcInfo(){}
-    static int                  counter;
     NodeSet                     d_mem;
     NodeMap                     d_mem_exp;
-    NodeListMap                 d_in;
-    NodeListMap                 d_out;
     context::CDO< Node >        d_tp;
     context::CDO< Node >        d_pt;
-    context::CDO< Node >        d_join;
     context::CDO< Node >        d_tc;
-    /** mapping from an element rep id to a list of rep ids that pointed by */
-    /** Context dependent map Int -> IntList */
-    std::map< int, std::vector< int > > d_id_inIds;
-    /** mapping from an element rep id to a list of rep ids that point to */
-    /** Context dependent map Int -> IntList */
-    std::map< int, std::vector< int > > d_id_outIds;
+    context::CDO< Node >        d_rel_tc;
   };
 
 private:
-  /** Context */
-  context::CDHashMap< int, int > d_vec_size;
-
-  /** Mapping between integer id and tuple element rep */
-  std::map< int, Node >      d_id_node;
-
-  /** Mapping between tuple element rep and integer id*/
-  std::map< Node, int >      d_node_id;
 
   /** has eqc info */
   bool hasEqcInfo( TNode n ) { return d_eqc_info.find( n )!=d_eqc_info.end(); }
 
-  bool addId( std::map< int, std::vector< int > >& id_map, int key, int id );
-  std::vector< int > getIdList( std::map< int, std::vector< int > >& id_map, int key );
-
-  void collectReachableNodes( std::map< int, std::vector< int > >&, int, std::hash_set<int>& , bool first_round = true);
-
-
-private:
   eq::EqualityEngine            *d_eqEngine;
   context::CDO<bool>            *d_conflict;
   TheorySets&                   d_sets_theory;
@@ -125,15 +96,13 @@ private:
   Node                          d_falseNode;
 
   /** Facts and lemmas to be sent to EE */
-  std::map< Node, Node >        d_pending_facts;
-  std::vector< Node >           d_lemmas_out;
   NodeList                      d_pending_merge;
-
-  /** inferences: maintained to ensure ref count for internally introduced nodes */
   NodeSet                       d_lemmas_produced;
   NodeSet                       d_shared_terms;
+  std::vector< Node >           d_lemmas_out;
+  std::map< Node, Node >        d_pending_facts;
+
 
-  /** Relations that have been applied JOIN, PRODUCT, TC composition rules */
   std::hash_set< Node, NodeHashFunction >       d_rel_nodes;
   std::map< Node, std::vector<Node> >           d_tuple_reps;
   std::map< Node, TupleTrie >                   d_membership_trie;
@@ -141,73 +110,47 @@ private:
   /** Symbolic tuple variables that has been reduced to concrete ones */
   std::hash_set< Node, NodeHashFunction >       d_symbolic_tuples;
 
-  /** Mapping between relation and its (non)member representatives */
-  std::map< Node, std::vector<Node> >           d_rReps_memberReps_cache;
-  std::map< Node, std::vector<Node> >           d_rReps_nonMemberReps_cache;
-
-
-  /** Mapping between relation and its (non)member representatives explanation */
-  std::map< Node, std::vector<Node> >           d_rReps_memberReps_exp_cache;
-  std::map< Node, std::vector<Node> >           d_rReps_nonMemberReps_exp_cache;
-
   /** Mapping between relation and its member representatives */
-  std::map< Node, std::vector<Node> >           d_membership_db;
+  std::map< Node, std::vector< Node > >           d_rReps_memberReps_cache;
 
-  /** Mapping between relation and its members' explanation */
-  std::map< Node, std::vector<Node> >           d_membership_exp_db;
+  /** Mapping between relation and its member representatives explanation */
+  std::map< Node, std::vector< Node > >           d_rReps_memberReps_exp_cache;
 
   /** Mapping between a relation representative and its equivalent relations involving relational operators */
   std::map< Node, std::map<kind::Kind_t, std::vector<Node> > >                  d_terms_cache;
 
-  /** Mapping between relation and its member representatives */
-  std::map< Node, std::vector<Node> >           d_arg_rep_tp_terms;
-
-  /** Mapping between TC(r) and one explanation when building TC graph*/
-  std::map< Node, Node >                                                        d_membership_tc_exp_cache;
-
-  /** Mapping between transitive closure relation TC(r) (is not necessary a representative) and members directly asserted members */
-  std::map< Node, std::hash_set<Node, NodeHashFunction> >                       d_tc_membership_db;
-
   /** Mapping between transitive closure relation TC(r) and its TC graph constructed based on the members of r*/
-  std::map< Node, std::map< Node, std::hash_set<Node, NodeHashFunction> > >     d_tc_r_graph;
   std::map< Node, std::map< Node, std::hash_set<Node, NodeHashFunction> > >     d_rRep_tcGraph;
   std::map< Node, std::map< Node, std::hash_set<Node, NodeHashFunction> > >     d_tcr_tcGraph;
   std::map< Node, std::map< Node, Node > > d_tcr_tcGraph_exps;
   std::map< Node, std::vector< Node > > d_tc_lemmas_last;
 
-  /** Mapping between transitive closure TC(r)'s representative and TC(r) */
   std::map< Node, EqcInfo* > d_eqc_info;
 
 public:
+  /** Standard effort notifications */
   void eqNotifyNewClass(Node t);
   void eqNotifyPostMerge(Node t1, Node t2);
 
 private:
 
+  /** Methods used in standard effort */
   void doPendingMerge();
-  Node findTCMemExp(EqcInfo*, Node);
-  void buildTCAndExp(Node, EqcInfo*);
-  void mergeTCEqcs(Node t1, Node t2);
-  void mergeTCEqcExp(EqcInfo*, EqcInfo*);
-  void mergeProductEqcs(Node t1, Node t2);
-  int getOrMakeElementRepId(EqcInfo*, Node);
-  void mergeTransposeEqcs(Node t1, Node t2);
-  Node explainTCMem(EqcInfo*, Node, Node, Node);
-  void sendInferProduct(bool, Node, Node, Node);
+  void sendInferProduct(Node member, Node pt_rel, Node exp);
+  void sendInferTranspose(Node t1, Node t2, Node exp );
+  void sendInferTClosure( Node mem_rep, EqcInfo* ei );
+  void sendMergeInfer( Node fact, Node reason, const char * c );
   EqcInfo* getOrMakeEqcInfo( Node n, bool doMake = false );
-  void sendInferTranspose(bool, Node, Node, Node, bool reverseOnly = false);
-  void addTCMemAndSendInfer(EqcInfo* tc_ei, Node mem, Node exp, bool fromRel = false);
-  void sendTCInference(EqcInfo* tc_ei, std::hash_set<int> in_reachable, std::hash_set<int> out_reachable, Node mem_rep, Node fst_rep, Node snd_rep, int id1, int id2);
-
-
 
+  /** Methods used in full effort */
   void check();
-  Node explain(Node);
   void collectRelsInfo();
   void applyTransposeRule( std::vector<Node> tp_terms );
   void applyTransposeRule( Node rel, Node rel_rep, Node exp );
   void applyProductRule( Node rel, Node rel_rep, Node exp );
   void applyJoinRule( Node rel, Node rel_rep, Node exp);
+  void applyJoinImageRule( Node mem_rep, Node rel_rep, Node exp);
+  void applyIdenRule( Node mem_rep, Node rel_rep, Node exp);
   void applyTCRule( Node mem, Node rel, Node rel_rep, Node exp);
   void buildTCGraphForRel( Node tc_rel );
   void doTCInference();
@@ -217,7 +160,9 @@ private:
 
   void composeMembersForRels( Node );
   void computeMembersForBinOpRel( Node );
+  void computeMembersForIdenTerm( Node );
   void computeMembersForUnaryOpRel( Node );
+  void computeMembersForJoinImageTerm( Node );
 
   bool isTCReachable( Node mem_rep, Node tc_rel );
   void isTCReachable( Node start, Node dest, std::hash_set<Node, NodeHashFunction>& hasSeen,
@@ -227,10 +172,9 @@ private:
   void addSharedTerm( TNode n );
   void sendInfer( Node fact, Node exp, const char * c );
   void sendLemma( Node fact, Node reason, const char * c );
-  void sendMergeInfer( Node fact, Node reason, const char * c );
   void doTCLemmas();
 
-  // Helper functions
+  /** Helper functions */
   bool holds( Node );
   bool hasTerm( Node a );
   void makeSharedTerm( Node );
@@ -239,7 +183,6 @@ private:
   void computeTupleReps( Node );
   bool areEqual( Node a, Node b );
   Node getRepresentative( Node t );
-  bool insertIntoIdList(IdList&, int);
   bool exists( std::vector<Node>&, Node );
   Node mkAnd( std::vector< TNode >& assumptions );
   inline void addToMembershipDB( Node, Node, Node  );
@@ -248,8 +191,6 @@ private:
   void addToMap( std::map< Node, std::vector<Node> >&, Node, Node );
   bool safelyAddToMap( std::map< Node, std::vector<Node> >&, Node, Node );
   bool isRel( Node n ) {return n.getType().isSet() && n.getType().getSetElementType().isTuple();}
-
-
 };
 
 
diff --git a/src/theory/sets/theory_sets_rewriter.cpp b/src/theory/sets/theory_sets_rewriter.cpp
index 9669561..3cce083 100644
--- a/src/theory/sets/theory_sets_rewriter.cpp
+++ b/src/theory/sets/theory_sets_rewriter.cpp
@@ -2,9 +2,9 @@
 /*! \file theory_sets_rewriter.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Kshitij Bansal, Tim King
+ **   Andrew Reynolds, Paul Meng, Kshitij Bansal
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -288,7 +288,7 @@ RewriteResponse TheorySetsRewriter::postRewrite(TNode node) {
       std::set<Node> right = NormalForm::getElementsFromNormalConstant(node[1]);
       std::set<Node> newSet;
       std::set_union(left.begin(), left.end(), right.begin(), right.end(),
-			  std::inserter(newSet, newSet.begin()));
+                          std::inserter(newSet, newSet.begin()));
       Node newNode = NormalForm::elementsToSet(newSet, node.getType());
       Assert(newNode.isConst());
       Trace("sets-postrewrite") << "Sets::postRewrite returning " << newNode << std::endl;
@@ -306,7 +306,7 @@ RewriteResponse TheorySetsRewriter::postRewrite(TNode node) {
     break;
   }//kind::UNION
   case kind::COMPLEMENT: {
-    Node univ = NodeManager::currentNM()->mkUniqueVar( node[0].getType(), kind::UNIVERSE_SET );
+    Node univ = NodeManager::currentNM()->mkNullaryOperator( node[0].getType(), kind::UNIVERSE_SET );
     return RewriteResponse( REWRITE_AGAIN, NodeManager::currentNM()->mkNode( kind::SETMINUS, univ, node[0] ) );
   }
     break;
@@ -328,6 +328,7 @@ RewriteResponse TheorySetsRewriter::postRewrite(TNode node) {
                    NodeManager::currentNM()->mkNode( kind::CARD, NodeManager::currentNM()->mkNode( kind::INTERSECTION, node[0][0], node[0][1] ) ) );                                      
       return RewriteResponse(REWRITE_DONE, ret );
     }
+    break;
   }
   case kind::TRANSPOSE: {
     if(node[0].getKind() == kind::TRANSPOSE) {
@@ -381,7 +382,7 @@ RewriteResponse TheorySetsRewriter::postRewrite(TNode node) {
         std::set<Node>::iterator right_it = right.begin();
         int right_len = (*right_it).getType().getTupleLength();
         while(right_it != right.end()) {
-          Trace("rels-debug") << "Sets::postRewrite processing left_it = " <<  *right_it << std::endl;
+          Trace("rels-debug") << "Sets::postRewrite processing right_it = " <<  *right_it << std::endl;
           std::vector<Node> right_tuple;
           for(int j = 0; j < right_len; j++) {
             right_tuple.push_back(RelsUtils::nthElementOfTuple(*right_it,j));
@@ -468,6 +469,77 @@ RewriteResponse TheorySetsRewriter::postRewrite(TNode node) {
     break;
   }
   
+  case kind::IDEN: {
+    if(node[0].getKind() == kind::EMPTYSET) {
+      return RewriteResponse(REWRITE_DONE, nm->mkConst(EmptySet(nm->toType(node.getType()))));
+    } else if (node[0].isConst()) {
+      std::set<Node> iden_rel_mems;
+      std::set<Node> rel_mems = NormalForm::getElementsFromNormalConstant(node[0]);
+      std::set<Node>::iterator rel_mems_it = rel_mems.begin();
+
+      while( rel_mems_it != rel_mems.end() ) {
+        Node fst_mem = RelsUtils::nthElementOfTuple( *rel_mems_it, 0);
+        iden_rel_mems.insert(RelsUtils::constructPair(node, fst_mem, fst_mem));
+        ++rel_mems_it;
+      }
+
+      Node new_node = NormalForm::elementsToSet(iden_rel_mems, node.getType());
+      Assert(new_node.isConst());
+      Trace("rels-postrewrite") << "Rels::postRewrite returning " << new_node << std::endl;
+      return RewriteResponse(REWRITE_DONE, new_node);
+
+    } else {
+      Trace("rels-postrewrite") << "Rels::postRewrite miss to handle term " << node << std::endl;
+    }
+    break;
+  }
+
+  case kind::JOIN_IMAGE: {
+    unsigned int min_card = node[1].getConst<Rational>().getNumerator().getUnsignedInt();
+    Trace("rels-postrewrite") << "Rels::postRewrite  " << node << " with min_card = " << min_card << std::endl;
+
+    if( min_card == 0) {
+      return RewriteResponse(REWRITE_DONE, nm->mkNullaryOperator( node.getType(), kind::UNIVERSE_SET ));
+    } else if(node[0].getKind() == kind::EMPTYSET) {
+      return RewriteResponse(REWRITE_DONE, nm->mkConst(EmptySet(nm->toType(node.getType()))));
+    } else if (node[0].isConst()) {
+      std::set<Node> has_checked;
+      std::set<Node> join_img_mems;
+      std::set<Node> rel_mems = NormalForm::getElementsFromNormalConstant(node[0]);
+      std::set<Node>::iterator rel_mems_it = rel_mems.begin();
+
+      while( rel_mems_it != rel_mems.end() ) {
+        Node fst_mem = RelsUtils::nthElementOfTuple( *rel_mems_it, 0);
+        if( has_checked.find( fst_mem ) != has_checked.end() ) {
+          ++rel_mems_it;
+          continue;
+        }
+        has_checked.insert( fst_mem );
+        std::set<Node> existing_mems;
+        std::set<Node>::iterator rel_mems_it_snd = rel_mems.begin();
+        while( rel_mems_it_snd != rel_mems.end() ) {
+          Node fst_mem_snd = RelsUtils::nthElementOfTuple( *rel_mems_it_snd, 0);
+          if( fst_mem == fst_mem_snd ) {
+            existing_mems.insert( RelsUtils::nthElementOfTuple( *rel_mems_it_snd, 1) );
+          }
+          ++rel_mems_it_snd;
+        }
+        if( existing_mems.size() >= min_card ) {
+          Datatype dt = node.getType().getSetElementType().getDatatype();
+          join_img_mems.insert(NodeManager::currentNM()->mkNode( kind::APPLY_CONSTRUCTOR, Node::fromExpr(dt[0].getConstructor()), fst_mem ));
+        }
+        ++rel_mems_it;
+      }
+      Node new_node = NormalForm::elementsToSet(join_img_mems, node.getType());
+      Assert(new_node.isConst());
+      Trace("rels-postrewrite") << "Rels::postRewrite returning " << new_node << std::endl;
+      return RewriteResponse(REWRITE_DONE, new_node);
+    } else {
+      Trace("rels-postrewrite") << "Rels::postRewrite miss to handle term " << node << std::endl;
+    }
+    break;
+  }
+
   default:
     break;
   }//switch(node.getKind())
@@ -494,13 +566,13 @@ RewriteResponse TheorySetsRewriter::preRewrite(TNode node) {
     size_t setNodeIndex =  node.getNumChildren()-1;
     for(size_t i = 1; i < setNodeIndex; ++i) {
       insertedElements = nm->mkNode(kind::UNION, 
-				    insertedElements,
-				    nm->mkNode(kind::SINGLETON, node[i]));
+                                    insertedElements,
+                                    nm->mkNode(kind::SINGLETON, node[i]));
     }
     return RewriteResponse(REWRITE_AGAIN, 
-			   nm->mkNode(kind::UNION,
-				      insertedElements, 
-				      node[setNodeIndex]));
+                           nm->mkNode(kind::UNION,
+                                      insertedElements,
+                                      node[setNodeIndex]));
 
   }//kind::INSERT
   else if(node.getKind() == kind::SUBSET) {
diff --git a/src/theory/sets/theory_sets_rewriter.h b/src/theory/sets/theory_sets_rewriter.h
index 50128b6..5cf0f8e 100644
--- a/src/theory/sets/theory_sets_rewriter.h
+++ b/src/theory/sets/theory_sets_rewriter.h
@@ -2,9 +2,9 @@
 /*! \file theory_sets_rewriter.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Kshitij Bansal, Tim King
+ **   Kshitij Bansal, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/sets/theory_sets_type_enumerator.h b/src/theory/sets/theory_sets_type_enumerator.h
index f2d6bae..f261ac3 100644
--- a/src/theory/sets/theory_sets_type_enumerator.h
+++ b/src/theory/sets/theory_sets_type_enumerator.h
@@ -2,9 +2,9 @@
 /*! \file theory_sets_type_enumerator.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Kshitij Bansal, Morgan Deters, Andrew Reynolds
+ **   Kshitij Bansal, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/sets/theory_sets_type_rules.h b/src/theory/sets/theory_sets_type_rules.h
index 11f375d..1fd5f08 100644
--- a/src/theory/sets/theory_sets_type_rules.h
+++ b/src/theory/sets/theory_sets_type_rules.h
@@ -2,9 +2,9 @@
 /*! \file theory_sets_type_rules.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Kshitij Bansal, Tim King, Morgan Deters
+ **   Kshitij Bansal, Andrew Reynolds, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -59,7 +59,15 @@ struct SetsBinaryOperatorTypeRule {
       }
       TypeNode secondSetType = n[1].getType(check);
       if(secondSetType != setType) {
-        throw TypeCheckingExceptionPrivate(n, "operator expects two sets of the same type");
+        if( n.getKind() == kind::INTERSECTION ){
+          setType = TypeNode::mostCommonTypeNode( secondSetType, setType );
+        }else{
+          setType = TypeNode::leastCommonTypeNode( secondSetType, setType );
+        }
+        if( setType.isNull() ){
+          throw TypeCheckingExceptionPrivate(n, "operator expects two sets of comparable types");
+        }
+        
       }
     }
     return setType;
@@ -88,7 +96,9 @@ struct SubsetTypeRule {
       }
       TypeNode secondSetType = n[1].getType(check);
       if(secondSetType != setType) {
-        throw TypeCheckingExceptionPrivate(n, "set subset operating on sets of different types");
+        if( !setType.isComparableTo( secondSetType ) ){
+          throw TypeCheckingExceptionPrivate(n, "set subset operating on sets of different types");
+        }
       }
     }
     return nodeManager->booleanType();
@@ -105,8 +115,14 @@ struct MemberTypeRule {
         throw TypeCheckingExceptionPrivate(n, "checking for membership in a non-set");
       }
       TypeNode elementType = n[0].getType(check);
-      if(!setType.getSetElementType().isSubtypeOf(elementType)) {
-        throw TypeCheckingExceptionPrivate(n, "member operating on sets of different types");
+      if(!elementType.isComparableTo(setType.getSetElementType())) {
+      //if(!elementType.isSubtypeOf(setType.getSetElementType())) {     //FIXME:typing
+        std::stringstream ss;
+        ss << "member operating on sets of different types:\n"
+           << "child type:  " << elementType << "\n"
+           << "not subtype: " << setType.getSetElementType() << "\n"
+           << "in term : " << n;
+        throw TypeCheckingExceptionPrivate(n, ss.str());
       }
     }
     return nodeManager->booleanType();
@@ -174,7 +190,19 @@ struct ComplementTypeRule {
   }
 };/* struct ComplementTypeRule */
 
-
+struct UniverseSetTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::UNIVERSE_SET);
+    // for nullary operators, we only computeType for check=true, since they are given TypeAttr() on creation
+    Assert(check);
+    TypeNode setType = n.getType();
+    if(!setType.isSet()) {
+      throw TypeCheckingExceptionPrivate(n, "Non-set type found for universe set");
+    }
+    return setType;
+  }
+};/* struct ComplementTypeRule */
 
 struct InsertTypeRule {
   inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
@@ -215,10 +243,10 @@ struct RelBinaryOperatorTypeRule {
     TypeNode resultType = firstRelType;
 
     if(!firstRelType.isSet() || !secondRelType.isSet()) {
-      throw TypeCheckingExceptionPrivate(n, " set operator operates on non-sets");
+      throw TypeCheckingExceptionPrivate(n, " Relational operator operates on non-sets");
     }
     if(!firstRelType[0].isTuple() || !secondRelType[0].isTuple()) {
-      throw TypeCheckingExceptionPrivate(n, " set operator operates on non-relations (sets of tuples)");
+      throw TypeCheckingExceptionPrivate(n, " Relational operator operates on non-relations (sets of tuples)");
     }
 
     std::vector<TypeNode> newTupleTypes;
@@ -255,8 +283,8 @@ struct RelTransposeTypeRule {
     throw (TypeCheckingExceptionPrivate, AssertionException) {
     Assert(n.getKind() == kind::TRANSPOSE);
     TypeNode setType = n[0].getType(check);
-    if(check && !setType.isSet() && !setType.getSetElementType().isTuple()) {
-        throw TypeCheckingExceptionPrivate(n, "relation transpose operats on non-relation");
+    if(check && (!setType.isSet() || !setType.getSetElementType().isTuple())) {
+        throw TypeCheckingExceptionPrivate(n, "relation transpose operates on non-relation");
     }
     std::vector<TypeNode> tupleTypes = setType[0].getTupleTypes();
     std::reverse(tupleTypes.begin(), tupleTypes.end());
@@ -274,7 +302,7 @@ struct RelTransClosureTypeRule {
     Assert(n.getKind() == kind::TCLOSURE);
     TypeNode setType = n[0].getType(check);
     if(check) {
-      if(!setType.isSet() && !setType.getSetElementType().isTuple()) {
+      if(!setType.isSet() || !setType.getSetElementType().isTuple()) {
         throw TypeCheckingExceptionPrivate(n, " transitive closure operates on non-relation");
       }
       std::vector<TypeNode> tupleTypes = setType[0].getTupleTypes();
@@ -294,6 +322,75 @@ struct RelTransClosureTypeRule {
     }
 };/* struct RelTransClosureTypeRule */
 
+struct JoinImageTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::JOIN_IMAGE);
+
+    TypeNode firstRelType = n[0].getType(check);
+
+    if(!firstRelType.isSet()) {
+      throw TypeCheckingExceptionPrivate(n, " JoinImage operator operates on non-relations");
+    }
+    if(!firstRelType[0].isTuple()) {
+      throw TypeCheckingExceptionPrivate(n, " JoinImage operator operates on non-relations (sets of tuples)");
+    }
+
+    std::vector<TypeNode> tupleTypes = firstRelType[0].getTupleTypes();
+    if(tupleTypes.size() != 2) {
+      throw TypeCheckingExceptionPrivate(n, " JoinImage operates on a non-binary relation");
+    }
+    TypeNode valType = n[1].getType(check);
+    if (valType != nodeManager->integerType()) {
+      throw TypeCheckingExceptionPrivate(
+          n, " JoinImage cardinality constraint must be integer");
+    }
+    if (n[1].getKind() != kind::CONST_RATIONAL) {
+      throw TypeCheckingExceptionPrivate(
+          n, " JoinImage cardinality constraint must be a constant");
+    }
+    CVC4::Rational r(INT_MAX);
+    if (n[1].getConst<Rational>() > r) {
+      throw TypeCheckingExceptionPrivate(
+          n, " JoinImage Exceeded INT_MAX in cardinality constraint");
+    }
+    if (n[1].getConst<Rational>().getNumerator().getSignedInt() < 0) {
+      throw TypeCheckingExceptionPrivate(
+          n, " JoinImage cardinality constraint must be non-negative");
+    }
+    std::vector<TypeNode> newTupleTypes;
+    newTupleTypes.push_back(tupleTypes[0]);
+    return nodeManager->mkSetType(nodeManager->mkTupleType(newTupleTypes));
+  }
+
+  inline static bool computeIsConst(NodeManager* nodeManager, TNode n) {
+    Assert(n.getKind() == kind::JOIN_IMAGE);
+    return false;
+  }
+};/* struct JoinImageTypeRule */
+
+struct RelIdenTypeRule {
+  inline static TypeNode computeType(NodeManager* nodeManager, TNode n, bool check)
+    throw (TypeCheckingExceptionPrivate, AssertionException) {
+    Assert(n.getKind() == kind::IDEN);
+    TypeNode setType = n[0].getType(check);
+    if(check) {
+      if(!setType.isSet() && !setType.getSetElementType().isTuple()) {
+        throw TypeCheckingExceptionPrivate(n, " Identity operates on non-relation");
+      }
+      if(setType[0].getTupleTypes().size() != 1) {
+        throw TypeCheckingExceptionPrivate(n, " Identity operates on non-unary relations");
+      }
+    }
+    std::vector<TypeNode> tupleTypes = setType[0].getTupleTypes();
+    tupleTypes.push_back(tupleTypes[0]);
+    return nodeManager->mkSetType(nodeManager->mkTupleType(tupleTypes));
+  }
+
+  inline static bool computeIsConst(NodeManager* nodeManager, TNode n) {
+      return false;
+    }
+};/* struct RelIdenTypeRule */
 
 struct SetsProperties {
   inline static Cardinality computeCardinality(TypeNode type) {
diff --git a/src/theory/shared_terms_database.cpp b/src/theory/shared_terms_database.cpp
index b78109d..8e4bd53 100644
--- a/src/theory/shared_terms_database.cpp
+++ b/src/theory/shared_terms_database.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Dejan Jovanovic, Morgan Deters, Clark Barrett
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/shared_terms_database.h b/src/theory/shared_terms_database.h
index cc89591..6b78a16 100644
--- a/src/theory/shared_terms_database.h
+++ b/src/theory/shared_terms_database.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Dejan Jovanovic, Morgan Deters, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/sort_inference.cpp b/src/theory/sort_inference.cpp
index 6dabf9a..73a50bc 100644
--- a/src/theory/sort_inference.cpp
+++ b/src/theory/sort_inference.cpp
@@ -2,9 +2,9 @@
 /*! \file sort_inference.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Morgan Deters, Tim King
+ **   Andrew Reynolds, Paul Meng, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/sort_inference.h b/src/theory/sort_inference.h
index ae3342f..ae4131f 100644
--- a/src/theory/sort_inference.h
+++ b/src/theory/sort_inference.h
@@ -2,9 +2,9 @@
 /*! \file sort_inference.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Andrew Reynolds, Tim King
+ **   Morgan Deters, Andrew Reynolds, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/strings/regexp_operation.cpp b/src/theory/strings/regexp_operation.cpp
index a665a02..ec788fa 100644
--- a/src/theory/strings/regexp_operation.cpp
+++ b/src/theory/strings/regexp_operation.cpp
@@ -2,9 +2,9 @@
 /*! \file regexp_operation.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tianyi Liang, Tim King
+ **   Morgan Deters, Tianyi Liang, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/strings/regexp_operation.h b/src/theory/strings/regexp_operation.h
index 0753913..4a0ce15 100644
--- a/src/theory/strings/regexp_operation.h
+++ b/src/theory/strings/regexp_operation.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Tianyi Liang, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/strings/theory_strings.cpp b/src/theory/strings/theory_strings.cpp
index 45a6a93..9b74c35 100644
--- a/src/theory/strings/theory_strings.cpp
+++ b/src/theory/strings/theory_strings.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Tianyi Liang, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -97,18 +97,18 @@ TheoryStrings::TheoryStrings(context::Context* c, context::UserContext* u,
       d_cardinality_lits(u),
       d_curr_cardinality(c, 0)
 {
-  d_extt = new ExtTheory( this );
-  d_extt->addFunctionKind( kind::STRING_SUBSTR );
-  d_extt->addFunctionKind( kind::STRING_STRIDOF );
-  d_extt->addFunctionKind( kind::STRING_ITOS );
-  d_extt->addFunctionKind( kind::STRING_U16TOS );
-  d_extt->addFunctionKind( kind::STRING_U32TOS );
-  d_extt->addFunctionKind( kind::STRING_STOI );
-  d_extt->addFunctionKind( kind::STRING_STOU16 );
-  d_extt->addFunctionKind( kind::STRING_STOU32 );
-  d_extt->addFunctionKind( kind::STRING_STRREPL );
-  d_extt->addFunctionKind( kind::STRING_STRCTN );
-  d_extt->addFunctionKind( kind::STRING_IN_REGEXP );
+  setupExtTheory();
+  getExtTheory()->addFunctionKind(kind::STRING_SUBSTR);
+  getExtTheory()->addFunctionKind(kind::STRING_STRIDOF);
+  getExtTheory()->addFunctionKind(kind::STRING_ITOS);
+  getExtTheory()->addFunctionKind(kind::STRING_U16TOS);
+  getExtTheory()->addFunctionKind(kind::STRING_U32TOS);
+  getExtTheory()->addFunctionKind(kind::STRING_STOI);
+  getExtTheory()->addFunctionKind(kind::STRING_STOU16);
+  getExtTheory()->addFunctionKind(kind::STRING_STOU32);
+  getExtTheory()->addFunctionKind(kind::STRING_STRREPL);
+  getExtTheory()->addFunctionKind(kind::STRING_STRCTN);
+  getExtTheory()->addFunctionKind(kind::STRING_IN_REGEXP);
 
   // The kinds we are treating as function application in congruence
   d_equalityEngine.addFunctionKind(kind::STRING_IN_REGEXP);
@@ -142,7 +142,6 @@ TheoryStrings::~TheoryStrings() {
   for( std::map< Node, EqcInfo* >::iterator it = d_eqc_info.begin(); it != d_eqc_info.end(); ++it ){
     delete it->second;
   }
-  delete d_extt;
 }
 
 Node TheoryStrings::getRepresentative( Node t ) {
@@ -183,6 +182,20 @@ bool TheoryStrings::areDisequal( Node a, Node b ){
   }
 }
 
+bool TheoryStrings::areCareDisequal( TNode x, TNode y ) {
+  Assert( d_equalityEngine.hasTerm(x) );
+  Assert( d_equalityEngine.hasTerm(y) );
+  if( d_equalityEngine.isTriggerTerm(x, THEORY_STRINGS) && d_equalityEngine.isTriggerTerm(y, THEORY_STRINGS) ){
+    TNode x_shared = d_equalityEngine.getTriggerTermRepresentative(x, THEORY_STRINGS);
+    TNode y_shared = d_equalityEngine.getTriggerTermRepresentative(y, THEORY_STRINGS);
+    EqualityStatus eqStatus = d_valuation.getEqualityStatus(x_shared, y_shared);
+    if( eqStatus==EQUALITY_FALSE_AND_PROPAGATED || eqStatus==EQUALITY_FALSE || eqStatus==EQUALITY_FALSE_IN_MODEL ){
+      return true;
+    }
+  }
+  return false;
+}
+
 Node TheoryStrings::getLengthExp( Node t, std::vector< Node >& exp, Node te ){
   Assert( areEqual( t, te ) );
   Node lt = mkLength( te );
@@ -439,8 +452,8 @@ void TheoryStrings::presolve() {
 /////////////////////////////////////////////////////////////////////////////
 
 
-void TheoryStrings::collectModelInfo( TheoryModel* m, bool fullModel ) {
-  Trace("strings-model") << "TheoryStrings : Collect model info, fullModel = " << fullModel << std::endl;
+void TheoryStrings::collectModelInfo( TheoryModel* m ) {
+  Trace("strings-model") << "TheoryStrings : Collect model info" << std::endl;
   Trace("strings-model") << "TheoryStrings : assertEqualityEngine." << std::endl;
   
   //AJR : no use doing this since we cannot preregister terms with finite types that don't belong to strings.
@@ -630,7 +643,7 @@ void TheoryStrings::preRegisterTerm(TNode n) {
           if( options::stringExp() ){
             //collect extended functions here: some may not be asserted to strings (such as those with return type Int),
             //  but we need to record them so they are treated properly
-            d_extt->registerTermRec( n );       
+            getExtTheory()->registerTermRec( n );
           }
         }
         //concat terms do not contribute to theory combination?  TODO: verify
@@ -783,10 +796,9 @@ bool TheoryStrings::needsCheckLastEffort() {
 void TheoryStrings::checkExtfReductions( int effort ) {
   //standardize this?
   //std::vector< Node > nred;
-  //d_extt->doReductions( effort, nred, false );
+  //getExtTheory()->doReductions( effort, nred, false );
 
-  std::vector< Node > extf;
-  d_extt->getActive( extf );
+  std::vector< Node > extf = getExtTheory()->getActive();
   Trace("strings-process") << "checking " << extf.size() << " active extf" << std::endl;
   for( unsigned i=0; i<extf.size(); i++ ){
     Node n = extf[i];
@@ -795,7 +807,7 @@ void TheoryStrings::checkExtfReductions( int effort ) {
     int ret = getReduction( effort, n, nr );
     Assert( nr.isNull() );
     if( ret!=0 ){
-      d_extt->markReduced( extf[i] );
+      getExtTheory()->markReduced( extf[i] );
       if( options::stringOpt1() && hasProcessed() ){
         return;
       }
@@ -845,7 +857,7 @@ void TheoryStrings::eqNotifyNewClass(TNode t){
     //we care about the length of this string
     registerTerm( t[0], 1 );
   }else{
-    //d_extt->registerTerm( t );
+    //getExtTheory()->registerTerm( t );
   }
 }
 
@@ -894,17 +906,12 @@ void TheoryStrings::addCarePairs( quantifiers::TermArgTrie * t1, quantifiers::Te
           Assert( d_equalityEngine.hasTerm(x) );
           Assert( d_equalityEngine.hasTerm(y) );
           Assert( !d_equalityEngine.areDisequal( x, y, false ) );
+          Assert( !areCareDisequal( x, y ) );
           if( !d_equalityEngine.areEqual( x, y ) ){
             if( d_equalityEngine.isTriggerTerm(x, THEORY_STRINGS) && d_equalityEngine.isTriggerTerm(y, THEORY_STRINGS) ){
               TNode x_shared = d_equalityEngine.getTriggerTermRepresentative(x, THEORY_STRINGS);
               TNode y_shared = d_equalityEngine.getTriggerTermRepresentative(y, THEORY_STRINGS);
-              EqualityStatus eqStatus = d_valuation.getEqualityStatus(x_shared, y_shared);
-              if( eqStatus==EQUALITY_FALSE_AND_PROPAGATED || eqStatus==EQUALITY_FALSE || eqStatus==EQUALITY_FALSE_IN_MODEL ){
-                //an argument is disequal, we are done
-                return;
-              }else{
-                currentPairs.push_back(make_pair(x_shared, y_shared));
-              }
+              currentPairs.push_back(make_pair(x_shared, y_shared));
             }
           }
         }
@@ -928,7 +935,9 @@ void TheoryStrings::addCarePairs( quantifiers::TermArgTrie * t1, quantifiers::Te
         ++it2;
         for( ; it2 != t1->d_data.end(); ++it2 ){
           if( !d_equalityEngine.areDisequal(it->first, it2->first, false) ){
-            addCarePairs( &it->second, &it2->second, arity, depth+1 );
+            if( !areCareDisequal(it->first, it2->first) ){
+              addCarePairs( &it->second, &it2->second, arity, depth+1 );
+            }
           }
         }
       }
@@ -937,7 +946,9 @@ void TheoryStrings::addCarePairs( quantifiers::TermArgTrie * t1, quantifiers::Te
       for( std::map< TNode, quantifiers::TermArgTrie >::iterator it = t1->d_data.begin(); it != t1->d_data.end(); ++it ){
         for( std::map< TNode, quantifiers::TermArgTrie >::iterator it2 = t2->d_data.begin(); it2 != t2->d_data.end(); ++it2 ){
           if( !d_equalityEngine.areDisequal(it->first, it2->first, false) ){
-            addCarePairs( &it->second, &it2->second, arity, depth+1 );
+            if( !areCareDisequal(it->first, it2->first) ){
+              addCarePairs( &it->second, &it2->second, arity, depth+1 );
+            }
           }
         }
       }
@@ -1004,11 +1015,11 @@ void TheoryStrings::assertPendingFact(Node atom, bool polarity, Node exp) {
       }
     }
     //register the atom here, since it may not create a new equivalence class
-    //d_extt->registerTerm( atom );
+    //getExtTheory()->registerTerm( atom );
   }
   Trace("strings-pending-debug") << "  Now collect terms" << std::endl;
   //collect extended function terms in the atom
-  d_extt->registerTermRec( atom );
+  getExtTheory()->registerTermRec( atom );
   Trace("strings-pending-debug") << "  Finished collect terms" << std::endl;
 }
 
@@ -1135,9 +1146,9 @@ void TheoryStrings::checkInit() {
                   }
                   //infer the equality
                   sendInference( exp, n.eqNode( nc ), "I_Norm" );
-                }else if( d_extt->hasFunctionKind( n.getKind() ) ){
+                }else if( getExtTheory()->hasFunctionKind( n.getKind() ) ){
                   //mark as congruent : only process if neither has been reduced
-                  d_extt->markCongruent( nc, n );
+                  getExtTheory()->markCongruent( nc, n );
                 }
                 //this node is congruent to another one, we can ignore it
                 Trace("strings-process-debug") << "  congruent term : " << n << std::endl;
@@ -1294,11 +1305,10 @@ void TheoryStrings::checkExtfEval( int effort ) {
   Trace("strings-extf-list") << "Active extended functions, effort=" << effort << " : " << std::endl;
   d_extf_info_tmp.clear();
   bool has_nreduce = false;
-  std::vector< Node > terms; 
+  std::vector< Node > terms = getExtTheory()->getActive();
   std::vector< Node > sterms; 
   std::vector< std::vector< Node > > exp;
-  d_extt->getActive( terms );
-  d_extt->getSubstitutedTerms( effort, terms, sterms, exp );
+  getExtTheory()->getSubstitutedTerms( effort, terms, sterms, exp );
   for( unsigned i=0; i<terms.size(); i++ ){
     Node n = terms[i];
     Node sn = sterms[i];
@@ -1322,7 +1332,7 @@ void TheoryStrings::checkExtfEval( int effort ) {
       //if rewrites to a constant, then do the inference and mark as reduced
       if( nrc.isConst() ){
         if( effort<3 ){
-          d_extt->markReduced( n );
+          getExtTheory()->markReduced( n );
           Trace("strings-extf-debug") << "  resolvable by evaluation..." << std::endl;
           std::vector< Node > exps;
           Trace("strings-extf-debug") << "  get symbolic definition..." << std::endl;
@@ -1382,7 +1392,7 @@ void TheoryStrings::checkExtfEval( int effort ) {
       //if it reduces to a conjunction, infer each and reduce
       }else if( ( nrc.getKind()==kind::OR && itit->second.d_pol==-1 ) || ( nrc.getKind()==kind::AND && itit->second.d_pol==1 ) ){
         Assert( effort<3 );
-        d_extt->markReduced( n );
+        getExtTheory()->markReduced( n );
         itit->second.d_exp.push_back( itit->second.d_pol==-1 ? n.negate() : n );
         Trace("strings-extf-debug") << "  decomposable..." << std::endl;
         Trace("strings-extf") << "  resolve extf : " << sn << " -> " << nrc << ", pol = " << itit->second.d_pol << std::endl;
@@ -1412,7 +1422,7 @@ void TheoryStrings::checkExtfEval( int effort ) {
         }
         Trace("strings-extf-list") << std::endl;
       }  
-      if( d_extt->isActive( n ) && itit->second.d_model_active ){
+      if( getExtTheory()->isActive( n ) && itit->second.d_model_active ){
         has_nreduce = true;
       }
     }
@@ -1444,7 +1454,7 @@ void TheoryStrings::checkExtfInference( Node n, Node nr, ExtfInfoTmp& in, int ef
             children[index] = nr[index][i];
             Node conc = NodeManager::currentNM()->mkNode( kind::STRING_STRCTN, children );
             //can mark as reduced, since model for n => model for conc
-            d_extt->markReduced( conc );
+            getExtTheory()->markReduced( conc );
             sendInference( in.d_exp, in.d_pol==1 ? conc : conc.negate(), "CTN_Decompose" );
           }
           
@@ -1481,7 +1491,7 @@ void TheoryStrings::checkExtfInference( Node n, Node nr, ExtfInfoTmp& in, int ef
           }
         }else{
           Trace("strings-extf-debug") << "  redundant." << std::endl;
-          d_extt->markReduced( n );
+          getExtTheory()->markReduced( n );
         }
       }
     }
@@ -2202,7 +2212,7 @@ void TheoryStrings::getNormalForms( Node &eqc, std::vector< std::vector< Node >
     normal_forms_exp_depend.push_back( std::map< Node, std::map< bool, int > >() );
   }else{
     if(Trace.isOn("strings-solve")) {
-      Trace("strings-solve") << "--- Normal forms for equivlance class " << eqc << " : " << std::endl;
+      Trace("strings-solve") << "--- Normal forms for equivalance class " << eqc << " : " << std::endl;
       for( unsigned i=0; i<normal_forms.size(); i++ ) {
         Trace("strings-solve") << "#" << i << " (from " << normal_form_src[i] << ") : ";
         for( unsigned j=0; j<normal_forms[i].size(); j++ ) {
@@ -3715,9 +3725,32 @@ void TheoryStrings::checkCardinality() {
         card_need++;
       }
       Trace("strings-card") << "Need length " << card_need << " for this number of strings (where alphabet size is " << d_card_size << ")." << std::endl;
-      Node cmp = NodeManager::currentNM()->mkNode( kind::GEQ, lr, NodeManager::currentNM()->mkConst( Rational( card_need ) ) );
-      cmp = Rewriter::rewrite( cmp );
-      if( cmp!=d_true ){
+      //check if we need to split
+      bool needsSplit = true;
+      if( lr.isConst() ){
+        // if constant, compare
+        Node cmp = NodeManager::currentNM()->mkNode( kind::GEQ, lr, NodeManager::currentNM()->mkConst( Rational( card_need ) ) );
+        cmp = Rewriter::rewrite( cmp );
+        needsSplit = cmp!=d_true;
+      }else{
+        // find the minimimum constant that we are unknown to be disequal from, or otherwise stop if we increment such that cardinality does not apply
+        unsigned r=0; 
+        bool success = true;
+        while( r<card_need && success ){
+          Node rr = NodeManager::currentNM()->mkConst<Rational>( Rational(r) );
+          if( areDisequal( rr, lr ) ){
+            r++;
+          }else{
+            success = false;
+          }
+        }
+        if( r>0 ){
+          Trace("strings-card") << "Symbolic length " << lr << " must be at least " << r << " due to constant disequalities." << std::endl;
+        }
+        needsSplit = r<card_need;
+      }
+
+      if( needsSplit ){
         unsigned int int_k = (unsigned int)card_need;
         for( std::vector< Node >::iterator itr1 = cols[i].begin();
             itr1 != cols[i].end(); ++itr1) {
@@ -3960,10 +3993,10 @@ Node TheoryStrings::getMembership( Node n, bool isPos, unsigned i ) {
 
 Node TheoryStrings::mkRegExpAntec(Node atom, Node ant) {
   if(d_regexp_ant.find(atom) == d_regexp_ant.end()) {
-    return Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::AND, ant, atom) );
+    return NodeManager::currentNM()->mkNode(kind::AND, ant, atom);
   } else {
     Node n = d_regexp_ant[atom];
-    return Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::AND, ant, n) );
+    return NodeManager::currentNM()->mkNode(kind::AND, ant, n);
   }
 }
 
@@ -4276,9 +4309,8 @@ bool TheoryStrings::checkMemberships2() {
 
 void TheoryStrings::checkMemberships() {
   //add the memberships
-  std::vector< Node > mems;
-  d_extt->getActive( mems, kind::STRING_IN_REGEXP );
-  for( unsigned i=0; i<mems.size(); i++ ){
+  std::vector<Node> mems = getExtTheory()->getActive(kind::STRING_IN_REGEXP);
+  for (unsigned i = 0; i < mems.size(); i++) {
     Node n = mems[i];
     Assert( d_extf_info_tmp.find( n )!=d_extf_info_tmp.end() );
     if( d_extf_info_tmp[n].d_pol==1 || d_extf_info_tmp[n].d_pol==-1 ){
@@ -4477,7 +4509,7 @@ void TheoryStrings::checkMemberships() {
                 }
               }
             }
-            antec = Rewriter::rewrite( NodeManager::currentNM()->mkNode(kind::AND, antec, mkExplain(rnfexp)) );
+            antec = NodeManager::currentNM()->mkNode(kind::AND, antec, mkExplain(rnfexp));
             Node conc = nvec.size()==1 ? nvec[0] : NodeManager::currentNM()->mkNode(kind::AND, nvec);
             conc = Rewriter::rewrite(conc);
             sendLemma( antec, conc, "REGEXP_Unfold" );
@@ -4617,7 +4649,7 @@ bool TheoryStrings::checkPDerivative( Node x, Node r, Node atom, bool &addedLemm
     switch(d_regexp_opr.delta(r, exp)) {
       case 0: {
         Node antec = mkRegExpAntec(atom, x.eqNode(d_emptyString));
-        antec = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::AND, antec, antnf));
+        antec = NodeManager::currentNM()->mkNode(kind::AND, antec, antnf);
         sendLemma(antec, exp, "RegExp Delta");
         addedLemma = true;
         d_regexp_ccached.insert(atom);
@@ -4629,7 +4661,7 @@ bool TheoryStrings::checkPDerivative( Node x, Node r, Node atom, bool &addedLemm
       }
       case 2: {
         Node antec = mkRegExpAntec(atom, x.eqNode(d_emptyString));
-        antec = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::AND, antec, antnf));
+        antec = NodeManager::currentNM()->mkNode(kind::AND, antec, antnf);
         Node conc = Node::null();
         sendLemma(antec, conc, "RegExp Delta CONFLICT");
         addedLemma = true;
@@ -4658,7 +4690,7 @@ bool TheoryStrings::checkPDerivative( Node x, Node r, Node atom, bool &addedLemm
       }
     }*/
     Node sREant = mkRegExpAntec(atom, d_true);
-    sREant = Rewriter::rewrite(NodeManager::currentNM()->mkNode(kind::AND, sREant, antnf));
+    sREant = NodeManager::currentNM()->mkNode(kind::AND, sREant, antnf);
     if(deriveRegExp( x, r, sREant )) {
       addedLemma = true;
       d_regexp_ccached.insert(atom);
diff --git a/src/theory/strings/theory_strings.h b/src/theory/strings/theory_strings.h
index 0294c38..ac45bb7 100644
--- a/src/theory/strings/theory_strings.h
+++ b/src/theory/strings/theory_strings.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tianyi Liang, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -141,6 +141,7 @@ private:
   bool hasTerm( Node a );
   bool areEqual( Node a, Node b );
   bool areDisequal( Node a, Node b );
+  bool areCareDisequal( TNode x, TNode y );
   // t is representative, te = t, add lt = te to explanation exp
   Node getLengthExp( Node t, std::vector< Node >& exp, Node te );
   Node getLength( Node t, std::vector< Node >& exp );
@@ -216,7 +217,7 @@ private:
   // MODEL GENERATION
   /////////////////////////////////////////////////////////////////////////////
 public:
-  void collectModelInfo(TheoryModel* m, bool fullModel);
+  void collectModelInfo(TheoryModel* m);
 
   /////////////////////////////////////////////////////////////////////////////
   // NOTIFICATIONS
diff --git a/src/theory/strings/theory_strings_preprocess.cpp b/src/theory/strings/theory_strings_preprocess.cpp
index d8d8e39..ca49727 100644
--- a/src/theory/strings/theory_strings_preprocess.cpp
+++ b/src/theory/strings/theory_strings_preprocess.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Tianyi Liang, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/strings/theory_strings_preprocess.h b/src/theory/strings/theory_strings_preprocess.h
index faaeb53..60bfd6f 100644
--- a/src/theory/strings/theory_strings_preprocess.h
+++ b/src/theory/strings/theory_strings_preprocess.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/strings/theory_strings_rewriter.cpp b/src/theory/strings/theory_strings_rewriter.cpp
index 2ee367c..de9b60d 100644
--- a/src/theory/strings/theory_strings_rewriter.cpp
+++ b/src/theory/strings/theory_strings_rewriter.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tianyi Liang, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -1622,42 +1622,47 @@ Node TheoryStringsRewriter::rewriteReplace( Node node ) {
   if( node[1]==node[2] ){
     return node[0];
   }else{
-    std::vector< Node > children;
-    getConcat( node[0], children );
-    if( children[0].isConst() && node[1].isConst() ){
-      CVC4::String s = children[0].getConst<String>();
-      CVC4::String t = node[1].getConst<String>();
-      std::size_t p = s.find(t);
-      if( p != std::string::npos ) {
-        Node retNode;
-        if( node[2].isConst() ){
-          CVC4::String r = node[2].getConst<String>();
-          CVC4::String ret = s.replace(t, r);
-          retNode = NodeManager::currentNM()->mkConst( ::CVC4::String(ret) );
-        } else {
-          CVC4::String s1 = s.substr(0, (int)p);
-          CVC4::String s3 = s.substr((int)p + (int)t.size());
-          Node ns1 = NodeManager::currentNM()->mkConst( ::CVC4::String(s1) );
-          Node ns3 = NodeManager::currentNM()->mkConst( ::CVC4::String(s3) );
-          retNode = NodeManager::currentNM()->mkNode( kind::STRING_CONCAT, ns1, node[2], ns3 );
-        }
-        if( children.size()>1 ){
-          children[0] = retNode;
-          return mkConcat( kind::STRING_CONCAT, children );
-        }else{
-          return retNode;
-        }
-      }else{
-        //could not find replacement string
-        if( node[0].isConst() ){
-          return node[0];
+    if( node[1].isConst() ){
+      if( node[1].getConst<String>().isEmptyString() ){
+        return node[0];
+      }
+      std::vector< Node > children;
+      getConcat( node[0], children );
+      if( children[0].isConst() ){
+        CVC4::String s = children[0].getConst<String>();
+        CVC4::String t = node[1].getConst<String>();
+        std::size_t p = s.find(t);
+        if( p != std::string::npos ) {
+          Node retNode;
+          if( node[2].isConst() ){
+            CVC4::String r = node[2].getConst<String>();
+            CVC4::String ret = s.replace(t, r);
+            retNode = NodeManager::currentNM()->mkConst( ::CVC4::String(ret) );
+          } else {
+            CVC4::String s1 = s.substr(0, (int)p);
+            CVC4::String s3 = s.substr((int)p + (int)t.size());
+            Node ns1 = NodeManager::currentNM()->mkConst( ::CVC4::String(s1) );
+            Node ns3 = NodeManager::currentNM()->mkConst( ::CVC4::String(s3) );
+            retNode = NodeManager::currentNM()->mkNode( kind::STRING_CONCAT, ns1, node[2], ns3 );
+          }
+          if( children.size()>1 ){
+            children[0] = retNode;
+            return mkConcat( kind::STRING_CONCAT, children );
+          }else{
+            return retNode;
+          }
         }else{
-          //check for overlap, if none, we can remove the prefix
-          if( s.overlap(t)==0 ){
-            std::vector< Node > spl;
-            spl.insert( spl.end(), children.begin()+1, children.end() );
-            return NodeManager::currentNM()->mkNode( kind::STRING_CONCAT, children[0],
-                        NodeManager::currentNM()->mkNode( kind::STRING_STRREPL, mkConcat( kind::STRING_CONCAT, spl ), node[1], node[2] ) );
+          //could not find replacement string
+          if( node[0].isConst() ){
+            return node[0];
+          }else{
+            //check for overlap, if none, we can remove the prefix
+            if( s.overlap(t)==0 ){
+              std::vector< Node > spl;
+              spl.insert( spl.end(), children.begin()+1, children.end() );
+              return NodeManager::currentNM()->mkNode( kind::STRING_CONCAT, children[0],
+                          NodeManager::currentNM()->mkNode( kind::STRING_STRREPL, mkConcat( kind::STRING_CONCAT, spl ), node[1], node[2] ) );
+            }
           }
         }
       }
diff --git a/src/theory/strings/theory_strings_rewriter.h b/src/theory/strings/theory_strings_rewriter.h
index e166bfa..d5a3592 100644
--- a/src/theory/strings/theory_strings_rewriter.h
+++ b/src/theory/strings/theory_strings_rewriter.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tianyi Liang, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/strings/theory_strings_type_rules.h b/src/theory/strings/theory_strings_type_rules.h
index eae9935..b02257d 100644
--- a/src/theory/strings/theory_strings_type_rules.h
+++ b/src/theory/strings/theory_strings_type_rules.h
@@ -2,9 +2,9 @@
 /*! \file theory_strings_type_rules.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tianyi Liang, Tim King, Morgan Deters
+ **   Tianyi Liang, Paul Meng, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -98,7 +98,7 @@ public:
     if( check ) {
       TypeNode t = n[0].getType(check);
       if (!t.isString()) {
-        throw TypeCheckingExceptionPrivate(n, "expecting an orginal string term in string contain");
+        throw TypeCheckingExceptionPrivate(n, "expecting an original string term in string contain");
       }
       t = n[1].getType(check);
       if (!t.isString()) {
diff --git a/src/theory/strings/type_enumerator.h b/src/theory/strings/type_enumerator.h
index 1fe3d79..c7a36f2 100644
--- a/src/theory/strings/type_enumerator.h
+++ b/src/theory/strings/type_enumerator.h
@@ -2,9 +2,9 @@
 /*! \file type_enumerator.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tianyi Liang, Tim King, Andrew Reynolds
+ **   Tianyi Liang, Paul Meng, Andres Noetzli
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -50,7 +50,7 @@ public:
   Node operator*() throw() {
     return d_curr;
   }
-  StringEnumerator& operator++() throw() {
+  StringEnumerator& operator++() {
   bool changed = false;
   do{
     for(unsigned i=0; i<d_data.size(); ++i) {
@@ -99,7 +99,7 @@ public:
     return d_curr;
   }
 
-  StringEnumeratorLength& operator++() throw() {
+  StringEnumeratorLength& operator++() {
     bool changed = false;
     for(unsigned i=0; i<d_data.size(); ++i) {
       if( d_data[i] + 1 < d_cardinality ) {
diff --git a/src/theory/substitutions.cpp b/src/theory/substitutions.cpp
index 7dbfb26..ffb1cd1 100644
--- a/src/theory/substitutions.cpp
+++ b/src/theory/substitutions.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Clark Barrett, Dejan Jovanovic, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/substitutions.h b/src/theory/substitutions.h
index 019fbd1..5a66181 100644
--- a/src/theory/substitutions.h
+++ b/src/theory/substitutions.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Dejan Jovanovic, Clark Barrett
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/term_registration_visitor.cpp b/src/theory/term_registration_visitor.cpp
index e758002..1e1a2e8 100644
--- a/src/theory/term_registration_visitor.cpp
+++ b/src/theory/term_registration_visitor.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Dejan Jovanovic, Andrew Reynolds, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/term_registration_visitor.h b/src/theory/term_registration_visitor.h
index 6d04910..39cce27 100644
--- a/src/theory/term_registration_visitor.h
+++ b/src/theory/term_registration_visitor.h
@@ -2,9 +2,9 @@
 /*! \file term_registration_visitor.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Tim King
+ **   Dejan Jovanovic, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/theory.cpp b/src/theory/theory.cpp
index 340ab23..f010798 100644
--- a/src/theory/theory.cpp
+++ b/src/theory/theory.cpp
@@ -2,9 +2,9 @@
 /*! \file theory.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Dejan Jovanovic, Clark Barrett
+ **   Tim King, Andrew Reynolds, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -66,7 +66,7 @@ Theory::Theory(TheoryId id, context::Context* satContext,
     , d_sharedTermsIndex(satContext, 0)
     , d_careGraph(NULL)
     , d_quantEngine(NULL)
-    , d_extt(NULL)
+    , d_extTheory(NULL)
     , d_checkTime(getFullInstanceName() + "::checkTime")
     , d_computeCareGraphTime(getFullInstanceName() + "::computeCareGraphTime")
     , d_sharedTerms(satContext)
@@ -81,6 +81,8 @@ Theory::Theory(TheoryId id, context::Context* satContext,
 Theory::~Theory() {
   smtStatisticsRegistry()->unregisterStat(&d_checkTime);
   smtStatisticsRegistry()->unregisterStat(&d_computeCareGraphTime);
+
+  delete d_extTheory;
 }
 
 TheoryId Theory::theoryOf(TheoryOfMode mode, TNode node) {
@@ -296,6 +298,39 @@ std::pair<bool, Node> Theory::entailmentCheck(
   return make_pair(false, Node::null());
 }
 
+ExtTheory* Theory::getExtTheory() {
+  Assert(d_extTheory != NULL);
+  return d_extTheory;
+}
+
+void Theory::addCarePair(TNode t1, TNode t2) {
+  if (d_careGraph) {
+    d_careGraph->insert(CarePair(t1, t2, d_id));
+  }
+}
+
+void Theory::getCareGraph(CareGraph* careGraph) {
+  Assert(careGraph != NULL);
+
+  Trace("sharing") << "Theory<" << getId() << ">::getCareGraph()" << std::endl;
+  TimerStat::CodeTimer computeCareGraphTime(d_computeCareGraphTime);
+  d_careGraph = careGraph;
+  computeCareGraph();
+  d_careGraph = NULL;
+}
+
+void Theory::setQuantifiersEngine(QuantifiersEngine* qe) {
+  Assert(d_quantEngine == NULL);
+  Assert(qe != NULL);
+  d_quantEngine = qe;
+}
+
+void Theory::setupExtTheory() {
+  Assert(d_extTheory == NULL);
+  d_extTheory = new ExtTheory(this);
+}
+
+
 EntailmentCheckParameters::EntailmentCheckParameters(TheoryId tid)
   : d_tid(tid) {
 }
@@ -324,90 +359,134 @@ EntailmentCheckSideEffects::~EntailmentCheckSideEffects() {
 }
 
 
-ExtTheory::ExtTheory( Theory * p ) : d_parent( p ), 
-d_ext_func_terms( p->getSatContext() ), d_ci_inactive( p->getUserContext() ), 
-d_lemmas( p->getUserContext() ), d_pp_lemmas( p->getUserContext() ), d_has_extf( p->getSatContext() ){
+
+ExtTheory::ExtTheory( Theory * p, bool cacheEnabled ) : d_parent( p ), 
+d_ext_func_terms( p->getSatContext() ), d_ci_inactive( p->getUserContext() ), d_has_extf( p->getSatContext() ),
+d_lemmas( p->getUserContext() ), d_pp_lemmas( p->getUserContext() ), d_cacheEnabled( cacheEnabled ){
   d_true = NodeManager::currentNM()->mkConst( true );
 }
 
-//gets all leaf terms in n
-void ExtTheory::collectVars( Node n, std::vector< Node >& vars, std::map< Node, bool >& visited ) {
-  if( !n.isConst() ){
-    if( visited.find( n )==visited.end() ){
-      visited[n] = true;
-      //treat terms not belonging to this theory as leaf  
-      //  AJR TODO : should include terms not belonging to this theory (commented below)
-      if( n.getNumChildren()>0 ){//&& Theory::theoryOf(n)==d_parent->getId() ){
-        for( unsigned i=0; i<n.getNumChildren(); i++ ){
-          collectVars( n[i], vars, visited );
-        }
-      }else{
-        vars.push_back( n );
-      }
+// Gets all leaf terms in n.
+std::vector<Node> ExtTheory::collectVars(Node n) {
+  std::vector<Node> vars;
+  std::set<Node> visited;
+  std::vector<Node> worklist;
+  worklist.push_back(n);
+  while (!worklist.empty()) {
+    Node current = worklist.back();
+    worklist.pop_back();
+    if (current.isConst() || visited.count(current) > 0) {
+      continue;
     }
+    visited.insert(current);
+    // Treat terms not belonging to this theory as leaf
+    // AJR TODO : should include terms not belonging to this theory
+    // (commented below)
+    if (current.getNumChildren() > 0) {
+      //&& Theory::theoryOf(n)==d_parent->getId() ){
+      worklist.insert(worklist.end(), current.begin(), current.end());
+    } else {
+      vars.push_back(current);
+    }
+  }
+  return vars;
+}
+
+Node ExtTheory::getSubstitutedTerm( int effort, Node term, std::vector< Node >& exp, bool useCache ) {
+  if( useCache ){
+    Assert( d_gst_cache[effort].find( term )!=d_gst_cache[effort].end() );
+    exp.insert( exp.end(), d_gst_cache[effort][term].d_exp.begin(), d_gst_cache[effort][term].d_exp.end() );
+    return d_gst_cache[effort][term].d_sterm;
+  }else{
+    std::vector< Node > terms;
+    terms.push_back( term );
+    std::vector< Node > sterms;
+    std::vector< std::vector< Node > > exps;
+    getSubstitutedTerms( effort, terms, sterms, exps, useCache );
+    Assert( sterms.size()==1 );
+    Assert( exps.size()==1 );
+    exp.insert( exp.end(), exps[0].begin(), exps[0].end() );
+    return sterms[0];
   }
 }
 
-//do inferences 
-void ExtTheory::getSubstitutedTerms( int effort, std::vector< Node >& terms, std::vector< Node >& sterms, std::vector< std::vector< Node > >& exp ) {
-  Trace("extt-debug") << "Currently " << d_ext_func_terms.size() << " extended functions." << std::endl;
-  Trace("extt-debug") << "..." << terms.size() << " to reduce." << std::endl;
-  if( !terms.empty() ){
-    //all variables we need to find a substitution for
-    std::vector< Node > vars;
-    std::vector< Node > sub;
-    std::map< Node, std::vector< Node > > expc;
+//do inferences
+void ExtTheory::getSubstitutedTerms(int effort, const std::vector<Node>& terms,
+                                    std::vector<Node>& sterms,
+                                    std::vector<std::vector<Node> >& exp,
+                                    bool useCache) {
+  if (useCache) {
     for( unsigned i=0; i<terms.size(); i++ ){
-      //do substitution, rewrite
       Node n = terms[i];
-      std::map< Node, ExtfInfo >::iterator iti = d_extf_info.find( n );
-      Trace("extt-debug") << "Check extf : " << n << std::endl;
-      Assert( iti!=d_extf_info.end() );
-      for( unsigned i=0; i<iti->second.d_vars.size(); i++ ){
-        if( std::find( vars.begin(), vars.end(), iti->second.d_vars[i] )==vars.end() ){
-          vars.push_back( iti->second.d_vars[i] );
-        } 
-      }
+      Assert( d_gst_cache[effort].find( n )!=d_gst_cache[effort].end() );
+      sterms.push_back( d_gst_cache[effort][n].d_sterm );
+      exp.push_back( std::vector< Node >() );
+      exp[0].insert( exp[0].end(), d_gst_cache[effort][n].d_exp.begin(), d_gst_cache[effort][n].d_exp.end() );
     }
-    //get the current substitution for all variables
-    if( d_parent->getCurrentSubstitution( effort, vars, sub, expc ) ){
-      Assert( vars.size()==sub.size() );
+  }else{
+    Trace("extt-debug") << "getSubstitutedTerms for " << terms.size() << " / " << d_ext_func_terms.size() << " extended functions." << std::endl;
+    if( !terms.empty() ){
+      //all variables we need to find a substitution for
+      std::vector< Node > vars;
+      std::vector< Node > sub;
+      std::map< Node, std::vector< Node > > expc;
+      for( unsigned i=0; i<terms.size(); i++ ){
+        //do substitution, rewrite
+        Node n = terms[i];
+        std::map< Node, ExtfInfo >::iterator iti = d_extf_info.find( n );
+        Assert( iti!=d_extf_info.end() );
+        for( unsigned i=0; i<iti->second.d_vars.size(); i++ ){
+          if( std::find( vars.begin(), vars.end(), iti->second.d_vars[i] )==vars.end() ){
+            vars.push_back( iti->second.d_vars[i] );
+          } 
+        }
+      }
+      bool useSubs = d_parent->getCurrentSubstitution( effort, vars, sub, expc );
+      //get the current substitution for all variables
+      Assert( !useSubs || vars.size()==sub.size() );
       for( unsigned i=0; i<terms.size(); i++ ){
-        //do substitution
         Node n = terms[i];
-        Node ns = n.substitute( vars.begin(), vars.end(), sub.begin(), sub.end() );
+        Node ns = n;
         std::vector< Node > expn;
-        if( ns!=n ){
-          //build explanation: explanation vars = sub for each vars in FV( n )
-          std::map< Node, ExtfInfo >::iterator iti = d_extf_info.find( n );
-          Assert( iti!=d_extf_info.end() );
-          for( unsigned j=0; j<iti->second.d_vars.size(); j++ ){
-            Node v = iti->second.d_vars[j];
-            std::map< Node, std::vector< Node > >::iterator itx = expc.find( v );
-            if( itx!=expc.end() ){
-              for( unsigned k=0; k<itx->second.size(); k++ ){
-                if( std::find( expn.begin(), expn.end(), itx->second[k] )==expn.end() ){
-                  expn.push_back( itx->second[k] );
+        if( useSubs ){
+          //do substitution
+          ns = n.substitute( vars.begin(), vars.end(), sub.begin(), sub.end() );
+          if( ns!=n ){
+            //build explanation: explanation vars = sub for each vars in FV( n )
+            std::map< Node, ExtfInfo >::iterator iti = d_extf_info.find( n );
+            Assert( iti!=d_extf_info.end() );
+            for( unsigned j=0; j<iti->second.d_vars.size(); j++ ){
+              Node v = iti->second.d_vars[j];
+              std::map< Node, std::vector< Node > >::iterator itx = expc.find( v );
+              if( itx!=expc.end() ){
+                for( unsigned k=0; k<itx->second.size(); k++ ){
+                  if( std::find( expn.begin(), expn.end(), itx->second[k] )==expn.end() ){
+                    expn.push_back( itx->second[k] );
+                  }
                 }
               }
             }
           }
+          Trace("extt-debug") << "  have " << n << " == " << ns << ", exp size=" << expn.size() << "." << std::endl;
         }
-        Trace("extt-debug") << "  have " << n << " == " << ns << ", exp size=" << expn.size() << "." << std::endl;
         //add to vector
         sterms.push_back( ns );
         exp.push_back( expn );
-      }
-    }else{
-      for( unsigned i=0; i<terms.size(); i++ ){
-        sterms.push_back( terms[i] );
+        //add to cache
+        if( d_cacheEnabled ){
+          d_gst_cache[effort][n].d_sterm = ns;
+          d_gst_cache[effort][n].d_exp.clear();
+          d_gst_cache[effort][n].d_exp.insert( d_gst_cache[effort][n].d_exp.end(), expn.begin(), expn.end() );
+        }
       }
     }
   }
 }
 
-bool ExtTheory::doInferencesInternal( int effort, std::vector< Node >& terms, std::vector< Node >& nred, bool batch, bool isRed ) {
-  if( batch ){
+bool ExtTheory::doInferencesInternal(int effort, const std::vector<Node>& terms,
+                                     std::vector<Node>& nred, bool batch,
+                                     bool isRed) {
+  if (batch) {
     bool addedLemma = false;
     if( isRed ){
       for( unsigned i=0; i<terms.size(); i++ ){
@@ -421,7 +500,7 @@ bool ExtTheory::doInferencesInternal( int effort, std::vector< Node >& terms, st
           if( !nr.isNull() && n!=nr ){
             Node lem = NodeManager::currentNM()->mkNode( kind::EQUAL, n, nr );
             if( sendLemma( lem, true ) ){
-              Trace("extt-lemma") << "ExtTheory : Reduction lemma : " << lem << std::endl;
+              Trace("extt-lemma") << "ExtTheory : reduction lemma : " << lem << std::endl;
               addedLemma = true;
             }
           }
@@ -432,11 +511,13 @@ bool ExtTheory::doInferencesInternal( int effort, std::vector< Node >& terms, st
       std::vector< Node > sterms; 
       std::vector< std::vector< Node > > exp;
       getSubstitutedTerms( effort, terms, sterms, exp );
+      std::map< Node, unsigned > sterm_index;
       for( unsigned i=0; i<terms.size(); i++ ){
         bool processed = false;
         if( sterms[i]!=terms[i] ){
           Node sr = Rewriter::rewrite( sterms[i] );
-          if( sr.isConst() ){
+          //ask the theory if this term is reduced, e.g. is it constant or it is a non-extf term.
+          if( d_parent->isExtfReduced( effort, sr, terms[i], exp[i] ) ){
             processed = true;
             markReduced( terms[i] );
             Node eq = terms[i].eqNode( sr );
@@ -445,10 +526,25 @@ bool ExtTheory::doInferencesInternal( int effort, std::vector< Node >& terms, st
             Node lem = NodeManager::currentNM()->mkNode( kind::IMPLIES, expn, eq );
             Trace("extt-debug") << "...send lemma " << lem << std::endl;
             if( sendLemma( lem ) ){
-              Trace("extt-lemma") << "ExtTheory : Constant rewrite lemma : " << lem << std::endl;
+              Trace("extt-lemma") << "ExtTheory : substitution + rewrite lemma : " << lem << std::endl;
               addedLemma = true;
             }
+          }else{
+            //check if we have already reduced this
+            std::map< Node, unsigned >::iterator itsi = sterm_index.find( sr );
+            if( itsi!=sterm_index.end() ){
+              //unsigned j = itsi->second;
+              //can add (non-reducing) lemma : exp[j] ^ exp[i] => sterms[i] = sterms[j]
+              //TODO
+            }else{
+              sterm_index[sr] = i;
+            }
+            //check if we reduce to another active term?
+          
+            Trace("extt-nred") << "Non-reduced term : " << sr << std::endl;
           }
+        }else{
+          Trace("extt-nred") << "Non-reduced term : " << sterms[i] << std::endl;
         }
         if( !processed ){
           nred.push_back( terms[i] );
@@ -498,8 +594,9 @@ bool ExtTheory::sendLemma( Node lem, bool preprocess ) {
   return false;
 }
 
-bool ExtTheory::doInferences( int effort, std::vector< Node >& terms, std::vector< Node >& nred, bool batch ) {
-  if( !terms.empty() ){
+bool ExtTheory::doInferences(int effort, const std::vector<Node>& terms,
+                             std::vector<Node>& nred, bool batch) {
+  if (!terms.empty()) {
     return doInferencesInternal( effort, terms, nred, batch, false );
   }else{
     return false;
@@ -507,50 +604,48 @@ bool ExtTheory::doInferences( int effort, std::vector< Node >& terms, std::vecto
 }
 
 bool ExtTheory::doInferences( int effort, std::vector< Node >& nred, bool batch ) {
-  std::vector< Node > terms;
-  getActive( terms );
+  std::vector< Node > terms = getActive();
   return doInferencesInternal( effort, terms, nred, batch, false );
 }
 
-bool ExtTheory::doReductions( int effort, std::vector< Node >& terms, std::vector< Node >& nred, bool batch ) {
-  if( !terms.empty() ){
+bool ExtTheory::doReductions(int effort, const std::vector<Node>& terms,
+                             std::vector<Node>& nred, bool batch) {
+  if (!terms.empty()) {
     return doInferencesInternal( effort, terms, nred, batch, true );
   }else{
     return false;
   }
 }
 
-bool ExtTheory::doReductions( int effort, std::vector< Node >& nred, bool batch ) {
-  std::vector< Node > terms;
-  getActive( terms );
-  return doInferencesInternal( effort, terms, nred, batch, true );
+bool ExtTheory::doReductions(int effort, std::vector<Node>& nred, bool batch) {
+  const std::vector<Node> terms = getActive();
+  return doInferencesInternal(effort, terms, nred, batch, true);
 }
 
-
-//register term
-void ExtTheory::registerTerm( Node n ) {
-  if( d_extf_kind.find( n.getKind() )!=d_extf_kind.end() ){
-    if( d_ext_func_terms.find( n )==d_ext_func_terms.end() ){
-      Trace("extt-debug") << "Found extended function : " << n << " in " << d_parent->getId() << std::endl;
+// Register term.
+void ExtTheory::registerTerm(Node n) {
+  if (d_extf_kind.find(n.getKind()) != d_extf_kind.end()) {
+    if (d_ext_func_terms.find(n) == d_ext_func_terms.end()) {
+      Trace("extt-debug") << "Found extended function : " << n << " in "
+                          << d_parent->getId() << std::endl;
       d_ext_func_terms[n] = true;
       d_has_extf = n;
-      std::map< Node, bool > visited;
-      collectVars( n, d_extf_info[n].d_vars, visited );
+      d_extf_info[n].d_vars = collectVars(n);
     }
   }
 }
 
-void ExtTheory::registerTermRec( Node n ) {
-  std::map< Node, bool > visited;
-  registerTermRec( n, visited );
+void ExtTheory::registerTermRec(Node n) {
+  std::set<Node> visited;
+  registerTermRec(n, &visited);
 }
 
-void ExtTheory::registerTermRec( Node n, std::map< Node, bool >& visited ) {
-  if( visited.find( n )==visited.end() ){
-    visited[n] = true;
-    registerTerm( n );
-    for( unsigned i=0; i<n.getNumChildren(); i++ ){
-      registerTermRec( n[i], visited );
+void ExtTheory::registerTermRec(Node n, std::set<Node>* visited) {
+  if (visited->find(n) == visited->end()) {
+    visited->insert(n);
+    registerTerm(n);
+    for (unsigned i = 0; i < n.getNumChildren(); i++) {
+      registerTermRec(n[i], visited);
     }
   }
 }
@@ -594,8 +689,15 @@ void ExtTheory::markCongruent( Node a, Node b ) {
   }
 }
 
-bool ExtTheory::isContextIndependentInactive( Node n ) {
-  return d_ci_inactive.find( n )!=d_ci_inactive.end();
+bool ExtTheory::isContextIndependentInactive(Node n) const {
+  return d_ci_inactive.find(n) != d_ci_inactive.end();
+}
+
+
+void ExtTheory::getTerms( std::vector< Node >& terms ) {
+  for( NodeBoolMap::iterator it = d_ext_func_terms.begin(); it != d_ext_func_terms.end(); ++it ){
+    terms.push_back( (*it).first );
+  }
 }
 
 bool ExtTheory::hasActiveTerm() {
@@ -611,23 +713,35 @@ bool ExtTheory::isActive( Node n ) {
     return false;
   }
 }
-//get active 
-void ExtTheory::getActive( std::vector< Node >& active ) {
-  for( NodeBoolMap::iterator it = d_ext_func_terms.begin(); it != d_ext_func_terms.end(); ++it ){
-    //if not already reduced
-    if( (*it).second && !isContextIndependentInactive( (*it).first ) ){
-      active.push_back( (*it).first );
+
+// get active
+std::vector<Node> ExtTheory::getActive() const {
+  std::vector<Node> active;
+  for (NodeBoolMap::iterator it = d_ext_func_terms.begin();
+       it != d_ext_func_terms.end(); ++it) {
+    // if not already reduced
+    if ((*it).second && !isContextIndependentInactive((*it).first)) {
+      active.push_back((*it).first);
     }
   }
+  return active;
 }
 
-void ExtTheory::getActive( std::vector< Node >& active, Kind k ) {
-  for( NodeBoolMap::iterator it = d_ext_func_terms.begin(); it != d_ext_func_terms.end(); ++it ){
-    //if not already reduced
-    if( (*it).first.getKind()==k && (*it).second && !isContextIndependentInactive( (*it).first ) ){
-      active.push_back( (*it).first );
+std::vector<Node> ExtTheory::getActive(Kind k) const {
+  std::vector<Node> active;
+  for (NodeBoolMap::iterator it = d_ext_func_terms.begin();
+       it != d_ext_func_terms.end(); ++it) {
+    // if not already reduced
+    if ((*it).first.getKind() == k && (*it).second &&
+        !isContextIndependentInactive((*it).first)) {
+      active.push_back((*it).first);
     }
   }
+  return active;
+}
+
+void ExtTheory::clearCache() {
+  d_gst_cache.clear();
 }
 
 }/* CVC4::theory namespace */
diff --git a/src/theory/theory.h b/src/theory/theory.h
index fd8cffa..3ddb187 100644
--- a/src/theory/theory.h
+++ b/src/theory/theory.h
@@ -2,9 +2,9 @@
 /*! \file theory.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Tim King
+ **   Morgan Deters, Dejan Jovanovic, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -21,6 +21,8 @@
 
 #include <ext/hash_set>
 #include <iosfwd>
+#include <map>
+#include <set>
 #include <string>
 
 #include "context/cdlist.h"
@@ -35,6 +37,8 @@
 #include "smt/command.h"
 #include "smt/dump.h"
 #include "smt/logic_request.h"
+#include "theory/assertion.h"
+#include "theory/care_graph.h"
 #include "theory/logic_info.h"
 #include "theory/output_channel.h"
 #include "theory/valuation.h"
@@ -63,67 +67,6 @@ namespace eq {
 }/* CVC4::theory::eq namespace */
 
 /**
- * Information about an assertion for the theories.
- */
-struct Assertion {
-
-  /** The assertion */
-  Node assertion;
-  /** Has this assertion been preregistered with this theory */
-  bool isPreregistered;
-
-  Assertion(TNode assertion, bool isPreregistered)
-  : assertion(assertion), isPreregistered(isPreregistered) {}
-
-  /**
-   * Convert the assertion to a TNode.
-   */
-  operator TNode () const {
-    return assertion;
-  }
-
-  /**
-   * Convert the assertion to a Node.
-   */
-  operator Node () const {
-    return assertion;
-  }
-
-};/* struct Assertion */
-
-/**
- * A (oredered) pair of terms a theory cares about.
- */
-struct CarePair {
-
-  TNode a, b;
-  TheoryId theory;
-
-public:
-
-  CarePair(TNode a, TNode b, TheoryId theory)
-  : a(a < b ? a : b), b(a < b ? b : a), theory(theory) {}
-
-  bool operator == (const CarePair& other) const {
-    return (theory == other.theory) && (a == other.a) && (b == other.b);
-  }
-
-  bool operator < (const CarePair& other) const {
-    if (theory < other.theory) return true;
-    if (theory > other.theory) return false;
-    if (a < other.a) return true;
-    if (a > other.a) return false;
-    return b < other.b;
-  }
-
-};/* struct CarePair */
-
-/**
- * A set of care pairs.
- */
-typedef std::set<CarePair> CareGraph;
-
-/**
  * Base class for T-solvers.  Abstract DPLL(T).
  *
  * This is essentially an interface class.  The TheoryEngine has
@@ -144,9 +87,7 @@ private:
   Theory(const Theory&) CVC4_UNDEFINED;
   Theory& operator=(const Theory&) CVC4_UNDEFINED;
 
-  /**
-   * An integer identifying the type of the theory
-   */
+  /** An integer identifying the type of the theory. */
   TheoryId d_id;
 
   /** Name of this theory instance. Along with the TheoryId this should provide
@@ -154,19 +95,13 @@ private:
    * this to ensure unique statistics names over multiple theory instances. */
   std::string d_instanceName;
 
-  /**
-   * The SAT search context for the Theory.
-   */
+  /** The SAT search context for the Theory. */
   context::Context* d_satContext;
 
-  /**
-   * The user level assertion context for the Theory.
-   */
+  /** The user level assertion context for the Theory. */
   context::UserContext* d_userContext;
 
-  /**
-   * Information about the logic we're operating within.
-   */
+  /** Information about the logic we're operating within. */
   const LogicInfo& d_logicInfo;
 
   /**
@@ -180,31 +115,26 @@ private:
   /** Index into the head of the facts list */
   context::CDO<unsigned> d_factsHead;
 
-  /**
-   * Add shared term to the theory.
-   */
+  /** Add shared term to the theory. */
   void addSharedTermInternal(TNode node);
 
-  /**
-   * Indices for splitting on the shared terms.
-   */
+  /** Indices for splitting on the shared terms. */
   context::CDO<unsigned> d_sharedTermsIndex;
 
-  /**
-   * The care graph the theory will use during combination.
-   */
+  /** The care graph the theory will use during combination. */
   CareGraph* d_careGraph;
 
   /**
-   * Reference to the quantifiers engine (or NULL, if quantifiers are
-   * not supported or not enabled).
+   * Pointer to the quantifiers engine (or NULL, if quantifiers are not
+   * supported or not enabled). Not owned by the theory.
    */
   QuantifiersEngine* d_quantEngine;
 
-protected:
+  /** Extended theory module or NULL. Owned by the theory. */
+  ExtTheory* d_extTheory;
+
+ protected:
 
-  /** extended theory */
-  ExtTheory * d_extt;
 
   // === STATISTICS ===
   /** time spent in check calls */
@@ -215,11 +145,7 @@ protected:
   /**
    * The only method to add suff to the care graph.
    */
-  void addCarePair(TNode t1, TNode t2) {
-    if (d_careGraph) {
-      d_careGraph->insert(CarePair(t1, t2, d_id));
-    }
-  }
+  void addCarePair(TNode t1, TNode t2);
 
   /**
    * The function should compute the care graph over the shared terms.
@@ -236,6 +162,7 @@ protected:
    * Helper function for computeRelevantTerms
    */
   void collectTerms(TNode n, std::set<Node>& termSet) const;
+
   /**
    * Scans the current set of assertions and shared terms top-down
    * until a theory-leaf is reached, and adds all terms found to
@@ -515,7 +442,9 @@ public:
    * Assert a fact in the current context.
    */
   void assertFact(TNode assertion, bool isPreregistered) {
-    Trace("theory") << "Theory<" << getId() << ">::assertFact[" << d_satContext->getLevel() << "](" << assertion << ", " << (isPreregistered ? "true" : "false") << ")" << std::endl;
+    Trace("theory") << "Theory<" << getId() << ">::assertFact["
+                    << d_satContext->getLevel() << "](" << assertion << ", "
+                    << (isPreregistered ? "true" : "false") << ")" << std::endl;
     d_facts.push_back(Assertion(assertion, isPreregistered));
   }
 
@@ -530,30 +459,26 @@ public:
    */
   virtual void setMasterEqualityEngine(eq::EqualityEngine* eq) { }
 
-  /**
-   * Called to set the quantifiers engine.
-   */
-  virtual void setQuantifiersEngine(QuantifiersEngine* qe) {
-    d_quantEngine = qe;
-  }
+  /** Called to set the quantifiers engine. */
+  virtual void setQuantifiersEngine(QuantifiersEngine* qe);
+
+  /** Setup an ExtTheory module for this Theory. Can only be called once. */
+  void setupExtTheory();
 
   /**
-   * Return the current theory care graph. Theories should overload computeCareGraph to do
-   * the actual computation, and use addCarePair to add pairs to the care graph.
+   * Return the current theory care graph. Theories should overload
+   * computeCareGraph to do the actual computation, and use addCarePair to add
+   * pairs to the care graph.
    */
-  void getCareGraph(CareGraph& careGraph) {
-    Trace("sharing") << "Theory<" << getId() << ">::getCareGraph()" << std::endl;
-    TimerStat::CodeTimer computeCareGraphTime(d_computeCareGraphTime);
-    d_careGraph = &careGraph;
-    computeCareGraph();
-    d_careGraph = NULL;
-  }
+  void getCareGraph(CareGraph* careGraph);
 
   /**
-   * Return the status of two terms in the current context. Should be implemented in
-   * sub-theories to enable more efficient theory-combination.
+   * Return the status of two terms in the current context. Should be
+   * implemented in sub-theories to enable more efficient theory-combination.
    */
-  virtual EqualityStatus getEqualityStatus(TNode a, TNode b) { return EQUALITY_UNKNOWN; }
+  virtual EqualityStatus getEqualityStatus(TNode a, TNode b) {
+    return EQUALITY_UNKNOWN;
+  }
 
   /**
    * Return the model value of the give shared term (or null if not available).
@@ -570,14 +495,11 @@ public:
    * - or call get() until done() is true.
    */
   virtual void check(Effort level = EFFORT_FULL) { }
-  
-  /**
-   * Needs last effort check?
-   */ 
+
+  /** Needs last effort check? */
   virtual bool needsCheckLastEffort() { return false; }
-  /**
-   * T-propagate new literal assignments in the current context.
-   */
+
+  /** T-propagate new literal assignments in the current context. */
   virtual void propagate(Effort level = EFFORT_FULL) { }
 
   /**
@@ -593,14 +515,12 @@ public:
    * Get all relevant information in this theory regarding the current
    * model.  This should be called after a call to check( FULL_EFFORT )
    * for all theories with no conflicts and no lemmas added.
-   * If fullModel is true, then we must specify sufficient information for
-   * the model class to construct constant representatives for each equivalence
-   * class.
    */
-  virtual void collectModelInfo( TheoryModel* m, bool fullModel ){ }
+  virtual void collectModelInfo( TheoryModel* m ){ }
+
   /** if theories want to do something with model after building, do it here */
   virtual void postProcessModel( TheoryModel* m ){ }
-  
+
   /**
    * Return a decision request, if the theory has one, or the NULL node
    * otherwise.
@@ -647,12 +567,12 @@ public:
    * Don't preprocess subterm of this term
    */
   virtual bool ppDontRewriteSubterm(TNode atom) { return false; }
-  
-  /** notify preprocessed assertions
-   *  Called on new assertions after preprocessing before they are asserted to theory engine.
-   *  Should not modify assertions.
-  */
-  virtual void ppNotifyAssertions( std::vector< Node >& assertions ) {}
+
+  /**
+   * Notify preprocessed assertions. Called on new assertions after
+   * preprocessing before they are asserted to theory engine.
+   */
+  virtual void ppNotifyAssertions(const std::vector<Node>& assertions) {}
 
   /**
    * A Theory is called with presolve exactly one time per user
@@ -811,6 +731,11 @@ public:
     return !d_facts.empty(); 
   }
 
+  /** Return total number of facts asserted to this theory */
+  size_t numAssertions() {
+    return d_facts.size();
+  }
+  
   typedef context::CDList<TNode>::const_iterator shared_terms_iterator;
 
   /**
@@ -894,37 +819,47 @@ public:
    * @return         a pair <b,E> s.t. if b is true, then a formula E such that
    * E |= lit in the theory.
    */
-  virtual std::pair<bool, Node> entailmentCheck(TNode lit, const EntailmentCheckParameters* params = NULL, EntailmentCheckSideEffects* out = NULL);
+  virtual std::pair<bool, Node> entailmentCheck(
+      TNode lit, const EntailmentCheckParameters* params = NULL,
+      EntailmentCheckSideEffects* out = NULL);
 
   /* equality engine TODO: use? */
-  virtual eq::EqualityEngine * getEqualityEngine() { return NULL; }
-  
-  /* get extended theory */
-  virtual ExtTheory * getExtTheory() { return d_extt; }
+  virtual eq::EqualityEngine* getEqualityEngine() { return NULL; }
+
+  /* Get extended theory if one has been installed. */
+  ExtTheory* getExtTheory();
 
   /* get current substitution at an effort
    *   input : vars
-   *   output : subs, exp 
+   *   output : subs, exp
    *   where ( exp[vars[i]] => vars[i] = subs[i] ) holds for all i
-  */
-  virtual bool getCurrentSubstitution( int effort, std::vector< Node >& vars, std::vector< Node >& subs, std::map< Node, std::vector< Node > >& exp ) { return false; }
-  
-  /* get reduction for node
-       if return value is not 0, then n is reduced. 
-       if return value <0 then n is reduced SAT-context-independently (e.g. by a lemma that persists at this user-context level).
-       if nr is non-null, then ( n = nr ) should be added as a lemma by caller, and return value should be <0.
    */
-  virtual int getReduction( int effort, Node n, Node& nr ) { return 0; }
+  virtual bool getCurrentSubstitution(int effort, std::vector<Node>& vars,
+                                      std::vector<Node>& subs,
+                                      std::map<Node, std::vector<Node> >& exp) {
+    return false;
+  }
 
+  /* is extended function reduced */
+  virtual bool isExtfReduced( int effort, Node n, Node on, std::vector< Node >& exp ) { return n.isConst(); }
+  
   /**
-   * Turn on proof-production mode.
+   * Get reduction for node
+   * If return value is not 0, then n is reduced.
+   * If return value <0 then n is reduced SAT-context-independently (e.g. by a
+   *  lemma that persists at this user-context level).
+   * If nr is non-null, then ( n = nr ) should be added as a lemma by caller,
+   *  and return value should be <0.
    */
+  virtual int getReduction( int effort, Node n, Node& nr ) { return 0; }
+
+  /** Turn on proof-production mode. */
   void produceProofs() { d_proofsEnabled = true; }
 
 };/* class Theory */
 
 std::ostream& operator<<(std::ostream& os, theory::Theory::Effort level);
-inline std::ostream& operator<<(std::ostream& out, const theory::Assertion& a);
+
 
 inline theory::Assertion Theory::get() {
   Assert( !done(), "Theory::get() called with assertion queue empty!" );
@@ -942,10 +877,6 @@ inline theory::Assertion Theory::get() {
   return fact;
 }
 
-inline std::ostream& operator<<(std::ostream& out, const theory::Assertion& a) {
-  return out << a.assertion;
-}
-
 inline std::ostream& operator<<(std::ostream& out,
                                 const CVC4::theory::Theory& theory) {
   return out << theory.identify();
@@ -987,10 +918,21 @@ public:
 
 
 class ExtTheory {
-  friend class Theory;
   typedef context::CDHashMap<Node, bool, NodeHashFunction> NodeBoolMap;
   typedef context::CDHashSet<Node, NodeHashFunction> NodeSet;
-protected:
+private:
+  // collect variables
+  static std::vector<Node> collectVars(Node n);
+  // is context dependent inactive
+  bool isContextIndependentInactive( Node n ) const;
+  //do inferences internal
+  bool doInferencesInternal(int effort, const std::vector<Node>& terms,
+                            std::vector<Node>& nred, bool batch, bool isRed);
+  // send lemma
+  bool sendLemma( Node lem, bool preprocess = false );
+  // register term (recursive)
+  void registerTermRec(Node n, std::set<Node>* visited);
+
   Theory * d_parent;
   Node d_true;
   //extended string terms, map to whether they are active
@@ -998,9 +940,6 @@ protected:
   //set of terms from d_ext_func_terms that are SAT-context-independently inactive 
   //  (e.g. term t when a reduction lemma of the form t = t' was added)
   NodeSet d_ci_inactive;
-  //cache of all lemmas sent
-  NodeSet d_lemmas;
-  NodeSet d_pp_lemmas;
   //watched term for checking if any non-reduced extended functions exist 
   context::CDO< Node > d_has_extf;
   //extf kind
@@ -1012,23 +951,29 @@ protected:
     std::vector< Node > d_vars;
   };
   std::map< Node, ExtfInfo > d_extf_info;
-  //collect variables
-  void collectVars( Node n, std::vector< Node >& vars, std::map< Node, bool >& visited );
-  // is context dependent inactive
-  bool isContextIndependentInactive( Node n );
-  //do inferences internal
-  bool doInferencesInternal( int effort, std::vector< Node >& terms, std::vector< Node >& nred, bool batch, bool isRed ); 
-  //send lemma
-  bool sendLemma( Node lem, bool preprocess = false );
-  //register term (recursive)
-  void registerTermRec( Node n, std::map< Node, bool >& visited );
-public:
-  ExtTheory( Theory * p );
-  virtual ~ExtTheory(){}
-  //add extf kind
-  void addFunctionKind( Kind k ) { d_extf_kind[k] = true; }
-  bool hasFunctionKind( Kind k ) { return d_extf_kind.find( k )!=d_extf_kind.end(); }
-  //register term
+
+  //cache of all lemmas sent
+  NodeSet d_lemmas;
+  NodeSet d_pp_lemmas;
+  bool d_cacheEnabled;
+  // if d_cacheEnabled=true :
+  //cache for getSubstitutedTerms 
+  class SubsTermInfo {
+  public:
+    Node d_sterm;
+    std::vector< Node > d_exp;
+  };
+  std::map< int, std::map< Node, SubsTermInfo > > d_gst_cache;
+
+ public:
+  ExtTheory(Theory* p, bool cacheEnabled = false );
+  virtual ~ExtTheory() {}
+  // add extf kind
+  void addFunctionKind(Kind k) { d_extf_kind[k] = true; }
+  bool hasFunctionKind(Kind k) const {
+    return d_extf_kind.find(k) != d_extf_kind.end();
+  }
+  // register term
   //  adds n to d_ext_func_terms if addFunctionKind( n.getKind() ) was called
   void registerTerm( Node n );
   void registerTermRec( Node n );
@@ -1037,31 +982,42 @@ public:
   void markReduced( Node n, bool contextDepend = true );
   // mark that a and b are congruent terms: set b inactive, set a to inactive if b was inactive
   void markCongruent( Node a, Node b );
-  
   //getSubstitutedTerms
   //  input : effort, terms
   //  output : sterms, exp, where ( exp[i] => terms[i] = sterms[i] ) for all i
-  void getSubstitutedTerms( int effort, std::vector< Node >& terms, std::vector< Node >& sterms, std::vector< std::vector< Node > >& exp );
-  //doInferences
-  //  * input : effort, terms, batch (whether to send one lemma or lemmas for all terms)
-  //  *   sends rewriting lemmas of the form ( exp => t = c ) where t is in terms and c is a constant, c = rewrite( t*sigma ) where exp |= sigma
+  Node getSubstitutedTerm( int effort, Node term, std::vector< Node >& exp, bool useCache = false );
+  void getSubstitutedTerms(int effort, const std::vector<Node>& terms,
+                           std::vector<Node>& sterms,
+                           std::vector<std::vector<Node> >& exp, bool useCache = false);
+  // doInferences
+  //  * input : effort, terms, batch (whether to send one lemma or lemmas for
+  //    all terms)
+  //  * sends rewriting lemmas of the form ( exp => t = c ) where t is in terms
+  //    and c is a constant, c = rewrite( t*sigma ) where exp |= sigma
   //  * output : nred (the terms that are still active)
   //  * return : true iff lemma is sent
-  bool doInferences( int effort, std::vector< Node >& terms, std::vector< Node >& nred, bool batch=true ); 
-  bool doInferences( int effort, std::vector< Node >& nred, bool batch=true  );
+  bool doInferences(int effort, const std::vector<Node>& terms,
+                    std::vector<Node>& nred, bool batch = true);
+  bool doInferences(int effort, std::vector<Node>& nred, bool batch = true);
   //doReductions 
-  //  same as doInferences, but will send reduction lemmas of the form ( t = t' ) where t is in terms, t' is equivalent, reduced term
-  bool doReductions( int effort, std::vector< Node >& terms, std::vector< Node >& nred, bool batch=true  ); 
-  bool doReductions( int effort, std::vector< Node >& nred, bool batch=true  ); 
-
-  //has active term 
+  // same as doInferences, but will send reduction lemmas of the form ( t = t' )
+  // where t is in terms, t' is equivalent, reduced term.
+  bool doReductions(int effort, const std::vector<Node>& terms,
+                    std::vector<Node>& nred, bool batch = true);
+  bool doReductions(int effort, std::vector<Node>& nred, bool batch = true);
+
+  //get the set of terms from d_ext_func_terms
+  void getTerms( std::vector< Node >& terms );
+  // has active term
   bool hasActiveTerm();
-  //is n active
-  bool isActive( Node n );
-  //get the set of active terms from d_ext_func_terms
-  void getActive( std::vector< Node >& active );
-  //get the set of active terms from d_ext_func_terms of kind k
-  void getActive( std::vector< Node >& active, Kind k );
+  // is n active
+  bool isActive(Node n);
+  // get the set of active terms from d_ext_func_terms
+  std::vector<Node> getActive() const;
+  // get the set of active terms from d_ext_func_terms of kind k
+  std::vector<Node> getActive(Kind k) const;
+  //clear cache 
+  void clearCache();
 };
 
 }/* CVC4::theory namespace */
diff --git a/src/theory/theory_engine.cpp b/src/theory/theory_engine.cpp
index 58f3e4f..7369b7c 100644
--- a/src/theory/theory_engine.cpp
+++ b/src/theory/theory_engine.cpp
@@ -2,9 +2,9 @@
 /*! \file theory_engine.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Tim King
+ **   Dejan Jovanovic, Morgan Deters, Guy Katz
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -37,6 +37,7 @@
 #include "smt_util/node_visitor.h"
 #include "theory/arith/arith_ite_utils.h"
 #include "theory/bv/theory_bv_utils.h"
+#include "theory/care_graph.h"
 #include "theory/ite_utilities.h"
 #include "theory/quantifiers/first_order_model.h"
 #include "theory/quantifiers/model_engine.h"
@@ -213,15 +214,8 @@ void TheoryEngine::finishInit() {
   // initialize the quantifiers engine
   d_quantEngine = new QuantifiersEngine(d_context, d_userContext, this);
 
-  //initialize the model
+  //initialize the quantifiers engine, master equality engine, model, model builder
   if( d_logicInfo.isQuantified() ) {
-    d_curr_model = d_quantEngine->getModel();
-  } else {
-    d_curr_model = new theory::TheoryModel(d_userContext, "DefaultModel", true);
-    d_aloc_curr_model = true;
-  }
-
-  if (d_logicInfo.isQuantified()) {
     d_quantEngine->finishInit();
     Assert(d_masterEqualityEngine == 0);
     d_masterEqualityEngine = new eq::EqualityEngine(d_masterEENotify,getSatContext(), "theory::master", false);
@@ -232,6 +226,17 @@ void TheoryEngine::finishInit() {
         d_theoryTable[theoryId]->setMasterEqualityEngine(d_masterEqualityEngine);
       }
     }
+
+    d_curr_model_builder = d_quantEngine->getModelBuilder();
+    d_curr_model = d_quantEngine->getModel();
+  } else {
+    d_curr_model = new theory::TheoryModel(d_userContext, "DefaultModel", true);
+    d_aloc_curr_model = true;
+  }
+  //make the default builder, e.g. in the case that the quantifiers engine does not have a model builder
+  if( d_curr_model_builder==NULL ){
+    d_curr_model_builder = new theory::TheoryEngineModelBuilder(this);
+    d_aloc_curr_model_builder = true;
   }
 
   for(TheoryId theoryId = theory::THEORY_FIRST; theoryId != theory::THEORY_LAST; ++ theoryId) {
@@ -283,6 +288,7 @@ TheoryEngine::TheoryEngine(context::Context* context,
   d_curr_model(NULL),
   d_aloc_curr_model(false),
   d_curr_model_builder(NULL),
+  d_aloc_curr_model_builder(false),
   d_ppCache(),
   d_possiblePropagations(context),
   d_hasPropagated(context),
@@ -317,10 +323,7 @@ TheoryEngine::TheoryEngine(context::Context* context,
     d_theoryTable[theoryId] = NULL;
     d_theoryOut[theoryId] = NULL;
   }
-
-  // build model information if applicable
-  d_curr_model_builder = new theory::TheoryEngineModelBuilder(this);
-
+  
   smtStatisticsRegistry()->registerStat(&d_combineTheoriesTime);
   d_true = NodeManager::currentNM()->mkConst<bool>(true);
   d_false = NodeManager::currentNM()->mkConst<bool>(false);
@@ -344,7 +347,9 @@ TheoryEngine::~TheoryEngine() {
     }
   }
 
-  delete d_curr_model_builder;
+  if( d_aloc_curr_model_builder ){
+    delete d_curr_model_builder;
+  }
   if( d_aloc_curr_model ){
     delete d_curr_model;
   }
@@ -583,21 +588,24 @@ void TheoryEngine::check(Theory::Effort effort) {
     }
 
     // Must consult quantifiers theory for last call to ensure sat, or otherwise add a lemma
-    if( effort == Theory::EFFORT_FULL && ! d_inConflict && ! needCheck() ) {
+    if( Theory::fullEffort(effort) && ! d_inConflict && ! needCheck() ) {
       Trace("theory::assertions-model") << endl;
       if (Trace.isOn("theory::assertions-model")) {
         printAssertions("theory::assertions-model");
       }
       //checks for theories requiring the model go at last call
-      bool builtModel = false;
+      d_curr_model->setNeedsBuild();
       for (TheoryId theoryId = THEORY_FIRST; theoryId < THEORY_LAST; ++theoryId) {
         if( theoryId!=THEORY_QUANTIFIERS ){
           Theory* theory = d_theoryTable[theoryId];
           if (theory && d_logicInfo.isTheoryEnabled(theoryId)) {
             if( theory->needsCheckLastEffort() ){
-              if( !builtModel ){
-                builtModel = true;
-                d_curr_model_builder->buildModel(d_curr_model, false);
+              if( !d_curr_model->isBuilt() ){
+                if( !d_curr_model_builder->buildModel(d_curr_model) ){
+                  //model building should fail only if the model builder adds lemmas
+                  Assert( needCheck() );
+                  break;
+                }
               }
               theory->check(Theory::EFFORT_LAST_CALL);
             }
@@ -608,10 +616,10 @@ void TheoryEngine::check(Theory::Effort effort) {
         if(d_logicInfo.isQuantified()) {
           // quantifiers engine must pass effort last call check
           d_quantEngine->check(Theory::EFFORT_LAST_CALL);
-          // if returning incomplete or SAT, we have ensured that d_curr_model has been built with fullModel=true
-        } else if(options::produceModels()) {
+          // if returning incomplete or SAT, we have ensured that d_curr_model has been built
+        } else if(options::produceModels() && !d_curr_model->isBuilt()) {
           // must build model at this point
-          d_curr_model_builder->buildModel(d_curr_model, true);
+          d_curr_model_builder->buildModel(d_curr_model);
         }
       }
     }
@@ -619,8 +627,16 @@ void TheoryEngine::check(Theory::Effort effort) {
     Debug("theory") << "TheoryEngine::check(" << effort << "): done, we are " << (d_inConflict ? "unsat" : "sat") << (d_lemmasAdded ? " with new lemmas" : " with no new lemmas");
     Debug("theory") << ", need check = " << (needCheck() ? "YES" : "NO") << endl;
 
-    if(!d_inConflict && Theory::fullEffort(effort) && d_masterEqualityEngine != NULL && !d_lemmasAdded) {
-      AlwaysAssert(d_masterEqualityEngine->consistent());
+    if( Theory::fullEffort(effort) && !d_inConflict && !needCheck()) {
+      //we will answer SAT
+      if( d_masterEqualityEngine != NULL ){
+        AlwaysAssert(d_masterEqualityEngine->consistent());
+      }
+      if( options::produceModels() ){
+        d_curr_model_builder->debugCheckModel(d_curr_model);  
+        // Do post-processing of model from the theories (used for THEORY_SEP to construct heap model)
+        postProcessModel(d_curr_model);
+      }
     }
   } catch(const theory::Interrupted&) {
     Trace("theory") << "TheoryEngine::check() => interrupted" << endl;
@@ -647,7 +663,7 @@ void TheoryEngine::combineTheories() {
 #endif
 #define CVC4_FOR_EACH_THEORY_STATEMENT(THEORY) \
   if (theory::TheoryTraits<THEORY>::isParametric && d_logicInfo.isTheoryEnabled(THEORY)) { \
-    theoryOf(THEORY)->getCareGraph(careGraph); \
+    theoryOf(THEORY)->getCareGraph(&careGraph); \
   }
 
   // Call on each parametric theory to give us its care graph
@@ -827,15 +843,15 @@ bool TheoryEngine::properExplanation(TNode node, TNode expl) const {
   return true;
 }
 
-void TheoryEngine::collectModelInfo( theory::TheoryModel* m, bool fullModel ){
+void TheoryEngine::collectModelInfo( theory::TheoryModel* m ){
   //have shared term engine collectModelInfo
-  //  d_sharedTerms.collectModelInfo( m, fullModel );
+  //  d_sharedTerms.collectModelInfo( m );
   // Consult each active theory to get all relevant information
   // concerning the model.
   for(TheoryId theoryId = theory::THEORY_FIRST; theoryId < theory::THEORY_LAST; ++theoryId) {
     if(d_logicInfo.isTheoryEnabled(theoryId)) {
       Trace("model-builder") << "  CollectModelInfo on theory: " << theoryId << endl;
-      d_theoryTable[theoryId]->collectModelInfo( m, fullModel );
+      d_theoryTable[theoryId]->collectModelInfo( m );
     }
   }
   // Get the Boolean variables
@@ -1129,11 +1145,13 @@ Node TheoryEngine::preprocess(TNode assertion) {
   return d_ppCache[assertion];
 }
 
-void TheoryEngine::notifyPreprocessedAssertions( std::vector< Node >& assertions ){
+void TheoryEngine::notifyPreprocessedAssertions(
+    const std::vector<Node>& assertions) {
   // call all the theories
-  for(TheoryId theoryId = theory::THEORY_FIRST; theoryId < theory::THEORY_LAST; ++theoryId) {
-    if(d_theoryTable[theoryId]) {
-      theoryOf(theoryId)->ppNotifyAssertions( assertions );
+  for (TheoryId theoryId = theory::THEORY_FIRST; theoryId < theory::THEORY_LAST;
+       ++theoryId) {
+    if (d_theoryTable[theoryId]) {
+      theoryOf(theoryId)->ppNotifyAssertions(assertions);
     }
   }
 }
@@ -1685,11 +1703,14 @@ void TheoryEngine::ensureLemmaAtoms(const std::vector<TNode>& atoms, theory::The
         assertToTheory(eq.notNode(), eqNormalized.notNode(), /** to */ atomsTo, /** Sat solver */ theory::THEORY_SAT_SOLVER);
       }
       continue;
+    }else if( eqNormalized.getKind() != kind::EQUAL){
+      Assert( eqNormalized.getKind()==kind::BOOLEAN_TERM_VARIABLE || 
+              ( eqNormalized.getKind()==kind::NOT && eqNormalized[0].getKind()==kind::BOOLEAN_TERM_VARIABLE ) );
+      // this happens for Boolean term equalities V = true that are rewritten to V, we should skip
+      //  TODO : revisit this
+      continue;
     }
 
-    Assert(eqNormalized.getKind() == kind::EQUAL);
-
-
     // If the normalization did the just flips, keep the flip
     if (eqNormalized[0] == eq[1] && eqNormalized[1] == eq[0]) {
       eq = eqNormalized;
@@ -2211,14 +2232,67 @@ void TheoryEngine::checkTheoryAssertionsWithModel() {
 
 std::pair<bool, Node> TheoryEngine::entailmentCheck(theory::TheoryOfMode mode, TNode lit, const EntailmentCheckParameters* params, EntailmentCheckSideEffects* seffects) {
   TNode atom = (lit.getKind() == kind::NOT) ? lit[0] : lit;
-  theory::TheoryId tid = theory::Theory::theoryOf(mode, atom);
-  theory::Theory* th = theoryOf(tid);
+  if( atom.getKind()==kind::AND || atom.getKind()==kind::OR || atom.getKind()==kind::IMPLIES ){
+    //Boolean connective, recurse
+    std::vector< Node > children;
+    bool pol = (lit.getKind()!=kind::NOT);
+    bool is_conjunction = pol==(lit.getKind()==kind::AND);
+    for( unsigned i=0; i<atom.getNumChildren(); i++ ){
+      Node ch = atom[i];
+      if( pol==( lit.getKind()==kind::IMPLIES && i==0 ) ){
+        ch = atom[i].negate();
+      }
+      std::pair<bool, Node> chres = entailmentCheck( mode, ch, params, seffects );
+      if( chres.first ){
+        if( !is_conjunction ){
+          return chres;
+        }else{
+          children.push_back( chres.second );
+        }
+      }else if( !chres.first && is_conjunction ){
+        return std::pair<bool, Node>(false, Node::null());
+      }
+    }
+    if( is_conjunction ){
+      return std::pair<bool, Node>(true, NodeManager::currentNM()->mkNode(kind::AND, children));
+    }else{
+      return std::pair<bool, Node>(false, Node::null());
+    }
+  }else if( atom.getKind()==kind::ITE || ( atom.getKind()==kind::EQUAL && atom[0].getType().isBoolean() ) ){
+    bool pol = (lit.getKind()!=kind::NOT);
+    for( unsigned r=0; r<2; r++ ){
+      Node ch = atom[0];
+      if( r==1 ){
+        ch = ch.negate();
+      }
+      std::pair<bool, Node> chres = entailmentCheck( mode, ch, params, seffects );
+      if( chres.first ){
+        Node ch2 = atom[ atom.getKind()==kind::ITE ? r+1 : 1 ];
+        if( pol==( atom.getKind()==kind::ITE ? true : r==1 ) ){
+          ch2 = ch2.negate();
+        }
+        std::pair<bool, Node> chres2 = entailmentCheck( mode, ch2, params, seffects );
+        if( chres2.first ){
+          return std::pair<bool, Node>(true, NodeManager::currentNM()->mkNode(kind::AND, chres.second, chres2.second));
+        }else{
+          break;
+        }
+      }
+    }
+    return std::pair<bool, Node>(false, Node::null());
+  }else{
+    //it is a theory atom
+    theory::TheoryId tid = theory::Theory::theoryOf(mode, atom);
+    theory::Theory* th = theoryOf(tid);
 
-  Assert(th != NULL);
-  Assert(params == NULL || tid == params->getTheoryId());
-  Assert(seffects == NULL || tid == seffects->getTheoryId());
+    Assert(th != NULL);
+    Assert(params == NULL || tid == params->getTheoryId());
+    Assert(seffects == NULL || tid == seffects->getTheoryId());
+    Trace("theory-engine-entc") << "Entailment check : " << lit << std::endl;
 
-  return th->entailmentCheck(lit, params, seffects);
+    std::pair<bool, Node> chres = th->entailmentCheck(lit, params, seffects);
+    return chres;
+  }
 }
 
 void TheoryEngine::spendResource(unsigned ammount) {
diff --git a/src/theory/theory_engine.h b/src/theory/theory_engine.h
index d8ddf7f..82283ef 100644
--- a/src/theory/theory_engine.h
+++ b/src/theory/theory_engine.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Dejan Jovanovic, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -187,6 +187,7 @@ class TheoryEngine {
    * Model builder object
    */
   theory::TheoryEngineModelBuilder* d_curr_model_builder;
+  bool d_aloc_curr_model_builder;
 
   typedef std::hash_map<Node, Node, NodeHashFunction> NodeMap;
   typedef std::hash_map<TNode, Node, TNodeHashFunction> TNodeMap;
@@ -603,18 +604,11 @@ public:
    */
   Node preprocess(TNode node);
 
+  /** Notify (preprocessed) assertions. */
+  void notifyPreprocessedAssertions(const std::vector<Node>& assertions);
 
-  /**
-   * Notify (preprocessed) assertions 
-   */
-  void notifyPreprocessedAssertions( std::vector< Node >& assertions );
-
-  /**
-   * Return whether or not we are incomplete (in the current context).
-   */
-  inline bool isIncomplete() const {
-    return d_incomplete;
-  }
+  /** Return whether or not we are incomplete (in the current context). */
+  inline bool isIncomplete() const { return d_incomplete; }
 
   /**
    * Returns true if we need another round of checking.  If this
@@ -720,7 +714,7 @@ public:
   /**
    * collect model info
    */
-  void collectModelInfo( theory::TheoryModel* m, bool fullModel );
+  void collectModelInfo( theory::TheoryModel* m );
   /** post process model */
   void postProcessModel( theory::TheoryModel* m );
 
diff --git a/src/theory/theory_model.cpp b/src/theory/theory_model.cpp
index 8579ad5..b9a08e3 100644
--- a/src/theory/theory_model.cpp
+++ b/src/theory/theory_model.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Clark Barrett, Andrew Reynolds, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -30,7 +30,7 @@ namespace CVC4 {
 namespace theory {
 
 TheoryModel::TheoryModel(context::Context* c, std::string name, bool enableFuncModels) :
-  d_substitutions(c, false), d_modelBuilt(c, false), d_enableFuncModels(enableFuncModels)
+  d_substitutions(c, false), d_modelBuilt(false), d_enableFuncModels(enableFuncModels)
 {
   d_true = NodeManager::currentNM()->mkConst( true );
   d_false = NodeManager::currentNM()->mkConst( false );
@@ -495,12 +495,10 @@ void TheoryEngineModelBuilder::checkTerms(TNode n, TheoryModel* tm, NodeSet& cac
   cache.insert(n);
 }
 
-void TheoryEngineModelBuilder::assignConstantRep( TheoryModel* tm, std::map<Node, Node>& constantReps, Node eqc, Node const_rep, bool fullModel ) {
-  constantReps[eqc] = const_rep;
+void TheoryEngineModelBuilder::assignConstantRep( TheoryModel* tm, Node eqc, Node const_rep ) {
+  d_constantReps[eqc] = const_rep;
   Trace("model-builder") << "    Assign: Setting constant rep of " << eqc << " to " << const_rep << endl;
-  if( !fullModel ){
-    tm->d_rep_set.d_values_to_terms[const_rep] = eqc;
-  }
+  tm->d_rep_set.d_values_to_terms[const_rep] = eqc;
 }
 
 bool TheoryEngineModelBuilder::isExcludedCdtValue( Node val, std::set<Node>* repSet, std::map< Node, Node >& assertedReps, Node eqc ) {
@@ -583,24 +581,26 @@ bool TheoryEngineModelBuilder::isExcludedUSortValue( std::map< TypeNode, unsigne
   return false;
 }
 
-void TheoryEngineModelBuilder::buildModel(Model* m, bool fullModel)
+bool TheoryEngineModelBuilder::buildModel(Model* m)
 {
-  Trace("model-builder") << "TheoryEngineModelBuilder: buildModel, fullModel = " << fullModel << std::endl;
+  Trace("model-builder") << "TheoryEngineModelBuilder: buildModel" << std::endl;
   TheoryModel* tm = (TheoryModel*)m;
 
-  // buildModel with fullModel = true should only be called once in any context
+  // buildModel should only be called once per check
   Assert(!tm->isBuilt());
-  tm->d_modelBuilt = fullModel;
+  tm->d_modelBuilt = true;
 
   // Reset model
   tm->reset();
 
   // Collect model info from the theories
   Trace("model-builder") << "TheoryEngineModelBuilder: Collect model info..." << std::endl;
-  d_te->collectModelInfo(tm, fullModel);
+  d_te->collectModelInfo(tm);
 
   // model-builder specific initialization
-  preProcessBuildModel(tm, fullModel);
+  if( !preProcessBuildModel(tm) ){
+    return false;
+  }
 
   // Loop through all terms and make sure that assignable sub-terms are in the equality engine
   // Also, record #eqc per type (for finite model finding)
@@ -627,7 +627,8 @@ void TheoryEngineModelBuilder::buildModel(Model* m, bool fullModel)
   Trace("model-builder") << "Collect representatives..." << std::endl;
 
   // Process all terms in the equality engine, store representatives for each EC
-  std::map< Node, Node > assertedReps, constantReps;
+  d_constantReps.clear();
+  std::map< Node, Node > assertedReps;
   TypeSet typeConstSet, typeRepSet, typeNoRepSet;
   TypeEnumeratorProperties tep;
   if( options::finiteModelFind() ){
@@ -648,7 +649,7 @@ void TheoryEngineModelBuilder::buildModel(Model* m, bool fullModel)
     Assert(tm->d_equalityEngine->getRepresentative(eqc) == eqc);
     TypeNode eqct = eqc.getType();
     Assert(assertedReps.find(eqc) == assertedReps.end());
-    Assert(constantReps.find(eqc) == constantReps.end());
+    Assert(d_constantReps.find(eqc) == d_constantReps.end());
 
     // Loop through terms in this EC
     Node rep, const_rep;
@@ -680,7 +681,7 @@ void TheoryEngineModelBuilder::buildModel(Model* m, bool fullModel)
       // Theories should not specify a rep if there is already a constant in the EC
       //AJR: I believe this assertion is too strict, eqc with asserted reps may merge with constant eqc
       //Assert(rep.isNull() || rep == const_rep);
-      assignConstantRep( tm, constantReps, eqc, const_rep, fullModel );
+      assignConstantRep( tm, eqc, const_rep );
       typeConstSet.add(eqct.getBaseType(), const_rep);
     }
     else if (!rep.isNull()) {
@@ -741,10 +742,10 @@ void TheoryEngineModelBuilder::buildModel(Model* m, bool fullModel)
               }
               else {
                 evaluable = true;
-                Node normalized = normalize(tm, n, constantReps, true);
+                Node normalized = normalize(tm, n, true);
                 if (normalized.isConst()) {
                   typeConstSet.add(tb, normalized);
-                  assignConstantRep( tm, constantReps, *i2, normalized, fullModel );
+                  assignConstantRep( tm, *i2, normalized);
                   Trace("model-builder") << "    Eval: Setting constant rep of " << (*i2) << " to " << normalized << endl;
                   changed = true;
                   evaluated = true;
@@ -772,12 +773,12 @@ void TheoryEngineModelBuilder::buildModel(Model* m, bool fullModel)
           for (i = repSet->begin(); i != repSet->end(); ) {
             Assert(assertedReps.find(*i) != assertedReps.end());
             Node rep = assertedReps[*i];
-            Node normalized = normalize(tm, rep, constantReps, false);
+            Node normalized = normalize(tm, rep, false);
             Trace("model-builder") << "    Normalizing rep (" << rep << "), normalized to (" << normalized << ")" << endl;
             if (normalized.isConst()) {
               changed = true;
               typeConstSet.add(tb, normalized);
-              assignConstantRep( tm, constantReps, *i, normalized, fullModel );
+              assignConstantRep( tm, *i, normalized);
               assertedReps.erase(*i);
               i2 = i;
               ++i;
@@ -901,7 +902,7 @@ void TheoryEngineModelBuilder::buildModel(Model* m, bool fullModel)
             n = *te;
           }
           Assert(!n.isNull());
-          assignConstantRep( tm, constantReps, *i2, n, fullModel );
+          assignConstantRep( tm, *i2, n);
           changed = true;
           noRepSet.erase(i2);
           if (assignOne) {
@@ -924,14 +925,12 @@ void TheoryEngineModelBuilder::buildModel(Model* m, bool fullModel)
   }
 
 #ifdef CVC4_ASSERTIONS
-  if (fullModel) {
-    // Assert that all representatives have been converted to constants
-    for (it = typeRepSet.begin(); it != typeRepSet.end(); ++it) {
-      set<Node>& repSet = TypeSet::getSet(it);
-      if (!repSet.empty()) {
-        Trace("model-builder") << "***Non-empty repSet, size = " << repSet.size() << ", first = " << *(repSet.begin()) << endl;
-        Assert(false);
-      }
+  // Assert that all representatives have been converted to constants
+  for (it = typeRepSet.begin(); it != typeRepSet.end(); ++it) {
+    set<Node>& repSet = TypeSet::getSet(it);
+    if (!repSet.empty()) {
+      Trace("model-builder") << "***Non-empty repSet, size = " << repSet.size() << ", first = " << *(repSet.begin()) << endl;
+      Assert(false);
     }
   }
 #endif /* CVC4_ASSERTIONS */
@@ -939,59 +938,62 @@ void TheoryEngineModelBuilder::buildModel(Model* m, bool fullModel)
   Trace("model-builder") << "Copy representatives to model..." << std::endl;
   tm->d_reps.clear();
   std::map< Node, Node >::iterator itMap;
-  for (itMap = constantReps.begin(); itMap != constantReps.end(); ++itMap) {
+  for (itMap = d_constantReps.begin(); itMap != d_constantReps.end(); ++itMap) {
     tm->d_reps[itMap->first] = itMap->second;
     tm->d_rep_set.add(itMap->second.getType(), itMap->second);
   }
 
-  if (!fullModel) {
-    Trace("model-builder") << "Make sure ECs have reps..." << std::endl;
-    // Make sure every EC has a rep
-    for (itMap = assertedReps.begin(); itMap != assertedReps.end(); ++itMap ) {
-      tm->d_reps[itMap->first] = itMap->second;
-      tm->d_rep_set.add(itMap->second.getType(), itMap->second);
-    }
-    for (it = typeNoRepSet.begin(); it != typeNoRepSet.end(); ++it) {
-      set<Node>& noRepSet = TypeSet::getSet(it);
-      set<Node>::iterator i;
-      for (i = noRepSet.begin(); i != noRepSet.end(); ++i) {
-        tm->d_reps[*i] = *i;
-        tm->d_rep_set.add((*i).getType(), *i);
-      }
+  Trace("model-builder") << "Make sure ECs have reps..." << std::endl;
+  // Make sure every EC has a rep
+  for (itMap = assertedReps.begin(); itMap != assertedReps.end(); ++itMap ) {
+    tm->d_reps[itMap->first] = itMap->second;
+    tm->d_rep_set.add(itMap->second.getType(), itMap->second);
+  }
+  for (it = typeNoRepSet.begin(); it != typeNoRepSet.end(); ++it) {
+    set<Node>& noRepSet = TypeSet::getSet(it);
+    set<Node>::iterator i;
+    for (i = noRepSet.begin(); i != noRepSet.end(); ++i) {
+      tm->d_reps[*i] = *i;
+      tm->d_rep_set.add((*i).getType(), *i);
     }
   }
 
   //modelBuilder-specific initialization
-  processBuildModel( tm, fullModel );
-
-  // Do post-processing of model from the theories (used for THEORY_SEP to construct heap model)
-  if( fullModel ){
-    Trace("model-builder") << "TheoryEngineModelBuilder: Post-process model..." << std::endl;
-    d_te->postProcessModel(tm);
+  if( !processBuildModel( tm ) ){
+    return false;
+  }else{
+    return true;
   }
-  
-#ifdef CVC4_ASSERTIONS
-  if (fullModel) {
-    // Check that every term evaluates to its representative in the model
-    for (eqcs_i = eq::EqClassesIterator(tm->d_equalityEngine); !eqcs_i.isFinished(); ++eqcs_i) {
-      // eqc is the equivalence class representative
-      Node eqc = (*eqcs_i);
-      Node rep;
-      itMap = constantReps.find(eqc);
-      if (itMap == constantReps.end() && eqc.getType().isBoolean()) {
-        rep = tm->getValue(eqc);
-        Assert(rep.isConst());
-      }
-      else {
-        Assert(itMap != constantReps.end());
-        rep = itMap->second;
-      }
-      eq::EqClassIterator eqc_i = eq::EqClassIterator(eqc, tm->d_equalityEngine);
-      for ( ; !eqc_i.isFinished(); ++eqc_i) {
-        Node n = *eqc_i;
-        static int repCheckInstance = 0;
-        ++repCheckInstance;
+}
 
+void TheoryEngineModelBuilder::debugCheckModel(Model* m){
+  TheoryModel* tm = (TheoryModel*)m;
+#ifdef CVC4_ASSERTIONS
+  Assert(tm->isBuilt());
+  eq::EqClassesIterator eqcs_i = eq::EqClassesIterator( tm->d_equalityEngine );
+  std::map< Node, Node >::iterator itMap;
+  // Check that every term evaluates to its representative in the model
+  for (eqcs_i = eq::EqClassesIterator(tm->d_equalityEngine); !eqcs_i.isFinished(); ++eqcs_i) {
+    // eqc is the equivalence class representative
+    Node eqc = (*eqcs_i);
+    Node rep;
+    itMap = d_constantReps.find(eqc);
+    if (itMap == d_constantReps.end() && eqc.getType().isBoolean()) {
+      rep = tm->getValue(eqc);
+      Assert(rep.isConst());
+    }
+    else {
+      Assert(itMap != d_constantReps.end());
+      rep = itMap->second;
+    }
+    eq::EqClassIterator eqc_i = eq::EqClassIterator(eqc, tm->d_equalityEngine);
+    for ( ; !eqc_i.isFinished(); ++eqc_i) {
+      Node n = *eqc_i;
+      static int repCheckInstance = 0;
+      ++repCheckInstance;
+      
+      // non-linear mult is not necessarily accurate wrt getValue
+      if( n.getKind()!=kind::NONLINEAR_MULT ){
         Debug("check-model::rep-checking")
           << "( " << repCheckInstance <<") "
           << "n: " << n << endl
@@ -1002,13 +1004,13 @@ void TheoryEngineModelBuilder::buildModel(Model* m, bool fullModel)
     }
   }
 #endif /* CVC4_ASSERTIONS */
+  debugModel( tm );
 }
 
-
-Node TheoryEngineModelBuilder::normalize(TheoryModel* m, TNode r, std::map< Node, Node >& constantReps, bool evalOnly)
+Node TheoryEngineModelBuilder::normalize(TheoryModel* m, TNode r, bool evalOnly)
 {
-  std::map<Node, Node>::iterator itMap = constantReps.find(r);
-  if (itMap != constantReps.end()) {
+  std::map<Node, Node>::iterator itMap = d_constantReps.find(r);
+  if (itMap != d_constantReps.end()) {
     return (*itMap).second;
   }
   NodeMap::iterator it = d_normalizedCache.find(r);
@@ -1027,8 +1029,8 @@ Node TheoryEngineModelBuilder::normalize(TheoryModel* m, TNode r, std::map< Node
       bool recurse = true;
       if (!ri.isConst()) {
         if (m->d_equalityEngine->hasTerm(ri)) {
-          itMap = constantReps.find(m->d_equalityEngine->getRepresentative(ri));
-          if (itMap != constantReps.end()) {
+          itMap = d_constantReps.find(m->d_equalityEngine->getRepresentative(ri));
+          if (itMap != d_constantReps.end()) {
             ri = (*itMap).second;
             recurse = false;
           }
@@ -1037,7 +1039,7 @@ Node TheoryEngineModelBuilder::normalize(TheoryModel* m, TNode r, std::map< Node
           }
         }
         if (recurse) {
-          ri = normalize(m, ri, constantReps, evalOnly);
+          ri = normalize(m, ri, evalOnly);
         }
         if (!ri.isConst()) {
           childrenConst = false;
@@ -1055,50 +1057,49 @@ Node TheoryEngineModelBuilder::normalize(TheoryModel* m, TNode r, std::map< Node
   return retNode;
 }
 
-void TheoryEngineModelBuilder::preProcessBuildModel(TheoryModel* m, bool fullModel) {
-  
+bool TheoryEngineModelBuilder::preProcessBuildModel(TheoryModel* m) {
+  return true;
 }
 
-void TheoryEngineModelBuilder::processBuildModel(TheoryModel* m, bool fullModel)
-{
-  if (fullModel) {
-    Trace("model-builder") << "Assigning function values..." << endl;
-    //construct function values
-    for( std::map< Node, std::vector< Node > >::iterator it = m->d_uf_terms.begin(); it != m->d_uf_terms.end(); ++it ){
-      Node n = it->first;
-      if( m->d_uf_models.find( n )==m->d_uf_models.end() ){
-        TypeNode type = n.getType();
-        uf::UfModelTree ufmt( n );
-        Node default_v, un, simp, v;
-        for( size_t i=0; i<it->second.size(); i++ ){
-          un = it->second[i];
-          vector<TNode> children;
-          children.push_back(n);
-          for (size_t j = 0; j < un.getNumChildren(); ++j) {
-            children.push_back(m->getRepresentative(un[j]));
-          }
-          simp = NodeManager::currentNM()->mkNode(un.getKind(), children);
-          v = m->getRepresentative(un);
-          Trace("model-builder") << "  Setting (" << simp << ") to (" << v << ")" << endl;
-          ufmt.setValue(m, simp, v);
-          default_v = v;
-        }
-        if( default_v.isNull() ){
-          //choose default value from model if none exists
-          TypeEnumerator te(type.getRangeType());
-          default_v = (*te);
-        }
-        ufmt.setDefaultValue( m, default_v );
-        if(options::condenseFunctionValues()) {
-          ufmt.simplify();
+bool TheoryEngineModelBuilder::processBuildModel(TheoryModel* m){
+  Trace("model-builder") << "Assigning function values..." << endl;
+  //construct function values
+  for( std::map< Node, std::vector< Node > >::iterator it = m->d_uf_terms.begin(); it != m->d_uf_terms.end(); ++it ){
+    Node n = it->first;
+    if( m->d_uf_models.find( n )==m->d_uf_models.end() ){
+      TypeNode type = n.getType();
+      Trace("model-builder") << "  Assign function value for " << n << " " << type << std::endl;
+      uf::UfModelTree ufmt( n );
+      Node default_v, un, simp, v;
+      for( size_t i=0; i<it->second.size(); i++ ){
+        un = it->second[i];
+        vector<TNode> children;
+        children.push_back(n);
+        for (size_t j = 0; j < un.getNumChildren(); ++j) {
+          children.push_back(m->getRepresentative(un[j]));
         }
-        Node val = ufmt.getFunctionValue( "_ufmt_", options::condenseFunctionValues() );
-        Trace("model-builder") << "  Assigning (" << n << ") to (" << val << ")" << endl;
-        m->d_uf_models[n] = val;
-        //ufmt.debugPrint( std::cout, m );
+        simp = NodeManager::currentNM()->mkNode(un.getKind(), children);
+        v = m->getRepresentative(un);
+        Trace("model-builder") << "  Setting (" << simp << ") to (" << v << ")" << endl;
+        ufmt.setValue(m, simp, v);
+        default_v = v;
+      }
+      if( default_v.isNull() ){
+        //choose default value from model if none exists
+        TypeEnumerator te(type.getRangeType());
+        default_v = (*te);
+      }
+      ufmt.setDefaultValue( m, default_v );
+      if(options::condenseFunctionValues()) {
+        ufmt.simplify();
       }
+      Node val = ufmt.getFunctionValue( "_ufmt_", options::condenseFunctionValues() );
+      Trace("model-builder") << "  Assigning (" << n << ") to (" << val << ")" << endl;
+      m->d_uf_models[n] = val;
+      //ufmt.debugPrint( std::cout, m );
     }
   }
+  return true;
 }
 
 } /* namespace CVC4::theory */
diff --git a/src/theory/theory_model.h b/src/theory/theory_model.h
index c30d1ea..126de1e 100644
--- a/src/theory/theory_model.h
+++ b/src/theory/theory_model.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Clark Barrett, Morgan Deters, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -36,7 +36,7 @@ class TheoryModel : public Model
 protected:
   /** substitution map for this model */
   SubstitutionMap d_substitutions;
-  context::CDO<bool> d_modelBuilt;
+  bool d_modelBuilt;
 public:
   TheoryModel(context::Context* c, std::string name, bool enableFuncModels);
   virtual ~TheoryModel() throw();
@@ -74,7 +74,9 @@ protected:
   Node getModelValue(TNode n, bool hasBoundVars = false, bool useDontCares = false) const;
 public:
   /** is built */
-  bool isBuilt() { return d_modelBuilt.get(); }
+  bool isBuilt() { return d_modelBuilt; }
+  /** set need build */
+  void setNeedsBuild() { d_modelBuilt = false; }
   /**
    * Get value function.  This should be called only after a ModelBuilder has called buildModel(...)
    * on this model.
@@ -104,7 +106,7 @@ public:
     *  This function tells the model that n should be the representative of its equivalence class.
     *  It should be called during model generation, before final representatives are chosen.  In the
     *  case of TheoryEngineModelBuilder, it should be called during Theory's collectModelInfo( ... )
-    *  functions where fullModel = true.
+    *  functions.
     */
   void assertRepresentative(TNode n);
 public:
@@ -266,15 +268,17 @@ protected:
   typedef std::hash_map<Node, Node, NodeHashFunction> NodeMap;
   NodeMap d_normalizedCache;
   typedef std::hash_set<Node, NodeHashFunction> NodeSet;
+  std::map< Node, Node > d_constantReps;
 
   /** process build model */
-  virtual void preProcessBuildModel(TheoryModel* m, bool fullModel);
-  virtual void processBuildModel(TheoryModel* m, bool fullModel);
+  virtual bool preProcessBuildModel(TheoryModel* m);
+  virtual bool processBuildModel(TheoryModel* m);
+  virtual void debugModel( TheoryModel* m ) {}
   /** normalize representative */
-  Node normalize(TheoryModel* m, TNode r, std::map<Node, Node>& constantReps, bool evalOnly);
+  Node normalize(TheoryModel* m, TNode r, bool evalOnly);
   bool isAssignable(TNode n);
   void checkTerms(TNode n, TheoryModel* tm, NodeSet& cache);
-  void assignConstantRep( TheoryModel* tm, std::map<Node, Node>& constantReps, Node eqc, Node const_rep, bool fullModel );
+  void assignConstantRep( TheoryModel* tm, Node eqc, Node const_rep );
   /** is v an excluded codatatype value */
   bool isExcludedCdtValue( Node v, std::set<Node>* repSet, std::map< Node, Node >& assertedReps, Node eqc );
   bool isCdtValueMatch( Node v, Node r, Node eqc, Node& eqc_m );
@@ -287,7 +291,8 @@ public:
   /** Build model function.
    *    Should be called only on TheoryModels m
    */
-  void buildModel(Model* m, bool fullModel);
+  bool buildModel(Model* m);
+  void debugCheckModel(Model* m);
 };/* class TheoryEngineModelBuilder */
 
 }/* CVC4::theory namespace */
diff --git a/src/theory/theory_registrar.h b/src/theory/theory_registrar.h
index d0e3a5b..df576a6 100644
--- a/src/theory/theory_registrar.h
+++ b/src/theory/theory_registrar.h
@@ -2,9 +2,9 @@
 /*! \file theory_registrar.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters, Liana Hadarean
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/theory_test_utils.h b/src/theory/theory_test_utils.h
index 031c51d..f5c85fc 100644
--- a/src/theory/theory_test_utils.h
+++ b/src/theory/theory_test_utils.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Morgan Deters, Liana Hadarean
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/theory_traits_template.h b/src/theory/theory_traits_template.h
index 0d2d0b8..5fbf10e 100644
--- a/src/theory/theory_traits_template.h
+++ b/src/theory/theory_traits_template.h
@@ -2,9 +2,9 @@
 /*! \file theory_traits_template.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Dejan Jovanovic, Tim King
+ **   Morgan Deters, Dejan Jovanovic, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/type_enumerator.h b/src/theory/type_enumerator.h
index bcd7e69..197363c 100644
--- a/src/theory/type_enumerator.h
+++ b/src/theory/type_enumerator.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -49,10 +49,10 @@ public:
   virtual bool isFinished() throw() = 0;
 
   /** Get the current constant of this type (throws if no such constant exists) */
-  virtual Node operator*() throw(NoMoreValuesException) = 0;
+  virtual Node operator*() = 0;
 
   /** Increment the pointer to the next available constant */
-  virtual TypeEnumeratorInterface& operator++() throw() = 0;
+  virtual TypeEnumeratorInterface& operator++() = 0;
 
   /** Clone this enumerator */
   virtual TypeEnumeratorInterface* clone() const = 0;
diff --git a/src/theory/type_enumerator_template.cpp b/src/theory/type_enumerator_template.cpp
index 2dfefa1..a2bc8ab 100644
--- a/src/theory/type_enumerator_template.cpp
+++ b/src/theory/type_enumerator_template.cpp
@@ -2,9 +2,9 @@
 /*! \file type_enumerator_template.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Andrew Reynolds
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/equality_engine.cpp b/src/theory/uf/equality_engine.cpp
index f7084be..a73425a 100644
--- a/src/theory/uf/equality_engine.cpp
+++ b/src/theory/uf/equality_engine.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Dejan Jovanovic, Guy Katz, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/equality_engine.h b/src/theory/uf/equality_engine.h
index 46ec740..7c8e275 100644
--- a/src/theory/uf/equality_engine.h
+++ b/src/theory/uf/equality_engine.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Dejan Jovanovic, Morgan Deters, Guy Katz
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/equality_engine_types.h b/src/theory/uf/equality_engine_types.h
index 346aebc..ed0afa9 100644
--- a/src/theory/uf/equality_engine_types.h
+++ b/src/theory/uf/equality_engine_types.h
@@ -2,9 +2,9 @@
 /*! \file equality_engine_types.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Andrew Reynolds, Guy Katz
+ **   Dejan Jovanovic, Andrew Reynolds, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/symmetry_breaker.cpp b/src/theory/uf/symmetry_breaker.cpp
index ca72846..cffa367 100644
--- a/src/theory/uf/symmetry_breaker.cpp
+++ b/src/theory/uf/symmetry_breaker.cpp
@@ -2,9 +2,9 @@
 /*! \file symmetry_breaker.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Liana Hadarean, Tim King
+ **   Morgan Deters, Liana Hadarean, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/symmetry_breaker.h b/src/theory/uf/symmetry_breaker.h
index b706f34..a814c67 100644
--- a/src/theory/uf/symmetry_breaker.h
+++ b/src/theory/uf/symmetry_breaker.h
@@ -2,9 +2,9 @@
 /*! \file symmetry_breaker.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Liana Hadarean, Tim King
+ **   Morgan Deters, Liana Hadarean, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/theory_uf.cpp b/src/theory/uf/theory_uf.cpp
index 35aee53..783585f 100644
--- a/src/theory/uf/theory_uf.cpp
+++ b/src/theory/uf/theory_uf.cpp
@@ -2,9 +2,9 @@
 /*! \file theory_uf.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Dejan Jovanovic, Morgan Deters, Andrew Reynolds
+ **   Morgan Deters, Andrew Reynolds, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -245,7 +245,7 @@ Node TheoryUF::explain(TNode literal, eq::EqProof* pf) {
   return mkAnd(assumptions);
 }
 
-void TheoryUF::collectModelInfo( TheoryModel* m, bool fullModel ){
+void TheoryUF::collectModelInfo( TheoryModel* m ){
   set<Node> termSet;
 
   // Compute terms appearing in assertions and shared terms
@@ -438,6 +438,20 @@ void TheoryUF::addSharedTerm(TNode t) {
   d_equalityEngine.addTriggerTerm(t, THEORY_UF);
 }
 
+bool TheoryUF::areCareDisequal(TNode x, TNode y){
+  Assert( d_equalityEngine.hasTerm(x) );
+  Assert( d_equalityEngine.hasTerm(y) );
+  if( d_equalityEngine.isTriggerTerm(x, THEORY_UF) && d_equalityEngine.isTriggerTerm(y, THEORY_UF) ){
+    TNode x_shared = d_equalityEngine.getTriggerTermRepresentative(x, THEORY_UF);
+    TNode y_shared = d_equalityEngine.getTriggerTermRepresentative(y, THEORY_UF);
+    EqualityStatus eqStatus = d_valuation.getEqualityStatus(x_shared, y_shared);
+    if( eqStatus==EQUALITY_FALSE_AND_PROPAGATED || eqStatus==EQUALITY_FALSE || eqStatus==EQUALITY_FALSE_IN_MODEL ){
+      return true;
+    }
+  }
+  return false;
+}
+
 //TODO: move quantifiers::TermArgTrie to src/theory/
 void TheoryUF::addCarePairs( quantifiers::TermArgTrie * t1, quantifiers::TermArgTrie * t2, unsigned arity, unsigned depth ){
   if( depth==arity ){
@@ -453,17 +467,12 @@ void TheoryUF::addCarePairs( quantifiers::TermArgTrie * t1, quantifiers::TermArg
           Assert( d_equalityEngine.hasTerm(x) );
           Assert( d_equalityEngine.hasTerm(y) );
           Assert( !d_equalityEngine.areDisequal( x, y, false ) );
+          Assert( !areCareDisequal( x, y ) );
           if( !d_equalityEngine.areEqual( x, y ) ){
             if( d_equalityEngine.isTriggerTerm(x, THEORY_UF) && d_equalityEngine.isTriggerTerm(y, THEORY_UF) ){
               TNode x_shared = d_equalityEngine.getTriggerTermRepresentative(x, THEORY_UF);
               TNode y_shared = d_equalityEngine.getTriggerTermRepresentative(y, THEORY_UF);
-              EqualityStatus eqStatus = d_valuation.getEqualityStatus(x_shared, y_shared);
-              if( eqStatus==EQUALITY_FALSE_AND_PROPAGATED || eqStatus==EQUALITY_FALSE || eqStatus==EQUALITY_FALSE_IN_MODEL ){
-                //an argument is disequal, we are done
-                return;
-              }else{
-                currentPairs.push_back(make_pair(x_shared, y_shared));
-              }
+              currentPairs.push_back(make_pair(x_shared, y_shared));
             }
           }
         }
@@ -487,7 +496,9 @@ void TheoryUF::addCarePairs( quantifiers::TermArgTrie * t1, quantifiers::TermArg
         ++it2;
         for( ; it2 != t1->d_data.end(); ++it2 ){
           if( !d_equalityEngine.areDisequal(it->first, it2->first, false) ){
-            addCarePairs( &it->second, &it2->second, arity, depth+1 );
+            if( !areCareDisequal(it->first, it2->first) ){
+              addCarePairs( &it->second, &it2->second, arity, depth+1 );
+            }
           }
         }
       }
@@ -496,7 +507,9 @@ void TheoryUF::addCarePairs( quantifiers::TermArgTrie * t1, quantifiers::TermArg
       for( std::map< TNode, quantifiers::TermArgTrie >::iterator it = t1->d_data.begin(); it != t1->d_data.end(); ++it ){
         for( std::map< TNode, quantifiers::TermArgTrie >::iterator it2 = t2->d_data.begin(); it2 != t2->d_data.end(); ++it2 ){
           if( !d_equalityEngine.areDisequal(it->first, it2->first, false) ){
-            addCarePairs( &it->second, &it2->second, arity, depth+1 );
+            if( !areCareDisequal(it->first, it2->first) ){
+              addCarePairs( &it->second, &it2->second, arity, depth+1 );
+            }
           }
         }
       }
diff --git a/src/theory/uf/theory_uf.h b/src/theory/uf/theory_uf.h
index ce9c70c..bd10f59 100644
--- a/src/theory/uf/theory_uf.h
+++ b/src/theory/uf/theory_uf.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Dejan Jovanovic, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -185,7 +185,7 @@ public:
   void preRegisterTerm(TNode term);
   Node explain(TNode n);
 
-  void collectModelInfo( TheoryModel* m, bool fullModel );
+  void collectModelInfo( TheoryModel* m );
 
   void ppStaticLearn(TNode in, NodeBuilder<>& learned);
   void presolve();
@@ -210,6 +210,7 @@ public:
     return d_thss;
   }
 private:
+  bool areCareDisequal(TNode x, TNode y);
   void addCarePairs( quantifiers::TermArgTrie * t1, quantifiers::TermArgTrie * t2, unsigned arity, unsigned depth );
 };/* class TheoryUF */
 
diff --git a/src/theory/uf/theory_uf_model.cpp b/src/theory/uf/theory_uf_model.cpp
index f6568ad..b7572ea 100644
--- a/src/theory/uf/theory_uf_model.cpp
+++ b/src/theory/uf/theory_uf_model.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/theory_uf_model.h b/src/theory/uf/theory_uf_model.h
index 39e7ee6..0b55c92 100644
--- a/src/theory/uf/theory_uf_model.h
+++ b/src/theory/uf/theory_uf_model.h
@@ -2,9 +2,9 @@
 /*! \file theory_uf_model.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Andrew Reynolds, Tim King
+ **   Morgan Deters, Andrew Reynolds, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/theory_uf_rewriter.h b/src/theory/uf/theory_uf_rewriter.h
index bce6003..0bd5022 100644
--- a/src/theory/uf/theory_uf_rewriter.h
+++ b/src/theory/uf/theory_uf_rewriter.h
@@ -2,9 +2,9 @@
 /*! \file theory_uf_rewriter.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Dejan Jovanovic, Tim King
+ **   Morgan Deters, Dejan Jovanovic, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/theory_uf_strong_solver.cpp b/src/theory/uf/theory_uf_strong_solver.cpp
index 51648fb..7745971 100644
--- a/src/theory/uf/theory_uf_strong_solver.cpp
+++ b/src/theory/uf/theory_uf_strong_solver.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Andrew Reynolds, Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/theory_uf_strong_solver.h b/src/theory/uf/theory_uf_strong_solver.h
index 4130a7d..b477a7e 100644
--- a/src/theory/uf/theory_uf_strong_solver.h
+++ b/src/theory/uf/theory_uf_strong_solver.h
@@ -2,9 +2,9 @@
 /*! \file theory_uf_strong_solver.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Morgan Deters, Tim King
+ **   Tim King, Andrew Reynolds, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/uf/theory_uf_type_rules.h b/src/theory/uf/theory_uf_type_rules.h
index 5d97dda..a3c775a 100644
--- a/src/theory/uf/theory_uf_type_rules.h
+++ b/src/theory/uf/theory_uf_type_rules.h
@@ -2,9 +2,9 @@
 /*! \file theory_uf_type_rules.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Andrew Reynolds, Morgan Deters, Dejan Jovanovic
+ **   Tim King, Morgan Deters, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -46,12 +46,14 @@ class UfTypeRule {
         TypeNode currentArgument = (*argument_it).getType();
         TypeNode currentArgumentType = *argument_type_it;
         if (!currentArgument.isComparableTo(currentArgumentType)) {
+        //if (!currentArgument.isSubtypeOf(currentArgumentType)) {   //FIXME:typing
           std::stringstream ss;
           ss << "argument type is not a subtype of the function's argument "
              << "type:\n"
              << "argument:  " << *argument_it << "\n"
              << "has type:  " << (*argument_it).getType() << "\n"
-             << "not subtype: " << *argument_type_it;
+             << "not subtype: " << *argument_type_it << "\n"
+             << "in term : " << n;
           throw TypeCheckingExceptionPrivate(n, ss.str());
         }
       }
diff --git a/src/theory/unconstrained_simplifier.cpp b/src/theory/unconstrained_simplifier.cpp
index 57d95d8..6c2c791 100644
--- a/src/theory/unconstrained_simplifier.cpp
+++ b/src/theory/unconstrained_simplifier.cpp
@@ -2,9 +2,9 @@
 /*! \file unconstrained_simplifier.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Clark Barrett, Peter Collingbourne, Tim King
+ **   Clark Barrett, Tim King, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/unconstrained_simplifier.h b/src/theory/unconstrained_simplifier.h
index e10be1a..a32dd07 100644
--- a/src/theory/unconstrained_simplifier.h
+++ b/src/theory/unconstrained_simplifier.h
@@ -2,9 +2,9 @@
 /*! \file unconstrained_simplifier.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Clark Barrett, Tim King
+ **   Clark Barrett, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/valuation.cpp b/src/theory/valuation.cpp
index 7e13668..7151b4a 100644
--- a/src/theory/valuation.cpp
+++ b/src/theory/valuation.cpp
@@ -2,9 +2,9 @@
 /*! \file valuation.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Dejan Jovanovic, Tim King
+ **   Morgan Deters, Dejan Jovanovic, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/theory/valuation.h b/src/theory/valuation.h
index 54af14f..e78a629 100644
--- a/src/theory/valuation.h
+++ b/src/theory/valuation.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Dejan Jovanovic, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/Makefile.am b/src/util/Makefile.am
index a8e37c9..cd6f0e1 100644
--- a/src/util/Makefile.am
+++ b/src/util/Makefile.am
@@ -44,6 +44,8 @@ libutil_la_SOURCES = \
 	resource_manager.h \
 	result.cpp \
 	result.h \
+	safe_print.cpp \
+	safe_print.h \
 	sexpr.cpp \
 	sexpr.h \
 	smt2_quote_string.cpp \
diff --git a/src/util/Makefile.in b/src/util/Makefile.in
index 72a7bfb..de7a58b 100644
--- a/src/util/Makefile.in
+++ b/src/util/Makefile.in
@@ -131,19 +131,19 @@ am__libutil_la_SOURCES_DIST = Makefile.am Makefile.in \
 	floatingpoint.cpp floatingpoint.h gmp_util.h hash.h index.h \
 	maybe.h ntuple.h proof.h regexp.cpp regexp.h \
 	resource_manager.cpp resource_manager.h result.cpp result.h \
-	sexpr.cpp sexpr.h smt2_quote_string.cpp smt2_quote_string.h \
-	statistics.cpp statistics.h statistics_registry.cpp \
-	statistics_registry.h subrange_bound.cpp subrange_bound.h \
-	tuple.h unsafe_interrupt_exception.h utility.h \
-	rational_cln_imp.cpp integer_cln_imp.cpp rational_gmp_imp.cpp \
-	integer_gmp_imp.cpp
+	safe_print.cpp safe_print.h sexpr.cpp sexpr.h \
+	smt2_quote_string.cpp smt2_quote_string.h statistics.cpp \
+	statistics.h statistics_registry.cpp statistics_registry.h \
+	subrange_bound.cpp subrange_bound.h tuple.h \
+	unsafe_interrupt_exception.h utility.h rational_cln_imp.cpp \
+	integer_cln_imp.cpp rational_gmp_imp.cpp integer_gmp_imp.cpp
 @CVC4_CLN_IMP_TRUE at am__objects_1 = rational_cln_imp.lo \
 @CVC4_CLN_IMP_TRUE@	integer_cln_imp.lo
 @CVC4_GMP_IMP_TRUE at am__objects_2 = rational_gmp_imp.lo \
 @CVC4_GMP_IMP_TRUE@	integer_gmp_imp.lo
 am_libutil_la_OBJECTS = abstract_value.lo cardinality.lo divisible.lo \
 	floatingpoint.lo regexp.lo resource_manager.lo result.lo \
-	sexpr.lo smt2_quote_string.lo statistics.lo \
+	safe_print.lo sexpr.lo smt2_quote_string.lo statistics.lo \
 	statistics_registry.lo subrange_bound.lo $(am__objects_1) \
 	$(am__objects_2)
 libutil_la_OBJECTS = $(am_libutil_la_OBJECTS)
@@ -267,6 +267,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -503,9 +504,10 @@ libutil_la_SOURCES = Makefile.am Makefile.in abstract_value.cpp \
 	divisible.cpp divisible.h dynamic_array.h floatingpoint.cpp \
 	floatingpoint.h gmp_util.h hash.h index.h maybe.h ntuple.h \
 	proof.h regexp.cpp regexp.h resource_manager.cpp \
-	resource_manager.h result.cpp result.h sexpr.cpp sexpr.h \
-	smt2_quote_string.cpp smt2_quote_string.h statistics.cpp \
-	statistics.h statistics_registry.cpp statistics_registry.h \
+	resource_manager.h result.cpp result.h safe_print.cpp \
+	safe_print.h sexpr.cpp sexpr.h smt2_quote_string.cpp \
+	smt2_quote_string.h statistics.cpp statistics.h \
+	statistics_registry.cpp statistics_registry.h \
 	subrange_bound.cpp subrange_bound.h tuple.h \
 	unsafe_interrupt_exception.h utility.h $(am__append_1) \
 	$(am__append_2)
@@ -618,6 +620,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/regexp.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/resource_manager.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/result.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/safe_print.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sexpr.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/smt2_quote_string.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/statistics.Plo at am__quote@
diff --git a/src/util/abstract_value.cpp b/src/util/abstract_value.cpp
index c805690..123d568 100644
--- a/src/util/abstract_value.cpp
+++ b/src/util/abstract_value.cpp
@@ -2,9 +2,9 @@
 /*! \file abstract_value.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/abstract_value.h b/src/util/abstract_value.h
index d85a62c..9c8e1cb 100644
--- a/src/util/abstract_value.h
+++ b/src/util/abstract_value.h
@@ -2,9 +2,9 @@
 /*! \file abstract_value.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/bin_heap.h b/src/util/bin_heap.h
index 4f2b25c..86f7b87 100644
--- a/src/util/bin_heap.h
+++ b/src/util/bin_heap.h
@@ -2,9 +2,9 @@
 /*! \file bin_heap.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/bitvector.h b/src/util/bitvector.h
index 4a74c1c..8d46189 100644
--- a/src/util/bitvector.h
+++ b/src/util/bitvector.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Dejan Jovanovic, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/bool.h b/src/util/bool.h
index 99db6a4..386315f 100644
--- a/src/util/bool.h
+++ b/src/util/bool.h
@@ -2,9 +2,9 @@
 /*! \file bool.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/cache.h b/src/util/cache.h
index 8dd3cd0..6f5bac8 100644
--- a/src/util/cache.h
+++ b/src/util/cache.h
@@ -2,9 +2,9 @@
 /*! \file cache.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/cardinality.cpp b/src/util/cardinality.cpp
index 17c7907..48a1329 100644
--- a/src/util/cardinality.cpp
+++ b/src/util/cardinality.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/cardinality.h b/src/util/cardinality.h
index b16f843..0bc1fef 100644
--- a/src/util/cardinality.h
+++ b/src/util/cardinality.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Tim King, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/channel.h b/src/util/channel.h
index 39aed42..5a56104 100644
--- a/src/util/channel.h
+++ b/src/util/channel.h
@@ -1,9 +1,8 @@
 /*********************                                                        */
 /*! \file channel.h
  ** \verbatim
- ** Original author: Morgan Deters
- ** Major contributors: none
- ** Minor contributors (to current version): none
+ ** Top contributors (to current version):
+ **   none 
  ** This file is part of the CVC4 project but is excluded from the
  ** standard CVC4 licensing because it is a derivative work of
  ** circular_buffer.hpp in the BOOST 1.46.1 distribution.
@@ -13,6 +12,7 @@
  ** The combined work is:
  **   Copyright (c) 2009-2014  New York University and The University of Iowa
  **   Copyright (c) 2003-2008  Jan Gaspar
+ ** \endverbatim
  **
  ** \brief [[ Add one-line brief description here ]]
  **
diff --git a/src/util/debug.h b/src/util/debug.h
index 665fa99..5851408 100644
--- a/src/util/debug.h
+++ b/src/util/debug.h
@@ -2,9 +2,9 @@
 /*! \file debug.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/dense_map.h b/src/util/dense_map.h
index 7fa3832..c7d872d 100644
--- a/src/util/dense_map.h
+++ b/src/util/dense_map.h
@@ -2,9 +2,9 @@
 /*! \file dense_map.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Dejan Jovanovic
+ **   Tim King, Paul Meng, Dejan Jovanovic
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/divisible.cpp b/src/util/divisible.cpp
index 4e0d981..060c686 100644
--- a/src/util/divisible.cpp
+++ b/src/util/divisible.cpp
@@ -2,9 +2,9 @@
 /*! \file divisible.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/divisible.h b/src/util/divisible.h
index d5651ae..dd3c2f0 100644
--- a/src/util/divisible.h
+++ b/src/util/divisible.h
@@ -2,9 +2,9 @@
 /*! \file divisible.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/dynamic_array.h b/src/util/dynamic_array.h
index 2ec85a0..9126c39 100644
--- a/src/util/dynamic_array.h
+++ b/src/util/dynamic_array.h
@@ -2,9 +2,9 @@
 /*! \file dynamic_array.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/floatingpoint.cpp b/src/util/floatingpoint.cpp
index 678d3a4..8c446d9 100644
--- a/src/util/floatingpoint.cpp
+++ b/src/util/floatingpoint.cpp
@@ -2,10 +2,10 @@
 /*! \file floatingpoint.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Martin Brain
+ **   Martin Brain, Tim King, Paul Meng
  ** Copyright (c) 2013  University of Oxford
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/floatingpoint.h b/src/util/floatingpoint.h
index af909df..b3be84f 100644
--- a/src/util/floatingpoint.h
+++ b/src/util/floatingpoint.h
@@ -2,10 +2,10 @@
 /*! \file floatingpoint.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Martin Brain, Tim King
+ **   Martin Brain, Tim King, Paul Meng
  ** Copyright (c) 2013  University of Oxford
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/gmp_util.h b/src/util/gmp_util.h
index 776d8a3..2e1ccbc 100644
--- a/src/util/gmp_util.h
+++ b/src/util/gmp_util.h
@@ -2,9 +2,9 @@
 /*! \file gmp_util.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Dejan Jovanovic, Tim King
+ **   Morgan Deters, Dejan Jovanovic, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/hash.h b/src/util/hash.h
index 4797b5f..af468e2 100644
--- a/src/util/hash.h
+++ b/src/util/hash.h
@@ -2,9 +2,9 @@
 /*! \file hash.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Christopher L. Conway, Tim King
+ **   Morgan Deters, Christopher L. Conway, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/index.h b/src/util/index.h
index 6c11343..a8910a6 100644
--- a/src/util/index.h
+++ b/src/util/index.h
@@ -2,9 +2,9 @@
 /*! \file index.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters, Liana Hadarean
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/integer.h.in b/src/util/integer.h.in
index 13ae139..f8e0a2f 100644
--- a/src/util/integer.h.in
+++ b/src/util/integer.h.in
@@ -2,9 +2,9 @@
 /*! \file integer.h.in
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/integer_cln_imp.cpp b/src/util/integer_cln_imp.cpp
index a7412b5..b09d242 100644
--- a/src/util/integer_cln_imp.cpp
+++ b/src/util/integer_cln_imp.cpp
@@ -2,9 +2,9 @@
 /*! \file integer_cln_imp.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Clark Barrett, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/integer_cln_imp.h b/src/util/integer_cln_imp.h
index 1261952..86cf649 100644
--- a/src/util/integer_cln_imp.h
+++ b/src/util/integer_cln_imp.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Morgan Deters, Liana Hadarean
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/integer_gmp_imp.cpp b/src/util/integer_gmp_imp.cpp
index e0472ac..e24e8ba 100644
--- a/src/util/integer_gmp_imp.cpp
+++ b/src/util/integer_gmp_imp.cpp
@@ -2,9 +2,9 @@
 /*! \file integer_gmp_imp.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Clark Barrett
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/integer_gmp_imp.h b/src/util/integer_gmp_imp.h
index 5af902a..8426ac6 100644
--- a/src/util/integer_gmp_imp.h
+++ b/src/util/integer_gmp_imp.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Morgan Deters, Liana Hadarean
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/maybe.h b/src/util/maybe.h
index 7ede6f5..b2c8b97 100644
--- a/src/util/maybe.h
+++ b/src/util/maybe.h
@@ -2,9 +2,9 @@
 /*! \file maybe.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/ntuple.h b/src/util/ntuple.h
index 21af4f4..7122752 100644
--- a/src/util/ntuple.h
+++ b/src/util/ntuple.h
@@ -2,9 +2,9 @@
 /*! \file ntuple.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/proof.h b/src/util/proof.h
index b4a8a3d..af68efa 100644
--- a/src/util/proof.h
+++ b/src/util/proof.h
@@ -2,9 +2,9 @@
 /*! \file proof.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Guy Katz, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/rational.h.in b/src/util/rational.h.in
index 08c4003..196cae5 100644
--- a/src/util/rational.h.in
+++ b/src/util/rational.h.in
@@ -2,9 +2,9 @@
 /*! \file rational.h.in
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/rational_cln_imp.cpp b/src/util/rational_cln_imp.cpp
index bee9445..09e3c81 100644
--- a/src/util/rational_cln_imp.cpp
+++ b/src/util/rational_cln_imp.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Christopher L. Conway, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/rational_cln_imp.h b/src/util/rational_cln_imp.h
index 9b4a8ef..23b7332 100644
--- a/src/util/rational_cln_imp.h
+++ b/src/util/rational_cln_imp.h
@@ -2,9 +2,9 @@
 /*! \file rational_cln_imp.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters, Dejan Jovanovic
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/rational_gmp_imp.cpp b/src/util/rational_gmp_imp.cpp
index 17bce02..527222f 100644
--- a/src/util/rational_gmp_imp.cpp
+++ b/src/util/rational_gmp_imp.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Christopher L. Conway, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/rational_gmp_imp.h b/src/util/rational_gmp_imp.h
index 6a1c8b4..e0eba8a 100644
--- a/src/util/rational_gmp_imp.h
+++ b/src/util/rational_gmp_imp.h
@@ -2,9 +2,9 @@
 /*! \file rational_gmp_imp.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters, Dejan Jovanovic
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/regexp.cpp b/src/util/regexp.cpp
index a6f0de4..9915d48 100644
--- a/src/util/regexp.cpp
+++ b/src/util/regexp.cpp
@@ -2,9 +2,9 @@
 /*! \file regexp.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tianyi Liang, Tim King
+ **   Morgan Deters, Tianyi Liang, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/regexp.h b/src/util/regexp.h
index 06766e0..beb0ee0 100644
--- a/src/util/regexp.h
+++ b/src/util/regexp.h
@@ -2,9 +2,9 @@
 /*! \file regexp.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tianyi Liang, Tim King, Morgan Deters
+ **   Tianyi Liang, Andrew Reynolds, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/resource_manager.cpp b/src/util/resource_manager.cpp
index 7a739a7..b2adb4a 100644
--- a/src/util/resource_manager.cpp
+++ b/src/util/resource_manager.cpp
@@ -2,9 +2,9 @@
 /*! \file resource_manager.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Tim King, Morgan Deters
+ **   Liana Hadarean, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/resource_manager.h b/src/util/resource_manager.h
index d21122c..3531555 100644
--- a/src/util/resource_manager.h
+++ b/src/util/resource_manager.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Liana Hadarean, Tim King, Morgan Deters
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/result.cpp b/src/util/result.cpp
index af28269..27d82bb 100644
--- a/src/util/result.cpp
+++ b/src/util/result.cpp
@@ -2,9 +2,9 @@
 /*! \file result.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Tim King, Morgan Deters, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -351,6 +351,7 @@ void Result::toStream(std::ostream& out, OutputLanguage language) const {
   switch (language) {
     case language::output::LANG_SMTLIB_V2_0:
     case language::output::LANG_SMTLIB_V2_5:
+    case language::output::LANG_SMTLIB_V2_6:
     case language::output::LANG_SYGUS:
     case language::output::LANG_Z3STR:
       toStreamSmt2(out);
diff --git a/src/util/result.h b/src/util/result.h
index 80fbc0c..b08cd57 100644
--- a/src/util/result.h
+++ b/src/util/result.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/safe_print.cpp b/src/util/safe_print.cpp
new file mode 100644
index 0000000..dc986e2
--- /dev/null
+++ b/src/util/safe_print.cpp
@@ -0,0 +1,214 @@
+/*********************                                                        */
+/*! \file safe_print.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andres Noetzli
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Definition of print functions that are safe to use in a signal
+ ** handler.
+ **
+ ** Signal handlers only allow a very limited set of operations, e.g. dynamic
+ ** memory allocation is not possible. This set of functions can be used to
+ ** print information from a signal handler. All output is written to file
+ ** descriptors using the async-signal-safe write() function.
+ **/
+
+#include "safe_print.h"
+
+#include <unistd.h>
+
+/* Size of buffers used */
+#define BUFFER_SIZE 20
+
+namespace CVC4 {
+
+template <>
+void safe_print(int fd, const std::string& msg) {
+  // Print characters one by one instead of using
+  // string::data()/string::c_str() to avoid allocations (pre-c++11)
+  for (size_t i = 0; i < msg.length(); i++) {
+    if (write(fd, &(msg[i]), 1) != 1) {
+      abort();
+    }
+  }
+}
+
+template <>
+void safe_print(int fd, const int64_t& _i) {
+  char buf[BUFFER_SIZE];
+  int64_t i = _i;
+
+  if (i == 0) {
+    safe_print(fd, "0");
+    return;
+  } else if (i < 0) {
+    safe_print(fd, "-");
+    i *= -1;
+  }
+
+  // This loop fills the buffer from the end. The number of elements in the
+  // buffer is BUFER_SIZE - idx - 1 and they start at position idx + 1.
+  ssize_t idx = BUFFER_SIZE - 1;
+  while (i != 0 && idx >= 0) {
+    buf[idx] = '0' + i % 10;
+    i /= 10;
+    idx--;
+  }
+
+  ssize_t nbyte = BUFFER_SIZE - idx - 1;
+  if (write(fd, buf + idx + 1, nbyte) != nbyte) {
+    abort();
+  }
+}
+
+template <>
+void safe_print(int fd, const int32_t& i) {
+  safe_print<int64_t>(fd, i);
+}
+
+template <>
+void safe_print(int fd, const uint64_t& _i) {
+  char buf[BUFFER_SIZE];
+  uint64_t i = _i;
+
+  if (i == 0) {
+    safe_print(fd, "0");
+    return;
+  }
+
+  // This loop fills the buffer from the end. The number of elements in the
+  // buffer is BUFER_SIZE - idx - 1 and they start at position idx + 1.
+  ssize_t idx = BUFFER_SIZE - 1;
+  while (i != 0 && idx >= 0) {
+    buf[idx] = '0' + i % 10;
+    i /= 10;
+    idx--;
+  }
+
+  ssize_t nbyte = BUFFER_SIZE - idx - 1;
+  if (write(fd, buf + idx + 1, nbyte) != nbyte) {
+    abort();
+  }
+}
+
+template <>
+void safe_print(int fd, const uint32_t& i) {
+  safe_print<uint64_t>(fd, i);
+}
+
+template <>
+void safe_print(int fd, const double& _d) {
+  // Note: this print function for floating-point values is optimized for
+  // simplicity, not correctness or performance.
+  char buf[BUFFER_SIZE];
+  double d = _d;
+
+  ssize_t i = 0;
+  int64_t v = static_cast<int64_t>(d);
+  d -= v;
+
+  if (d < 0.0) {
+    d *= -1.0;
+  }
+
+  safe_print<int64_t>(fd, v);
+  safe_print(fd, ".");
+
+  // Print decimal digits as long as the remaining value is larger than zero
+  // and print at least one digit.
+  while (i == 0 || (d > 0.0 && i < BUFFER_SIZE)) {
+    d *= 10.0;
+    char c = static_cast<char>(d);
+    buf[i] = '0' + c;
+    d -= c;
+    i++;
+  }
+
+  if (write(fd, buf, i) != i) {
+    abort();
+  }
+}
+
+template <>
+void safe_print(int fd, const float& f) {
+  safe_print<double>(fd, (double)f);
+}
+
+template <>
+void safe_print(int fd, const bool& b) {
+  if (b) {
+    safe_print(fd, "true");
+  } else {
+    safe_print(fd, "false");
+  }
+}
+
+template <>
+void safe_print(int fd, void* const& addr) {
+  safe_print_hex(fd, (uint64_t)addr);
+}
+
+template <>
+void safe_print(int fd, const timespec& t) {
+  safe_print<uint64_t>(fd, t.tv_sec);
+  safe_print(fd, ".");
+  safe_print_right_aligned(fd, t.tv_nsec, 9);
+}
+
+void safe_print_hex(int fd, uint64_t i) {
+  char buf[BUFFER_SIZE];
+
+  safe_print(fd, "0x");
+  if (i == 0) {
+    safe_print(fd, "0");
+    return;
+  }
+
+  // This loop fills the buffer from the end. The number of elements in the
+  // buffer is BUFER_SIZE - idx - 1 and they start at position idx + 1.
+  ssize_t idx = BUFFER_SIZE - 1;
+  while (i != 0 && idx >= 0) {
+    char current = i % 16;
+    if (current <= 9) {
+      buf[idx] = '0' + current;
+    } else {
+      buf[idx] = 'a' + current - 10;
+    }
+    i /= 16;
+    idx--;
+  }
+
+  ssize_t nbyte = BUFFER_SIZE - idx - 1;
+  if (write(fd, buf + idx + 1, nbyte) != nbyte) {
+    abort();
+  }
+}
+
+void safe_print_right_aligned(int fd, uint64_t i, ssize_t width) {
+  char buf[BUFFER_SIZE];
+
+  // Make sure that the result fits in the buffer
+  width = (width < BUFFER_SIZE) ? width : BUFFER_SIZE;
+
+  for (ssize_t j = 0; j < width; j++) {
+    buf[j] = '0';
+  }
+
+  ssize_t idx = width - 1;
+  while (i != 0 && idx >= 0) {
+    buf[idx] = '0' + i % 10;
+    i /= 10;
+    idx--;
+  }
+
+  if (write(fd, buf, width) != width) {
+    abort();
+  }
+}
+
+} /* CVC4 namespace */
diff --git a/src/util/safe_print.h b/src/util/safe_print.h
new file mode 100644
index 0000000..637d00d
--- /dev/null
+++ b/src/util/safe_print.h
@@ -0,0 +1,99 @@
+/*********************                                                        */
+/*! \file safe_print.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andres Noetzli
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief Print functions that are safe to use in a signal handler.
+ **
+ ** Signal handlers only allow a very limited set of operations, e.g. dynamic
+ ** memory allocation is not possible. This set of functions can be used to
+ ** print information from a signal handler.
+ **
+ ** The safe_print function takes a template parameter T and prints an argument
+ ** of type const T& to avoid copying, e.g. when printing std::strings. For
+ ** consistency, we also pass primitive types by reference (otherwise, functions
+ ** in statistics_registry.h would require specialization or we would have to
+ ** use function overloading).
+ **
+ ** This header is a "cvc4_private_library.h" header because it is private but
+ ** the safe_print functions are used in the driver. See also the description
+ ** of "statistics_registry.h" for more information on
+ ** "cvc4_private_library.h".
+ **/
+
+#include "cvc4_private_library.h"
+
+#ifndef __CVC4__SAFE_PRINT_H
+#define __CVC4__SAFE_PRINT_H
+
+#if __cplusplus >= 201103L
+// For c++11 and newer
+#include <cstdint>
+#else
+#include <stdint.h>
+#endif
+
+#include <unistd.h>
+
+#include "lib/clock_gettime.h"
+#include "util/result.h"
+
+namespace CVC4 {
+
+/**
+ * Prints arrays of chars (e.g. string literals) of length N. Safe to use in a
+ * signal handler.
+ */
+template <size_t N>
+void CVC4_PUBLIC safe_print(int fd, const char (&msg)[N]) {
+  ssize_t nb = N - 1;
+  if (write(fd, msg, nb) != nb) {
+    abort();
+  }
+}
+
+/** Prints a variable of type T. Safe to use in a signal handler. */
+template <typename T>
+void CVC4_PUBLIC safe_print(int fd, const T& msg) {
+  safe_print(fd, "<unsupported>");
+}
+
+template <>
+void CVC4_PUBLIC safe_print(int fd, const std::string& msg);
+template <>
+void CVC4_PUBLIC safe_print(int fd, const int64_t& _i);
+template <>
+void CVC4_PUBLIC safe_print(int fd, const int32_t& i);
+template <>
+void CVC4_PUBLIC safe_print(int fd, const uint64_t& _i);
+template <>
+void CVC4_PUBLIC safe_print(int fd, const uint32_t& i);
+template <>
+void CVC4_PUBLIC safe_print(int fd, const double& _d);
+template <>
+void CVC4_PUBLIC safe_print(int fd, const float& f);
+template <>
+void CVC4_PUBLIC safe_print(int fd, const bool& b);
+template <>
+void CVC4_PUBLIC safe_print(int fd, void* const& addr);
+template <>
+void CVC4_PUBLIC safe_print(int fd, const timespec& t);
+
+/** Prints an integer in hexadecimal. Safe to use in a signal handler. */
+void safe_print_hex(int fd, uint64_t i);
+
+/**
+ * Prints a right aligned number. Fills up remaining space with zeros. Safe to
+ * use in a signal handler.
+ */
+void safe_print_right_aligned(int fd, uint64_t i, ssize_t width);
+
+} /* CVC4 namespace */
+
+#endif /* __CVC4__SAFE_PRINT_H */
diff --git a/src/util/sexpr.cpp b/src/util/sexpr.cpp
index a34689d..61dbccb 100644
--- a/src/util/sexpr.cpp
+++ b/src/util/sexpr.cpp
@@ -2,9 +2,9 @@
 /*! \file sexpr.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Andrew Reynolds
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -272,6 +272,7 @@ bool SExpr::languageQuotesKeywords(OutputLanguage language) {
     case language::output::LANG_SMTLIB_V1:
     case language::output::LANG_SMTLIB_V2_0:
     case language::output::LANG_SMTLIB_V2_5:
+    case language::output::LANG_SMTLIB_V2_6:
     case language::output::LANG_SYGUS:
     case language::output::LANG_TPTP:
     case language::output::LANG_Z3STR:
diff --git a/src/util/sexpr.h b/src/util/sexpr.h
index 0b51757..7e32624 100644
--- a/src/util/sexpr.h
+++ b/src/util/sexpr.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King, Morgan Deters, Christopher L. Conway
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/smt2_quote_string.cpp b/src/util/smt2_quote_string.cpp
index 578be99..6f4ba4e 100644
--- a/src/util/smt2_quote_string.cpp
+++ b/src/util/smt2_quote_string.cpp
@@ -2,9 +2,9 @@
 /*! \file smt2_quote_string.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/smt2_quote_string.h b/src/util/smt2_quote_string.h
index 2d7f0b2..e6617d2 100644
--- a/src/util/smt2_quote_string.h
+++ b/src/util/smt2_quote_string.h
@@ -2,9 +2,9 @@
 /*! \file smt2_quote_string.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King, Morgan Deters
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/statistics.cpp b/src/util/statistics.cpp
index 368335f..9273f21 100644
--- a/src/util/statistics.cpp
+++ b/src/util/statistics.cpp
@@ -2,9 +2,9 @@
 /*! \file statistics.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Andres Noetzli, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -19,6 +19,7 @@
 
 #include <typeinfo>
 
+#include "util/safe_print.h"
 #include "util/statistics_registry.h" // for details about class Stat
 
 
@@ -116,6 +117,20 @@ void StatisticsBase::flushInformation(std::ostream &out) const {
 #endif /* CVC4_STATISTICS_ON */
 }
 
+void StatisticsBase::safeFlushInformation(int fd) const {
+#ifdef CVC4_STATISTICS_ON
+  for (StatSet::iterator i = d_stats.begin(); i != d_stats.end(); ++i) {
+    Stat* s = *i;
+    if (d_prefix.size() != 0) {
+      safe_print(fd, d_prefix);
+      safe_print(fd, s_regDelim);
+    }
+    s->safeFlushStat(fd);
+    safe_print(fd, "\n");
+  }
+#endif /* CVC4_STATISTICS_ON */
+}
+
 SExpr StatisticsBase::getStatistic(std::string name) const {
   SExpr value;
   IntStat s(name, 0);
diff --git a/src/util/statistics.h b/src/util/statistics.h
index 663d207..9401e09 100644
--- a/src/util/statistics.h
+++ b/src/util/statistics.h
@@ -2,9 +2,9 @@
 /*! \file statistics.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Andres Noetzli
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -84,6 +84,12 @@ public:
   /** Flush all statistics to the given output stream. */
   void flushInformation(std::ostream& out) const;
 
+  /**
+   * Flush all statistics to the given file descriptor. Safe to use in a signal
+   * handler.
+   */
+  void safeFlushInformation(int fd) const;
+
   /** Get the value of a named statistic. */
   SExpr getStatistic(std::string name) const;
 
diff --git a/src/util/statistics_registry.cpp b/src/util/statistics_registry.cpp
index cb8e1ce..f20a554 100644
--- a/src/util/statistics_registry.cpp
+++ b/src/util/statistics_registry.cpp
@@ -2,9 +2,9 @@
 /*! \file statistics_registry.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Tim King
+ **   Tim King, Paul Meng, Andres Noetzli
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -182,6 +182,12 @@ void StatisticsRegistry::flushInformation(std::ostream &out) const {
 #endif /* CVC4_STATISTICS_ON */
 }
 
+void StatisticsRegistry::safeFlushInformation(int fd) const {
+#ifdef CVC4_STATISTICS_ON
+  this->StatisticsBase::safeFlushInformation(fd);
+#endif /* CVC4_STATISTICS_ON */
+}
+
 void TimerStat::start() {
   if(__CVC4_USE_STATISTICS) {
     PrettyCheckArgument(!d_running, *this, "timer already running");
diff --git a/src/util/statistics_registry.h b/src/util/statistics_registry.h
index 4f2c356..30f330c 100644
--- a/src/util/statistics_registry.h
+++ b/src/util/statistics_registry.h
@@ -2,9 +2,9 @@
 /*! \file statistics_registry.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King, Kshitij Bansal
+ **   Morgan Deters, Tim King, Andres Noetzli
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
@@ -47,6 +47,7 @@
 
 #include "base/exception.h"
 #include "lib/clock_gettime.h"
+#include "util/safe_print.h"
 #include "util/statistics.h"
 
 namespace CVC4 {
@@ -109,6 +110,13 @@ public:
   virtual void flushInformation(std::ostream& out) const = 0;
 
   /**
+   * Flush the value of this statistic to a file descriptor. Should finish the
+   * output with an end-of-line character. Should be safe to use in a signal
+   * handler.
+   */
+  virtual void safeFlushInformation(int fd) const = 0;
+
+  /**
    * Flush the name,value pair of this statistic to an output stream.
    * Uses the statistic delimiter string between name and value.
    *
@@ -121,6 +129,20 @@ public:
     }
   }
 
+  /**
+   * Flush the name,value pair of this statistic to a file descriptor. Uses the
+   * statistic delimiter string between name and value.
+   *
+   * May be redefined by a child class
+   */
+  virtual void safeFlushStat(int fd) const {
+    if (__CVC4_USE_STATISTICS) {
+      safe_print(fd, d_name);
+      safe_print(fd, ", ");
+      safeFlushInformation(fd);
+    }
+  }
+
   /** Get the name of this statistic. */
   const std::string& getName() const {
     return d_name;
@@ -203,6 +225,9 @@ public:
   /** Get the value of the statistic. */
   virtual T getData() const = 0;
 
+  /** Get a reference to the data value of the statistic. */
+  virtual const T& getDataRef() const = 0;
+
   /** Flush the value of the statistic to the given output stream. */
   void flushInformation(std::ostream& out) const {
     if(__CVC4_USE_STATISTICS) {
@@ -210,6 +235,12 @@ public:
     }
   }
 
+  virtual void safeFlushInformation(int fd) const {
+    if (__CVC4_USE_STATISTICS) {
+      safe_print<T>(fd, getDataRef());
+    }
+  }
+
   SExpr getValue() const {
     return mkSExpr(getData());
   }
@@ -292,12 +323,12 @@ public:
   }
 
   /** Get the value of the referenced data cell. */
-  T getData() const {
-    return *d_data;
-  }
+  virtual T getData() const { return *d_data; }
 
-};/* class ReferenceStat<T> */
+  /** Get a reference to the value of the referenced data cell. */
+  virtual const T& getDataRef() const { return *d_data; }
 
+};/* class ReferenceStat<T> */
 
 /**
  * A data statistic that keeps a T and sets it with setData().
@@ -334,12 +365,12 @@ public:
   }
 
   /** Get the underlying data value. */
-  T getData() const {
-    return d_data;
-  }
+  virtual T getData() const { return d_data; }
 
-};/* class BackedStat<T> */
+  /** Get a reference to the underlying data value. */
+  virtual const T& getDataRef() const { return d_data; }
 
+};/* class BackedStat<T> */
 
 /**
  * A wrapper Stat for another Stat.
@@ -376,8 +407,16 @@ public:
   }
 
   /** Get the data of the underlying (wrapped) statistic. */
-  T getData() const {
-    return d_stat.getData();
+  virtual T getData() const { return d_stat.getData(); }
+
+  /** Get a reference to the data of the underlying (wrapped) statistic. */
+  virtual const T& getDataRef() const { return d_stat.getDataRef(); }
+
+  virtual void safeFlushInformation(int fd) const {
+    // ReadOnlyDataStat uses getDataRef() to get the information to print,
+    // which might not be appropriate for all wrapped statistics. Delegate the
+    // printing to the wrapped statistic instead.
+    d_stat.safeFlushInformation(fd);
   }
 
   SExpr getValue() const {
@@ -455,6 +494,10 @@ public:
     out << d_sized.size();
   }
 
+  void safeFlushInformation(int fd) const {
+    safe_print<uint64_t>(fd, d_sized.size());
+  }
+
   SExpr getValue() const {
     return SExpr(Integer(d_sized.size()));
   }
@@ -522,6 +565,12 @@ public:
     out << d_data << std::endl;
   }
 
+  virtual void safeFlushInformation(int fd) const {
+    // SExprStat is only used in statistics.cpp in copyFrom, which we cannot
+    // do in a signal handler anyway.
+    safe_print(fd, "<unsupported>");
+  }
+
   SExpr getValue() const {
     return d_data;
   }
@@ -529,44 +578,6 @@ public:
 };/* class SExprStat */
 
 template <class T>
-class ListStat : public Stat {
-private:
-  typedef std::vector<T> List;
-  List d_list;
-public:
-
-  /**
-   * Construct an integer-valued statistic with the given name and
-   * initial value.
-   */
-  ListStat(const std::string& name) : Stat(name) {}
-  ~ListStat() {}
-
-  void flushInformation(std::ostream& out) const{
-    if(__CVC4_USE_STATISTICS) {
-      typename List::const_iterator i = d_list.begin(), end =  d_list.end();
-      out << "[";
-      if(i != end){
-        out << *i;
-        ++i;
-        for(; i != end; ++i){
-          out << ", " << *i;
-        }
-      }
-      out << "]";
-    }
-  }
-
-  ListStat& operator<<(const T& val){
-    if(__CVC4_USE_STATISTICS) {
-      d_list.push_back(val);
-    }
-    return (*this);
-  }
-
-};/* class ListStat */
-
-template <class T>
 class HistogramStat : public Stat {
 private:
   typedef std::map<T, unsigned int> Histogram;
@@ -595,6 +606,28 @@ public:
     }
   }
 
+  virtual void safeFlushInformation(int fd) const {
+    if (__CVC4_USE_STATISTICS) {
+      typename Histogram::const_iterator i = d_hist.begin();
+      typename Histogram::const_iterator end = d_hist.end();
+      safe_print(fd, "[");
+      while (i != end) {
+        const T& key = (*i).first;
+        unsigned int count = (*i).second;
+        safe_print(fd, "(");
+        safe_print<T>(fd, key);
+        safe_print(fd, " : ");
+        safe_print<uint64_t>(fd, count);
+        safe_print(fd, ")");
+        ++i;
+        if (i != end) {
+          safe_print(fd, ", ");
+        }
+      }
+      safe_print(fd, "]");
+    }
+  }
+
   HistogramStat& operator<<(const T& val){
     if(__CVC4_USE_STATISTICS) {
       if(d_hist.find(val) == d_hist.end()){
@@ -643,6 +676,8 @@ public:
 
   virtual void flushInformation(std::ostream& out) const;
 
+  virtual void safeFlushInformation(int fd) const;
+
   SExpr getValue() const {
     std::vector<SExpr> v;
     for(StatSet::iterator i = d_stats.begin(); i != d_stats.end(); ++i) {
@@ -706,7 +741,15 @@ public:
   /** If the timer is currently running */
   bool running() const;
 
-  timespec getData() const;
+  virtual timespec getData() const;
+
+  virtual void safeFlushInformation(int fd) const {
+    // Overwrite the implementation in the superclass because we cannot use
+    // getDataRef(): it might return stale data if the timer is currently
+    // running.
+    ::timespec data = getData();
+    safe_print<timespec>(fd, data);
+  }
 
   SExpr getValue() const;
 
diff --git a/src/util/subrange_bound.cpp b/src/util/subrange_bound.cpp
index a33c22f..b49a3ef 100644
--- a/src/util/subrange_bound.cpp
+++ b/src/util/subrange_bound.cpp
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/subrange_bound.h b/src/util/subrange_bound.h
index 91c91af..1f1cb84 100644
--- a/src/util/subrange_bound.h
+++ b/src/util/subrange_bound.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/tuple.h b/src/util/tuple.h
index 14763d2..8d7eca3 100644
--- a/src/util/tuple.h
+++ b/src/util/tuple.h
@@ -2,9 +2,9 @@
 /*! \file tuple.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/unsafe_interrupt_exception.h b/src/util/unsafe_interrupt_exception.h
index 345daf6..7c6d066 100644
--- a/src/util/unsafe_interrupt_exception.h
+++ b/src/util/unsafe_interrupt_exception.h
@@ -2,9 +2,9 @@
 /*! \file unsafe_interrupt_exception.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Liana Hadarean, Tim King
+ **   Liana Hadarean, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/src/util/utility.h b/src/util/utility.h
index 1d51d42..adfd2bc 100644
--- a/src/util/utility.h
+++ b/src/util/utility.h
@@ -2,9 +2,9 @@
 /*! \file utility.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/test/Makefile.am b/test/Makefile.am
index 89ac66a..b61ac23 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -42,6 +42,7 @@ subdirs_to_check = \
 	regress/regress0/expect \
 	regress/regress0/fmf \
 	regress/regress0/lemmas \
+	regress/regress0/nl \
 	regress/regress0/parser \
 	regress/regress0/precedence \
 	regress/regress0/preprocess \
@@ -73,6 +74,7 @@ subdirs_to_check = \
 	regress/regress1/sets \
 	regress/regress1/strings \
 	regress/regress1/sygus \
+	regress/regress1/quantifiers \
 	regress/regress2 \
 	regress/regress2/arith \
 	regress/regress3 \
diff --git a/test/Makefile.in b/test/Makefile.in
index ed4fb91..f0a671d 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -230,6 +230,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -476,6 +477,7 @@ subdirs_to_check = \
 	regress/regress0/expect \
 	regress/regress0/fmf \
 	regress/regress0/lemmas \
+	regress/regress0/nl \
 	regress/regress0/parser \
 	regress/regress0/precedence \
 	regress/regress0/preprocess \
@@ -507,6 +509,7 @@ subdirs_to_check = \
 	regress/regress1/sets \
 	regress/regress1/strings \
 	regress/regress1/sygus \
+	regress/regress1/quantifiers \
 	regress/regress2 \
 	regress/regress2/arith \
 	regress/regress3 \
diff --git a/test/regress/Makefile.in b/test/regress/Makefile.in
index f159e02..30b72a5 100644
--- a/test/regress/Makefile.in
+++ b/test/regress/Makefile.in
@@ -229,6 +229,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress0/Makefile.am b/test/regress/regress0/Makefile.am
index 1e533cc..9a16f68 100644
--- a/test/regress/regress0/Makefile.am
+++ b/test/regress/regress0/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = . expect arith precedence uf uflra uflia bv arrays aufbv auflia datatypes quantifiers rewriterules lemmas push-pop preprocess tptp unconstrained decision fmf strings sets rels parser sygus sep
+SUBDIRS = . expect arith precedence uf uflra uflia bv arrays aufbv auflia datatypes quantifiers rewriterules lemmas push-pop preprocess tptp unconstrained decision fmf strings sets rels parser sygus sep nl
 DIST_SUBDIRS = $(SUBDIRS)
 
 # don't override a BINARY imported from a personal.mk
@@ -68,7 +68,8 @@ SMT2_TESTS = \
 	hung10_itesdk_output2.smt2 \
 	hung10_itesdk_output1.smt2 \
 	hung13sdk_output2.smt2 \
-	declare-funs.smt2
+	declare-funs.smt2 \
+	declare-fun-is-match.smt2
 
 # Regression tests for PL inputs
 CVC_TESTS = \
@@ -178,6 +179,7 @@ BUG_TESTS = \
 	bug596.cvc \
 	bug596b.cvc \
 	bug605.cvc \
+	bug639.smt2 \
 	bt-test-00.smt2 \
 	bt-test-01.smt2
 #bug590.smt2
@@ -186,6 +188,7 @@ TESTS = $(SMT_TESTS) $(SMT2_TESTS) $(CVC_TESTS) $(TPTP_TESTS) $(BUG_TESTS)
 
 # bug512 -- taking too long, --time-per not working perhaps? in any case,
 # we have a minimized version still getting tested
+# bug639 -- still fails, reopened bug
 DISABLED_TESTS = \
 	bug512.smt2
 
@@ -197,6 +200,7 @@ EXTRA_DIST = $(TESTS) \
 if CVC4_BUILD_PROFILE_COMPETITION
 else
 TESTS += \
+	bug681.smt2 \
 	error.cvc \
 	errorcrash.smt2 \
 	arrayinuf_error.smt2
diff --git a/test/regress/regress0/Makefile.in b/test/regress/regress0/Makefile.in
index 4d0a50b..f83835f 100644
--- a/test/regress/regress0/Makefile.in
+++ b/test/regress/regress0/Makefile.in
@@ -91,6 +91,7 @@ target_triplet = @target@
 TESTS = $(SMT_TESTS) $(SMT2_TESTS) $(CVC_TESTS) $(am__EXEEXT_1) \
 	$(BUG_TESTS) $(am__append_1)
 @CVC4_BUILD_PROFILE_COMPETITION_FALSE at am__append_1 = \
+ at CVC4_BUILD_PROFILE_COMPETITION_FALSE@	bug681.smt2 \
 @CVC4_BUILD_PROFILE_COMPETITION_FALSE@	error.cvc \
 @CVC4_BUILD_PROFILE_COMPETITION_FALSE@	errorcrash.smt2 \
 @CVC4_BUILD_PROFILE_COMPETITION_FALSE@	arrayinuf_error.smt2
@@ -441,6 +442,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -663,7 +665,7 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
-SUBDIRS = . expect arith precedence uf uflra uflia bv arrays aufbv auflia datatypes quantifiers rewriterules lemmas push-pop preprocess tptp unconstrained decision fmf strings sets rels parser sygus sep
+SUBDIRS = . expect arith precedence uf uflra uflia bv arrays aufbv auflia datatypes quantifiers rewriterules lemmas push-pop preprocess tptp unconstrained decision fmf strings sets rels parser sygus sep nl
 DIST_SUBDIRS = $(SUBDIRS)
 @mk_empty at BINARY = cvc4
 LOG_COMPILER = @srcdir@/../run_regression
@@ -721,7 +723,8 @@ SMT2_TESTS = \
 	hung10_itesdk_output2.smt2 \
 	hung10_itesdk_output1.smt2 \
 	hung13sdk_output2.smt2 \
-	declare-funs.smt2
+	declare-funs.smt2 \
+	declare-fun-is-match.smt2
 
 
 # Regression tests for PL inputs
@@ -833,12 +836,14 @@ BUG_TESTS = \
 	bug596.cvc \
 	bug596b.cvc \
 	bug605.cvc \
+	bug639.smt2 \
 	bt-test-00.smt2 \
 	bt-test-01.smt2
 
 
 # bug512 -- taking too long, --time-per not working perhaps? in any case,
 # we have a minimized version still getting tested
+# bug639 -- still fails, reopened bug
 DISABLED_TESTS = \
 	bug512.smt2
 
@@ -1421,6 +1426,13 @@ declare-funs.smt2.log: declare-funs.smt2
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+declare-fun-is-match.smt2.log: declare-fun-is-match.smt2
+	@p='declare-fun-is-match.smt2'; \
+	b='declare-fun-is-match.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 boolean.cvc.log: boolean.cvc
 	@p='boolean.cvc'; \
 	b='boolean.cvc'; \
@@ -2121,6 +2133,13 @@ bug605.cvc.log: bug605.cvc
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug639.smt2.log: bug639.smt2
+	@p='bug639.smt2'; \
+	b='bug639.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 bt-test-00.smt2.log: bt-test-00.smt2
 	@p='bt-test-00.smt2'; \
 	b='bt-test-00.smt2'; \
@@ -2135,6 +2154,13 @@ bt-test-01.smt2.log: bt-test-01.smt2
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug681.smt2.log: bug681.smt2
+	@p='bug681.smt2'; \
+	b='bug681.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 error.cvc.log: error.cvc
 	@p='error.cvc'; \
 	b='error.cvc'; \
diff --git a/test/regress/regress0/arith/Makefile.am b/test/regress/regress0/arith/Makefile.am
index 048effc..98179df 100644
--- a/test/regress/regress0/arith/Makefile.am
+++ b/test/regress/regress0/arith/Makefile.am
@@ -51,7 +51,8 @@ TESTS =	\
 	bug569.smt2 \
 	div.09.smt2 \
 	bug716.0.smt2 \
-	bug716.1.cvc
+	bug716.1.cvc \
+	mod-simp.smt2
 #	problem__003.smt2
 
 EXTRA_DIST = $(TESTS) \
diff --git a/test/regress/regress0/arith/Makefile.in b/test/regress/regress0/arith/Makefile.in
index 7166af1..8afd135 100644
--- a/test/regress/regress0/arith/Makefile.in
+++ b/test/regress/regress0/arith/Makefile.in
@@ -434,6 +434,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -696,7 +697,8 @@ TESTS = \
 	bug569.smt2 \
 	div.09.smt2 \
 	bug716.0.smt2 \
-	bug716.1.cvc
+	bug716.1.cvc \
+	mod-simp.smt2
 
 #	problem__003.smt2
 EXTRA_DIST = $(TESTS) \
@@ -1204,6 +1206,13 @@ bug716.1.cvc.log: bug716.1.cvc
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+mod-simp.smt2.log: mod-simp.smt2
+	@p='mod-simp.smt2'; \
+	b='mod-simp.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 .test.log:
 	@p='$<'; \
 	$(am__set_b); \
diff --git a/test/regress/regress0/arith/bug547.2.smt2 b/test/regress/regress0/arith/bug547.2.smt2
index f39262c..b7d114e 100644
--- a/test/regress/regress0/arith/bug547.2.smt2
+++ b/test/regress/regress0/arith/bug547.2.smt2
@@ -1,5 +1,5 @@
 ; COMMAND-LINE: --rewrite-divk
-; EXPECT: unknown
+; EXPECT: sat
 (set-logic QF_NIA)
 (declare-fun x () Int)
 (declare-fun y () Int)
diff --git a/test/regress/regress0/arith/bug716.0.smt2 b/test/regress/regress0/arith/bug716.0.smt2
index 20a5ca3..d5df938 100644
--- a/test/regress/regress0/arith/bug716.0.smt2
+++ b/test/regress/regress0/arith/bug716.0.smt2
@@ -1,6 +1,5 @@
 ; SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/' -e 's/in a linear logic: .*$/in a linear logic: TERM/'
-; EXPECT: (error "A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic: TERM
-; EXPECT: if you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.
+; EXPECT: (error "A non-linear fact was asserted to arithmetic in a linear logic.
 ; EXPECT: The fact in question: TERM
 ; EXPECT: ")
 ; EXIT: 1
diff --git a/test/regress/regress0/arith/bug716.1.cvc b/test/regress/regress0/arith/bug716.1.cvc
index 3c0e987..d9330c7 100644
--- a/test/regress/regress0/arith/bug716.1.cvc
+++ b/test/regress/regress0/arith/bug716.1.cvc
@@ -1,4 +1,4 @@
-% EXPECT: The POW(^) operator can only be used with a natural number in the exponent.  Exception occured in:
+% EXPECT: The POW(^) operator can only be used with a natural number in the exponent.  Exception occurred in:
 % EXPECT:   2 ^ x
 % EXIT: 1
 x: INT;
diff --git a/test/regress/regress0/arith/div.02.smt2 b/test/regress/regress0/arith/div.02.smt2
index 4ed27f8..328ed0c 100644
--- a/test/regress/regress0/arith/div.02.smt2
+++ b/test/regress/regress0/arith/div.02.smt2
@@ -1,7 +1,7 @@
-; EXPECT: unknown
+; EXPECT: sat
 (set-logic QF_NIA)
 (set-info :smt-lib-version 2.0)
-(set-info :status unknown)
+(set-info :status sat)
 (declare-fun n () Int)
 
 (assert (distinct (div n n) 1))
diff --git a/test/regress/regress0/arith/div.03.smt2 b/test/regress/regress0/arith/div.03.smt2
index 0f67a3d..8beef7a 100644
--- a/test/regress/regress0/arith/div.03.smt2
+++ b/test/regress/regress0/arith/div.03.smt2
@@ -1,7 +1,7 @@
-; EXPECT: unknown
+; EXPECT: unsat
 (set-logic QF_NIA)
 (set-info :smt-lib-version 2.0)
-(set-info :status unknown)
+(set-info :status unsat)
 (declare-fun x () Int)
 (declare-fun n () Int)
 
diff --git a/test/regress/regress0/arith/div.05.smt2 b/test/regress/regress0/arith/div.05.smt2
index 9e4972e..fd3e4ae 100644
--- a/test/regress/regress0/arith/div.05.smt2
+++ b/test/regress/regress0/arith/div.05.smt2
@@ -1,7 +1,7 @@
-; EXPECT: unknown
+; EXPECT: sat
 (set-logic QF_NRA)
 (set-info :smt-lib-version 2.0)
-(set-info :status unknown)
+(set-info :status sat)
 (declare-fun x () Real)
 (declare-fun y () Real)
 (declare-fun n () Real)
diff --git a/test/regress/regress0/arith/div.06.smt2 b/test/regress/regress0/arith/div.06.smt2
index 3fb4b12..6e72433 100644
--- a/test/regress/regress0/arith/div.06.smt2
+++ b/test/regress/regress0/arith/div.06.smt2
@@ -1,7 +1,7 @@
-; EXPECT: unknown
+; EXPECT: sat
 (set-logic QF_NRA)
 (set-info :smt-lib-version 2.0)
-(set-info :status unknown)
+(set-info :status sat)
 (declare-fun x () Real)
 (declare-fun y () Real)
 (declare-fun n () Real)
diff --git a/test/regress/regress0/arith/div.09.smt2 b/test/regress/regress0/arith/div.09.smt2
index e457734..1c4bbde 100644
--- a/test/regress/regress0/arith/div.09.smt2
+++ b/test/regress/regress0/arith/div.09.smt2
@@ -1,6 +1,5 @@
 ; SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/'
-; EXPECT: (error "A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic: (/ n n)
-; EXPECT: if you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.
+; EXPECT: (error "A non-linear fact was asserted to arithmetic in a linear logic.
 ; EXPECT: The fact in question: TERM
 ; EXPECT: ")
 ; EXIT: 1
diff --git a/test/regress/regress0/arith/integers/Makefile.in b/test/regress/regress0/arith/integers/Makefile.in
index a31674e..5eec205 100644
--- a/test/regress/regress0/arith/integers/Makefile.in
+++ b/test/regress/regress0/arith/integers/Makefile.in
@@ -434,6 +434,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress0/arith/mod-simp.smt2 b/test/regress/regress0/arith/mod-simp.smt2
new file mode 100644
index 0000000..7294cd8
--- /dev/null
+++ b/test/regress/regress0/arith/mod-simp.smt2
@@ -0,0 +1,10 @@
+; COMMAND-LINE: --rewrite-divk
+; EXPECT: unsat
+(set-logic QF_LIA)
+(set-info :status unsat)
+
+(declare-fun x () Int)
+
+(assert (not (= (mod (* 3 x) 10) (mod (* 3 (+ x 10)) 10))))
+
+(check-sat)
diff --git a/test/regress/regress0/arith/mod.01.smt2 b/test/regress/regress0/arith/mod.01.smt2
index f9633c5..3a6d9a3 100644
--- a/test/regress/regress0/arith/mod.01.smt2
+++ b/test/regress/regress0/arith/mod.01.smt2
@@ -1,7 +1,7 @@
-; EXPECT: unknown
+; EXPECT: sat
 (set-logic QF_NIA)
 (set-info :smt-lib-version 2.0)
-(set-info :status unknown)
+(set-info :status sat)
 (declare-fun n () Int)
 (declare-fun x () Int)
 
diff --git a/test/regress/regress0/arith/mod.02.smt2 b/test/regress/regress0/arith/mod.02.smt2
index c6281a5..ee4333e 100644
--- a/test/regress/regress0/arith/mod.02.smt2
+++ b/test/regress/regress0/arith/mod.02.smt2
@@ -1,7 +1,7 @@
-; EXPECT: unknown
+; EXPECT: unsat
 (set-logic QF_NIA)
 (set-info :smt-lib-version 2.0)
-(set-info :status unknown)
+(set-info :status unsat)
 (declare-fun n () Int)
 
 (assert (distinct n 0))
diff --git a/test/regress/regress0/arith/mod.03.smt2 b/test/regress/regress0/arith/mod.03.smt2
index 110de05..8a6ac51 100644
--- a/test/regress/regress0/arith/mod.03.smt2
+++ b/test/regress/regress0/arith/mod.03.smt2
@@ -1,7 +1,7 @@
-; EXPECT: unknown
+; EXPECT: sat
 (set-logic QF_NIA)
 (set-info :smt-lib-version 2.0)
-(set-info :status unknown)
+(set-info :status sat)
 (declare-fun n () Int)
 (declare-fun x () Int)
 
diff --git a/test/regress/regress0/arith/mult.01.smt2 b/test/regress/regress0/arith/mult.01.smt2
index f415e0f..4e2956d 100644
--- a/test/regress/regress0/arith/mult.01.smt2
+++ b/test/regress/regress0/arith/mult.01.smt2
@@ -1,7 +1,7 @@
-; EXPECT: unknown
+; EXPECT: unsat
 (set-logic QF_NRA)
 (set-info :smt-lib-version 2.0)
-(set-info :status unknown)
+(set-info :status unsat)
 (declare-fun n () Real)
 (declare-fun x () Real)
 
diff --git a/test/regress/regress0/arith/mult.02.smt2 b/test/regress/regress0/arith/mult.02.smt2
index 54b876d..57167fc 100644
--- a/test/regress/regress0/arith/mult.02.smt2
+++ b/test/regress/regress0/arith/mult.02.smt2
@@ -1,5 +1,5 @@
 ; EXPECT: (error "A non-linear fact was asserted to arithmetic in a linear logic.
-; EXPECT: The fact in question: (>= (* (- 1) (* n n)) (- 1))
+; EXPECT: The fact in question: (>= (* (- 1.0) (* n n)) (- 1.0))
 ; EXPECT: ")
 ; EXIT: 1
 (set-logic QF_LRA)
diff --git a/test/regress/regress0/arrays/Makefile.in b/test/regress/regress0/arrays/Makefile.in
index 138c8ae..4c714ee 100644
--- a/test/regress/regress0/arrays/Makefile.in
+++ b/test/regress/regress0/arrays/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress0/arrays/bool-array.smt2 b/test/regress/regress0/arrays/bool-array.smt2
index f05d026..0e59203 100644
--- a/test/regress/regress0/arrays/bool-array.smt2
+++ b/test/regress/regress0/arrays/bool-array.smt2
@@ -1,4 +1,3 @@
-; COMMAND-LINE: --no-check-proofs --no-check-unsat-cores
 ; EXPECT: unsat
 (set-logic QF_AX)
 (set-info :status unsat)
@@ -10,4 +9,3 @@
 (assert (= (select a true) (select a false)))
 
 (check-sat)
-
diff --git a/test/regress/regress0/aufbv/Makefile.in b/test/regress/regress0/aufbv/Makefile.in
index aa30257..ccb161f 100644
--- a/test/regress/regress0/aufbv/Makefile.in
+++ b/test/regress/regress0/aufbv/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress0/auflia/Makefile.in b/test/regress/regress0/auflia/Makefile.in
index ac71532..2925203 100644
--- a/test/regress/regress0/auflia/Makefile.in
+++ b/test/regress/regress0/auflia/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress0/bug639.smt2 b/test/regress/regress0/bug639.smt2
new file mode 100644
index 0000000..907568d
--- /dev/null
+++ b/test/regress/regress0/bug639.smt2
@@ -0,0 +1,26 @@
+(set-logic QF_AUFNIA)
+(set-info :status unsat)
+(declare-fun i () Int)
+(declare-fun j () Int)
+(declare-fun k () Int)
+(declare-fun l () Int)
+(declare-fun m () Int)
+(declare-fun n () Int)
+(declare-fun a () (Array Int (Array Int Int)))
+(declare-fun b () (Array Int (Array Int Int)))
+(declare-fun c () (Array Int (Array Int Int)))
+(declare-fun d () (Array Int (Array Int Int)))
+(declare-fun e () (Array Int (Array Int Int)))
+(declare-fun f () (Array Int (Array Int Int)))
+(declare-fun g () (Array Int (Array Int Int)))
+(declare-fun h () (Array Int (Array Int Int)))
+(assert (not (= k 0)))
+(assert (<= j k))
+(assert (>= j k))
+(assert (= b (store a j (store (select a j) 0 0))))
+(assert (= d (store b 0 (store (select b 0) 0 (select (select d 0) 0)))))
+(assert (<= i 0))
+(assert (>= i (select (store (select d j) m 0) 0)))
+(assert (not (= i 0)))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/bug681.smt2 b/test/regress/regress0/bug681.smt2
new file mode 100644
index 0000000..cc54ab4
--- /dev/null
+++ b/test/regress/regress0/bug681.smt2
@@ -0,0 +1,54 @@
+; EXIT: 1
+; EXPECT: (error "Array theory solver does not yet support write-chains connecting two different constant arrays")
+(set-logic ALL_SUPPORTED)
+(declare-fun start!1 () Bool)
+
+(assert start!1)
+
+(declare-fun lt!2 () Bool)
+
+(assert (=> start!1 (not lt!2)))
+
+(declare-datatypes () ( (Option!3 (None!1) (Some!1 (v!18 Int))) ))
+
+(declare-datatypes () ( (Method!1 (Method!2 (initials!1 (Array Option!3 Int)))) ))
+
+(declare-fun lambda!2 () (Array Int Method!1))
+
+(declare-fun isValidStep!1 ((Array Int Method!1) (Array Int Option!3) (Array Int Option!3) Int Int Option!3) Bool)
+
+(declare-fun control!1 () (Array Int Option!3))
+
+(declare-fun next_control!0 () (Array Int Option!3))
+
+(assert (=> start!1 (= lt!2 (not (isValidStep!1 lambda!2 control!1 next_control!0 0 0 (Some!1 5))))))
+
+(declare-fun d!1 () Bool)
+
+(assert (=> d!1 (= (isValidStep!1 lambda!2 control!1 next_control!0 0 0 (Some!1 5)) (= next_control!0 (store control!1 0 (Some!1 (select (initials!1 (select lambda!2 0)) (Some!1 5))))))))
+
+(declare-fun methods!1 (Int) Method!1)
+
+(assert (=> d!1 (= (select lambda!2 0) (methods!1 0))))
+
+(declare-fun b_lambda!1 () Bool)
+
+(assert (=> (not b_lambda!1) (not d!1)))
+
+(assert (=> start!1 d!1))
+
+(declare-fun d!3 () Bool)
+
+(assert (=> d!3 (= control!1 ((as const (Array Int Option!3)) None!1))))
+
+(assert (=> start!1 d!3))
+
+(declare-fun d!5 () Bool)
+
+(assert (=> d!5 (= next_control!0 (store ((as const (Array Int Option!3)) None!1) 0 (Some!1 0)))))
+
+(assert (=> start!1 d!5))
+
+(assert true)
+
+(check-sat)
diff --git a/test/regress/regress0/bv/Makefile.am b/test/regress/regress0/bv/Makefile.am
index dc87e10..4ff7f85 100644
--- a/test/regress/regress0/bv/Makefile.am
+++ b/test/regress/regress0/bv/Makefile.am
@@ -98,6 +98,7 @@ SMT_TESTS = \
 	bv2nat-ground-c.smt2 \
 	cmu-rdk-3.smt2 \
 	bv2nat-simp-range.smt2 \
+	bv2nat-simp-range-sat.smt2 \
 	bv-int-collapse1.smt2 \
 	bv-int-collapse2.smt2 \
 	bv-int-collapse2-sat.smt2
@@ -116,8 +117,10 @@ BUG_TESTS = \
 	bug260a.smt \
 	bug260b.smt \
 	bug440.smt \
+	bug733.smt2 \
 	bug734.smt2 \
-	bug_extract_mult_leading_bit.smt2
+	bug_extract_mult_leading_bit.smt2 \
+	bug787.smt2
 
 TESTS =	$(SMT_TESTS) $(SMT2_TESTS) $(CVC_TESTS) $(BUG_TESTS)
 
diff --git a/test/regress/regress0/bv/Makefile.in b/test/regress/regress0/bv/Makefile.in
index c138c1e..28e5439 100644
--- a/test/regress/regress0/bv/Makefile.in
+++ b/test/regress/regress0/bv/Makefile.in
@@ -434,6 +434,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -743,6 +744,7 @@ SMT_TESTS = \
 	bv2nat-ground-c.smt2 \
 	cmu-rdk-3.smt2 \
 	bv2nat-simp-range.smt2 \
+	bv2nat-simp-range-sat.smt2 \
 	bv-int-collapse1.smt2 \
 	bv-int-collapse2.smt2 \
 	bv-int-collapse2-sat.smt2
@@ -762,8 +764,10 @@ BUG_TESTS = \
 	bug260a.smt \
 	bug260b.smt \
 	bug440.smt \
+	bug733.smt2 \
 	bug734.smt2 \
-	bug_extract_mult_leading_bit.smt2
+	bug_extract_mult_leading_bit.smt2 \
+	bug787.smt2
 
 TESTS = $(SMT_TESTS) $(SMT2_TESTS) $(CVC_TESTS) $(BUG_TESTS)
 EXTRA_DIST = $(TESTS) \
@@ -1554,6 +1558,13 @@ bv2nat-simp-range.smt2.log: bv2nat-simp-range.smt2
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bv2nat-simp-range-sat.smt2.log: bv2nat-simp-range-sat.smt2
+	@p='bv2nat-simp-range-sat.smt2'; \
+	b='bv2nat-simp-range-sat.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 bv-int-collapse1.smt2.log: bv-int-collapse1.smt2
 	@p='bv-int-collapse1.smt2'; \
 	b='bv-int-collapse1.smt2'; \
@@ -1617,6 +1628,13 @@ bug440.smt.log: bug440.smt
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug733.smt2.log: bug733.smt2
+	@p='bug733.smt2'; \
+	b='bug733.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 bug734.smt2.log: bug734.smt2
 	@p='bug734.smt2'; \
 	b='bug734.smt2'; \
@@ -1631,6 +1649,13 @@ bug_extract_mult_leading_bit.smt2.log: bug_extract_mult_leading_bit.smt2
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug787.smt2.log: bug787.smt2
+	@p='bug787.smt2'; \
+	b='bug787.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 .test.log:
 	@p='$<'; \
 	$(am__set_b); \
diff --git a/test/regress/regress0/bv/bug733.smt2 b/test/regress/regress0/bv/bug733.smt2
new file mode 100644
index 0000000..02ef85d
--- /dev/null
+++ b/test/regress/regress0/bv/bug733.smt2
@@ -0,0 +1,8 @@
+; EXPECT: sat
+(set-logic QF_BV)
+(declare-fun x2 () (_ BitVec 3))
+(declare-fun x1 () (_ BitVec 3))
+(declare-fun x0 () (_ BitVec 3))
+(assert (not (bvult (bvudiv (bvudiv (bvudiv x0 x0) x1) x2) x1)))
+(assert (= #b000 x2))
+(check-sat)
diff --git a/test/regress/regress0/bv/bug787.smt2 b/test/regress/regress0/bv/bug787.smt2
new file mode 100644
index 0000000..8e0ba00
--- /dev/null
+++ b/test/regress/regress0/bv/bug787.smt2
@@ -0,0 +1,91 @@
+; COMMAND-LINE: --bitblast=eager --no-check-proofs
+; EXPECT: unsat
+(set-logic QF_BV)
+(set-info :status unsat)
+(define-fun hamming-weight ((bv (_ BitVec 4))) (_ BitVec 4)
+ (bvadd
+  (bvadd
+   (bvadd ((_ zero_extend 3) ((_ extract 0 0) bv))
+    ((_ zero_extend 3) ((_ extract 1 1) bv)))
+   ((_ zero_extend 3) ((_ extract 2 2) bv)))
+  ((_ zero_extend 3) ((_ extract 3 3) bv))))
+(define-fun left-hamming-weight ((index (_ BitVec 4)) (bv (_ BitVec 4)))
+ (_ BitVec 4)
+ (hamming-weight (bvand bv (bvnot (bvsub (bvshl index (_ bv1 4)) (_ bv1 4))))))
+(define-fun right-hamming-weight ((index (_ BitVec 4)) (bv (_ BitVec 4)))
+ (_ BitVec 4) (hamming-weight (bvand bv (bvsub index (_ bv1 4)))))
+(define-fun bit-1 ((bv (_ BitVec 4))) (_ BitVec 4) (bvand bv (bvneg bv)))
+(define-fun bit-2 ((bv (_ BitVec 4))) (_ BitVec 4)
+ (bit-1 (bvand bv (bvsub bv (_ bv1 4)))))
+(define-fun bit-3 ((bv (_ BitVec 4))) (_ BitVec 4)
+ (bit-2 (bvand bv (bvsub bv (_ bv1 4)))))
+(define-fun bit-4 ((bv (_ BitVec 4))) (_ BitVec 4)
+ (bit-3 (bvand bv (bvsub bv (_ bv1 4)))))
+(define-fun bit-5 ((bv (_ BitVec 4))) (_ BitVec 4)
+ (bit-4 (bvand bv (bvsub bv (_ bv1 4)))))
+(define-fun index-bit ((index (_ BitVec 4)) (bv (_ BitVec 4))) (_ BitVec 4)
+ (ite (= index (_ bv0 4)) (bit-1 bv)
+  (ite (= index (_ bv1 4)) (bit-2 bv)
+   (ite (= index (_ bv2 4)) (bit-3 bv) (bit-4 bv)))))
+(define-fun permute
+ ((index (_ BitVec 4)) (obj-0 (_ BitVec 4)) (obj-1 (_ BitVec 4))
+  (obj-2 (_ BitVec 4)) (obj-3 (_ BitVec 4)))
+ (_ BitVec 4)
+ (let ((my-index-bit (bvshl (_ bv1 4) index)))
+  (ite (= my-index-bit obj-0) (_ bv0 4)
+   (ite (= my-index-bit obj-1) (_ bv1 4)
+    (ite (= my-index-bit obj-2) (_ bv2 4) (_ bv3 4))))))
+(define-fun left-zeros ((index (_ BitVec 4))) (_ BitVec 8)
+ (ite (bvugt index (_ bv2 4)) (ite (bvugt index (_ bv4 4)) (_ bv0 8) (_ bv1 8))
+  (ite (bvugt index (_ bv1 4)) (_ bv2 8) (_ bv3 8))))
+(define-fun centered ((index (_ BitVec 4)) (bv (_ BitVec 4))) (_ BitVec 8)
+ (bvshl ((_ zero_extend 4) bv) (left-zeros index)))
+(declare-const v0 (_ BitVec 4))
+(assert (= (_ bv4 4) (hamming-weight v0)))
+(declare-const v1 (_ BitVec 4))
+(assert (= (_ bv4 4) (hamming-weight v1)))
+(declare-const vp1-0 (_ BitVec 4))
+(assert
+ (or (= (_ bv1 4) vp1-0) (= (_ bv2 4) vp1-0) (= (_ bv4 4) vp1-0)
+  (= (_ bv8 4) vp1-0)))
+(declare-const vp1-1 (_ BitVec 4))
+(assert
+ (or (= (_ bv1 4) vp1-1) (= (_ bv2 4) vp1-1) (= (_ bv4 4) vp1-1)
+  (= (_ bv8 4) vp1-1)))
+(declare-const vp1-2 (_ BitVec 4))
+(assert
+ (or (= (_ bv1 4) vp1-2) (= (_ bv2 4) vp1-2) (= (_ bv4 4) vp1-2)
+  (= (_ bv8 4) vp1-2)))
+(declare-const vp1-3 (_ BitVec 4))
+(assert
+ (or (= (_ bv1 4) vp1-3) (= (_ bv2 4) vp1-3) (= (_ bv4 4) vp1-3)
+  (= (_ bv8 4) vp1-3)))
+(assert (= (_ bv15 4) (bvor vp1-0 (bvor vp1-1 (bvor vp1-2 vp1-3)))))
+(assert
+ (and
+  (= (_ bv0 8)
+     (bvxor
+      (bvand
+       (centered (index-bit (permute (_ bv0 4) vp1-0 vp1-1 vp1-2 vp1-3) v1) v1)
+       (centered (index-bit (_ bv0 4) v0) v0))
+      (_ bv8 8)))
+  (= (_ bv0 8)
+     (bvxor
+      (bvand
+       (centered (index-bit (permute (_ bv1 4) vp1-0 vp1-1 vp1-2 vp1-3) v1) v1)
+       (centered (index-bit (_ bv1 4) v0) v0))
+      (_ bv8 8)))
+  (= (_ bv0 8)
+     (bvxor
+      (bvand
+       (centered (index-bit (permute (_ bv2 4) vp1-0 vp1-1 vp1-2 vp1-3) v1) v1)
+       (centered (index-bit (_ bv2 4) v0) v0))
+      (_ bv8 8)))
+  (= (_ bv0 8)
+     (bvxor
+      (bvand
+       (centered (index-bit (permute (_ bv3 4) vp1-0 vp1-1 vp1-2 vp1-3) v1) v1)
+       (centered (index-bit (_ bv3 4) v0) v0))
+      (_ bv8 8)))))
+(check-sat)
+
diff --git a/test/regress/regress0/bv/bv-int-collapse2-sat.smt2 b/test/regress/regress0/bv/bv-int-collapse2-sat.smt2
index 1a355a4..4b97a3d 100644
--- a/test/regress/regress0/bv/bv-int-collapse2-sat.smt2
+++ b/test/regress/regress0/bv/bv-int-collapse2-sat.smt2
@@ -1,4 +1,4 @@
-; COMMAND-LINE: --no-check-proofs --no-check-unsat-cores
+; COMMAND-LINE: --rewrite-divk --no-check-proofs --no-check-unsat-cores
 ; EXPECT: sat
 (set-logic ALL_SUPPORTED)
 (set-info :status sat)
diff --git a/test/regress/regress0/bv/bv2nat-simp-range-sat.smt2 b/test/regress/regress0/bv/bv2nat-simp-range-sat.smt2
new file mode 100644
index 0000000..7e98460
--- /dev/null
+++ b/test/regress/regress0/bv/bv2nat-simp-range-sat.smt2
@@ -0,0 +1,5 @@
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+(declare-fun t () (_ BitVec 16))
+(assert (not (and (<= 0 (bv2nat t)) (< (bv2nat t) 65535))))
+(check-sat)
diff --git a/test/regress/regress0/bv/cmu-rdk-3.smt2 b/test/regress/regress0/bv/cmu-rdk-3.smt2
index 742dd59..9e77338 100644
--- a/test/regress/regress0/bv/cmu-rdk-3.smt2
+++ b/test/regress/regress0/bv/cmu-rdk-3.smt2
@@ -1,3 +1,5 @@
+; COMMAND-LINE: --rewrite-divk
+; EXPECT: sat
 (set-logic ALL_SUPPORTED)
 (set-info :status sat)
 
diff --git a/test/regress/regress0/bv/core/Makefile.in b/test/regress/regress0/bv/core/Makefile.in
index bd0a98d..09c39ec 100644
--- a/test/regress/regress0/bv/core/Makefile.in
+++ b/test/regress/regress0/bv/core/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress0/datatypes/Makefile.am b/test/regress/regress0/datatypes/Makefile.am
index fed6592..b437f18 100644
--- a/test/regress/regress0/datatypes/Makefile.am
+++ b/test/regress/regress0/datatypes/Makefile.am
@@ -74,7 +74,14 @@ TESTS =	\
 	dt-param-card4-bool-sat.smt2 \
 	bug604.smt2 \
 	bug597-rbt.smt2 \
-	example-dailler-min.smt2
+	example-dailler-min.smt2 \
+	dt-2.6.smt2  \
+	dt-sel-2.6.smt2 \
+	dt-param-2.6.smt2 \
+	dt-color-2.6.smt2 \
+	dt-match-pat-param-2.6.smt2 \
+	tuple-no-clash.cvc \
+	jsat-2.6.smt2
 
 FAILING_TESTS = \
 	datatype-dump.cvc
diff --git a/test/regress/regress0/datatypes/Makefile.in b/test/regress/regress0/datatypes/Makefile.in
index 23455ed..49d40c9 100644
--- a/test/regress/regress0/datatypes/Makefile.in
+++ b/test/regress/regress0/datatypes/Makefile.in
@@ -437,6 +437,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -687,7 +688,10 @@ TESTS = tuple.cvc tuple-model.cvc tuple-record-bug.cvc rec1.cvc \
 	conqueue-dt-enum-iloop.smt2 coda_simp_model.smt2 \
 	Test1-tup-mp.cvc dt-param-card4-unsat.smt2 \
 	dt-param-card4-bool-sat.smt2 bug604.smt2 bug597-rbt.smt2 \
-	example-dailler-min.smt2 $(am__append_1)
+	example-dailler-min.smt2 dt-2.6.smt2 dt-sel-2.6.smt2 \
+	dt-param-2.6.smt2 dt-color-2.6.smt2 \
+	dt-match-pat-param-2.6.smt2 tuple-no-clash.cvc jsat-2.6.smt2 \
+	$(am__append_1)
 FAILING_TESTS = \
 	datatype-dump.cvc
 
@@ -1354,6 +1358,55 @@ example-dailler-min.smt2.log: example-dailler-min.smt2
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dt-2.6.smt2.log: dt-2.6.smt2
+	@p='dt-2.6.smt2'; \
+	b='dt-2.6.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dt-sel-2.6.smt2.log: dt-sel-2.6.smt2
+	@p='dt-sel-2.6.smt2'; \
+	b='dt-sel-2.6.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dt-param-2.6.smt2.log: dt-param-2.6.smt2
+	@p='dt-param-2.6.smt2'; \
+	b='dt-param-2.6.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dt-color-2.6.smt2.log: dt-color-2.6.smt2
+	@p='dt-color-2.6.smt2'; \
+	b='dt-color-2.6.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+dt-match-pat-param-2.6.smt2.log: dt-match-pat-param-2.6.smt2
+	@p='dt-match-pat-param-2.6.smt2'; \
+	b='dt-match-pat-param-2.6.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+tuple-no-clash.cvc.log: tuple-no-clash.cvc
+	@p='tuple-no-clash.cvc'; \
+	b='tuple-no-clash.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+jsat-2.6.smt2.log: jsat-2.6.smt2
+	@p='jsat-2.6.smt2'; \
+	b='jsat-2.6.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 error.cvc.log: error.cvc
 	@p='error.cvc'; \
 	b='error.cvc'; \
diff --git a/test/regress/regress0/datatypes/dt-2.6.smt2 b/test/regress/regress0/datatypes/dt-2.6.smt2
new file mode 100644
index 0000000..07dc016
--- /dev/null
+++ b/test/regress/regress0/datatypes/dt-2.6.smt2
@@ -0,0 +1,15 @@
+; COMMAND-LINE: --lang=smt2.6
+; EXPECT: sat
+(set-logic ALL)
+(set-info :status sat)
+(declare-datatypes ((IntList 0)) (
+((empty) (insert ( head Int ) ( tail IntList ) ))
+))
+
+(declare-fun x () IntList)
+(declare-fun y () IntList)
+(declare-fun z () IntList)
+
+(assert (distinct x y z))
+
+(check-sat)
diff --git a/test/regress/regress0/datatypes/dt-color-2.6.smt2 b/test/regress/regress0/datatypes/dt-color-2.6.smt2
new file mode 100644
index 0000000..f614899
--- /dev/null
+++ b/test/regress/regress0/datatypes/dt-color-2.6.smt2
@@ -0,0 +1,17 @@
+; COMMAND-LINE: --lang=smt2.6
+; EXPECT: unsat
+(set-logic ALL)
+(set-info :status unsat)
+(declare-datatype Color ( ( red ) ( green ) ( blue ) ))
+
+(declare-fun a () Color)
+(declare-fun b () Color)
+(declare-fun c () Color)
+(declare-fun d () Color)
+
+(assert (or (distinct a b c d)
+ (< (match a ((red 5) (green 3) (blue 2))) 0)
+ (< (match b ((red 2) (_ 1))) 0)
+ ))
+
+(check-sat)
diff --git a/test/regress/regress0/datatypes/dt-match-pat-param-2.6.smt2 b/test/regress/regress0/datatypes/dt-match-pat-param-2.6.smt2
new file mode 100644
index 0000000..430b22c
--- /dev/null
+++ b/test/regress/regress0/datatypes/dt-match-pat-param-2.6.smt2
@@ -0,0 +1,24 @@
+; COMMAND-LINE: --lang=smt2.6
+; EXPECT: sat
+(set-logic ALL)
+(set-info :status sat)
+(declare-datatypes ( ( Tree 0) ( TreeList 0) ) (
+ ( ( node ( value Int ) ( children TreeList) ))
+( ( empty ) ( insert ( head Tree) ( tail TreeList)) )
+))
+
+
+(declare-fun t () TreeList)
+(assert (<= 100 (match t ((empty (- 1)) ((insert x1 x2) (value x1))))))
+
+
+(declare-datatypes ( ( PTree 1) ( PTreeList 1) ) (
+(par ( X ) ( ( pnode ( pvalue X ) ( pchildren ( PTreeList X )) )))
+(par ( Y ) ( ( pempty ) ( pinsert ( phead ( PTree Y )) ( ptail ( PTreeList Y ))) ))
+))
+
+(declare-fun pt () (PTreeList Int))
+(assert (<= 200 (match pt ((pempty (- 1)) ((pinsert x1 x2) (pvalue x1))))))
+
+
+(check-sat)
diff --git a/test/regress/regress0/datatypes/dt-param-2.6.smt2 b/test/regress/regress0/datatypes/dt-param-2.6.smt2
new file mode 100644
index 0000000..a132ce8
--- /dev/null
+++ b/test/regress/regress0/datatypes/dt-param-2.6.smt2
@@ -0,0 +1,37 @@
+; COMMAND-LINE: --lang=smt2.6
+; EXPECT: sat
+(set-logic ALL)
+(set-info :status sat)
+(declare-datatypes ( ( Tree 1) ( TreeList 1) ) (
+(par ( X ) ( ( node ( value X ) ( children ( TreeList X )) )))
+(par ( Y ) ( ( empty ) ( insert ( head ( Tree Y )) ( tail ( TreeList Y ))) ))
+))
+
+
+(declare-fun x () (Tree Int))
+(declare-fun y () (Tree Int))
+(declare-fun z () (Tree Int))
+
+
+(assert (distinct x y z))
+(assert (= (value x) 5))
+(assert ((_ is insert) (children y)))
+(assert (= (value (head (children y))) 7))
+
+(declare-sort U 0)
+(declare-fun a () (Tree U))
+(declare-fun b () (Tree U))
+(declare-fun c () (Tree U))
+
+(assert (distinct a b c))
+
+(assert ((_ is insert) (children a)))
+
+
+(declare-fun d () (Tree (Tree Int)))
+(declare-fun e () (Tree (Tree Int)))
+(declare-fun f () (Tree (Tree Int)))
+
+(assert (distinct d e f))
+
+(check-sat)
diff --git a/test/regress/regress0/datatypes/dt-sel-2.6.smt2 b/test/regress/regress0/datatypes/dt-sel-2.6.smt2
new file mode 100644
index 0000000..ae290a5
--- /dev/null
+++ b/test/regress/regress0/datatypes/dt-sel-2.6.smt2
@@ -0,0 +1,18 @@
+; COMMAND-LINE: --lang=smt2.6
+; EXPECT: unsat
+(set-logic ALL)
+(set-info :status unsat)
+(declare-datatypes ((IntList 0)) (
+((empty) (insert ( head Int ) ( tail IntList ) ))
+))
+
+(declare-fun x () IntList)
+(declare-fun y () IntList)
+(declare-fun z () IntList)
+
+(assert (distinct x y z))
+
+(assert (not ((_ is insert) x)))
+(assert (not ((_ is insert) y)))
+
+(check-sat)
diff --git a/test/regress/regress0/datatypes/jsat-2.6.smt2 b/test/regress/regress0/datatypes/jsat-2.6.smt2
new file mode 100644
index 0000000..7e7fe4f
--- /dev/null
+++ b/test/regress/regress0/datatypes/jsat-2.6.smt2
@@ -0,0 +1,28 @@
+; COMMAND-LINE: --lang=smt2.6
+; EXPECT: sat
+(set-logic ALL)
+(set-info :status sat)
+(declare-datatypes ((nat 0)(list 0)(tree 0)) (((succ (pred nat)) (zero))
+((cons (car tree) (cdr list)) (null))
+((node (children list)) (leaf (data nat)))
+))
+(declare-fun x1 () nat)
+(declare-fun x2 () nat)
+(declare-fun x3 () nat)
+(declare-fun x4 () nat)
+(declare-fun x5 () nat)
+(declare-fun x6 () list)
+(declare-fun x7 () list)
+(declare-fun x8 () list)
+(declare-fun x9 () list)
+(declare-fun x10 () list)
+(declare-fun x11 () tree)
+(declare-fun x12 () tree)
+(declare-fun x13 () tree)
+(declare-fun x14 () tree)
+(declare-fun x15 () tree)
+
+(assert (and (and (= x9 x7) ((_ is node) x11)) (not ((_ is zero) x5))))
+(check-sat)
+
+
diff --git a/test/regress/regress0/datatypes/tuple-no-clash.cvc b/test/regress/regress0/datatypes/tuple-no-clash.cvc
new file mode 100644
index 0000000..4d7345a
--- /dev/null
+++ b/test/regress/regress0/datatypes/tuple-no-clash.cvc
@@ -0,0 +1,11 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+
+x : [ REAL, REAL ];
+y : REAL;
+z : REAL;
+
+ASSERT x = (y, z) OR x = (z, y);
+ASSERT x = (0,0) OR x = (1,1);
+
+CHECKSAT;
diff --git a/test/regress/regress0/decision/Makefile.in b/test/regress/regress0/decision/Makefile.in
index 582c236..e3eb3c2 100644
--- a/test/regress/regress0/decision/Makefile.in
+++ b/test/regress/regress0/decision/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress0/declare-fun-is-match.smt2 b/test/regress/regress0/declare-fun-is-match.smt2
new file mode 100644
index 0000000..d938720
--- /dev/null
+++ b/test/regress/regress0/declare-fun-is-match.smt2
@@ -0,0 +1,9 @@
+; EXPECT: sat
+(set-info :smt-lib-version 2.6)
+(set-logic UFIDL)
+(set-info :status sat)
+(declare-fun match (Int Int) Int)
+(declare-fun is (Int Int) Int)
+(assert (= match is))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/expect/Makefile.in b/test/regress/regress0/expect/Makefile.in
index 12d00cb..9b5b143 100644
--- a/test/regress/regress0/expect/Makefile.in
+++ b/test/regress/regress0/expect/Makefile.in
@@ -434,6 +434,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress0/expect/scrub.01.smt.expect b/test/regress/regress0/expect/scrub.01.smt.expect
index b21f2d9..4c5aa14 100644
--- a/test/regress/regress0/expect/scrub.01.smt.expect
+++ b/test/regress/regress0/expect/scrub.01.smt.expect
@@ -1,6 +1,5 @@
 % SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/'
-% EXPECT: (error "A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic: (/ n n)
-% EXPECT: if you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.
+% EXPECT: (error "A non-linear fact was asserted to arithmetic in a linear logic.
 % EXPECT: The fact in question: TERM
 % EXPECT: ")
 % EXIT: 1
diff --git a/test/regress/regress0/expect/scrub.02.smt b/test/regress/regress0/expect/scrub.02.smt
index f2e6554..1458016 100644
--- a/test/regress/regress0/expect/scrub.02.smt
+++ b/test/regress/regress0/expect/scrub.02.smt
@@ -1,6 +1,5 @@
 % SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/'
-% EXPECT: (error "A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic: (/ n n)
-% EXPECT: if you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.
+% EXPECT: (error "A non-linear fact was asserted to arithmetic in a linear logic.
 % EXPECT: The fact in question: TERM
 % EXPECT: ")
 % EXIT: 1
diff --git a/test/regress/regress0/expect/scrub.03.smt2.expect b/test/regress/regress0/expect/scrub.03.smt2.expect
index b21f2d9..4c5aa14 100644
--- a/test/regress/regress0/expect/scrub.03.smt2.expect
+++ b/test/regress/regress0/expect/scrub.03.smt2.expect
@@ -1,6 +1,5 @@
 % SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/'
-% EXPECT: (error "A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic: (/ n n)
-% EXPECT: if you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.
+% EXPECT: (error "A non-linear fact was asserted to arithmetic in a linear logic.
 % EXPECT: The fact in question: TERM
 % EXPECT: ")
 % EXIT: 1
diff --git a/test/regress/regress0/expect/scrub.04.smt2 b/test/regress/regress0/expect/scrub.04.smt2
index e457734..1c4bbde 100644
--- a/test/regress/regress0/expect/scrub.04.smt2
+++ b/test/regress/regress0/expect/scrub.04.smt2
@@ -1,6 +1,5 @@
 ; SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/'
-; EXPECT: (error "A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic: (/ n n)
-; EXPECT: if you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.
+; EXPECT: (error "A non-linear fact was asserted to arithmetic in a linear logic.
 ; EXPECT: The fact in question: TERM
 ; EXPECT: ")
 ; EXIT: 1
diff --git a/test/regress/regress0/expect/scrub.06.cvc b/test/regress/regress0/expect/scrub.06.cvc
index b9cb1cd..2656c71 100644
--- a/test/regress/regress0/expect/scrub.06.cvc
+++ b/test/regress/regress0/expect/scrub.06.cvc
@@ -1,9 +1,9 @@
+% COMMAND-LINE: --force-logic=QF_LRA
 % SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/' -e 's/in a linear logic: .*$/in a linear logic: TERM/' -e '/^$/d'
-% EXPECT: A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic: TERM
-% EXPECT: if you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.
+% EXPECT: A non-linear fact was asserted to arithmetic in a linear logic.
 % EXPECT: The fact in question: TERM
 % EXIT: 1
 
 n : REAL;
 
-QUERY (n/n) = 1;
\ No newline at end of file
+QUERY (n/n) = 1;
diff --git a/test/regress/regress0/expect/scrub.07.sy.expect b/test/regress/regress0/expect/scrub.07.sy.expect
index dfcd45a..4c5aa14 100644
--- a/test/regress/regress0/expect/scrub.07.sy.expect
+++ b/test/regress/regress0/expect/scrub.07.sy.expect
@@ -1,6 +1,5 @@
-% SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/'  -e 's/in a linear logic: .*$/in a linear logic: TERM/'
-% EXPECT: (error "A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic: TERM
-% EXPECT: if you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.
+% SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/'
+% EXPECT: (error "A non-linear fact was asserted to arithmetic in a linear logic.
 % EXPECT: The fact in question: TERM
 % EXPECT: ")
 % EXIT: 1
diff --git a/test/regress/regress0/expect/scrub.08.sy b/test/regress/regress0/expect/scrub.08.sy
index 3b9574c..7f78dbc 100644
--- a/test/regress/regress0/expect/scrub.08.sy
+++ b/test/regress/regress0/expect/scrub.08.sy
@@ -1,7 +1,6 @@
 ; COMMAND-LINE: --cegqi-si=all --no-dump-synth
-; SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/' -e 's/in a linear logic: .*$/in a linear logic: TERM/'
-; EXPECT: (error "A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic: TERM
-; EXPECT: if you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.
+; SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/'
+; EXPECT: (error "A non-linear fact was asserted to arithmetic in a linear logic.
 ; EXPECT: The fact in question: TERM
 ; EXPECT: ")
 ; EXIT: 1
@@ -10,4 +9,4 @@
 
 (synth-fun f ((n Int)) Int)
 (constraint (= (/ n n) 1))
-(check-synth)
\ No newline at end of file
+(check-synth)
diff --git a/test/regress/regress0/expect/scrub.09.p b/test/regress/regress0/expect/scrub.09.p
index 17eef44..20cdf2c 100644
--- a/test/regress/regress0/expect/scrub.09.p
+++ b/test/regress/regress0/expect/scrub.09.p
@@ -1,7 +1,6 @@
-% COMMAND-LINE: --cegqi-si=all --no-dump-synth
-% SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/' -e 's/in a linear logic: .*$/in a linear logic: TERM/'
-% EXPECT: (error "A non-linear fact (involving div/mod/divisibility) was asserted to arithmetic in a linear logic: TERM
-% EXPECT: if you only use division (or modulus) by a constant value, or if you only use the divisibility-by-k predicate, try using the --rewrite-divk option.
+% COMMAND-LINE: --force-logic=UFLIA
+% SCRUBBER: sed -e 's/The fact in question: .*$/The fact in question: TERM/'
+% EXPECT: (error "A non-linear fact was asserted to arithmetic in a linear logic.
 % EXPECT: The fact in question: TERM
 % EXPECT: ")
 % EXIT: 1
diff --git a/test/regress/regress0/fmf/Makefile.am b/test/regress/regress0/fmf/Makefile.am
index ec5255d..b024439 100644
--- a/test/regress/regress0/fmf/Makefile.am
+++ b/test/regress/regress0/fmf/Makefile.am
@@ -68,7 +68,13 @@ TESTS =	\
 	cons-sets-bounds.smt2 \
 	bug651.smt2 \
 	bug652.smt2 \
-	bug782.smt2
+	bug782.smt2 \
+	quant_real_univ.cvc \
+	constr-ground-to.smt2 \
+	bug-041417-set-options.cvc \
+	alg202+1.smt2 \
+	fmf-fun-no-elim-ext-arith.smt2 \
+	fmf-fun-no-elim-ext-arith2.smt2
 
 EXTRA_DIST = $(TESTS)
 
diff --git a/test/regress/regress0/fmf/Makefile.in b/test/regress/regress0/fmf/Makefile.in
index e3d3e13..2312158 100644
--- a/test/regress/regress0/fmf/Makefile.in
+++ b/test/regress/regress0/fmf/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -655,7 +656,13 @@ TESTS = \
 	cons-sets-bounds.smt2 \
 	bug651.smt2 \
 	bug652.smt2 \
-	bug782.smt2
+	bug782.smt2 \
+	quant_real_univ.cvc \
+	constr-ground-to.smt2 \
+	bug-041417-set-options.cvc \
+	alg202+1.smt2 \
+	fmf-fun-no-elim-ext-arith.smt2 \
+	fmf-fun-no-elim-ext-arith2.smt2
 
 EXTRA_DIST = $(TESTS)
 all: all-am
@@ -1195,6 +1202,48 @@ bug782.smt2.log: bug782.smt2
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+quant_real_univ.cvc.log: quant_real_univ.cvc
+	@p='quant_real_univ.cvc'; \
+	b='quant_real_univ.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+constr-ground-to.smt2.log: constr-ground-to.smt2
+	@p='constr-ground-to.smt2'; \
+	b='constr-ground-to.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug-041417-set-options.cvc.log: bug-041417-set-options.cvc
+	@p='bug-041417-set-options.cvc'; \
+	b='bug-041417-set-options.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+alg202+1.smt2.log: alg202+1.smt2
+	@p='alg202+1.smt2'; \
+	b='alg202+1.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fmf-fun-no-elim-ext-arith.smt2.log: fmf-fun-no-elim-ext-arith.smt2
+	@p='fmf-fun-no-elim-ext-arith.smt2'; \
+	b='fmf-fun-no-elim-ext-arith.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+fmf-fun-no-elim-ext-arith2.smt2.log: fmf-fun-no-elim-ext-arith2.smt2
+	@p='fmf-fun-no-elim-ext-arith2.smt2'; \
+	b='fmf-fun-no-elim-ext-arith2.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 .test.log:
 	@p='$<'; \
 	$(am__set_b); \
diff --git a/test/regress/regress0/fmf/alg202+1.smt2 b/test/regress/regress0/fmf/alg202+1.smt2
new file mode 100644
index 0000000..ff34606
--- /dev/null
+++ b/test/regress/regress0/fmf/alg202+1.smt2
@@ -0,0 +1,17 @@
+; COMMAND-LINE: --finite-model-find
+; EXPECT: unsat
+(set-logic ALL)
+(declare-sort $$unsorted 0)
+(declare-fun sorti1 ($$unsorted) Bool)
+(declare-fun op1 ($$unsorted $$unsorted) $$unsorted)
+(declare-fun sorti2 ($$unsorted) Bool)
+(declare-fun op2 ($$unsorted $$unsorted) $$unsorted)
+(declare-fun h ($$unsorted) $$unsorted)
+(declare-fun j ($$unsorted) $$unsorted)
+(assert (forall ((U $$unsorted) (BOUND_VARIABLE_345 $$unsorted)) (or (not (sorti1 U)) (not (sorti1 BOUND_VARIABLE_345)) (sorti1 (op1 U BOUND_VARIABLE_345))) ))
+(assert (forall ((U $$unsorted) (BOUND_VARIABLE_364 $$unsorted)) (or (not (sorti2 U)) (not (sorti2 BOUND_VARIABLE_364)) (sorti2 (op2 U BOUND_VARIABLE_364))) ))
+(assert (forall ((U $$unsorted)) (or (not (sorti1 U)) (= U (op1 U U))) ))
+(assert (not (forall ((U $$unsorted)) (or (not (sorti2 U)) (= U (op2 U U))) )))
+(assert (not (=> (and (forall ((U $$unsorted)) (or (not (sorti1 U)) (sorti2 (h U))) ) (forall ((V $$unsorted)) (or (not (sorti2 V)) (sorti1 (j V))) )) (not (and (forall ((W $$unsorted) (BOUND_VARIABLE_406 $$unsorted)) (or (not (sorti1 W)) (not (sorti1 BOUND_VARIABLE_406)) (= (op2 (h W) (h BOUND_VARIABLE_406)) (h (op1 W BOUND_VARIABLE_406)))) ) (forall ((Y $$unsorted) (BOUND_VARIABLE_431 $$unsorted)) (or (not (sorti2 Y)) (not (sorti2 BOUND_VARIABLE_431)) (= (op1 (j Y) (j BOUND_VARIABLE_43 [...]
+(assert (and (forall ((U $$unsorted)) (or (not (sorti1 U)) (sorti2 (h U))) ) (forall ((V $$unsorted)) (or (not (sorti2 V)) (sorti1 (j V))) ) (forall ((W $$unsorted) (BOUND_VARIABLE_406 $$unsorted)) (or (not (sorti1 W)) (not (sorti1 BOUND_VARIABLE_406)) (= (op2 (h W) (h BOUND_VARIABLE_406)) (h (op1 W BOUND_VARIABLE_406)))) ) (forall ((Y $$unsorted) (BOUND_VARIABLE_431 $$unsorted)) (or (not (sorti2 Y)) (not (sorti2 BOUND_VARIABLE_431)) (= (op1 (j Y) (j BOUND_VARIABLE_431)) (j (op2 Y BOUND_ [...]
+(check-sat)
diff --git a/test/regress/regress0/fmf/bug-041417-set-options.cvc b/test/regress/regress0/fmf/bug-041417-set-options.cvc
new file mode 100644
index 0000000..16f59f7
--- /dev/null
+++ b/test/regress/regress0/fmf/bug-041417-set-options.cvc
@@ -0,0 +1,16 @@
+% EXPECT: invalid
+OPTION "finite-model-find";
+OPTION "fmf-fun";
+
+DATATYPE
+  Node = A | B
+END;
+
+link, reach: (Node,Node,INT) -> BOOLEAN;
+
+ASSERT FORALL(x,y:Node, c:INT):
+  link(x,y,c) => reach(x,y,c);
+
+ASSERT link(A,B,1);
+
+QUERY reach(A,B,5);
diff --git a/test/regress/regress0/fmf/constr-ground-to.smt2 b/test/regress/regress0/fmf/constr-ground-to.smt2
new file mode 100644
index 0000000..c8f6c1d
--- /dev/null
+++ b/test/regress/regress0/fmf/constr-ground-to.smt2
@@ -0,0 +1,43 @@
+; COMMAND-LINE: --fmf-fun
+; EXPECT: sat
+(set-logic UFDTLIA)
+(declare-datatypes () (
+	(
+		Term
+		(str (sv IntList))
+	)
+	(
+		IntList
+		(sn)
+		(sc (sh Int) (st IntList))
+	)
+))
+(declare-const t Term)
+(assert (
+	and
+	(is-str t)
+	(is-sc (sv t))
+	(is-sc (st (sv t)))
+	(is-sc (st (st (sv t))))
+	(is-sc (st (st (st (sv t)))))
+	(is-sc (st (st (st (st (sv t))))))
+	(is-sc (st (st (st (st (st (sv t)))))))
+	(is-sc (st (st (st (st (st (st (sv t))))))))
+	(is-sc (st (st (st (st (st (st (st (sv t)))))))))
+	(is-sc (st (st (st (st (st (st (st (st (sv t))))))))))
+	(is-sc (st (st (st (st (st (st (st (st (st (sv t)))))))))))
+	(is-sc (st (st (st (st (st (st (st (st (st (st (sv t))))))))))))
+	(is-sc (st (st (st (st (st (st (st (st (st (st (st (sv t)))))))))))))
+	(is-sc (st (st (st (st (st (st (st (st (st (st (st (st (sv t))))))))))))))
+	(is-sc (st (st (st (st (st (st (st (st (st (st (st (st (st (sv t)))))))))))))))
+	(is-sc (st (st (st (st (st (st (st (st (st (st (st (st (st (st (sv t))))))))))))))))
+	(is-sc (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (sv t)))))))))))))))))
+	(is-sc (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (sv t))))))))))))))))))
+	(is-sc (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (sv t)))))))))))))))))))
+	(is-sc (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (sv t))))))))))))))))))))
+	(is-sc (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (sv t)))))))))))))))))))))
+	(is-sc (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (sv t))))))))))))))))))))))
+	(is-sc (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (sv t)))))))))))))))))))))))
+ 	(is-sc (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (st (sv t))))))))))))))))))))))))
+))
+(check-sat)
diff --git a/test/regress/regress0/fmf/fmf-fun-no-elim-ext-arith.smt2 b/test/regress/regress0/fmf/fmf-fun-no-elim-ext-arith.smt2
new file mode 100644
index 0000000..0618e28
--- /dev/null
+++ b/test/regress/regress0/fmf/fmf-fun-no-elim-ext-arith.smt2
@@ -0,0 +1,18 @@
+; COMMAND-LINE: --fmf-fun --no-check-models --rewrite-divk
+; EXPECT: sat
+(set-logic UFLIA)
+(set-info :status sat)
+(define-fun-rec int-and ((n Int) (n1 Int) (n2 Int)) Bool (
+    or
+    (= n1 n 0)
+    (= n2 n 0)
+    (
+        and
+        (> n1 0)
+        (> n2 0)
+        (>= n 0)
+        (= (not (= (mod n 2 ) 0)) (and (not (= (mod n1 2 ) 0)) (not (= (mod n2 2) 0))))
+        (int-and (div n 2) (div n1 2) (div n2 2))
+    )
+))
+(check-sat)
diff --git a/test/regress/regress0/fmf/fmf-fun-no-elim-ext-arith2.smt2 b/test/regress/regress0/fmf/fmf-fun-no-elim-ext-arith2.smt2
new file mode 100644
index 0000000..07f1e66
--- /dev/null
+++ b/test/regress/regress0/fmf/fmf-fun-no-elim-ext-arith2.smt2
@@ -0,0 +1,25 @@
+; COMMAND-LINE: --fmf-fun --no-check-models --rewrite-divk
+; EXPECT: sat
+(set-logic UFLIA)
+(set-info :status sat)
+(define-fun-rec int-and ((n Int) (n1 Int) (n2 Int)) Bool (
+    or
+    (= n1 n 0)
+    (= n2 n 0)
+    (
+        and
+        (> n1 0)
+        (> n2 0)
+        (>= n 0)
+        (= (not (= (mod n 2 ) 0)) (and (not (= (mod n1 2 ) 0)) (not (= (mod n2 2) 0))))
+        (int-and (div n 2) (div n1 2) (div n2 2))
+    )
+))
+(declare-const x Int)
+(declare-const y Int)
+(declare-const z Int)
+(assert (= x 1))
+(assert (= y 1))
+(assert (= z 1))
+(assert (int-and z x y))
+(check-sat)
diff --git a/test/regress/regress0/fmf/quant_real_univ.cvc b/test/regress/regress0/fmf/quant_real_univ.cvc
new file mode 100644
index 0000000..c3cefd7
--- /dev/null
+++ b/test/regress/regress0/fmf/quant_real_univ.cvc
@@ -0,0 +1,14 @@
+% EXPECT: sat
+OPTION "fmf-bound";
+Atom : TYPE;
+REAL_UNIVERSE : SET OF [REAL];
+ATOM_UNIVERSE : SET OF [Atom];
+ASSERT REAL_UNIVERSE = UNIVERSE :: SET OF [REAL];
+ASSERT ATOM_UNIVERSE = UNIVERSE :: SET OF [Atom];
+
+levelVal : SET OF [Atom, REAL];
+ASSERT FORALL (s : Atom, v1, v2 : REAL) : 
+			(TUPLE(s) IS_IN ATOM_UNIVERSE AND TUPLE(v1) IS_IN REAL_UNIVERSE AND TUPLE(v2) IS_IN REAL_UNIVERSE) 
+			=> (((s, v1) IS_IN levelVal AND (s, v2) IS_IN levelVal) => (v1 = v2));
+
+CHECKSAT;			
diff --git a/test/regress/regress0/lemmas/Makefile.in b/test/regress/regress0/lemmas/Makefile.in
index 6c1ceaf..ab099fa 100644
--- a/test/regress/regress0/lemmas/Makefile.in
+++ b/test/regress/regress0/lemmas/Makefile.in
@@ -435,6 +435,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress0/nl/Makefile.am b/test/regress/regress0/nl/Makefile.am
new file mode 100644
index 0000000..53e04a1
--- /dev/null
+++ b/test/regress/regress0/nl/Makefile.am
@@ -0,0 +1,64 @@
+SUBDIRS = .
+
+# don't override a BINARY imported from a personal.mk
+ at mk_if@eq ($(BINARY),)
+ at mk_empty@BINARY = cvc4
+end at mk_if@
+
+LOG_COMPILER = @srcdir@/../../run_regression
+AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
+
+if AUTOMAKE_1_11
+# old-style (pre-automake 1.12) test harness
+TESTS_ENVIRONMENT = \
+	$(LOG_COMPILER) \
+	$(AM_LOG_FLAGS) $(LOG_FLAGS)
+endif
+
+MAKEFLAGS = -k
+
+# These are run for all build profiles.
+# If a test shouldn't be run in e.g. competition mode,
+# put it below in "TESTS +="
+TESTS =	\
+  quant-nl.smt2 \
+  dist-big.smt2 \
+  simple-mono.smt2 \
+  coeff-sat.smt2 \
+  combine.smt2 \
+  magnitude-wrong-1020-m.smt2 \
+  nl-unk-quant.smt2 \
+  mult-po.smt2 \
+  very-simple-unsat.smt2 \
+  subs0-unsat-confirm.smt2 \
+  simple-mono-unsat.smt2 \
+  ones.smt2 \
+  metitarski_3_4_2e.smt2 \
+  metitarski-1025.smt2 \
+  poly-1025.smt2 \
+  very-easy-sat.smt2 \
+  coeff-unsat.smt2 \
+  coeff-unsat-base.smt2 \
+  red-exp.smt2 \
+  zero-subset.smt2 \
+  nia-wrong-tl.smt2 \
+  nl-help-unsat-quant.smt2 \
+  metitarski-3-4.smt2 \
+  rewriting-sums.smt2 \
+  disj-eval.smt2 \
+  bug698.smt2  \
+  real-div-ufnra.smt2 \
+  div-mod-partial.smt2 \
+  all-logic.smt2
+
+# unsolved : garbage_collect.cvc
+
+EXTRA_DIST = $(TESTS)
+
+# synonyms for "check"
+.PHONY: regress regress0 test
+regress regress0 test: check
+
+# do nothing in this subdir
+.PHONY: regress1 regress2 regress3 regress4
+regress1 regress2 regress3 regress4:
diff --git a/test/regress/regress0/arith/Makefile.in b/test/regress/regress0/nl/Makefile.in
similarity index 91%
copy from test/regress/regress0/arith/Makefile.in
copy to test/regress/regress0/nl/Makefile.in
index 7166af1..f9cc2f8 100644
--- a/test/regress/regress0/arith/Makefile.in
+++ b/test/regress/regress0/nl/Makefile.in
@@ -88,7 +88,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-subdir = test/regress/regress0/arith
+subdir = test/regress/regress0/nl
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
 	$(top_srcdir)/config/antlr.m4 \
@@ -434,6 +434,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -656,7 +657,7 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
-SUBDIRS = . integers
+SUBDIRS = .
 @mk_empty at BINARY = cvc4
 LOG_COMPILER = @srcdir@/../../run_regression
 AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
@@ -666,47 +667,39 @@ MAKEFLAGS = -k
 # If a test shouldn't be run in e.g. competition mode,
 # put it below in "TESTS +="
 TESTS = \
-	arith.01.cvc \
-	arith.02.cvc \
-	arith.03.cvc \
-	delta-minimized-row-vector-bug.smt \
-	fuzz_3-eq.smt \
-	leq.01.smt \
-	mod.01.smt2 \
-	mod.02.smt2 \
-	mod.03.smt2 \
-	div.01.smt2 \
-	div.02.smt2 \
-	div.03.smt2 \
-	div.04.smt2 \
-	div.05.smt2 \
-	div.06.smt2 \
-	div.07.smt2 \
-	div.08.smt2 \
-	mult.01.smt2 \
-	mult.02.smt2 \
-	bug443.delta01.smt \
-	miplib.cvc \
-	miplib2.cvc \
-	miplib3.cvc \
-	miplib4.cvc \
-	miplibtrick.smt \
-	bug547.1.smt2 \
-	bug547.2.smt2 \
-	bug569.smt2 \
-	div.09.smt2 \
-	bug716.0.smt2 \
-	bug716.1.cvc
-
-#	problem__003.smt2
-EXTRA_DIST = $(TESTS) \
-	miplib-opt1217--27.smt \
-	miplib-opt1217--27.smt2 \
-	miplib-pp08a-3000.smt \
-	miplib-pp08a-3000.smt2 \
-	miplib-opt1217--27.smt.expect \
-	miplib-pp08a-3000.smt.expect
-
+  quant-nl.smt2 \
+  dist-big.smt2 \
+  simple-mono.smt2 \
+  coeff-sat.smt2 \
+  combine.smt2 \
+  magnitude-wrong-1020-m.smt2 \
+  nl-unk-quant.smt2 \
+  mult-po.smt2 \
+  very-simple-unsat.smt2 \
+  subs0-unsat-confirm.smt2 \
+  simple-mono-unsat.smt2 \
+  ones.smt2 \
+  metitarski_3_4_2e.smt2 \
+  metitarski-1025.smt2 \
+  poly-1025.smt2 \
+  very-easy-sat.smt2 \
+  coeff-unsat.smt2 \
+  coeff-unsat-base.smt2 \
+  red-exp.smt2 \
+  zero-subset.smt2 \
+  nia-wrong-tl.smt2 \
+  nl-help-unsat-quant.smt2 \
+  metitarski-3-4.smt2 \
+  rewriting-sums.smt2 \
+  disj-eval.smt2 \
+  bug698.smt2  \
+  real-div-ufnra.smt2 \
+  div-mod-partial.smt2 \
+  all-logic.smt2
+
+
+# unsolved : garbage_collect.cvc
+EXTRA_DIST = $(TESTS)
 all: all-recursive
 
 .SUFFIXES:
@@ -720,9 +713,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/arith/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress0/nl/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu test/regress/regress0/arith/Makefile
+	  $(AUTOMAKE) --gnu test/regress/regress0/nl/Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -987,219 +980,205 @@ recheck: all
 	        am__force_recheck=am--force-recheck \
 	        TEST_LOGS="$$log_list"; \
 	exit $$?
-arith.01.cvc.log: arith.01.cvc
-	@p='arith.01.cvc'; \
-	b='arith.01.cvc'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-arith.02.cvc.log: arith.02.cvc
-	@p='arith.02.cvc'; \
-	b='arith.02.cvc'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
-arith.03.cvc.log: arith.03.cvc
-	@p='arith.03.cvc'; \
-	b='arith.03.cvc'; \
+quant-nl.smt2.log: quant-nl.smt2
+	@p='quant-nl.smt2'; \
+	b='quant-nl.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-delta-minimized-row-vector-bug.smt.log: delta-minimized-row-vector-bug.smt
-	@p='delta-minimized-row-vector-bug.smt'; \
-	b='delta-minimized-row-vector-bug.smt'; \
+dist-big.smt2.log: dist-big.smt2
+	@p='dist-big.smt2'; \
+	b='dist-big.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-fuzz_3-eq.smt.log: fuzz_3-eq.smt
-	@p='fuzz_3-eq.smt'; \
-	b='fuzz_3-eq.smt'; \
+simple-mono.smt2.log: simple-mono.smt2
+	@p='simple-mono.smt2'; \
+	b='simple-mono.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-leq.01.smt.log: leq.01.smt
-	@p='leq.01.smt'; \
-	b='leq.01.smt'; \
+coeff-sat.smt2.log: coeff-sat.smt2
+	@p='coeff-sat.smt2'; \
+	b='coeff-sat.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-mod.01.smt2.log: mod.01.smt2
-	@p='mod.01.smt2'; \
-	b='mod.01.smt2'; \
+combine.smt2.log: combine.smt2
+	@p='combine.smt2'; \
+	b='combine.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-mod.02.smt2.log: mod.02.smt2
-	@p='mod.02.smt2'; \
-	b='mod.02.smt2'; \
+magnitude-wrong-1020-m.smt2.log: magnitude-wrong-1020-m.smt2
+	@p='magnitude-wrong-1020-m.smt2'; \
+	b='magnitude-wrong-1020-m.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-mod.03.smt2.log: mod.03.smt2
-	@p='mod.03.smt2'; \
-	b='mod.03.smt2'; \
+nl-unk-quant.smt2.log: nl-unk-quant.smt2
+	@p='nl-unk-quant.smt2'; \
+	b='nl-unk-quant.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-div.01.smt2.log: div.01.smt2
-	@p='div.01.smt2'; \
-	b='div.01.smt2'; \
+mult-po.smt2.log: mult-po.smt2
+	@p='mult-po.smt2'; \
+	b='mult-po.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-div.02.smt2.log: div.02.smt2
-	@p='div.02.smt2'; \
-	b='div.02.smt2'; \
+very-simple-unsat.smt2.log: very-simple-unsat.smt2
+	@p='very-simple-unsat.smt2'; \
+	b='very-simple-unsat.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-div.03.smt2.log: div.03.smt2
-	@p='div.03.smt2'; \
-	b='div.03.smt2'; \
+subs0-unsat-confirm.smt2.log: subs0-unsat-confirm.smt2
+	@p='subs0-unsat-confirm.smt2'; \
+	b='subs0-unsat-confirm.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-div.04.smt2.log: div.04.smt2
-	@p='div.04.smt2'; \
-	b='div.04.smt2'; \
+simple-mono-unsat.smt2.log: simple-mono-unsat.smt2
+	@p='simple-mono-unsat.smt2'; \
+	b='simple-mono-unsat.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-div.05.smt2.log: div.05.smt2
-	@p='div.05.smt2'; \
-	b='div.05.smt2'; \
+ones.smt2.log: ones.smt2
+	@p='ones.smt2'; \
+	b='ones.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-div.06.smt2.log: div.06.smt2
-	@p='div.06.smt2'; \
-	b='div.06.smt2'; \
+metitarski_3_4_2e.smt2.log: metitarski_3_4_2e.smt2
+	@p='metitarski_3_4_2e.smt2'; \
+	b='metitarski_3_4_2e.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-div.07.smt2.log: div.07.smt2
-	@p='div.07.smt2'; \
-	b='div.07.smt2'; \
+metitarski-1025.smt2.log: metitarski-1025.smt2
+	@p='metitarski-1025.smt2'; \
+	b='metitarski-1025.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-div.08.smt2.log: div.08.smt2
-	@p='div.08.smt2'; \
-	b='div.08.smt2'; \
+poly-1025.smt2.log: poly-1025.smt2
+	@p='poly-1025.smt2'; \
+	b='poly-1025.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-mult.01.smt2.log: mult.01.smt2
-	@p='mult.01.smt2'; \
-	b='mult.01.smt2'; \
+very-easy-sat.smt2.log: very-easy-sat.smt2
+	@p='very-easy-sat.smt2'; \
+	b='very-easy-sat.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-mult.02.smt2.log: mult.02.smt2
-	@p='mult.02.smt2'; \
-	b='mult.02.smt2'; \
+coeff-unsat.smt2.log: coeff-unsat.smt2
+	@p='coeff-unsat.smt2'; \
+	b='coeff-unsat.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bug443.delta01.smt.log: bug443.delta01.smt
-	@p='bug443.delta01.smt'; \
-	b='bug443.delta01.smt'; \
+coeff-unsat-base.smt2.log: coeff-unsat-base.smt2
+	@p='coeff-unsat-base.smt2'; \
+	b='coeff-unsat-base.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-miplib.cvc.log: miplib.cvc
-	@p='miplib.cvc'; \
-	b='miplib.cvc'; \
+red-exp.smt2.log: red-exp.smt2
+	@p='red-exp.smt2'; \
+	b='red-exp.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-miplib2.cvc.log: miplib2.cvc
-	@p='miplib2.cvc'; \
-	b='miplib2.cvc'; \
+zero-subset.smt2.log: zero-subset.smt2
+	@p='zero-subset.smt2'; \
+	b='zero-subset.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-miplib3.cvc.log: miplib3.cvc
-	@p='miplib3.cvc'; \
-	b='miplib3.cvc'; \
+nia-wrong-tl.smt2.log: nia-wrong-tl.smt2
+	@p='nia-wrong-tl.smt2'; \
+	b='nia-wrong-tl.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-miplib4.cvc.log: miplib4.cvc
-	@p='miplib4.cvc'; \
-	b='miplib4.cvc'; \
+nl-help-unsat-quant.smt2.log: nl-help-unsat-quant.smt2
+	@p='nl-help-unsat-quant.smt2'; \
+	b='nl-help-unsat-quant.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-miplibtrick.smt.log: miplibtrick.smt
-	@p='miplibtrick.smt'; \
-	b='miplibtrick.smt'; \
+metitarski-3-4.smt2.log: metitarski-3-4.smt2
+	@p='metitarski-3-4.smt2'; \
+	b='metitarski-3-4.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bug547.1.smt2.log: bug547.1.smt2
-	@p='bug547.1.smt2'; \
-	b='bug547.1.smt2'; \
+rewriting-sums.smt2.log: rewriting-sums.smt2
+	@p='rewriting-sums.smt2'; \
+	b='rewriting-sums.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bug547.2.smt2.log: bug547.2.smt2
-	@p='bug547.2.smt2'; \
-	b='bug547.2.smt2'; \
+disj-eval.smt2.log: disj-eval.smt2
+	@p='disj-eval.smt2'; \
+	b='disj-eval.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bug569.smt2.log: bug569.smt2
-	@p='bug569.smt2'; \
-	b='bug569.smt2'; \
+bug698.smt2.log: bug698.smt2
+	@p='bug698.smt2'; \
+	b='bug698.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-div.09.smt2.log: div.09.smt2
-	@p='div.09.smt2'; \
-	b='div.09.smt2'; \
+real-div-ufnra.smt2.log: real-div-ufnra.smt2
+	@p='real-div-ufnra.smt2'; \
+	b='real-div-ufnra.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bug716.0.smt2.log: bug716.0.smt2
-	@p='bug716.0.smt2'; \
-	b='bug716.0.smt2'; \
+div-mod-partial.smt2.log: div-mod-partial.smt2
+	@p='div-mod-partial.smt2'; \
+	b='div-mod-partial.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-bug716.1.cvc.log: bug716.1.cvc
-	@p='bug716.1.cvc'; \
-	b='bug716.1.cvc'; \
+all-logic.smt2.log: all-logic.smt2
+	@p='all-logic.smt2'; \
+	b='all-logic.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
@@ -1402,17 +1381,7 @@ uninstall-am:
 @mk_if at eq ($(BINARY),)
 end at mk_if@
 
-#if CVC4_BUILD_PROFILE_COMPETITION
-#else
-#TESTS += \
-#	error.cvc
-#endif
-#
-# and make sure to distribute it
-#EXTRA_DIST += \
-#	error.cvc
-
-# synonyms for "check" in this directory
+# synonyms for "check"
 .PHONY: regress regress0 test
 regress regress0 test: check
 
diff --git a/test/regress/regress0/nl/all-logic.smt2 b/test/regress/regress0/nl/all-logic.smt2
new file mode 100644
index 0000000..700e5d9
--- /dev/null
+++ b/test/regress/regress0/nl/all-logic.smt2
@@ -0,0 +1,8 @@
+(set-logic ALL)
+(set-info :status unsat)
+
+(declare-fun x () Real)
+
+(assert (< (* x x) 0.0))
+
+(check-sat)
diff --git a/test/regress/regress0/nl/bug698.smt2 b/test/regress/regress0/nl/bug698.smt2
new file mode 100644
index 0000000..ffb1eea
--- /dev/null
+++ b/test/regress/regress0/nl/bug698.smt2
@@ -0,0 +1,33 @@
+; COMMAND-LINE: --incremental --nl-ext --fmf-fun-rlv --no-check-models
+(set-logic UFNIA)
+(set-info :smt-lib-version 2.5)
+
+; EXPECT: sat
+(declare-fun fixedAdd() Int)
+(assert (= fixedAdd (+ 2 (+ 2 (+ 2 0)))))
+(check-sat)
+
+(define-fun-rec $$add$$ ((a Int)(b Int)) Int 
+    (ite (= b 0) 
+         0 
+         (+ a ($$add$$ a (- b 1)))))
+
+; EXPECT: sat
+(declare-fun variableAdd() Int)
+(assert (= variableAdd ($$add$$ 2 3)))
+(check-sat)
+
+; EXPECT: sat
+(declare-fun fixedTimes() Int)
+(assert (= fixedTimes (* 2 (* 2 (* 2 1)))))
+(check-sat)
+        
+; EXPECT: sat
+(define-fun-rec $$pow$$ ((a Int)(b Int)) Int 
+    (ite (= b 0) 
+         1 
+         (* a ($$pow$$ a (- b 1)))))
+
+(declare-fun variableTimes() Int)
+(assert (= variableTimes ($$pow$$ 2 3)))
+(check-sat)
diff --git a/test/regress/regress0/nl/coeff-sat.smt2 b/test/regress/regress0/nl/coeff-sat.smt2
new file mode 100644
index 0000000..84502bb
--- /dev/null
+++ b/test/regress/regress0/nl/coeff-sat.smt2
@@ -0,0 +1,16 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: sat
+(set-logic QF_NRA)
+(set-info :status sat)
+
+(declare-fun a () Real)
+(declare-fun b () Real)
+
+(assert (> a 0))
+(assert (> b 0))
+
+(assert (>= a (* 3 b)))
+
+(assert (< (* a a) (* 11 b b)))
+
+(check-sat)
diff --git a/test/regress/regress0/nl/coeff-unsat-base.smt2 b/test/regress/regress0/nl/coeff-unsat-base.smt2
new file mode 100644
index 0000000..d56421b
--- /dev/null
+++ b/test/regress/regress0/nl/coeff-unsat-base.smt2
@@ -0,0 +1,16 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: unsat
+(set-logic QF_NRA)
+(set-info :status unsat)
+
+(declare-fun a () Real)
+(declare-fun b () Real)
+
+(assert (> a 0))
+(assert (> b 0))
+
+(assert (>= a (* 3 b)))
+
+(assert (< (* a a) (* 3 a b)))
+
+(check-sat)
diff --git a/test/regress/regress0/nl/coeff-unsat.smt2 b/test/regress/regress0/nl/coeff-unsat.smt2
new file mode 100644
index 0000000..f86d08f
--- /dev/null
+++ b/test/regress/regress0/nl/coeff-unsat.smt2
@@ -0,0 +1,16 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: unsat
+(set-logic QF_NRA)
+(set-info :status unsat)
+
+(declare-fun a () Real)
+(declare-fun b () Real)
+
+(assert (> a 0))
+(assert (> b 0))
+
+(assert (>= a (* 3 b)))
+
+(assert (< (* a a) (* 8 b b)))
+
+(check-sat)
diff --git a/test/regress/regress0/nl/combine.smt2 b/test/regress/regress0/nl/combine.smt2
new file mode 100644
index 0000000..9f7e7a5
--- /dev/null
+++ b/test/regress/regress0/nl/combine.smt2
@@ -0,0 +1,13 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: unsat
+(set-logic QF_NRA)
+(set-info :status unsat)
+(declare-fun a () Real)
+(declare-fun b () Real)
+(declare-fun c () Real)
+(assert (> c 1))
+(assert (> (* a b) 1))
+
+(assert (< (* a b c) 1))
+
+(check-sat)
diff --git a/test/regress/regress0/nl/disj-eval.smt2 b/test/regress/regress0/nl/disj-eval.smt2
new file mode 100644
index 0000000..ac8cfc9
--- /dev/null
+++ b/test/regress/regress0/nl/disj-eval.smt2
@@ -0,0 +1,14 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: sat
+(set-logic QF_NIA)
+(set-info :status sat)
+(declare-fun x () Int)
+(declare-fun y () Int)
+
+(assert (or (= x 5) (= x 7) (= x 9) (= x 27) (= x 10)))
+(assert (or (= y 0) (= y 1) (= y 9) (= y 8)))
+
+
+(assert (= (* x x) (* y y y)))
+
+(check-sat)
diff --git a/test/regress/regress0/nl/dist-big.smt2 b/test/regress/regress0/nl/dist-big.smt2
new file mode 100644
index 0000000..53c9c3f
--- /dev/null
+++ b/test/regress/regress0/nl/dist-big.smt2
@@ -0,0 +1,16 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: sat
+(set-logic QF_NRA)
+(set-info :status sat)
+(declare-fun v1 () Real)
+(declare-fun v2 () Real)
+(declare-fun v3 () Real)
+(declare-fun v4 () Real)
+(declare-fun v5 () Real)
+(declare-fun v6 () Real)
+(declare-fun v7 () Real)
+(declare-fun v8 () Real)
+
+(assert (= (* (+ v1 v2 v3 v4 v5 v6 v7 v8) (+ v1 v2 v3 v4 v5 v6 v7 v8) (+ v1 v2 v3 v4 v5 v6 v7 v8) (+ v1 v2 v3 v4 v5 v6 v7 v8)) 0))
+
+(check-sat)
diff --git a/test/regress/regress0/nl/div-mod-partial.smt2 b/test/regress/regress0/nl/div-mod-partial.smt2
new file mode 100644
index 0000000..fa75ee5
--- /dev/null
+++ b/test/regress/regress0/nl/div-mod-partial.smt2
@@ -0,0 +1,10 @@
+; COMMAND-LINE: --nl-ext --nl-ext-tplanes
+; EXPECT: sat
+(set-logic QF_UFNIA)
+(set-info :status sat)
+(declare-fun x () Int)
+(declare-fun y () Int)
+(assert (not (= y 0)))
+; should be SAT if the partial functions for div and mod are different
+(assert (not (= (- y (* (div y x) x)) (mod y x))))
+(check-sat)
diff --git a/test/regress/regress0/nl/magnitude-wrong-1020-m.smt2 b/test/regress/regress0/nl/magnitude-wrong-1020-m.smt2
new file mode 100644
index 0000000..9411224
--- /dev/null
+++ b/test/regress/regress0/nl/magnitude-wrong-1020-m.smt2
@@ -0,0 +1,72 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: sat
+(set-logic QF_NRA)
+(set-info :source |
+From termination analysis of term rewriting.
+
+Submitted by Harald Roman Zankl <Harald.Zankl at uibk.ac.at>
+
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status sat)
+  (define-fun x6 () Real
+    1.0)
+  (define-fun x13 () Real
+    (/ 1.0 32.0))
+  (define-fun x3 () Real
+    1.0)
+  (define-fun x10 () Real
+    1.0)
+  (define-fun x0 () Real
+    1.0)
+  (define-fun x17 () Real
+    3.0)
+  (define-fun x7 () Real
+    (/ 1.0 4.0))
+  (define-fun x14 () Real
+    (/ 3.0 4.0))
+  (define-fun x4 () Real
+    2.0)
+  (define-fun x11 () Real
+    1.0)
+  (define-fun x1 () Real
+    (/ 3.0 2.0))
+  (define-fun x18 () Real
+    0.0)
+  (define-fun x8 () Real
+    1.0)
+  (define-fun x15 () Real
+    1.0)
+  (define-fun x5 () Real
+    1.0)
+  (define-fun x12 () Real
+    2.0)
+  (define-fun x2 () Real
+    1.0)
+  (define-fun x9 () Real
+    0.0)
+  (define-fun x16 () Real
+    (/ 1.0 4.0))
+
+(assert (>= x6 0))
+(assert (>= x13 0))
+(assert (>= x3 0))
+(assert (>= x10 0))
+(assert (>= x0 0))
+(assert (>= x17 0))
+(assert (>= x7 0))
+(assert (>= x14 0))
+(assert (>= x4 0))
+(assert (>= x11 0))
+(assert (>= x1 0))
+(assert (>= x18 0))
+(assert (>= x8 0))
+(assert (>= x15 0))
+(assert (>= x5 0))
+(assert (>= x12 0))
+(assert (>= x2 0))
+(assert (>= x9 0))
+(assert (>= x16 0))
+(assert (let ((?v_0 (+ x0 (* x2 x3))) (?v_2 (* x2 x4)) (?v_1 (+ x5 (* x6 x7))) (?v_4 (* x12 x3))) (let ((?v_3 (+ (+ x10 (* x11 x3)) ?v_4)) (?v_6 (* x11 x4)) (?v_7 (* x12 x4)) (?v_5 (+ (+ x10 (* x11 x7)) ?v_4))) (let ((?v_17 (and (and (and (and (and (> ?v_0 x0) (>= ?v_0 x0)) (>= ?v_2 x2)) (and (and (and (> ?v_0 ?v_1) (>= ?v_0 ?v_1)) (>= x1 (* x6 x8))) (>= ?v_2 (* x6 x9)))) (and (and (and (> ?v_3 x0) (>= ?v_3 x0)) (>= ?v_6 x1)) (>= ?v_7 x2))) (and (and (and (> ?v_3 ?v_5) (>= ?v_3 ?v_5)) (> [...]
+(check-sat)
diff --git a/test/regress/regress0/nl/metitarski-1025.smt2 b/test/regress/regress0/nl/metitarski-1025.smt2
new file mode 100644
index 0000000..5a95364
--- /dev/null
+++ b/test/regress/regress0/nl/metitarski-1025.smt2
@@ -0,0 +1,30 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: sat
+(set-logic QF_NRA)
+(set-info :source |
+These benchmarks used in the paper:
+
+  Dejan Jovanovic and Leonardo de Moura.  Solving Non-Linear Arithmetic.
+  In IJCAR 2012, published as LNCS volume 7364, pp. 339--354.
+
+The meti-tarski benchmarks are proof obligations extracted from the
+Meti-Tarski project, see:
+
+  B. Akbarpour and L. C. Paulson. MetiTarski: An automatic theorem prover
+  for real-valued special functions. Journal of Automated Reasoning,
+  44(3):175-205, 2010.
+
+Submitted by Dejan Jovanovic for SMT-LIB.
+
+
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status sat)
+(declare-fun skoCOSS () Real)
+(declare-fun skoSINS () Real)
+(declare-fun skoS () Real)
+(declare-fun pi () Real)
+(assert (and (= (* skoSINS skoSINS) (+ 1 (* skoCOSS (* skoCOSS (- 1))))) (and (not (<= (* pi (/ 1 2)) skoS)) (and (not (<= pi (/ 15707963 5000000))) (and (not (<= (/ 31415927 10000000) pi)) (and (<= 0 skoS) (and (<= 0 skoCOSS) (<= skoSINS skoS))))))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/nl/metitarski-3-4.smt2 b/test/regress/regress0/nl/metitarski-3-4.smt2
new file mode 100644
index 0000000..835d607
--- /dev/null
+++ b/test/regress/regress0/nl/metitarski-3-4.smt2
@@ -0,0 +1,29 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: sat
+(set-logic QF_NRA)
+(set-info :source |
+These benchmarks used in the paper:
+
+  Dejan Jovanovic and Leonardo de Moura.  Solving Non-Linear Arithmetic.
+  In IJCAR 2012, published as LNCS volume 7364, pp. 339--354.
+
+The meti-tarski benchmarks are proof obligations extracted from the
+Meti-Tarski project, see:
+
+  B. Akbarpour and L. C. Paulson. MetiTarski: An automatic theorem prover
+  for real-valued special functions. Journal of Automated Reasoning,
+  44(3):175-205, 2010.
+
+Submitted by Dejan Jovanovic for SMT-LIB.
+
+
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status sat)
+(declare-fun skoX () Real)
+(declare-fun skoY () Real)
+(declare-fun skoZ () Real)
+(assert (let ((?v_0 (<= 0 skoY)) (?v_2 (<= (* skoZ (+ (- 1) (* skoY skoX))) (+ skoX skoY))) (?v_1 (* skoX (- 1)))) (let ((?v_3 (* skoX ?v_1))) (let ((?v_4 (* skoY (* skoX (+ (- 3) ?v_3))))) (and (<= (- 1) skoY) (and (not (= skoY 0)) (and (or (not ?v_2) ?v_0) (and (or ?v_0 (<= (* skoZ (+ 1 (* skoY ?v_1))) (+ (+ 1 ?v_1) (* skoY (+ (- 1) ?v_1))))) (and (or (not ?v_0) (or ?v_2 (<= (* skoZ (+ (+ 3 (* skoX skoX)) ?v_4)) (+ (* skoX ?v_3) (* skoY (+ (* skoX (* skoX (- 3))) ?v_4)))))) (and (not ( [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/nl/metitarski_3_4_2e.smt2 b/test/regress/regress0/nl/metitarski_3_4_2e.smt2
new file mode 100644
index 0000000..3f12ec3
--- /dev/null
+++ b/test/regress/regress0/nl/metitarski_3_4_2e.smt2
@@ -0,0 +1,30 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: sat
+(set-logic QF_NRA)
+(set-info :status sat)
+(set-info :source |
+These benchmarks used in the paper:
+
+  Dejan Jovanovic and Leonardo de Moura.  Solving Non-Linear Arithmetic.
+  In IJCAR 2012, published as LNCS volume 7364, pp. 339--354.
+
+The meti-tarski benchmarks are proof obligations extracted from the
+Meti-Tarski project, see:
+
+  B. Akbarpour and L. C. Paulson. MetiTarski: An automatic theorem prover
+  for real-valued special functions. Journal of Automated Reasoning,
+  44(3):175-205, 2010.
+
+Submitted by Dejan Jovanovic for SMT-LIB.
+
+
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status sat)
+(declare-fun skoX () Real)
+(declare-fun skoS () Real)
+(declare-fun skoC () Real)
+(assert (let ((?v_0 (<= skoX 0)) (?v_2 (* skoC (/ 86400000 2025130727)))) (let ((?v_1 (<= ?v_2 skoS))) (and (<= (* skoX (+ (/ (- 69) 2000) (* skoX (/ (- 529) 16000000)))) 12) (and (not ?v_0) (and (or (not (<= (* skoX (+ (+ (+ (/ (- 23) 13) (* skoC (/ 621 8125))) (* skoS (/ (- 46578006721) 26000000000))) (* skoX (+ (+ (/ (- 529) 312000) (* skoC (/ (- 4761) 65000000))) (* skoS (/ 1071294154583 624000000000000)))))) (+ (+ (/ 8000 13) (* skoC (/ 1728 65))) (* skoS (/ (- 2025130727) 3250000)) [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/nl/mult-po.smt2 b/test/regress/regress0/nl/mult-po.smt2
new file mode 100644
index 0000000..6549833
--- /dev/null
+++ b/test/regress/regress0/nl/mult-po.smt2
@@ -0,0 +1,20 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: sat
+(set-logic QF_NRA)
+(set-info :status sat)
+
+(declare-fun a () Real)
+(declare-fun b () Real)
+(declare-fun c () Real)
+(declare-fun d () Real)
+
+(assert (> a 0))
+(assert (> b 0))
+(assert (> c 0))
+(assert (> d 0))
+
+(assert (and (> a b) (> b c) (> c d)))
+
+(assert (< (* a d) (* b c)))
+
+(check-sat)
diff --git a/test/regress/regress0/nl/nia-wrong-tl.smt2 b/test/regress/regress0/nl/nia-wrong-tl.smt2
new file mode 100644
index 0000000..40ac92b
--- /dev/null
+++ b/test/regress/regress0/nl/nia-wrong-tl.smt2
@@ -0,0 +1,47 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: sat
+(set-logic QF_NIA)
+(set-info :status sat)
+(declare-fun n0 () Int)
+(declare-fun n1 () Int)
+(declare-fun n2 () Int)
+(declare-fun n3 () Int)
+(declare-fun n4 () Int)
+(declare-fun n5 () Int)
+(declare-fun n6 () Int)
+(declare-fun n7 () Int)
+(declare-fun n8 () Int)
+(declare-fun n9 () Int)
+(declare-fun n10 () Int)
+(declare-fun n11 () Int)
+(declare-fun n12 () Int)
+(declare-fun n13 () Int)
+(declare-fun n14 () Int)
+(declare-fun n15 () Int)
+(declare-fun n16 () Int)
+(declare-fun n17 () Int)
+(declare-fun n18 () Int)
+(declare-fun n19 () Int)
+(declare-fun n20 () Int)
+(declare-fun n21 () Int)
+(declare-fun n22 () Int)
+(declare-fun n23 () Int)
+(declare-fun n24 () Int)
+(declare-fun n25 () Int)
+(declare-fun n26 () Int)
+(declare-fun n27 () Int)
+(declare-fun n28 () Int)
+(declare-fun n29 () Int)
+(declare-fun n30 () Int)
+(declare-fun n31 () Int)
+(declare-fun n32 () Int)
+(declare-fun n33 () Int)
+(declare-fun n34 () Int)
+(declare-fun n35 () Int)
+(declare-fun n36 () Int)
+(declare-fun n37 () Int)
+(declare-fun n38 () Int)
+(declare-fun n39 () Int)
+(declare-fun n40 () Int)
+(assert (not (=> (and (>= n5 1) (not (>= (+ n1 (* (- 1) n7)) 1))) (not (>= (+ (* n1 n5) (* (- 1) (* n5 n7))) 0)))))
+(check-sat)
diff --git a/test/regress/regress0/nl/nl-help-unsat-quant.smt2 b/test/regress/regress0/nl/nl-help-unsat-quant.smt2
new file mode 100644
index 0000000..f2f7667
--- /dev/null
+++ b/test/regress/regress0/nl/nl-help-unsat-quant.smt2
@@ -0,0 +1,419 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: unsat
+(set-logic UFNIA)
+(set-info :status unsat)
+(set-info :source |Benchmarks from the paper: "Extending Sledgehammer with SMT Solvers" by Jasmin Blanchette, Sascha Bohme, and Lawrence C. Paulson, CADE 2011.  Translated to SMT2 by Andrew Reynolds and Morgan Deters.|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(declare-sort S1 0)
+(declare-sort S2 0)
+(declare-sort S3 0)
+(declare-sort S4 0)
+(declare-sort S5 0)
+(declare-sort S6 0)
+(declare-sort S7 0)
+(declare-sort S8 0)
+(declare-sort S9 0)
+(declare-sort S10 0)
+(declare-sort S11 0)
+(declare-sort S12 0)
+(declare-sort S13 0)
+(declare-sort S14 0)
+(declare-sort S15 0)
+(declare-sort S16 0)
+(declare-sort S17 0)
+(declare-sort S18 0)
+(declare-sort S19 0)
+(declare-sort S20 0)
+(declare-sort S21 0)
+(declare-sort S22 0)
+(declare-sort S23 0)
+(declare-sort S24 0)
+(declare-sort S25 0)
+(declare-sort S26 0)
+(declare-sort S27 0)
+(declare-sort S28 0)
+(declare-sort S29 0)
+(declare-sort S30 0)
+(declare-sort S31 0)
+(declare-sort S32 0)
+(declare-sort S33 0)
+(declare-sort S34 0)
+(declare-sort S35 0)
+(declare-sort S36 0)
+(declare-sort S37 0)
+(declare-sort S38 0)
+(declare-sort S39 0)
+(declare-sort S40 0)
+(declare-sort S41 0)
+(declare-sort S42 0)
+(declare-sort S43 0)
+(declare-sort S44 0)
+(declare-sort S45 0)
+(declare-sort S46 0)
+(declare-sort S47 0)
+(declare-sort S48 0)
+(declare-sort S49 0)
+(declare-sort S50 0)
+(declare-sort S51 0)
+(declare-sort S52 0)
+(declare-sort S53 0)
+(declare-sort S54 0)
+(declare-sort S55 0)
+(declare-sort S56 0)
+(declare-sort S57 0)
+(declare-sort S58 0)
+(declare-sort S59 0)
+(declare-sort S60 0)
+(declare-sort S61 0)
+(declare-sort S62 0)
+(declare-sort S63 0)
+(declare-sort S64 0)
+(declare-sort S65 0)
+(declare-sort S66 0)
+(declare-sort S67 0)
+(declare-sort S68 0)
+(declare-sort S69 0)
+(declare-sort S70 0)
+(declare-sort S71 0)
+(declare-sort S72 0)
+(declare-sort S73 0)
+(declare-sort S74 0)
+(declare-sort S75 0)
+(declare-sort S76 0)
+(declare-sort S77 0)
+(declare-sort S78 0)
+(declare-sort S79 0)
+(declare-sort S80 0)
+(declare-sort S81 0)
+(declare-sort S82 0)
+(declare-sort S83 0)
+(declare-sort S84 0)
+(declare-sort S85 0)
+(declare-sort S86 0)
+(declare-sort S87 0)
+(declare-sort S88 0)
+(declare-sort S89 0)
+(declare-sort S90 0)
+(declare-sort S91 0)
+(declare-sort S92 0)
+(declare-sort S93 0)
+(declare-fun f1 () S1)
+(declare-fun f2 () S1)
+(declare-fun f3 (Int) S1)
+(declare-fun f4 () Int)
+(declare-fun f5 () Int)
+(declare-fun f6 (S2 S3) Int)
+(declare-fun f7 () S2)
+(declare-fun f8 (S4 Int) S3)
+(declare-fun f9 (S5 Int) S4)
+(declare-fun f10 () S5)
+(declare-fun f11 (S6 S3) S1)
+(declare-fun f12 (S7 S8) S1)
+(declare-fun f13 (S10 S9) S8)
+(declare-fun f14 (S11 S9) S10)
+(declare-fun f15 () S11)
+(declare-fun f16 (S12 S13) S1)
+(declare-fun f17 (S15 S14) S13)
+(declare-fun f18 (S16 S14) S15)
+(declare-fun f19 () S16)
+(declare-fun f20 (S17 S14) S1)
+(declare-fun f21 (S18 S3) S14)
+(declare-fun f22 (S19 Int) S18)
+(declare-fun f23 () S19)
+(declare-fun f24 (S20 S21) S1)
+(declare-fun f25 (S23 S22) S21)
+(declare-fun f26 (S24 S22) S23)
+(declare-fun f27 () S24)
+(declare-fun f28 (S25 S22) S1)
+(declare-fun f29 (S26 Int) S22)
+(declare-fun f30 (S27 S3) S26)
+(declare-fun f31 () S27)
+(declare-fun f32 (S28 S9) S1)
+(declare-fun f33 (S29 S3) S9)
+(declare-fun f34 (S30 S3) S29)
+(declare-fun f35 () S30)
+(declare-fun f36 (S31 Int) S1)
+(declare-fun f37 (S32 Int) S31)
+(declare-fun f38 (S6) S32)
+(declare-fun f39 (S3 S6) S1)
+(declare-fun f40 (S33 S9) S28)
+(declare-fun f41 (S7) S33)
+(declare-fun f42 (S8 S7) S1)
+(declare-fun f43 (S34 S14) S17)
+(declare-fun f44 (S12) S34)
+(declare-fun f45 (S13 S12) S1)
+(declare-fun f46 (S35 S22) S25)
+(declare-fun f47 (S20) S35)
+(declare-fun f48 (S21 S20) S1)
+(declare-fun f49 (S36 Int) S6)
+(declare-fun f50 (S17) S36)
+(declare-fun f51 (S14 S17) S1)
+(declare-fun f52 (S37 S3) S31)
+(declare-fun f53 (S25) S37)
+(declare-fun f54 (S22 S25) S1)
+(declare-fun f55 (S38 S3) S6)
+(declare-fun f56 (S28) S38)
+(declare-fun f57 (S9 S28) S1)
+(declare-fun f58 (S39 S36) S28)
+(declare-fun f59 (S31) S39)
+(declare-fun f60 (S40 S38) S20)
+(declare-fun f61 (S6) S40)
+(declare-fun f62 (S41 S9) S7)
+(declare-fun f63 (S42 S43) S1)
+(declare-fun f64 (S8 S8) S42)
+(declare-fun f65 (S44 S41) S43)
+(declare-fun f66 (S28) S44)
+(declare-fun f67 (S45 S14) S12)
+(declare-fun f68 (S46 S47) S1)
+(declare-fun f69 (S13 S13) S46)
+(declare-fun f70 (S48 S45) S47)
+(declare-fun f71 (S17) S48)
+(declare-fun f72 (S49 S22) S20)
+(declare-fun f73 (S50 S51) S1)
+(declare-fun f74 (S21 S21) S50)
+(declare-fun f75 (S52 S49) S51)
+(declare-fun f76 (S25) S52)
+(declare-fun f77 (S53 S3) S28)
+(declare-fun f78 (S54 S53) S7)
+(declare-fun f79 (S6) S54)
+(declare-fun f80 (S55 Int) S28)
+(declare-fun f81 (S56 S55) S12)
+(declare-fun f82 (S31) S56)
+(declare-fun f83 (S6) S1)
+(declare-fun f84 (S7) S1)
+(declare-fun f85 (S12) S1)
+(declare-fun f86 (S20) S1)
+(declare-fun f87 (S28) S1)
+(declare-fun f88 (S6) S1)
+(declare-fun f89 (S7) S1)
+(declare-fun f90 (S12) S1)
+(declare-fun f91 (S20) S1)
+(declare-fun f92 (S28) S1)
+(declare-fun f93 (S6) S32)
+(declare-fun f94 (S7) S33)
+(declare-fun f95 (S12) S34)
+(declare-fun f96 (S17) S36)
+(declare-fun f97 (S20) S35)
+(declare-fun f98 (S25) S37)
+(declare-fun f99 (S28) S38)
+(declare-fun f100 (S57 S58) S1)
+(declare-fun f101 (S59 S59) S57)
+(declare-fun f102 (S9 Int) S59)
+(declare-fun f103 (S7 S6) S58)
+(declare-fun f104 (S60 S61) S1)
+(declare-fun f105 (S62 S62) S60)
+(declare-fun f106 (S14 Int) S62)
+(declare-fun f107 (S12 S6) S61)
+(declare-fun f108 (S63 S64) S1)
+(declare-fun f109 (S65 S65) S63)
+(declare-fun f110 (S22 Int) S65)
+(declare-fun f111 (S20 S6) S64)
+(declare-fun f112 (S66 S6) S20)
+(declare-fun f113 (S28) S66)
+(declare-fun f114 (S67 S68) S1)
+(declare-fun f115 (S69 S69) S67)
+(declare-fun f116 (Int S9) S69)
+(declare-fun f117 (S6 S7) S68)
+(declare-fun f118 (S70 S71) S1)
+(declare-fun f119 (S72 S72) S70)
+(declare-fun f120 (Int S14) S72)
+(declare-fun f121 (S6 S12) S71)
+(declare-fun f122 (S73 S74) S1)
+(declare-fun f123 (S75 S75) S73)
+(declare-fun f124 (Int S22) S75)
+(declare-fun f125 (S6 S20) S74)
+(declare-fun f126 (S76 S28) S12)
+(declare-fun f127 (S6) S76)
+(declare-fun f128 (S77 S6) S28)
+(declare-fun f129 (S6) S77)
+(declare-fun f130 (S78 S7) S43)
+(declare-fun f131 (S7) S78)
+(declare-fun f132 (S79 S12) S47)
+(declare-fun f133 (S12) S79)
+(declare-fun f134 (S80 S20) S51)
+(declare-fun f135 (S20) S80)
+(declare-fun f136 (S81 S28) S7)
+(declare-fun f137 (S28) S81)
+(declare-fun f138 (S82) S6)
+(declare-fun f139 (S83 S84) Int)
+(declare-fun f140 () S83)
+(declare-fun f141 (S82 Int) S84)
+(declare-fun f142 (S85) S7)
+(declare-fun f143 (S85 S9) S84)
+(declare-fun f144 (S86) S12)
+(declare-fun f145 (S86 S14) S84)
+(declare-fun f146 (S87) S20)
+(declare-fun f147 (S87 S22) S84)
+(declare-fun f148 (S88) S28)
+(declare-fun f149 (S88 S3) S84)
+(declare-fun f150 (S89 S6) S6)
+(declare-fun f151 (S82) S89)
+(declare-fun f152 (S90 S7) S7)
+(declare-fun f153 (S85) S90)
+(declare-fun f154 (S91 S12) S12)
+(declare-fun f155 (S86) S91)
+(declare-fun f156 (S92 S20) S20)
+(declare-fun f157 (S87) S92)
+(declare-fun f158 (S93 S28) S28)
+(declare-fun f159 (S88) S93)
+(declare-fun f160 (S31 S6) S1)
+(declare-fun f161 (Int S31) S1)
+(declare-fun f162 (S17 S12) S1)
+(declare-fun f163 (S25 S20) S1)
+(declare-fun f164 (S7 S43) S1)
+(declare-fun f165 (S12 S47) S1)
+(declare-fun f166 (S20 S51) S1)
+(declare-fun f167 (S28 S7) S1)
+(declare-fun f168 (S6 S28) S1)
+(declare-fun f169 () S82)
+(assert (not (= f1 f2)))
+(assert (not (= (f3 (* f4 f5)) f1)))
+(assert (= (f3 f4) f1))
+(assert (= (f3 f5) f1))
+(assert (forall ((?v0 Int)) (= (= (f3 ?v0) f1) (exists ((?v1 Int) (?v2 Int)) (= (f6 f7 (f8 (f9 f10 ?v1) ?v2)) ?v0)))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 Int) (?v3 Int)) (= (* (f6 f7 (f8 (f9 f10 ?v0) ?v1)) (f6 f7 (f8 (f9 f10 ?v2) ?v3))) (f6 f7 (f8 (f9 f10 (+ (* ?v0 ?v2) (* ?v1 ?v3))) (- (* ?v0 ?v3) (* ?v1 ?v2)))))))
+(assert (forall ((?v0 S6)) (= (forall ((?v1 S3)) (= (f11 ?v0 ?v1) f1)) (forall ((?v1 Int) (?v2 Int)) (= (f11 ?v0 (f8 (f9 f10 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S7)) (= (forall ((?v1 S8)) (= (f12 ?v0 ?v1) f1)) (forall ((?v1 S9) (?v2 S9)) (= (f12 ?v0 (f13 (f14 f15 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S12)) (= (forall ((?v1 S13)) (= (f16 ?v0 ?v1) f1)) (forall ((?v1 S14) (?v2 S14)) (= (f16 ?v0 (f17 (f18 f19 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S17)) (= (forall ((?v1 S14)) (= (f20 ?v0 ?v1) f1)) (forall ((?v1 Int) (?v2 S3)) (= (f20 ?v0 (f21 (f22 f23 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S20)) (= (forall ((?v1 S21)) (= (f24 ?v0 ?v1) f1)) (forall ((?v1 S22) (?v2 S22)) (= (f24 ?v0 (f25 (f26 f27 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S25)) (= (forall ((?v1 S22)) (= (f28 ?v0 ?v1) f1)) (forall ((?v1 S3) (?v2 Int)) (= (f28 ?v0 (f29 (f30 f31 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S28)) (= (forall ((?v1 S9)) (= (f32 ?v0 ?v1) f1)) (forall ((?v1 S3) (?v2 S3)) (= (f32 ?v0 (f33 (f34 f35 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 Int) (?v3 Int)) (= (= (f8 (f9 f10 ?v0) ?v1) (f8 (f9 f10 ?v2) ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3)))))
+(assert (forall ((?v0 S9) (?v1 S9) (?v2 S9) (?v3 S9)) (= (= (f13 (f14 f15 ?v0) ?v1) (f13 (f14 f15 ?v2) ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3)))))
+(assert (forall ((?v0 S14) (?v1 S14) (?v2 S14) (?v3 S14)) (= (= (f17 (f18 f19 ?v0) ?v1) (f17 (f18 f19 ?v2) ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3)))))
+(assert (forall ((?v0 Int) (?v1 S3) (?v2 Int) (?v3 S3)) (= (= (f21 (f22 f23 ?v0) ?v1) (f21 (f22 f23 ?v2) ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3)))))
+(assert (forall ((?v0 S22) (?v1 S22) (?v2 S22) (?v3 S22)) (= (= (f25 (f26 f27 ?v0) ?v1) (f25 (f26 f27 ?v2) ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3)))))
+(assert (forall ((?v0 S3) (?v1 Int) (?v2 S3) (?v3 Int)) (= (= (f29 (f30 f31 ?v0) ?v1) (f29 (f30 f31 ?v2) ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3)))))
+(assert (forall ((?v0 S3) (?v1 S3) (?v2 S3) (?v3 S3)) (= (= (f33 (f34 f35 ?v0) ?v1) (f33 (f34 f35 ?v2) ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3)))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 Int) (?v3 Int)) (=> (= (f8 (f9 f10 ?v0) ?v1) (f8 (f9 f10 ?v2) ?v3)) (=> (=> (= ?v0 ?v2) (=> (= ?v1 ?v3) false)) false))))
+(assert (forall ((?v0 S9) (?v1 S9) (?v2 S9) (?v3 S9)) (=> (= (f13 (f14 f15 ?v0) ?v1) (f13 (f14 f15 ?v2) ?v3)) (=> (=> (= ?v0 ?v2) (=> (= ?v1 ?v3) false)) false))))
+(assert (forall ((?v0 S14) (?v1 S14) (?v2 S14) (?v3 S14)) (=> (= (f17 (f18 f19 ?v0) ?v1) (f17 (f18 f19 ?v2) ?v3)) (=> (=> (= ?v0 ?v2) (=> (= ?v1 ?v3) false)) false))))
+(assert (forall ((?v0 Int) (?v1 S3) (?v2 Int) (?v3 S3)) (=> (= (f21 (f22 f23 ?v0) ?v1) (f21 (f22 f23 ?v2) ?v3)) (=> (=> (= ?v0 ?v2) (=> (= ?v1 ?v3) false)) false))))
+(assert (forall ((?v0 S22) (?v1 S22) (?v2 S22) (?v3 S22)) (=> (= (f25 (f26 f27 ?v0) ?v1) (f25 (f26 f27 ?v2) ?v3)) (=> (=> (= ?v0 ?v2) (=> (= ?v1 ?v3) false)) false))))
+(assert (forall ((?v0 S3) (?v1 Int) (?v2 S3) (?v3 Int)) (=> (= (f29 (f30 f31 ?v0) ?v1) (f29 (f30 f31 ?v2) ?v3)) (=> (=> (= ?v0 ?v2) (=> (= ?v1 ?v3) false)) false))))
+(assert (forall ((?v0 S3) (?v1 S3) (?v2 S3) (?v3 S3)) (=> (= (f33 (f34 f35 ?v0) ?v1) (f33 (f34 f35 ?v2) ?v3)) (=> (=> (= ?v0 ?v2) (=> (= ?v1 ?v3) false)) false))))
+(assert (forall ((?v0 S6) (?v1 Int) (?v2 Int)) (= (= (f36 (f37 (f38 ?v0) ?v1) ?v2) f1) (= (f39 (f8 (f9 f10 ?v1) ?v2) ?v0) f1))))
+(assert (forall ((?v0 S7) (?v1 S9) (?v2 S9)) (= (= (f32 (f40 (f41 ?v0) ?v1) ?v2) f1) (= (f42 (f13 (f14 f15 ?v1) ?v2) ?v0) f1))))
+(assert (forall ((?v0 S12) (?v1 S14) (?v2 S14)) (= (= (f20 (f43 (f44 ?v0) ?v1) ?v2) f1) (= (f45 (f17 (f18 f19 ?v1) ?v2) ?v0) f1))))
+(assert (forall ((?v0 S20) (?v1 S22) (?v2 S22)) (= (= (f28 (f46 (f47 ?v0) ?v1) ?v2) f1) (= (f48 (f25 (f26 f27 ?v1) ?v2) ?v0) f1))))
+(assert (forall ((?v0 S17) (?v1 Int) (?v2 S3)) (= (= (f11 (f49 (f50 ?v0) ?v1) ?v2) f1) (= (f51 (f21 (f22 f23 ?v1) ?v2) ?v0) f1))))
+(assert (forall ((?v0 S25) (?v1 S3) (?v2 Int)) (= (= (f36 (f52 (f53 ?v0) ?v1) ?v2) f1) (= (f54 (f29 (f30 f31 ?v1) ?v2) ?v0) f1))))
+(assert (forall ((?v0 S28) (?v1 S3) (?v2 S3)) (= (= (f11 (f55 (f56 ?v0) ?v1) ?v2) f1) (= (f57 (f33 (f34 f35 ?v1) ?v2) ?v0) f1))))
+(assert (forall ((?v0 S31) (?v1 Int) (?v2 Int) (?v3 Int) (?v4 S36)) (let ((?v_0 (f9 f10 ?v1))) (=> (= (f36 ?v0 ?v1) f1) (=> (= (f39 (f8 (f9 f10 ?v2) ?v3) (f49 ?v4 ?v1)) f1) (= (f57 (f33 (f34 f35 (f8 ?v_0 ?v2)) (f8 ?v_0 ?v3)) (f58 (f59 ?v0) ?v4)) f1))))))
+(assert (forall ((?v0 S6) (?v1 S3) (?v2 Int) (?v3 Int) (?v4 S38)) (let ((?v_0 (f30 f31 ?v1))) (=> (= (f11 ?v0 ?v1) f1) (=> (= (f39 (f8 (f9 f10 ?v2) ?v3) (f55 ?v4 ?v1)) f1) (= (f48 (f25 (f26 f27 (f29 ?v_0 ?v2)) (f29 ?v_0 ?v3)) (f60 (f61 ?v0) ?v4)) f1))))))
+(assert (forall ((?v0 S28) (?v1 S9) (?v2 S9) (?v3 S9) (?v4 S41)) (let ((?v_0 (f14 f15 ?v1))) (=> (= (f32 ?v0 ?v1) f1) (=> (= (f42 (f13 (f14 f15 ?v2) ?v3) (f62 ?v4 ?v1)) f1) (= (f63 (f64 (f13 ?v_0 ?v2) (f13 ?v_0 ?v3)) (f65 (f66 ?v0) ?v4)) f1))))))
+(assert (forall ((?v0 S17) (?v1 S14) (?v2 S14) (?v3 S14) (?v4 S45)) (let ((?v_0 (f18 f19 ?v1))) (=> (= (f20 ?v0 ?v1) f1) (=> (= (f45 (f17 (f18 f19 ?v2) ?v3) (f67 ?v4 ?v1)) f1) (= (f68 (f69 (f17 ?v_0 ?v2) (f17 ?v_0 ?v3)) (f70 (f71 ?v0) ?v4)) f1))))))
+(assert (forall ((?v0 S25) (?v1 S22) (?v2 S22) (?v3 S22) (?v4 S49)) (let ((?v_0 (f26 f27 ?v1))) (=> (= (f28 ?v0 ?v1) f1) (=> (= (f48 (f25 (f26 f27 ?v2) ?v3) (f72 ?v4 ?v1)) f1) (= (f73 (f74 (f25 ?v_0 ?v2) (f25 ?v_0 ?v3)) (f75 (f76 ?v0) ?v4)) f1))))))
+(assert (forall ((?v0 S6) (?v1 S3) (?v2 S3) (?v3 S3) (?v4 S53)) (let ((?v_0 (f34 f35 ?v1))) (=> (= (f11 ?v0 ?v1) f1) (=> (= (f57 (f33 (f34 f35 ?v2) ?v3) (f77 ?v4 ?v1)) f1) (= (f42 (f13 (f14 f15 (f33 ?v_0 ?v2)) (f33 ?v_0 ?v3)) (f78 (f79 ?v0) ?v4)) f1))))))
+(assert (forall ((?v0 S31) (?v1 Int) (?v2 S3) (?v3 S3) (?v4 S55)) (let ((?v_0 (f22 f23 ?v1))) (=> (= (f36 ?v0 ?v1) f1) (=> (= (f57 (f33 (f34 f35 ?v2) ?v3) (f80 ?v4 ?v1)) f1) (= (f45 (f17 (f18 f19 (f21 ?v_0 ?v2)) (f21 ?v_0 ?v3)) (f81 (f82 ?v0) ?v4)) f1))))))
+(assert (forall ((?v0 S6)) (= (= (f83 ?v0) f1) (forall ((?v1 Int)) (= (f39 (f8 (f9 f10 ?v1) ?v1) ?v0) f1)))))
+(assert (forall ((?v0 S7)) (= (= (f84 ?v0) f1) (forall ((?v1 S9)) (= (f42 (f13 (f14 f15 ?v1) ?v1) ?v0) f1)))))
+(assert (forall ((?v0 S12)) (= (= (f85 ?v0) f1) (forall ((?v1 S14)) (= (f45 (f17 (f18 f19 ?v1) ?v1) ?v0) f1)))))
+(assert (forall ((?v0 S20)) (= (= (f86 ?v0) f1) (forall ((?v1 S22)) (= (f48 (f25 (f26 f27 ?v1) ?v1) ?v0) f1)))))
+(assert (forall ((?v0 S28)) (= (= (f87 ?v0) f1) (forall ((?v1 S3)) (= (f57 (f33 (f34 f35 ?v1) ?v1) ?v0) f1)))))
+(assert (forall ((?v0 S6)) (= (= (f88 ?v0) f1) (forall ((?v1 Int)) (not (= (f39 (f8 (f9 f10 ?v1) ?v1) ?v0) f1))))))
+(assert (forall ((?v0 S7)) (= (= (f89 ?v0) f1) (forall ((?v1 S9)) (not (= (f42 (f13 (f14 f15 ?v1) ?v1) ?v0) f1))))))
+(assert (forall ((?v0 S12)) (= (= (f90 ?v0) f1) (forall ((?v1 S14)) (not (= (f45 (f17 (f18 f19 ?v1) ?v1) ?v0) f1))))))
+(assert (forall ((?v0 S20)) (= (= (f91 ?v0) f1) (forall ((?v1 S22)) (not (= (f48 (f25 (f26 f27 ?v1) ?v1) ?v0) f1))))))
+(assert (forall ((?v0 S28)) (= (= (f92 ?v0) f1) (forall ((?v1 S3)) (not (= (f57 (f33 (f34 f35 ?v1) ?v1) ?v0) f1))))))
+(assert (forall ((?v0 S6)) (= (exists ((?v1 S3)) (= (f11 ?v0 ?v1) f1)) (exists ((?v1 Int) (?v2 Int)) (= (f11 ?v0 (f8 (f9 f10 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S7)) (= (exists ((?v1 S8)) (= (f12 ?v0 ?v1) f1)) (exists ((?v1 S9) (?v2 S9)) (= (f12 ?v0 (f13 (f14 f15 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S12)) (= (exists ((?v1 S13)) (= (f16 ?v0 ?v1) f1)) (exists ((?v1 S14) (?v2 S14)) (= (f16 ?v0 (f17 (f18 f19 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S17)) (= (exists ((?v1 S14)) (= (f20 ?v0 ?v1) f1)) (exists ((?v1 Int) (?v2 S3)) (= (f20 ?v0 (f21 (f22 f23 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S20)) (= (exists ((?v1 S21)) (= (f24 ?v0 ?v1) f1)) (exists ((?v1 S22) (?v2 S22)) (= (f24 ?v0 (f25 (f26 f27 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S25)) (= (exists ((?v1 S22)) (= (f28 ?v0 ?v1) f1)) (exists ((?v1 S3) (?v2 Int)) (= (f28 ?v0 (f29 (f30 f31 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S28)) (= (exists ((?v1 S9)) (= (f32 ?v0 ?v1) f1)) (exists ((?v1 S3) (?v2 S3)) (= (f32 ?v0 (f33 (f34 f35 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S8)) (=> (forall ((?v1 S9) (?v2 S3) (?v3 Int) (?v4 Int)) (=> (= ?v0 (f13 (f14 f15 ?v1) (f33 (f34 f35 ?v2) (f8 (f9 f10 ?v3) ?v4)))) false)) false)))
+(assert (forall ((?v0 S13)) (=> (forall ((?v1 S14) (?v2 Int) (?v3 Int) (?v4 Int)) (=> (= ?v0 (f17 (f18 f19 ?v1) (f21 (f22 f23 ?v2) (f8 (f9 f10 ?v3) ?v4)))) false)) false)))
+(assert (forall ((?v0 S7) (?v1 S8)) (=> (forall ((?v2 S9) (?v3 S3) (?v4 Int) (?v5 Int)) (= (f12 ?v0 (f13 (f14 f15 ?v2) (f33 (f34 f35 ?v3) (f8 (f9 f10 ?v4) ?v5)))) f1)) (= (f12 ?v0 ?v1) f1))))
+(assert (forall ((?v0 S12) (?v1 S13)) (=> (forall ((?v2 S14) (?v3 Int) (?v4 Int) (?v5 Int)) (= (f16 ?v0 (f17 (f18 f19 ?v2) (f21 (f22 f23 ?v3) (f8 (f9 f10 ?v4) ?v5)))) f1)) (= (f16 ?v0 ?v1) f1))))
+(assert (forall ((?v0 S9)) (=> (forall ((?v1 S3) (?v2 Int) (?v3 Int)) (=> (= ?v0 (f33 (f34 f35 ?v1) (f8 (f9 f10 ?v2) ?v3))) false)) false)))
+(assert (forall ((?v0 S13)) (=> (forall ((?v1 S14) (?v2 Int) (?v3 S3)) (=> (= ?v0 (f17 (f18 f19 ?v1) (f21 (f22 f23 ?v2) ?v3))) false)) false)))
+(assert (forall ((?v0 S14)) (=> (forall ((?v1 Int) (?v2 Int) (?v3 Int)) (=> (= ?v0 (f21 (f22 f23 ?v1) (f8 (f9 f10 ?v2) ?v3))) false)) false)))
+(assert (forall ((?v0 S21)) (=> (forall ((?v1 S22) (?v2 S3) (?v3 Int)) (=> (= ?v0 (f25 (f26 f27 ?v1) (f29 (f30 f31 ?v2) ?v3))) false)) false)))
+(assert (forall ((?v0 S8)) (=> (forall ((?v1 S9) (?v2 S3) (?v3 S3)) (=> (= ?v0 (f13 (f14 f15 ?v1) (f33 (f34 f35 ?v2) ?v3))) false)) false)))
+(assert (forall ((?v0 S28) (?v1 S9)) (=> (forall ((?v2 S3) (?v3 Int) (?v4 Int)) (= (f32 ?v0 (f33 (f34 f35 ?v2) (f8 (f9 f10 ?v3) ?v4))) f1)) (= (f32 ?v0 ?v1) f1))))
+(assert (forall ((?v0 S12) (?v1 S13)) (=> (forall ((?v2 S14) (?v3 Int) (?v4 S3)) (= (f16 ?v0 (f17 (f18 f19 ?v2) (f21 (f22 f23 ?v3) ?v4))) f1)) (= (f16 ?v0 ?v1) f1))))
+(assert (forall ((?v0 S17) (?v1 S14)) (=> (forall ((?v2 Int) (?v3 Int) (?v4 Int)) (= (f20 ?v0 (f21 (f22 f23 ?v2) (f8 (f9 f10 ?v3) ?v4))) f1)) (= (f20 ?v0 ?v1) f1))))
+(assert (forall ((?v0 S20) (?v1 S21)) (=> (forall ((?v2 S22) (?v3 S3) (?v4 Int)) (= (f24 ?v0 (f25 (f26 f27 ?v2) (f29 (f30 f31 ?v3) ?v4))) f1)) (= (f24 ?v0 ?v1) f1))))
+(assert (forall ((?v0 S7) (?v1 S8)) (=> (forall ((?v2 S9) (?v3 S3) (?v4 S3)) (= (f12 ?v0 (f13 (f14 f15 ?v2) (f33 (f34 f35 ?v3) ?v4))) f1)) (= (f12 ?v0 ?v1) f1))))
+(assert (forall ((?v0 S3)) (=> (forall ((?v1 Int) (?v2 Int)) (=> (= ?v0 (f8 (f9 f10 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S8)) (=> (forall ((?v1 S9) (?v2 S9)) (=> (= ?v0 (f13 (f14 f15 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S13)) (=> (forall ((?v1 S14) (?v2 S14)) (=> (= ?v0 (f17 (f18 f19 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S14)) (=> (forall ((?v1 Int) (?v2 S3)) (=> (= ?v0 (f21 (f22 f23 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S21)) (=> (forall ((?v1 S22) (?v2 S22)) (=> (= ?v0 (f25 (f26 f27 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S22)) (=> (forall ((?v1 S3) (?v2 Int)) (=> (= ?v0 (f29 (f30 f31 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S9)) (=> (forall ((?v1 S3) (?v2 S3)) (=> (= ?v0 (f33 (f34 f35 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S3)) (=> (forall ((?v1 Int) (?v2 Int)) (=> (= ?v0 (f8 (f9 f10 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S8)) (=> (forall ((?v1 S9) (?v2 S9)) (=> (= ?v0 (f13 (f14 f15 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S13)) (=> (forall ((?v1 S14) (?v2 S14)) (=> (= ?v0 (f17 (f18 f19 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S14)) (=> (forall ((?v1 Int) (?v2 S3)) (=> (= ?v0 (f21 (f22 f23 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S21)) (=> (forall ((?v1 S22) (?v2 S22)) (=> (= ?v0 (f25 (f26 f27 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S22)) (=> (forall ((?v1 S3) (?v2 Int)) (=> (= ?v0 (f29 (f30 f31 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S9)) (=> (forall ((?v1 S3) (?v2 S3)) (=> (= ?v0 (f33 (f34 f35 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S6) (?v1 Int) (?v2 Int)) (=> (= (f11 ?v0 (f8 (f9 f10 ?v1) ?v2)) f1) (= (f36 (f37 (f93 ?v0) ?v1) ?v2) f1))))
+(assert (forall ((?v0 S7) (?v1 S9) (?v2 S9)) (=> (= (f12 ?v0 (f13 (f14 f15 ?v1) ?v2)) f1) (= (f32 (f40 (f94 ?v0) ?v1) ?v2) f1))))
+(assert (forall ((?v0 S12) (?v1 S14) (?v2 S14)) (=> (= (f16 ?v0 (f17 (f18 f19 ?v1) ?v2)) f1) (= (f20 (f43 (f95 ?v0) ?v1) ?v2) f1))))
+(assert (forall ((?v0 S17) (?v1 Int) (?v2 S3)) (=> (= (f20 ?v0 (f21 (f22 f23 ?v1) ?v2)) f1) (= (f11 (f49 (f96 ?v0) ?v1) ?v2) f1))))
+(assert (forall ((?v0 S20) (?v1 S22) (?v2 S22)) (=> (= (f24 ?v0 (f25 (f26 f27 ?v1) ?v2)) f1) (= (f28 (f46 (f97 ?v0) ?v1) ?v2) f1))))
+(assert (forall ((?v0 S25) (?v1 S3) (?v2 Int)) (=> (= (f28 ?v0 (f29 (f30 f31 ?v1) ?v2)) f1) (= (f36 (f52 (f98 ?v0) ?v1) ?v2) f1))))
+(assert (forall ((?v0 S28) (?v1 S3) (?v2 S3)) (=> (= (f32 ?v0 (f33 (f34 f35 ?v1) ?v2)) f1) (= (f11 (f55 (f99 ?v0) ?v1) ?v2) f1))))
+(assert (forall ((?v0 S9) (?v1 Int) (?v2 S9) (?v3 Int) (?v4 S7) (?v5 S6)) (= (= (f100 (f101 (f102 ?v0 ?v1) (f102 ?v2 ?v3)) (f103 ?v4 ?v5)) f1) (or (= (f42 (f13 (f14 f15 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f39 (f8 (f9 f10 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 S14) (?v1 Int) (?v2 S14) (?v3 Int) (?v4 S12) (?v5 S6)) (= (= (f104 (f105 (f106 ?v0 ?v1) (f106 ?v2 ?v3)) (f107 ?v4 ?v5)) f1) (or (= (f45 (f17 (f18 f19 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f39 (f8 (f9 f10 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 S22) (?v1 Int) (?v2 S22) (?v3 Int) (?v4 S20) (?v5 S6)) (= (= (f108 (f109 (f110 ?v0 ?v1) (f110 ?v2 ?v3)) (f111 ?v4 ?v5)) f1) (or (= (f48 (f25 (f26 f27 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f39 (f8 (f9 f10 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 S3) (?v1 Int) (?v2 S3) (?v3 Int) (?v4 S28) (?v5 S6)) (= (= (f48 (f25 (f26 f27 (f29 (f30 f31 ?v0) ?v1)) (f29 (f30 f31 ?v2) ?v3)) (f112 (f113 ?v4) ?v5)) f1) (or (= (f57 (f33 (f34 f35 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f39 (f8 (f9 f10 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 Int) (?v1 S9) (?v2 Int) (?v3 S9) (?v4 S6) (?v5 S7)) (= (= (f114 (f115 (f116 ?v0 ?v1) (f116 ?v2 ?v3)) (f117 ?v4 ?v5)) f1) (or (= (f39 (f8 (f9 f10 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f42 (f13 (f14 f15 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 Int) (?v1 S14) (?v2 Int) (?v3 S14) (?v4 S6) (?v5 S12)) (= (= (f118 (f119 (f120 ?v0 ?v1) (f120 ?v2 ?v3)) (f121 ?v4 ?v5)) f1) (or (= (f39 (f8 (f9 f10 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f45 (f17 (f18 f19 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 Int) (?v1 S22) (?v2 Int) (?v3 S22) (?v4 S6) (?v5 S20)) (= (= (f122 (f123 (f124 ?v0 ?v1) (f124 ?v2 ?v3)) (f125 ?v4 ?v5)) f1) (or (= (f39 (f8 (f9 f10 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f48 (f25 (f26 f27 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 Int) (?v1 S3) (?v2 Int) (?v3 S3) (?v4 S6) (?v5 S28)) (= (= (f45 (f17 (f18 f19 (f21 (f22 f23 ?v0) ?v1)) (f21 (f22 f23 ?v2) ?v3)) (f126 (f127 ?v4) ?v5)) f1) (or (= (f39 (f8 (f9 f10 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f57 (f33 (f34 f35 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 Int) (?v3 Int) (?v4 S6) (?v5 S6)) (let ((?v_0 (f9 f10 ?v0))) (= (= (f57 (f33 (f34 f35 (f8 ?v_0 ?v1)) (f8 (f9 f10 ?v2) ?v3)) (f128 (f129 ?v4) ?v5)) f1) (or (= (f39 (f8 ?v_0 ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f39 (f8 (f9 f10 ?v1) ?v3) ?v5) f1)))))))
+(assert (forall ((?v0 S9) (?v1 S9) (?v2 S9) (?v3 S9) (?v4 S7) (?v5 S7)) (let ((?v_0 (f14 f15 ?v0))) (= (= (f63 (f64 (f13 ?v_0 ?v1) (f13 (f14 f15 ?v2) ?v3)) (f130 (f131 ?v4) ?v5)) f1) (or (= (f42 (f13 ?v_0 ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f42 (f13 (f14 f15 ?v1) ?v3) ?v5) f1)))))))
+(assert (forall ((?v0 S14) (?v1 S14) (?v2 S14) (?v3 S14) (?v4 S12) (?v5 S12)) (let ((?v_0 (f18 f19 ?v0))) (= (= (f68 (f69 (f17 ?v_0 ?v1) (f17 (f18 f19 ?v2) ?v3)) (f132 (f133 ?v4) ?v5)) f1) (or (= (f45 (f17 ?v_0 ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f45 (f17 (f18 f19 ?v1) ?v3) ?v5) f1)))))))
+(assert (forall ((?v0 S22) (?v1 S22) (?v2 S22) (?v3 S22) (?v4 S20) (?v5 S20)) (let ((?v_0 (f26 f27 ?v0))) (= (= (f73 (f74 (f25 ?v_0 ?v1) (f25 (f26 f27 ?v2) ?v3)) (f134 (f135 ?v4) ?v5)) f1) (or (= (f48 (f25 ?v_0 ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f48 (f25 (f26 f27 ?v1) ?v3) ?v5) f1)))))))
+(assert (forall ((?v0 S3) (?v1 S3) (?v2 S3) (?v3 S3) (?v4 S28) (?v5 S28)) (let ((?v_0 (f34 f35 ?v0))) (= (= (f42 (f13 (f14 f15 (f33 ?v_0 ?v1)) (f33 (f34 f35 ?v2) ?v3)) (f136 (f137 ?v4) ?v5)) f1) (or (= (f57 (f33 ?v_0 ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f57 (f33 (f34 f35 ?v1) ?v3) ?v5) f1)))))))
+(assert (forall ((?v0 S6) (?v1 Int) (?v2 Int)) (= (= (f36 (f37 (f93 ?v0) ?v1) ?v2) f1) (= (f11 ?v0 (f8 (f9 f10 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S28) (?v1 S3) (?v2 S3)) (= (= (f11 (f55 (f99 ?v0) ?v1) ?v2) f1) (= (f32 ?v0 (f33 (f34 f35 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S6) (?v1 Int) (?v2 Int)) (=> (= (f36 (f37 (f93 ?v0) ?v1) ?v2) f1) (= (f11 ?v0 (f8 (f9 f10 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S7) (?v1 S9) (?v2 S9)) (=> (= (f32 (f40 (f94 ?v0) ?v1) ?v2) f1) (= (f12 ?v0 (f13 (f14 f15 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S12) (?v1 S14) (?v2 S14)) (=> (= (f20 (f43 (f95 ?v0) ?v1) ?v2) f1) (= (f16 ?v0 (f17 (f18 f19 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S17) (?v1 Int) (?v2 S3)) (=> (= (f11 (f49 (f96 ?v0) ?v1) ?v2) f1) (= (f20 ?v0 (f21 (f22 f23 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S20) (?v1 S22) (?v2 S22)) (=> (= (f28 (f46 (f97 ?v0) ?v1) ?v2) f1) (= (f24 ?v0 (f25 (f26 f27 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S25) (?v1 S3) (?v2 Int)) (=> (= (f36 (f52 (f98 ?v0) ?v1) ?v2) f1) (= (f28 ?v0 (f29 (f30 f31 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S28) (?v1 S3) (?v2 S3)) (=> (= (f11 (f55 (f99 ?v0) ?v1) ?v2) f1) (= (f32 ?v0 (f33 (f34 f35 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S6) (?v1 Int) (?v2 Int)) (=> (= (f36 (f37 (f93 ?v0) ?v1) ?v2) f1) (=> (=> (= (f11 ?v0 (f8 (f9 f10 ?v1) ?v2)) f1) false) false))))
+(assert (forall ((?v0 S7) (?v1 S9) (?v2 S9)) (=> (= (f32 (f40 (f94 ?v0) ?v1) ?v2) f1) (=> (=> (= (f12 ?v0 (f13 (f14 f15 ?v1) ?v2)) f1) false) false))))
+(assert (forall ((?v0 S12) (?v1 S14) (?v2 S14)) (=> (= (f20 (f43 (f95 ?v0) ?v1) ?v2) f1) (=> (=> (= (f16 ?v0 (f17 (f18 f19 ?v1) ?v2)) f1) false) false))))
+(assert (forall ((?v0 S17) (?v1 Int) (?v2 S3)) (=> (= (f11 (f49 (f96 ?v0) ?v1) ?v2) f1) (=> (=> (= (f20 ?v0 (f21 (f22 f23 ?v1) ?v2)) f1) false) false))))
+(assert (forall ((?v0 S20) (?v1 S22) (?v2 S22)) (=> (= (f28 (f46 (f97 ?v0) ?v1) ?v2) f1) (=> (=> (= (f24 ?v0 (f25 (f26 f27 ?v1) ?v2)) f1) false) false))))
+(assert (forall ((?v0 S25) (?v1 S3) (?v2 Int)) (=> (= (f36 (f52 (f98 ?v0) ?v1) ?v2) f1) (=> (=> (= (f28 ?v0 (f29 (f30 f31 ?v1) ?v2)) f1) false) false))))
+(assert (forall ((?v0 S28) (?v1 S3) (?v2 S3)) (=> (= (f11 (f55 (f99 ?v0) ?v1) ?v2) f1) (=> (=> (= (f32 ?v0 (f33 (f34 f35 ?v1) ?v2)) f1) false) false))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 S82)) (= (= (f39 (f8 (f9 f10 ?v0) ?v1) (f138 ?v2)) f1) (< (f139 f140 (f141 ?v2 ?v0)) (f139 f140 (f141 ?v2 ?v1))))))
+(assert (forall ((?v0 S9) (?v1 S9) (?v2 S85)) (= (= (f42 (f13 (f14 f15 ?v0) ?v1) (f142 ?v2)) f1) (< (f139 f140 (f143 ?v2 ?v0)) (f139 f140 (f143 ?v2 ?v1))))))
+(assert (forall ((?v0 S14) (?v1 S14) (?v2 S86)) (= (= (f45 (f17 (f18 f19 ?v0) ?v1) (f144 ?v2)) f1) (< (f139 f140 (f145 ?v2 ?v0)) (f139 f140 (f145 ?v2 ?v1))))))
+(assert (forall ((?v0 S22) (?v1 S22) (?v2 S87)) (= (= (f48 (f25 (f26 f27 ?v0) ?v1) (f146 ?v2)) f1) (< (f139 f140 (f147 ?v2 ?v0)) (f139 f140 (f147 ?v2 ?v1))))))
+(assert (forall ((?v0 S3) (?v1 S3) (?v2 S88)) (= (= (f57 (f33 (f34 f35 ?v0) ?v1) (f148 ?v2)) f1) (< (f139 f140 (f149 ?v2 ?v0)) (f139 f140 (f149 ?v2 ?v1))))))
+(assert (forall ((?v0 S82) (?v1 Int) (?v2 Int) (?v3 S6)) (=> (< (f139 f140 (f141 ?v0 ?v1)) (f139 f140 (f141 ?v0 ?v2))) (= (f39 (f8 (f9 f10 ?v1) ?v2) (f150 (f151 ?v0) ?v3)) f1))))
+(assert (forall ((?v0 S85) (?v1 S9) (?v2 S9) (?v3 S7)) (=> (< (f139 f140 (f143 ?v0 ?v1)) (f139 f140 (f143 ?v0 ?v2))) (= (f42 (f13 (f14 f15 ?v1) ?v2) (f152 (f153 ?v0) ?v3)) f1))))
+(assert (forall ((?v0 S86) (?v1 S14) (?v2 S14) (?v3 S12)) (=> (< (f139 f140 (f145 ?v0 ?v1)) (f139 f140 (f145 ?v0 ?v2))) (= (f45 (f17 (f18 f19 ?v1) ?v2) (f154 (f155 ?v0) ?v3)) f1))))
+(assert (forall ((?v0 S87) (?v1 S22) (?v2 S22) (?v3 S20)) (=> (< (f139 f140 (f147 ?v0 ?v1)) (f139 f140 (f147 ?v0 ?v2))) (= (f48 (f25 (f26 f27 ?v1) ?v2) (f156 (f157 ?v0) ?v3)) f1))))
+(assert (forall ((?v0 S88) (?v1 S3) (?v2 S3) (?v3 S28)) (=> (< (f139 f140 (f149 ?v0 ?v1)) (f139 f140 (f149 ?v0 ?v2))) (= (f57 (f33 (f34 f35 ?v1) ?v2) (f158 (f159 ?v0) ?v3)) f1))))
+(assert (forall ((?v0 S82) (?v1 Int) (?v2 Int) (?v3 S6)) (let ((?v_0 (f8 (f9 f10 ?v1) ?v2))) (=> (<= (f139 f140 (f141 ?v0 ?v1)) (f139 f140 (f141 ?v0 ?v2))) (=> (= (f39 ?v_0 ?v3) f1) (= (f39 ?v_0 (f150 (f151 ?v0) ?v3)) f1))))))
+(assert (forall ((?v0 S85) (?v1 S9) (?v2 S9) (?v3 S7)) (let ((?v_0 (f13 (f14 f15 ?v1) ?v2))) (=> (<= (f139 f140 (f143 ?v0 ?v1)) (f139 f140 (f143 ?v0 ?v2))) (=> (= (f42 ?v_0 ?v3) f1) (= (f42 ?v_0 (f152 (f153 ?v0) ?v3)) f1))))))
+(assert (forall ((?v0 S86) (?v1 S14) (?v2 S14) (?v3 S12)) (let ((?v_0 (f17 (f18 f19 ?v1) ?v2))) (=> (<= (f139 f140 (f145 ?v0 ?v1)) (f139 f140 (f145 ?v0 ?v2))) (=> (= (f45 ?v_0 ?v3) f1) (= (f45 ?v_0 (f154 (f155 ?v0) ?v3)) f1))))))
+(assert (forall ((?v0 S87) (?v1 S22) (?v2 S22) (?v3 S20)) (let ((?v_0 (f25 (f26 f27 ?v1) ?v2))) (=> (<= (f139 f140 (f147 ?v0 ?v1)) (f139 f140 (f147 ?v0 ?v2))) (=> (= (f48 ?v_0 ?v3) f1) (= (f48 ?v_0 (f156 (f157 ?v0) ?v3)) f1))))))
+(assert (forall ((?v0 S88) (?v1 S3) (?v2 S3) (?v3 S28)) (let ((?v_0 (f33 (f34 f35 ?v1) ?v2))) (=> (<= (f139 f140 (f149 ?v0 ?v1)) (f139 f140 (f149 ?v0 ?v2))) (=> (= (f57 ?v_0 ?v3) f1) (= (f57 ?v_0 (f158 (f159 ?v0) ?v3)) f1))))))
+(assert (forall ((?v0 S31) (?v1 S6)) (= (= (f160 ?v0 ?v1) f1) (forall ((?v2 Int)) (=> (= (f161 ?v2 ?v0) f1) (forall ((?v3 Int)) (=> (= (f161 ?v3 ?v0) f1) (=> (not (= ?v2 ?v3)) (or (= (f39 (f8 (f9 f10 ?v2) ?v3) ?v1) f1) (= (f39 (f8 (f9 f10 ?v3) ?v2) ?v1) f1))))))))))
+(assert (forall ((?v0 S17) (?v1 S12)) (= (= (f162 ?v0 ?v1) f1) (forall ((?v2 S14)) (=> (= (f51 ?v2 ?v0) f1) (forall ((?v3 S14)) (=> (= (f51 ?v3 ?v0) f1) (=> (not (= ?v2 ?v3)) (or (= (f45 (f17 (f18 f19 ?v2) ?v3) ?v1) f1) (= (f45 (f17 (f18 f19 ?v3) ?v2) ?v1) f1))))))))))
+(assert (forall ((?v0 S25) (?v1 S20)) (= (= (f163 ?v0 ?v1) f1) (forall ((?v2 S22)) (=> (= (f54 ?v2 ?v0) f1) (forall ((?v3 S22)) (=> (= (f54 ?v3 ?v0) f1) (=> (not (= ?v2 ?v3)) (or (= (f48 (f25 (f26 f27 ?v2) ?v3) ?v1) f1) (= (f48 (f25 (f26 f27 ?v3) ?v2) ?v1) f1))))))))))
+(assert (forall ((?v0 S7) (?v1 S43)) (= (= (f164 ?v0 ?v1) f1) (forall ((?v2 S8)) (=> (= (f42 ?v2 ?v0) f1) (forall ((?v3 S8)) (=> (= (f42 ?v3 ?v0) f1) (=> (not (= ?v2 ?v3)) (or (= (f63 (f64 ?v2 ?v3) ?v1) f1) (= (f63 (f64 ?v3 ?v2) ?v1) f1))))))))))
+(assert (forall ((?v0 S12) (?v1 S47)) (= (= (f165 ?v0 ?v1) f1) (forall ((?v2 S13)) (=> (= (f45 ?v2 ?v0) f1) (forall ((?v3 S13)) (=> (= (f45 ?v3 ?v0) f1) (=> (not (= ?v2 ?v3)) (or (= (f68 (f69 ?v2 ?v3) ?v1) f1) (= (f68 (f69 ?v3 ?v2) ?v1) f1))))))))))
+(assert (forall ((?v0 S20) (?v1 S51)) (= (= (f166 ?v0 ?v1) f1) (forall ((?v2 S21)) (=> (= (f48 ?v2 ?v0) f1) (forall ((?v3 S21)) (=> (= (f48 ?v3 ?v0) f1) (=> (not (= ?v2 ?v3)) (or (= (f73 (f74 ?v2 ?v3) ?v1) f1) (= (f73 (f74 ?v3 ?v2) ?v1) f1))))))))))
+(assert (forall ((?v0 S28) (?v1 S7)) (= (= (f167 ?v0 ?v1) f1) (forall ((?v2 S9)) (=> (= (f57 ?v2 ?v0) f1) (forall ((?v3 S9)) (=> (= (f57 ?v3 ?v0) f1) (=> (not (= ?v2 ?v3)) (or (= (f42 (f13 (f14 f15 ?v2) ?v3) ?v1) f1) (= (f42 (f13 (f14 f15 ?v3) ?v2) ?v1) f1))))))))))
+(assert (forall ((?v0 S6) (?v1 S28)) (= (= (f168 ?v0 ?v1) f1) (forall ((?v2 S3)) (=> (= (f39 ?v2 ?v0) f1) (forall ((?v3 S3)) (=> (= (f39 ?v3 ?v0) f1) (=> (not (= ?v2 ?v3)) (or (= (f57 (f33 (f34 f35 ?v2) ?v3) ?v1) f1) (= (f57 (f33 (f34 f35 ?v3) ?v2) ?v1) f1))))))))))
+(assert (forall ((?v0 S84)) (= (f141 f169 (f139 f140 ?v0)) ?v0)))
+(assert (forall ((?v0 Int)) (=> (<= 0 ?v0) (= (f139 f140 (f141 f169 ?v0)) ?v0))))
+(assert (forall ((?v0 Int)) (=> (< ?v0 0) (= (f139 f140 (f141 f169 ?v0)) 0))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/nl/nl-unk-quant.smt2 b/test/regress/regress0/nl/nl-unk-quant.smt2
new file mode 100644
index 0000000..bb5cd43
--- /dev/null
+++ b/test/regress/regress0/nl/nl-unk-quant.smt2
@@ -0,0 +1,29 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: unsat
+(set-logic UFNIA)
+(set-info :source |Benchmarks from the paper: "Extending Sledgehammer with SMT Solvers" by Jasmin Blanchette, Sascha Bohme, and Lawrence C. Paulson, CADE 2011.  Translated to SMT2 by Andrew Reynolds and Morgan Deters.|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-sort S1 0)
+(declare-sort S2 0)
+(declare-sort S3 0)
+(declare-sort S4 0)
+(declare-fun f1 () S1)
+(declare-fun f2 () S1)
+(declare-fun f3 () S2)
+(declare-fun f4 (S3 Int) S2)
+(declare-fun f5 () S3)
+(declare-fun f6 (S4 S2) Int)
+(declare-fun f7 () S4)
+(declare-fun f8 () Int)
+(declare-fun f9 (Int) S1)
+(declare-fun f10 () Int)
+(declare-fun f11 () S2)
+(assert (not (= f1 f2)))
+(assert (let ((?v_0 (f6 f7 f3)) (?v_1 (f6 f7 f11))) (not (=> (and (= f3 (f4 f5 (- (f6 f7 (f4 f5 f8)) 1))) (= (f9 (* (+ (* 4 f10) 1) (+ 1 ?v_0))) f1)) (=> (< f8 (+ 1 ?v_1)) (=> (< 0 f8) (< ?v_0 ?v_1)))))))
+(assert (forall ((?v0 S2)) (= (f4 f5 (f6 f7 ?v0)) ?v0)))
+(assert (forall ((?v0 Int)) (=> (<= 0 ?v0) (= (f6 f7 (f4 f5 ?v0)) ?v0))))
+(assert (forall ((?v0 Int)) (=> (< ?v0 0) (= (f6 f7 (f4 f5 ?v0)) 0))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/nl/ones.smt2 b/test/regress/regress0/nl/ones.smt2
new file mode 100644
index 0000000..be06912
--- /dev/null
+++ b/test/regress/regress0/nl/ones.smt2
@@ -0,0 +1,18 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: unsat
+(set-logic QF_NRA)
+(set-info :status unsat)
+(declare-fun a () Real)
+(declare-fun b () Real)
+(declare-fun c () Real)
+(declare-fun d () Real)
+
+(assert (>= a 1))
+(assert (>= b 1))
+(assert (>= c 1))
+(assert (>= d 1))
+(assert (or (= a 1) (= b 1) (= c 1) (= d 1)))
+
+(assert (< (* a b c d) 1))
+
+(check-sat)
diff --git a/test/regress/regress0/nl/poly-1025.smt2 b/test/regress/regress0/nl/poly-1025.smt2
new file mode 100644
index 0000000..4826965
--- /dev/null
+++ b/test/regress/regress0/nl/poly-1025.smt2
@@ -0,0 +1,29 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: sat
+(set-logic QF_NRA)
+(set-info :source |
+These benchmarks used in the paper:
+
+  Dejan Jovanovic and Leonardo de Moura.  Solving Non-Linear Arithmetic.
+  In IJCAR 2012, published as LNCS volume 7364, pp. 339--354.
+
+The meti-tarski benchmarks are proof obligations extracted from the
+Meti-Tarski project, see:
+
+  B. Akbarpour and L. C. Paulson. MetiTarski: An automatic theorem prover
+  for real-valued special functions. Journal of Automated Reasoning,
+  44(3):175-205, 2010.
+
+Submitted by Dejan Jovanovic for SMT-LIB.
+
+
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status sat)
+(declare-fun skoX () Real)
+(declare-fun skoY () Real)
+(declare-fun skoZ () Real)
+(assert (let ((?v_2 (not (<= skoZ 1)))) (let ((?v_3 (or (not (<= skoY 1)) ?v_2)) (?v_4 (not (<= skoX 1))) (?v_0 (* skoX (/ 1 4))) (?v_1 (* skoX (/ (- 5) 4))) (?v_5 (* skoX (/ 1 2))) (?v_6 (+ (/ (- 1) 4) (* skoX (/ (- 1) 4))))) (and (not (<= skoX 0)) (and (or (not (<= (* skoZ (* skoY (* skoY (+ (* skoX (* skoX (+ (/ (- 15) 4) ?v_0))) (* skoY (* skoX (* skoX (+ (/ 1 4) ?v_0)))))))) (* skoY (+ (* skoX (+ (/ 11 4) ?v_1)) (* skoY (* skoX (+ (/ (- 5) 4) ?v_1))))))) ?v_2) (and ?v_3 (and (or ?v_ [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/nl/quant-nl.smt2 b/test/regress/regress0/nl/quant-nl.smt2
new file mode 100644
index 0000000..7d251ab
--- /dev/null
+++ b/test/regress/regress0/nl/quant-nl.smt2
@@ -0,0 +1,857 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: unsat
+(set-logic UFNIA)
+(set-info :status unsat)
+(set-info :source |Benchmarks from the paper: "Extending Sledgehammer with SMT Solvers" by Jasmin Blanchette, Sascha Bohme, and Lawrence C. Paulson, CADE 2011.  Translated to SMT2 by Andrew Reynolds and Morgan Deters.|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(declare-sort S1 0)
+(declare-sort S2 0)
+(declare-sort S3 0)
+(declare-sort S4 0)
+(declare-sort S5 0)
+(declare-sort S6 0)
+(declare-sort S7 0)
+(declare-sort S8 0)
+(declare-sort S9 0)
+(declare-sort S10 0)
+(declare-sort S11 0)
+(declare-sort S12 0)
+(declare-sort S13 0)
+(declare-sort S14 0)
+(declare-sort S15 0)
+(declare-sort S16 0)
+(declare-sort S17 0)
+(declare-sort S18 0)
+(declare-sort S19 0)
+(declare-sort S20 0)
+(declare-sort S21 0)
+(declare-sort S22 0)
+(declare-sort S23 0)
+(declare-sort S24 0)
+(declare-sort S25 0)
+(declare-sort S26 0)
+(declare-sort S27 0)
+(declare-sort S28 0)
+(declare-sort S29 0)
+(declare-sort S30 0)
+(declare-sort S31 0)
+(declare-sort S32 0)
+(declare-sort S33 0)
+(declare-sort S34 0)
+(declare-sort S35 0)
+(declare-sort S36 0)
+(declare-sort S37 0)
+(declare-sort S38 0)
+(declare-sort S39 0)
+(declare-sort S40 0)
+(declare-sort S41 0)
+(declare-sort S42 0)
+(declare-sort S43 0)
+(declare-sort S44 0)
+(declare-sort S45 0)
+(declare-sort S46 0)
+(declare-sort S47 0)
+(declare-sort S48 0)
+(declare-sort S49 0)
+(declare-sort S50 0)
+(declare-sort S51 0)
+(declare-sort S52 0)
+(declare-sort S53 0)
+(declare-sort S54 0)
+(declare-sort S55 0)
+(declare-sort S56 0)
+(declare-sort S57 0)
+(declare-sort S58 0)
+(declare-sort S59 0)
+(declare-sort S60 0)
+(declare-sort S61 0)
+(declare-sort S62 0)
+(declare-sort S63 0)
+(declare-sort S64 0)
+(declare-sort S65 0)
+(declare-sort S66 0)
+(declare-sort S67 0)
+(declare-sort S68 0)
+(declare-sort S69 0)
+(declare-sort S70 0)
+(declare-sort S71 0)
+(declare-sort S72 0)
+(declare-sort S73 0)
+(declare-sort S74 0)
+(declare-sort S75 0)
+(declare-sort S76 0)
+(declare-sort S77 0)
+(declare-sort S78 0)
+(declare-sort S79 0)
+(declare-sort S80 0)
+(declare-sort S81 0)
+(declare-sort S82 0)
+(declare-sort S83 0)
+(declare-sort S84 0)
+(declare-sort S85 0)
+(declare-sort S86 0)
+(declare-sort S87 0)
+(declare-sort S88 0)
+(declare-sort S89 0)
+(declare-sort S90 0)
+(declare-sort S91 0)
+(declare-sort S92 0)
+(declare-sort S93 0)
+(declare-sort S94 0)
+(declare-sort S95 0)
+(declare-sort S96 0)
+(declare-sort S97 0)
+(declare-sort S98 0)
+(declare-sort S99 0)
+(declare-sort S100 0)
+(declare-sort S101 0)
+(declare-sort S102 0)
+(declare-sort S103 0)
+(declare-sort S104 0)
+(declare-sort S105 0)
+(declare-sort S106 0)
+(declare-sort S107 0)
+(declare-sort S108 0)
+(declare-sort S109 0)
+(declare-sort S110 0)
+(declare-sort S111 0)
+(declare-sort S112 0)
+(declare-sort S113 0)
+(declare-sort S114 0)
+(declare-sort S115 0)
+(declare-sort S116 0)
+(declare-sort S117 0)
+(declare-sort S118 0)
+(declare-sort S119 0)
+(declare-sort S120 0)
+(declare-sort S121 0)
+(declare-sort S122 0)
+(declare-sort S123 0)
+(declare-sort S124 0)
+(declare-sort S125 0)
+(declare-sort S126 0)
+(declare-sort S127 0)
+(declare-sort S128 0)
+(declare-sort S129 0)
+(declare-sort S130 0)
+(declare-sort S131 0)
+(declare-sort S132 0)
+(declare-sort S133 0)
+(declare-sort S134 0)
+(declare-sort S135 0)
+(declare-sort S136 0)
+(declare-sort S137 0)
+(declare-sort S138 0)
+(declare-sort S139 0)
+(declare-sort S140 0)
+(declare-sort S141 0)
+(declare-sort S142 0)
+(declare-sort S143 0)
+(declare-sort S144 0)
+(declare-sort S145 0)
+(declare-sort S146 0)
+(declare-sort S147 0)
+(declare-sort S148 0)
+(declare-sort S149 0)
+(declare-sort S150 0)
+(declare-sort S151 0)
+(declare-sort S152 0)
+(declare-sort S153 0)
+(declare-sort S154 0)
+(declare-sort S155 0)
+(declare-sort S156 0)
+(declare-sort S157 0)
+(declare-sort S158 0)
+(declare-sort S159 0)
+(declare-sort S160 0)
+(declare-sort S161 0)
+(declare-sort S162 0)
+(declare-sort S163 0)
+(declare-sort S164 0)
+(declare-sort S165 0)
+(declare-sort S166 0)
+(declare-sort S167 0)
+(declare-sort S168 0)
+(declare-sort S169 0)
+(declare-sort S170 0)
+(declare-sort S171 0)
+(declare-sort S172 0)
+(declare-sort S173 0)
+(declare-sort S174 0)
+(declare-sort S175 0)
+(declare-sort S176 0)
+(declare-sort S177 0)
+(declare-sort S178 0)
+(declare-sort S179 0)
+(declare-sort S180 0)
+(declare-sort S181 0)
+(declare-sort S182 0)
+(declare-sort S183 0)
+(declare-sort S184 0)
+(declare-sort S185 0)
+(declare-fun f1 () S1)
+(declare-fun f2 () S1)
+(declare-fun f3 (Int) S1)
+(declare-fun f4 () Int)
+(declare-fun f5 () Int)
+(declare-fun f6 (S2 S3) Int)
+(declare-fun f7 () S2)
+(declare-fun f8 (S4 Int) S3)
+(declare-fun f9 (S5 Int) S4)
+(declare-fun f10 () S5)
+(declare-fun f11 (S6 S7) S1)
+(declare-fun f12 (S9 S8) S7)
+(declare-fun f13 (S10 S8) S9)
+(declare-fun f14 () S10)
+(declare-fun f15 (S11 S12) S1)
+(declare-fun f16 (S13 S3) S12)
+(declare-fun f17 (S14 S3) S13)
+(declare-fun f18 () S14)
+(declare-fun f19 (S15 S3) S1)
+(declare-fun f20 (S16 S17) S1)
+(declare-fun f21 (S19 S18) S17)
+(declare-fun f22 (S20 S18) S19)
+(declare-fun f23 () S20)
+(declare-fun f24 (S21 S8) S1)
+(declare-fun f25 (S22 S17) S8)
+(declare-fun f26 (S23 S17) S22)
+(declare-fun f27 () S23)
+(declare-fun f28 (S24 S8) S21)
+(declare-fun f29 (S6) S24)
+(declare-fun f30 (S7 S6) S1)
+(declare-fun f31 (S25 S3) S15)
+(declare-fun f32 (S11) S25)
+(declare-fun f33 (S12 S11) S1)
+(declare-fun f34 (S26 Int) S1)
+(declare-fun f35 (S27 Int) S26)
+(declare-fun f36 (S15) S27)
+(declare-fun f37 (S3 S15) S1)
+(declare-fun f38 (S28 S18) S1)
+(declare-fun f39 (S29 S18) S28)
+(declare-fun f40 (S16) S29)
+(declare-fun f41 (S17 S16) S1)
+(declare-fun f42 (S30 S17) S16)
+(declare-fun f43 (S21) S30)
+(declare-fun f44 (S8 S21) S1)
+(declare-fun f45 (S31 S8) S6)
+(declare-fun f46 (S32 S33) S1)
+(declare-fun f47 (S7 S7) S32)
+(declare-fun f48 (S34 S31) S33)
+(declare-fun f49 (S21) S34)
+(declare-fun f50 (S35 S3) S11)
+(declare-fun f51 (S36 S37) S1)
+(declare-fun f52 (S12 S12) S36)
+(declare-fun f53 (S38 S35) S37)
+(declare-fun f54 (S15) S38)
+(declare-fun f55 (S39 Int) S15)
+(declare-fun f56 (S40 S39) S11)
+(declare-fun f57 (S26) S40)
+(declare-fun f58 (S41 S17) S21)
+(declare-fun f59 (S42 S41) S6)
+(declare-fun f60 (S16) S42)
+(declare-fun f61 (S43 S18) S16)
+(declare-fun f62 (S44 S43) S21)
+(declare-fun f63 (S28) S44)
+(declare-fun f64 (S6) S1)
+(declare-fun f65 (S11) S1)
+(declare-fun f66 (S15) S1)
+(declare-fun f67 (S16) S1)
+(declare-fun f68 (S21) S1)
+(declare-fun f69 (S6) S1)
+(declare-fun f70 (S11) S1)
+(declare-fun f71 (S15) S1)
+(declare-fun f72 (S16) S1)
+(declare-fun f73 (S21) S1)
+(declare-fun f74 (S6) S24)
+(declare-fun f75 (S11) S25)
+(declare-fun f76 (S15) S27)
+(declare-fun f77 (S16) S29)
+(declare-fun f78 (S21) S30)
+(declare-fun f79 (S45 S6) S33)
+(declare-fun f80 (S6) S45)
+(declare-fun f81 (S46 S11) S37)
+(declare-fun f82 (S11) S46)
+(declare-fun f83 (S47 S15) S11)
+(declare-fun f84 (S15) S47)
+(declare-fun f85 (S48 S21) S6)
+(declare-fun f86 (S21) S48)
+(declare-fun f87 (S49 S50) S1)
+(declare-fun f88 (S51 S51) S49)
+(declare-fun f89 (Int S8) S51)
+(declare-fun f90 (S15 S6) S50)
+(declare-fun f91 (S52 S53) S1)
+(declare-fun f92 (S54 S54) S52)
+(declare-fun f93 (Int S3) S54)
+(declare-fun f94 (S15 S11) S53)
+(declare-fun f95 (S55 S56) S1)
+(declare-fun f96 (S57 S57) S55)
+(declare-fun f97 (S8 Int) S57)
+(declare-fun f98 (S6 S15) S56)
+(declare-fun f99 (S58 S59) S1)
+(declare-fun f100 (S60 S60) S58)
+(declare-fun f101 (S3 Int) S60)
+(declare-fun f102 (S11 S15) S59)
+(declare-fun f103 (S61 S16) S21)
+(declare-fun f104 (S16) S61)
+(declare-fun f105 (S62 S63) S1)
+(declare-fun f106 (S64 S64) S62)
+(declare-fun f107 (S18 Int) S64)
+(declare-fun f108 (S16 S15) S63)
+(declare-fun f109 (S65 S66) S1)
+(declare-fun f110 (S67 S67) S65)
+(declare-fun f111 (S18 S8) S67)
+(declare-fun f112 (S16 S6) S66)
+(declare-fun f113 (S68 S69) S1)
+(declare-fun f114 (S70 S70) S68)
+(declare-fun f115 (S18 S3) S70)
+(declare-fun f116 (S16 S11) S69)
+(declare-fun f117 (S71 S72) S1)
+(declare-fun f118 (S73 S73) S71)
+(declare-fun f119 (S17 Int) S73)
+(declare-fun f120 (S21 S15) S72)
+(declare-fun f121 (S74 S75) S1)
+(declare-fun f122 (S76 S76) S74)
+(declare-fun f123 (S17 S8) S76)
+(declare-fun f124 (S21 S6) S75)
+(declare-fun f125 (S77 S78) S1)
+(declare-fun f126 (S79 S79) S77)
+(declare-fun f127 (S17 S3) S79)
+(declare-fun f128 (S21 S11) S78)
+(declare-fun f129 (S80 S81) S1)
+(declare-fun f130 (S82 S82) S80)
+(declare-fun f131 (Int S18) S82)
+(declare-fun f132 (S15 S16) S81)
+(declare-fun f133 (S83 S84) S1)
+(declare-fun f134 (S85 S85) S83)
+(declare-fun f135 (S8 S18) S85)
+(declare-fun f136 (S6 S16) S84)
+(declare-fun f137 (S86 S87) S1)
+(declare-fun f138 (S88 S88) S86)
+(declare-fun f139 (S3 S18) S88)
+(declare-fun f140 (S11 S16) S87)
+(declare-fun f141 (S89 S90) S1)
+(declare-fun f142 (S91 S91) S89)
+(declare-fun f143 (Int S17) S91)
+(declare-fun f144 (S15 S21) S90)
+(declare-fun f145 (S92 S93) S1)
+(declare-fun f146 (S94 S94) S92)
+(declare-fun f147 (S8 S17) S94)
+(declare-fun f148 (S6 S21) S93)
+(declare-fun f149 (S95 S96) S1)
+(declare-fun f150 (S97 S97) S95)
+(declare-fun f151 (S3 S17) S97)
+(declare-fun f152 (S11 S21) S96)
+(declare-fun f153 (S98) S6)
+(declare-fun f154 (S99 S18) Int)
+(declare-fun f155 () S99)
+(declare-fun f156 (S98 S8) S18)
+(declare-fun f157 (S100) S11)
+(declare-fun f158 (S100 S3) S18)
+(declare-fun f159 (S101) S15)
+(declare-fun f160 (S101 Int) S18)
+(declare-fun f161 (S102) S16)
+(declare-fun f162 (S102 S18) S18)
+(declare-fun f163 (S103) S21)
+(declare-fun f164 (S103 S17) S18)
+(declare-fun f165 (S104 S6) S6)
+(declare-fun f166 (S98) S104)
+(declare-fun f167 (S105 S11) S11)
+(declare-fun f168 (S100) S105)
+(declare-fun f169 (S106 S15) S15)
+(declare-fun f170 (S101) S106)
+(declare-fun f171 (S107 S16) S16)
+(declare-fun f172 (S102) S107)
+(declare-fun f173 (S108 S21) S21)
+(declare-fun f174 (S103) S108)
+(declare-fun f175 (S15 S11) S1)
+(declare-fun f176 (S6 S33) S1)
+(declare-fun f177 (S11 S37) S1)
+(declare-fun f178 (S26 S15) S1)
+(declare-fun f179 (Int S26) S1)
+(declare-fun f180 (S21 S6) S1)
+(declare-fun f181 (S28 S16) S1)
+(declare-fun f182 (S18 S28) S1)
+(declare-fun f183 (S16 S21) S1)
+(declare-fun f184 () S109)
+(declare-fun f185 () S109)
+(declare-fun f186 () S110)
+(declare-fun f187 () S110)
+(declare-fun f188 () S111)
+(declare-fun f189 () S111)
+(declare-fun f190 (S113 S112) S15)
+(declare-fun f191 (S6) S113)
+(declare-fun f192 (S112 Int) S8)
+(declare-fun f193 (S114 S4) S15)
+(declare-fun f194 (S11) S114)
+(declare-fun f195 (S116 S115) S15)
+(declare-fun f196 (S15) S116)
+(declare-fun f197 (S115 Int) Int)
+(declare-fun f198 (S118 S117) S6)
+(declare-fun f199 (S15) S118)
+(declare-fun f200 (S117 S8) Int)
+(declare-fun f201 (S119 S2) S11)
+(declare-fun f202 (S15) S119)
+(declare-fun f203 (S120 S99) S16)
+(declare-fun f204 (S15) S120)
+(declare-fun f205 (S122 S121) S16)
+(declare-fun f206 (S6) S122)
+(declare-fun f207 (S121 S18) S8)
+(declare-fun f208 (S124 S123) S16)
+(declare-fun f209 (S11) S124)
+(declare-fun f210 (S123 S18) S3)
+(declare-fun f211 (S126 S125) S21)
+(declare-fun f212 (S15) S126)
+(declare-fun f213 (S125 S17) Int)
+(declare-fun f214 (S127 S22) S21)
+(declare-fun f215 (S6) S127)
+(declare-fun f216 (S129 S128) S21)
+(declare-fun f217 (S11) S129)
+(declare-fun f218 (S128 S17) S3)
+(declare-fun f219 (S130 S101) S15)
+(declare-fun f220 (S16) S130)
+(declare-fun f221 (S131 S98) S6)
+(declare-fun f222 (S16) S131)
+(declare-fun f223 (S132 S100) S11)
+(declare-fun f224 (S16) S132)
+(declare-fun f225 (S134 S133) S15)
+(declare-fun f226 (S21) S134)
+(declare-fun f227 (S133 Int) S17)
+(declare-fun f228 (S136 S135) S6)
+(declare-fun f229 (S21) S136)
+(declare-fun f230 (S135 S8) S17)
+(declare-fun f231 (S138 S137) S11)
+(declare-fun f232 (S21) S138)
+(declare-fun f233 (S137 S3) S17)
+(declare-fun f234 (S24) S6)
+(declare-fun f235 (S25) S11)
+(declare-fun f236 (S111 S27) S15)
+(declare-fun f237 (S110 S29) S16)
+(declare-fun f238 (S109 S30) S21)
+(declare-fun f239 (S139 Int) S39)
+(declare-fun f240 (S139) S25)
+(declare-fun f241 (S141 Int) S6)
+(declare-fun f242 (S140 Int) S141)
+(declare-fun f243 (S142 S3) S6)
+(declare-fun f244 (S140) S142)
+(declare-fun f245 (S144 Int) S11)
+(declare-fun f246 (S143 Int) S144)
+(declare-fun f247 (S143) S35)
+(declare-fun f248 (S146 Int) S28)
+(declare-fun f249 (S145 Int) S146)
+(declare-fun f250 (S147 S3) S28)
+(declare-fun f251 (S145) S147)
+(declare-fun f252 (S148 Int) S27)
+(declare-fun f253 (S149 S3) S26)
+(declare-fun f254 (S148) S149)
+(declare-fun f255 (S151 S18) S15)
+(declare-fun f256 (S150 S18) S151)
+(declare-fun f257 (S152 S17) S15)
+(declare-fun f258 (S150) S152)
+(declare-fun f259 (S154 S18) S6)
+(declare-fun f260 (S153 S18) S154)
+(declare-fun f261 (S155 S17) S6)
+(declare-fun f262 (S153) S155)
+(declare-fun f263 (S157 S18) S11)
+(declare-fun f264 (S156 S18) S157)
+(declare-fun f265 (S158 S17) S11)
+(declare-fun f266 (S156) S158)
+(declare-fun f267 (S159 S18) S29)
+(declare-fun f268 (S160 S17) S28)
+(declare-fun f269 (S159) S160)
+(declare-fun f270 (S162 S18) S26)
+(declare-fun f271 (S161 S18) S162)
+(declare-fun f272 (S163 S17) S26)
+(declare-fun f273 (S161) S163)
+(declare-fun f274 (S164 S17) S152)
+(declare-fun f275 (S165 S8) S15)
+(declare-fun f276 (S164) S165)
+(declare-fun f277 (S166 S17) S155)
+(declare-fun f278 (S166) S31)
+(declare-fun f279 (S167 S17) S158)
+(declare-fun f280 (S168 S8) S11)
+(declare-fun f281 (S167) S168)
+(declare-fun f282 (S169 S17) S160)
+(declare-fun f283 (S170 S8) S28)
+(declare-fun f284 (S169) S170)
+(declare-fun f285 (S171 S17) S163)
+(declare-fun f286 (S172 S8) S26)
+(declare-fun f287 (S171) S172)
+(declare-fun f288 (S174 S8) S16)
+(declare-fun f289 (S173 S8) S174)
+(declare-fun f290 (S175 S7) S16)
+(declare-fun f291 (S173) S175)
+(declare-fun f292 (S177 S3) S16)
+(declare-fun f293 (S176 S3) S177)
+(declare-fun f294 (S178 S12) S16)
+(declare-fun f295 (S176) S178)
+(declare-fun f296 (S179 S8) S24)
+(declare-fun f297 (S180 S7) S21)
+(declare-fun f298 (S179) S180)
+(declare-fun f299 (S182 S3) S21)
+(declare-fun f300 (S181 S3) S182)
+(declare-fun f301 (S183 S12) S21)
+(declare-fun f302 (S181) S183)
+(declare-fun f303 () S16)
+(declare-fun f304 () S21)
+(declare-fun f305 (S16) S1)
+(declare-fun f306 (S21) S1)
+(declare-fun f307 (S16) S1)
+(declare-fun f308 (S21) S1)
+(declare-fun f309 (S16) S1)
+(declare-fun f310 (S15) S1)
+(declare-fun f311 (S21) S1)
+(declare-fun f312 (S15) S1)
+(declare-fun f313 (S15) S1)
+(declare-fun f314 (S6) S1)
+(declare-fun f315 () S101)
+(declare-fun f316 (S30) S1)
+(declare-fun f317 (S29) S1)
+(declare-fun f318 (S24) S1)
+(declare-fun f319 () S16)
+(declare-fun f320 () S21)
+(declare-fun f321 (S184) S1)
+(declare-fun f322 (S21) S184)
+(declare-fun f323 (S185) S1)
+(declare-fun f324 (S16) S185)
+(declare-fun f325 (S16) S16)
+(declare-fun f326 (S21) S21)
+(declare-fun f327 (S15) S15)
+(declare-fun f328 (S21) S184)
+(declare-fun f329 (S16) S185)
+(declare-fun f330 (S6) S6)
+(declare-fun f331 (S11) S11)
+(assert (not (= f1 f2)))
+(assert (not (= (f3 (* f4 f5)) f1)))
+(assert (= (f3 f4) f1))
+(assert (= (f3 f5) f1))
+(assert (forall ((?v0 Int)) (= (= (f3 ?v0) f1) (exists ((?v1 Int) (?v2 Int)) (= (f6 f7 (f8 (f9 f10 ?v1) ?v2)) ?v0)))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 Int) (?v3 Int)) (= (* (f6 f7 (f8 (f9 f10 ?v0) ?v1)) (f6 f7 (f8 (f9 f10 ?v2) ?v3))) (f6 f7 (f8 (f9 f10 (+ (* ?v0 ?v2) (* ?v1 ?v3))) (- (* ?v0 ?v3) (* ?v1 ?v2)))))))
+(assert (forall ((?v0 S6)) (= (forall ((?v1 S7)) (= (f11 ?v0 ?v1) f1)) (forall ((?v1 S8) (?v2 S8)) (= (f11 ?v0 (f12 (f13 f14 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S11)) (= (forall ((?v1 S12)) (= (f15 ?v0 ?v1) f1)) (forall ((?v1 S3) (?v2 S3)) (= (f15 ?v0 (f16 (f17 f18 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S15)) (= (forall ((?v1 S3)) (= (f19 ?v0 ?v1) f1)) (forall ((?v1 Int) (?v2 Int)) (= (f19 ?v0 (f8 (f9 f10 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S16)) (= (forall ((?v1 S17)) (= (f20 ?v0 ?v1) f1)) (forall ((?v1 S18) (?v2 S18)) (= (f20 ?v0 (f21 (f22 f23 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S21)) (= (forall ((?v1 S8)) (= (f24 ?v0 ?v1) f1)) (forall ((?v1 S17) (?v2 S17)) (= (f24 ?v0 (f25 (f26 f27 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S8) (?v1 S8) (?v2 S8) (?v3 S8)) (= (= (f12 (f13 f14 ?v0) ?v1) (f12 (f13 f14 ?v2) ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3)))))
+(assert (forall ((?v0 S3) (?v1 S3) (?v2 S3) (?v3 S3)) (= (= (f16 (f17 f18 ?v0) ?v1) (f16 (f17 f18 ?v2) ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3)))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 Int) (?v3 Int)) (= (= (f8 (f9 f10 ?v0) ?v1) (f8 (f9 f10 ?v2) ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3)))))
+(assert (forall ((?v0 S18) (?v1 S18) (?v2 S18) (?v3 S18)) (= (= (f21 (f22 f23 ?v0) ?v1) (f21 (f22 f23 ?v2) ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3)))))
+(assert (forall ((?v0 S17) (?v1 S17) (?v2 S17) (?v3 S17)) (= (= (f25 (f26 f27 ?v0) ?v1) (f25 (f26 f27 ?v2) ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3)))))
+(assert (forall ((?v0 S8) (?v1 S8) (?v2 S8) (?v3 S8)) (=> (= (f12 (f13 f14 ?v0) ?v1) (f12 (f13 f14 ?v2) ?v3)) (=> (=> (= ?v0 ?v2) (=> (= ?v1 ?v3) false)) false))))
+(assert (forall ((?v0 S3) (?v1 S3) (?v2 S3) (?v3 S3)) (=> (= (f16 (f17 f18 ?v0) ?v1) (f16 (f17 f18 ?v2) ?v3)) (=> (=> (= ?v0 ?v2) (=> (= ?v1 ?v3) false)) false))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 Int) (?v3 Int)) (=> (= (f8 (f9 f10 ?v0) ?v1) (f8 (f9 f10 ?v2) ?v3)) (=> (=> (= ?v0 ?v2) (=> (= ?v1 ?v3) false)) false))))
+(assert (forall ((?v0 S18) (?v1 S18) (?v2 S18) (?v3 S18)) (=> (= (f21 (f22 f23 ?v0) ?v1) (f21 (f22 f23 ?v2) ?v3)) (=> (=> (= ?v0 ?v2) (=> (= ?v1 ?v3) false)) false))))
+(assert (forall ((?v0 S17) (?v1 S17) (?v2 S17) (?v3 S17)) (=> (= (f25 (f26 f27 ?v0) ?v1) (f25 (f26 f27 ?v2) ?v3)) (=> (=> (= ?v0 ?v2) (=> (= ?v1 ?v3) false)) false))))
+(assert (forall ((?v0 S6) (?v1 S8) (?v2 S8)) (= (= (f24 (f28 (f29 ?v0) ?v1) ?v2) f1) (= (f30 (f12 (f13 f14 ?v1) ?v2) ?v0) f1))))
+(assert (forall ((?v0 S11) (?v1 S3) (?v2 S3)) (= (= (f19 (f31 (f32 ?v0) ?v1) ?v2) f1) (= (f33 (f16 (f17 f18 ?v1) ?v2) ?v0) f1))))
+(assert (forall ((?v0 S15) (?v1 Int) (?v2 Int)) (= (= (f34 (f35 (f36 ?v0) ?v1) ?v2) f1) (= (f37 (f8 (f9 f10 ?v1) ?v2) ?v0) f1))))
+(assert (forall ((?v0 S16) (?v1 S18) (?v2 S18)) (= (= (f38 (f39 (f40 ?v0) ?v1) ?v2) f1) (= (f41 (f21 (f22 f23 ?v1) ?v2) ?v0) f1))))
+(assert (forall ((?v0 S21) (?v1 S17) (?v2 S17)) (= (= (f20 (f42 (f43 ?v0) ?v1) ?v2) f1) (= (f44 (f25 (f26 f27 ?v1) ?v2) ?v0) f1))))
+(assert (forall ((?v0 S21) (?v1 S8) (?v2 S8) (?v3 S8) (?v4 S31)) (let ((?v_0 (f13 f14 ?v1))) (=> (= (f24 ?v0 ?v1) f1) (=> (= (f30 (f12 (f13 f14 ?v2) ?v3) (f45 ?v4 ?v1)) f1) (= (f46 (f47 (f12 ?v_0 ?v2) (f12 ?v_0 ?v3)) (f48 (f49 ?v0) ?v4)) f1))))))
+(assert (forall ((?v0 S15) (?v1 S3) (?v2 S3) (?v3 S3) (?v4 S35)) (let ((?v_0 (f17 f18 ?v1))) (=> (= (f19 ?v0 ?v1) f1) (=> (= (f33 (f16 (f17 f18 ?v2) ?v3) (f50 ?v4 ?v1)) f1) (= (f51 (f52 (f16 ?v_0 ?v2) (f16 ?v_0 ?v3)) (f53 (f54 ?v0) ?v4)) f1))))))
+(assert (forall ((?v0 S26) (?v1 Int) (?v2 Int) (?v3 Int) (?v4 S39)) (let ((?v_0 (f9 f10 ?v1))) (=> (= (f34 ?v0 ?v1) f1) (=> (= (f37 (f8 (f9 f10 ?v2) ?v3) (f55 ?v4 ?v1)) f1) (= (f33 (f16 (f17 f18 (f8 ?v_0 ?v2)) (f8 ?v_0 ?v3)) (f56 (f57 ?v0) ?v4)) f1))))))
+(assert (forall ((?v0 S16) (?v1 S17) (?v2 S17) (?v3 S17) (?v4 S41)) (let ((?v_0 (f26 f27 ?v1))) (=> (= (f20 ?v0 ?v1) f1) (=> (= (f44 (f25 (f26 f27 ?v2) ?v3) (f58 ?v4 ?v1)) f1) (= (f30 (f12 (f13 f14 (f25 ?v_0 ?v2)) (f25 ?v_0 ?v3)) (f59 (f60 ?v0) ?v4)) f1))))))
+(assert (forall ((?v0 S28) (?v1 S18) (?v2 S18) (?v3 S18) (?v4 S43)) (let ((?v_0 (f22 f23 ?v1))) (=> (= (f38 ?v0 ?v1) f1) (=> (= (f41 (f21 (f22 f23 ?v2) ?v3) (f61 ?v4 ?v1)) f1) (= (f44 (f25 (f26 f27 (f21 ?v_0 ?v2)) (f21 ?v_0 ?v3)) (f62 (f63 ?v0) ?v4)) f1))))))
+(assert (forall ((?v0 S6)) (= (= (f64 ?v0) f1) (forall ((?v1 S8)) (= (f30 (f12 (f13 f14 ?v1) ?v1) ?v0) f1)))))
+(assert (forall ((?v0 S11)) (= (= (f65 ?v0) f1) (forall ((?v1 S3)) (= (f33 (f16 (f17 f18 ?v1) ?v1) ?v0) f1)))))
+(assert (forall ((?v0 S15)) (= (= (f66 ?v0) f1) (forall ((?v1 Int)) (= (f37 (f8 (f9 f10 ?v1) ?v1) ?v0) f1)))))
+(assert (forall ((?v0 S16)) (= (= (f67 ?v0) f1) (forall ((?v1 S18)) (= (f41 (f21 (f22 f23 ?v1) ?v1) ?v0) f1)))))
+(assert (forall ((?v0 S21)) (= (= (f68 ?v0) f1) (forall ((?v1 S17)) (= (f44 (f25 (f26 f27 ?v1) ?v1) ?v0) f1)))))
+(assert (forall ((?v0 S6)) (= (= (f69 ?v0) f1) (forall ((?v1 S8)) (not (= (f30 (f12 (f13 f14 ?v1) ?v1) ?v0) f1))))))
+(assert (forall ((?v0 S11)) (= (= (f70 ?v0) f1) (forall ((?v1 S3)) (not (= (f33 (f16 (f17 f18 ?v1) ?v1) ?v0) f1))))))
+(assert (forall ((?v0 S15)) (= (= (f71 ?v0) f1) (forall ((?v1 Int)) (not (= (f37 (f8 (f9 f10 ?v1) ?v1) ?v0) f1))))))
+(assert (forall ((?v0 S16)) (= (= (f72 ?v0) f1) (forall ((?v1 S18)) (not (= (f41 (f21 (f22 f23 ?v1) ?v1) ?v0) f1))))))
+(assert (forall ((?v0 S21)) (= (= (f73 ?v0) f1) (forall ((?v1 S17)) (not (= (f44 (f25 (f26 f27 ?v1) ?v1) ?v0) f1))))))
+(assert (forall ((?v0 S6)) (= (exists ((?v1 S7)) (= (f11 ?v0 ?v1) f1)) (exists ((?v1 S8) (?v2 S8)) (= (f11 ?v0 (f12 (f13 f14 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S11)) (= (exists ((?v1 S12)) (= (f15 ?v0 ?v1) f1)) (exists ((?v1 S3) (?v2 S3)) (= (f15 ?v0 (f16 (f17 f18 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S15)) (= (exists ((?v1 S3)) (= (f19 ?v0 ?v1) f1)) (exists ((?v1 Int) (?v2 Int)) (= (f19 ?v0 (f8 (f9 f10 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S16)) (= (exists ((?v1 S17)) (= (f20 ?v0 ?v1) f1)) (exists ((?v1 S18) (?v2 S18)) (= (f20 ?v0 (f21 (f22 f23 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S21)) (= (exists ((?v1 S8)) (= (f24 ?v0 ?v1) f1)) (exists ((?v1 S17) (?v2 S17)) (= (f24 ?v0 (f25 (f26 f27 ?v1) ?v2)) f1)))))
+(assert (forall ((?v0 S7)) (=> (forall ((?v1 S8) (?v2 S17) (?v3 S18) (?v4 S18)) (=> (= ?v0 (f12 (f13 f14 ?v1) (f25 (f26 f27 ?v2) (f21 (f22 f23 ?v3) ?v4)))) false)) false)))
+(assert (forall ((?v0 S6) (?v1 S7)) (=> (forall ((?v2 S8) (?v3 S17) (?v4 S18) (?v5 S18)) (= (f11 ?v0 (f12 (f13 f14 ?v2) (f25 (f26 f27 ?v3) (f21 (f22 f23 ?v4) ?v5)))) f1)) (= (f11 ?v0 ?v1) f1))))
+(assert (forall ((?v0 S8)) (=> (forall ((?v1 S17) (?v2 S18) (?v3 S18)) (=> (= ?v0 (f25 (f26 f27 ?v1) (f21 (f22 f23 ?v2) ?v3))) false)) false)))
+(assert (forall ((?v0 S12)) (=> (forall ((?v1 S3) (?v2 Int) (?v3 Int)) (=> (= ?v0 (f16 (f17 f18 ?v1) (f8 (f9 f10 ?v2) ?v3))) false)) false)))
+(assert (forall ((?v0 S7)) (=> (forall ((?v1 S8) (?v2 S17) (?v3 S17)) (=> (= ?v0 (f12 (f13 f14 ?v1) (f25 (f26 f27 ?v2) ?v3))) false)) false)))
+(assert (forall ((?v0 S21) (?v1 S8)) (=> (forall ((?v2 S17) (?v3 S18) (?v4 S18)) (= (f24 ?v0 (f25 (f26 f27 ?v2) (f21 (f22 f23 ?v3) ?v4))) f1)) (= (f24 ?v0 ?v1) f1))))
+(assert (forall ((?v0 S11) (?v1 S12)) (=> (forall ((?v2 S3) (?v3 Int) (?v4 Int)) (= (f15 ?v0 (f16 (f17 f18 ?v2) (f8 (f9 f10 ?v3) ?v4))) f1)) (= (f15 ?v0 ?v1) f1))))
+(assert (forall ((?v0 S6) (?v1 S7)) (=> (forall ((?v2 S8) (?v3 S17) (?v4 S17)) (= (f11 ?v0 (f12 (f13 f14 ?v2) (f25 (f26 f27 ?v3) ?v4))) f1)) (= (f11 ?v0 ?v1) f1))))
+(assert (forall ((?v0 S7)) (=> (forall ((?v1 S8) (?v2 S8)) (=> (= ?v0 (f12 (f13 f14 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S12)) (=> (forall ((?v1 S3) (?v2 S3)) (=> (= ?v0 (f16 (f17 f18 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S3)) (=> (forall ((?v1 Int) (?v2 Int)) (=> (= ?v0 (f8 (f9 f10 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S17)) (=> (forall ((?v1 S18) (?v2 S18)) (=> (= ?v0 (f21 (f22 f23 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S8)) (=> (forall ((?v1 S17) (?v2 S17)) (=> (= ?v0 (f25 (f26 f27 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S7)) (=> (forall ((?v1 S8) (?v2 S8)) (=> (= ?v0 (f12 (f13 f14 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S12)) (=> (forall ((?v1 S3) (?v2 S3)) (=> (= ?v0 (f16 (f17 f18 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S3)) (=> (forall ((?v1 Int) (?v2 Int)) (=> (= ?v0 (f8 (f9 f10 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S17)) (=> (forall ((?v1 S18) (?v2 S18)) (=> (= ?v0 (f21 (f22 f23 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S8)) (=> (forall ((?v1 S17) (?v2 S17)) (=> (= ?v0 (f25 (f26 f27 ?v1) ?v2)) false)) false)))
+(assert (forall ((?v0 S6) (?v1 S8) (?v2 S8)) (=> (= (f11 ?v0 (f12 (f13 f14 ?v1) ?v2)) f1) (= (f24 (f28 (f74 ?v0) ?v1) ?v2) f1))))
+(assert (forall ((?v0 S11) (?v1 S3) (?v2 S3)) (=> (= (f15 ?v0 (f16 (f17 f18 ?v1) ?v2)) f1) (= (f19 (f31 (f75 ?v0) ?v1) ?v2) f1))))
+(assert (forall ((?v0 S15) (?v1 Int) (?v2 Int)) (=> (= (f19 ?v0 (f8 (f9 f10 ?v1) ?v2)) f1) (= (f34 (f35 (f76 ?v0) ?v1) ?v2) f1))))
+(assert (forall ((?v0 S16) (?v1 S18) (?v2 S18)) (=> (= (f20 ?v0 (f21 (f22 f23 ?v1) ?v2)) f1) (= (f38 (f39 (f77 ?v0) ?v1) ?v2) f1))))
+(assert (forall ((?v0 S21) (?v1 S17) (?v2 S17)) (=> (= (f24 ?v0 (f25 (f26 f27 ?v1) ?v2)) f1) (= (f20 (f42 (f78 ?v0) ?v1) ?v2) f1))))
+(assert (forall ((?v0 S8) (?v1 S8) (?v2 S8) (?v3 S8) (?v4 S6) (?v5 S6)) (let ((?v_0 (f13 f14 ?v0))) (= (= (f46 (f47 (f12 ?v_0 ?v1) (f12 (f13 f14 ?v2) ?v3)) (f79 (f80 ?v4) ?v5)) f1) (or (= (f30 (f12 ?v_0 ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f30 (f12 (f13 f14 ?v1) ?v3) ?v5) f1)))))))
+(assert (forall ((?v0 S3) (?v1 S3) (?v2 S3) (?v3 S3) (?v4 S11) (?v5 S11)) (let ((?v_0 (f17 f18 ?v0))) (= (= (f51 (f52 (f16 ?v_0 ?v1) (f16 (f17 f18 ?v2) ?v3)) (f81 (f82 ?v4) ?v5)) f1) (or (= (f33 (f16 ?v_0 ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f33 (f16 (f17 f18 ?v1) ?v3) ?v5) f1)))))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 Int) (?v3 Int) (?v4 S15) (?v5 S15)) (let ((?v_0 (f9 f10 ?v0))) (= (= (f33 (f16 (f17 f18 (f8 ?v_0 ?v1)) (f8 (f9 f10 ?v2) ?v3)) (f83 (f84 ?v4) ?v5)) f1) (or (= (f37 (f8 ?v_0 ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f37 (f8 (f9 f10 ?v1) ?v3) ?v5) f1)))))))
+(assert (forall ((?v0 S17) (?v1 S17) (?v2 S17) (?v3 S17) (?v4 S21) (?v5 S21)) (let ((?v_0 (f26 f27 ?v0))) (= (= (f30 (f12 (f13 f14 (f25 ?v_0 ?v1)) (f25 (f26 f27 ?v2) ?v3)) (f85 (f86 ?v4) ?v5)) f1) (or (= (f44 (f25 ?v_0 ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f44 (f25 (f26 f27 ?v1) ?v3) ?v5) f1)))))))
+(assert (forall ((?v0 Int) (?v1 S8) (?v2 Int) (?v3 S8) (?v4 S15) (?v5 S6)) (= (= (f87 (f88 (f89 ?v0 ?v1) (f89 ?v2 ?v3)) (f90 ?v4 ?v5)) f1) (or (= (f37 (f8 (f9 f10 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f30 (f12 (f13 f14 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 Int) (?v1 S3) (?v2 Int) (?v3 S3) (?v4 S15) (?v5 S11)) (= (= (f91 (f92 (f93 ?v0 ?v1) (f93 ?v2 ?v3)) (f94 ?v4 ?v5)) f1) (or (= (f37 (f8 (f9 f10 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f33 (f16 (f17 f18 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 S8) (?v1 Int) (?v2 S8) (?v3 Int) (?v4 S6) (?v5 S15)) (= (= (f95 (f96 (f97 ?v0 ?v1) (f97 ?v2 ?v3)) (f98 ?v4 ?v5)) f1) (or (= (f30 (f12 (f13 f14 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f37 (f8 (f9 f10 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 S3) (?v1 Int) (?v2 S3) (?v3 Int) (?v4 S11) (?v5 S15)) (= (= (f99 (f100 (f101 ?v0 ?v1) (f101 ?v2 ?v3)) (f102 ?v4 ?v5)) f1) (or (= (f33 (f16 (f17 f18 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f37 (f8 (f9 f10 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 S18) (?v1 S18) (?v2 S18) (?v3 S18) (?v4 S16) (?v5 S16)) (let ((?v_0 (f22 f23 ?v0))) (= (= (f44 (f25 (f26 f27 (f21 ?v_0 ?v1)) (f21 (f22 f23 ?v2) ?v3)) (f103 (f104 ?v4) ?v5)) f1) (or (= (f41 (f21 ?v_0 ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f41 (f21 (f22 f23 ?v1) ?v3) ?v5) f1)))))))
+(assert (forall ((?v0 S18) (?v1 Int) (?v2 S18) (?v3 Int) (?v4 S16) (?v5 S15)) (= (= (f105 (f106 (f107 ?v0 ?v1) (f107 ?v2 ?v3)) (f108 ?v4 ?v5)) f1) (or (= (f41 (f21 (f22 f23 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f37 (f8 (f9 f10 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 S18) (?v1 S8) (?v2 S18) (?v3 S8) (?v4 S16) (?v5 S6)) (= (= (f109 (f110 (f111 ?v0 ?v1) (f111 ?v2 ?v3)) (f112 ?v4 ?v5)) f1) (or (= (f41 (f21 (f22 f23 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f30 (f12 (f13 f14 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 S18) (?v1 S3) (?v2 S18) (?v3 S3) (?v4 S16) (?v5 S11)) (= (= (f113 (f114 (f115 ?v0 ?v1) (f115 ?v2 ?v3)) (f116 ?v4 ?v5)) f1) (or (= (f41 (f21 (f22 f23 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f33 (f16 (f17 f18 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 S17) (?v1 Int) (?v2 S17) (?v3 Int) (?v4 S21) (?v5 S15)) (= (= (f117 (f118 (f119 ?v0 ?v1) (f119 ?v2 ?v3)) (f120 ?v4 ?v5)) f1) (or (= (f44 (f25 (f26 f27 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f37 (f8 (f9 f10 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 S17) (?v1 S8) (?v2 S17) (?v3 S8) (?v4 S21) (?v5 S6)) (= (= (f121 (f122 (f123 ?v0 ?v1) (f123 ?v2 ?v3)) (f124 ?v4 ?v5)) f1) (or (= (f44 (f25 (f26 f27 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f30 (f12 (f13 f14 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 S17) (?v1 S3) (?v2 S17) (?v3 S3) (?v4 S21) (?v5 S11)) (= (= (f125 (f126 (f127 ?v0 ?v1) (f127 ?v2 ?v3)) (f128 ?v4 ?v5)) f1) (or (= (f44 (f25 (f26 f27 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f33 (f16 (f17 f18 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 Int) (?v1 S18) (?v2 Int) (?v3 S18) (?v4 S15) (?v5 S16)) (= (= (f129 (f130 (f131 ?v0 ?v1) (f131 ?v2 ?v3)) (f132 ?v4 ?v5)) f1) (or (= (f37 (f8 (f9 f10 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f41 (f21 (f22 f23 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 S8) (?v1 S18) (?v2 S8) (?v3 S18) (?v4 S6) (?v5 S16)) (= (= (f133 (f134 (f135 ?v0 ?v1) (f135 ?v2 ?v3)) (f136 ?v4 ?v5)) f1) (or (= (f30 (f12 (f13 f14 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f41 (f21 (f22 f23 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 S3) (?v1 S18) (?v2 S3) (?v3 S18) (?v4 S11) (?v5 S16)) (= (= (f137 (f138 (f139 ?v0 ?v1) (f139 ?v2 ?v3)) (f140 ?v4 ?v5)) f1) (or (= (f33 (f16 (f17 f18 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f41 (f21 (f22 f23 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 Int) (?v1 S17) (?v2 Int) (?v3 S17) (?v4 S15) (?v5 S21)) (= (= (f141 (f142 (f143 ?v0 ?v1) (f143 ?v2 ?v3)) (f144 ?v4 ?v5)) f1) (or (= (f37 (f8 (f9 f10 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f44 (f25 (f26 f27 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 S8) (?v1 S17) (?v2 S8) (?v3 S17) (?v4 S6) (?v5 S21)) (= (= (f145 (f146 (f147 ?v0 ?v1) (f147 ?v2 ?v3)) (f148 ?v4 ?v5)) f1) (or (= (f30 (f12 (f13 f14 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f44 (f25 (f26 f27 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 S3) (?v1 S17) (?v2 S3) (?v3 S17) (?v4 S11) (?v5 S21)) (= (= (f149 (f150 (f151 ?v0 ?v1) (f151 ?v2 ?v3)) (f152 ?v4 ?v5)) f1) (or (= (f33 (f16 (f17 f18 ?v0) ?v2) ?v4) f1) (and (= ?v0 ?v2) (= (f44 (f25 (f26 f27 ?v1) ?v3) ?v5) f1))))))
+(assert (forall ((?v0 S15) (?v1 Int) (?v2 Int)) (= (= (f34 (f35 (f76 ?v0) ?v1) ?v2) f1) (= (f19 ?v0 (f8 (f9 f10 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S16) (?v1 S18) (?v2 S18)) (= (= (f38 (f39 (f77 ?v0) ?v1) ?v2) f1) (= (f20 ?v0 (f21 (f22 f23 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S21) (?v1 S17) (?v2 S17)) (= (= (f20 (f42 (f78 ?v0) ?v1) ?v2) f1) (= (f24 ?v0 (f25 (f26 f27 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S6) (?v1 S8) (?v2 S8)) (=> (= (f24 (f28 (f74 ?v0) ?v1) ?v2) f1) (= (f11 ?v0 (f12 (f13 f14 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S11) (?v1 S3) (?v2 S3)) (=> (= (f19 (f31 (f75 ?v0) ?v1) ?v2) f1) (= (f15 ?v0 (f16 (f17 f18 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S15) (?v1 Int) (?v2 Int)) (=> (= (f34 (f35 (f76 ?v0) ?v1) ?v2) f1) (= (f19 ?v0 (f8 (f9 f10 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S16) (?v1 S18) (?v2 S18)) (=> (= (f38 (f39 (f77 ?v0) ?v1) ?v2) f1) (= (f20 ?v0 (f21 (f22 f23 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S21) (?v1 S17) (?v2 S17)) (=> (= (f20 (f42 (f78 ?v0) ?v1) ?v2) f1) (= (f24 ?v0 (f25 (f26 f27 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S6) (?v1 S8) (?v2 S8)) (=> (= (f24 (f28 (f74 ?v0) ?v1) ?v2) f1) (=> (=> (= (f11 ?v0 (f12 (f13 f14 ?v1) ?v2)) f1) false) false))))
+(assert (forall ((?v0 S11) (?v1 S3) (?v2 S3)) (=> (= (f19 (f31 (f75 ?v0) ?v1) ?v2) f1) (=> (=> (= (f15 ?v0 (f16 (f17 f18 ?v1) ?v2)) f1) false) false))))
+(assert (forall ((?v0 S15) (?v1 Int) (?v2 Int)) (=> (= (f34 (f35 (f76 ?v0) ?v1) ?v2) f1) (=> (=> (= (f19 ?v0 (f8 (f9 f10 ?v1) ?v2)) f1) false) false))))
+(assert (forall ((?v0 S16) (?v1 S18) (?v2 S18)) (=> (= (f38 (f39 (f77 ?v0) ?v1) ?v2) f1) (=> (=> (= (f20 ?v0 (f21 (f22 f23 ?v1) ?v2)) f1) false) false))))
+(assert (forall ((?v0 S21) (?v1 S17) (?v2 S17)) (=> (= (f20 (f42 (f78 ?v0) ?v1) ?v2) f1) (=> (=> (= (f24 ?v0 (f25 (f26 f27 ?v1) ?v2)) f1) false) false))))
+(assert (forall ((?v0 S8) (?v1 S8) (?v2 S98)) (= (= (f30 (f12 (f13 f14 ?v0) ?v1) (f153 ?v2)) f1) (< (f154 f155 (f156 ?v2 ?v0)) (f154 f155 (f156 ?v2 ?v1))))))
+(assert (forall ((?v0 S3) (?v1 S3) (?v2 S100)) (= (= (f33 (f16 (f17 f18 ?v0) ?v1) (f157 ?v2)) f1) (< (f154 f155 (f158 ?v2 ?v0)) (f154 f155 (f158 ?v2 ?v1))))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 S101)) (= (= (f37 (f8 (f9 f10 ?v0) ?v1) (f159 ?v2)) f1) (< (f154 f155 (f160 ?v2 ?v0)) (f154 f155 (f160 ?v2 ?v1))))))
+(assert (forall ((?v0 S18) (?v1 S18) (?v2 S102)) (= (= (f41 (f21 (f22 f23 ?v0) ?v1) (f161 ?v2)) f1) (< (f154 f155 (f162 ?v2 ?v0)) (f154 f155 (f162 ?v2 ?v1))))))
+(assert (forall ((?v0 S17) (?v1 S17) (?v2 S103)) (= (= (f44 (f25 (f26 f27 ?v0) ?v1) (f163 ?v2)) f1) (< (f154 f155 (f164 ?v2 ?v0)) (f154 f155 (f164 ?v2 ?v1))))))
+(assert (forall ((?v0 S98) (?v1 S8) (?v2 S8) (?v3 S6)) (=> (< (f154 f155 (f156 ?v0 ?v1)) (f154 f155 (f156 ?v0 ?v2))) (= (f30 (f12 (f13 f14 ?v1) ?v2) (f165 (f166 ?v0) ?v3)) f1))))
+(assert (forall ((?v0 S100) (?v1 S3) (?v2 S3) (?v3 S11)) (=> (< (f154 f155 (f158 ?v0 ?v1)) (f154 f155 (f158 ?v0 ?v2))) (= (f33 (f16 (f17 f18 ?v1) ?v2) (f167 (f168 ?v0) ?v3)) f1))))
+(assert (forall ((?v0 S101) (?v1 Int) (?v2 Int) (?v3 S15)) (=> (< (f154 f155 (f160 ?v0 ?v1)) (f154 f155 (f160 ?v0 ?v2))) (= (f37 (f8 (f9 f10 ?v1) ?v2) (f169 (f170 ?v0) ?v3)) f1))))
+(assert (forall ((?v0 S102) (?v1 S18) (?v2 S18) (?v3 S16)) (=> (< (f154 f155 (f162 ?v0 ?v1)) (f154 f155 (f162 ?v0 ?v2))) (= (f41 (f21 (f22 f23 ?v1) ?v2) (f171 (f172 ?v0) ?v3)) f1))))
+(assert (forall ((?v0 S103) (?v1 S17) (?v2 S17) (?v3 S21)) (=> (< (f154 f155 (f164 ?v0 ?v1)) (f154 f155 (f164 ?v0 ?v2))) (= (f44 (f25 (f26 f27 ?v1) ?v2) (f173 (f174 ?v0) ?v3)) f1))))
+(assert (forall ((?v0 S98) (?v1 S8) (?v2 S8) (?v3 S6)) (let ((?v_0 (f12 (f13 f14 ?v1) ?v2))) (=> (<= (f154 f155 (f156 ?v0 ?v1)) (f154 f155 (f156 ?v0 ?v2))) (=> (= (f30 ?v_0 ?v3) f1) (= (f30 ?v_0 (f165 (f166 ?v0) ?v3)) f1))))))
+(assert (forall ((?v0 S100) (?v1 S3) (?v2 S3) (?v3 S11)) (let ((?v_0 (f16 (f17 f18 ?v1) ?v2))) (=> (<= (f154 f155 (f158 ?v0 ?v1)) (f154 f155 (f158 ?v0 ?v2))) (=> (= (f33 ?v_0 ?v3) f1) (= (f33 ?v_0 (f167 (f168 ?v0) ?v3)) f1))))))
+(assert (forall ((?v0 S101) (?v1 Int) (?v2 Int) (?v3 S15)) (let ((?v_0 (f8 (f9 f10 ?v1) ?v2))) (=> (<= (f154 f155 (f160 ?v0 ?v1)) (f154 f155 (f160 ?v0 ?v2))) (=> (= (f37 ?v_0 ?v3) f1) (= (f37 ?v_0 (f169 (f170 ?v0) ?v3)) f1))))))
+(assert (forall ((?v0 S102) (?v1 S18) (?v2 S18) (?v3 S16)) (let ((?v_0 (f21 (f22 f23 ?v1) ?v2))) (=> (<= (f154 f155 (f162 ?v0 ?v1)) (f154 f155 (f162 ?v0 ?v2))) (=> (= (f41 ?v_0 ?v3) f1) (= (f41 ?v_0 (f171 (f172 ?v0) ?v3)) f1))))))
+(assert (forall ((?v0 S103) (?v1 S17) (?v2 S17) (?v3 S21)) (let ((?v_0 (f25 (f26 f27 ?v1) ?v2))) (=> (<= (f154 f155 (f164 ?v0 ?v1)) (f154 f155 (f164 ?v0 ?v2))) (=> (= (f44 ?v_0 ?v3) f1) (= (f44 ?v_0 (f173 (f174 ?v0) ?v3)) f1))))))
+(assert (forall ((?v0 S15) (?v1 S11)) (= (= (f175 ?v0 ?v1) f1) (forall ((?v2 S3)) (=> (= (f37 ?v2 ?v0) f1) (forall ((?v3 S3)) (=> (= (f37 ?v3 ?v0) f1) (=> (not (= ?v2 ?v3)) (or (= (f33 (f16 (f17 f18 ?v2) ?v3) ?v1) f1) (= (f33 (f16 (f17 f18 ?v3) ?v2) ?v1) f1))))))))))
+(assert (forall ((?v0 S6) (?v1 S33)) (= (= (f176 ?v0 ?v1) f1) (forall ((?v2 S7)) (=> (= (f30 ?v2 ?v0) f1) (forall ((?v3 S7)) (=> (= (f30 ?v3 ?v0) f1) (=> (not (= ?v2 ?v3)) (or (= (f46 (f47 ?v2 ?v3) ?v1) f1) (= (f46 (f47 ?v3 ?v2) ?v1) f1))))))))))
+(assert (forall ((?v0 S11) (?v1 S37)) (= (= (f177 ?v0 ?v1) f1) (forall ((?v2 S12)) (=> (= (f33 ?v2 ?v0) f1) (forall ((?v3 S12)) (=> (= (f33 ?v3 ?v0) f1) (=> (not (= ?v2 ?v3)) (or (= (f51 (f52 ?v2 ?v3) ?v1) f1) (= (f51 (f52 ?v3 ?v2) ?v1) f1))))))))))
+(assert (forall ((?v0 S26) (?v1 S15)) (= (= (f178 ?v0 ?v1) f1) (forall ((?v2 Int)) (=> (= (f179 ?v2 ?v0) f1) (forall ((?v3 Int)) (=> (= (f179 ?v3 ?v0) f1) (=> (not (= ?v2 ?v3)) (or (= (f37 (f8 (f9 f10 ?v2) ?v3) ?v1) f1) (= (f37 (f8 (f9 f10 ?v3) ?v2) ?v1) f1))))))))))
+(assert (forall ((?v0 S21) (?v1 S6)) (= (= (f180 ?v0 ?v1) f1) (forall ((?v2 S8)) (=> (= (f44 ?v2 ?v0) f1) (forall ((?v3 S8)) (=> (= (f44 ?v3 ?v0) f1) (=> (not (= ?v2 ?v3)) (or (= (f30 (f12 (f13 f14 ?v2) ?v3) ?v1) f1) (= (f30 (f12 (f13 f14 ?v3) ?v2) ?v1) f1))))))))))
+(assert (forall ((?v0 S28) (?v1 S16)) (= (= (f181 ?v0 ?v1) f1) (forall ((?v2 S18)) (=> (= (f182 ?v2 ?v0) f1) (forall ((?v3 S18)) (=> (= (f182 ?v3 ?v0) f1) (=> (not (= ?v2 ?v3)) (or (= (f41 (f21 (f22 f23 ?v2) ?v3) ?v1) f1) (= (f41 (f21 (f22 f23 ?v3) ?v2) ?v1) f1))))))))))
+(assert (forall ((?v0 S16) (?v1 S21)) (= (= (f183 ?v0 ?v1) f1) (forall ((?v2 S17)) (=> (= (f41 ?v2 ?v0) f1) (forall ((?v3 S17)) (=> (= (f41 ?v3 ?v0) f1) (=> (not (= ?v2 ?v3)) (or (= (f44 (f25 (f26 f27 ?v2) ?v3) ?v1) f1) (= (f44 (f25 (f26 f27 ?v3) ?v2) ?v1) f1))))))))))
+(assert (= f184 f185))
+(assert (= f186 f187))
+(assert (= f188 f189))
+(assert (forall ((?v0 S7)) (exists ((?v1 S8) (?v2 S8)) (= ?v0 (f12 (f13 f14 ?v1) ?v2)))))
+(assert (forall ((?v0 S12)) (exists ((?v1 S3) (?v2 S3)) (= ?v0 (f16 (f17 f18 ?v1) ?v2)))))
+(assert (forall ((?v0 S3)) (exists ((?v1 Int) (?v2 Int)) (= ?v0 (f8 (f9 f10 ?v1) ?v2)))))
+(assert (forall ((?v0 S17)) (exists ((?v1 S18) (?v2 S18)) (= ?v0 (f21 (f22 f23 ?v1) ?v2)))))
+(assert (forall ((?v0 S8)) (exists ((?v1 S17) (?v2 S17)) (= ?v0 (f25 (f26 f27 ?v1) ?v2)))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 S6) (?v3 S112)) (= (= (f37 (f8 (f9 f10 ?v0) ?v1) (f190 (f191 ?v2) ?v3)) f1) (= (f30 (f12 (f13 f14 (f192 ?v3 ?v0)) (f192 ?v3 ?v1)) ?v2) f1))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 S11) (?v3 S4)) (= (= (f37 (f8 (f9 f10 ?v0) ?v1) (f193 (f194 ?v2) ?v3)) f1) (= (f33 (f16 (f17 f18 (f8 ?v3 ?v0)) (f8 ?v3 ?v1)) ?v2) f1))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 S15) (?v3 S115)) (= (= (f37 (f8 (f9 f10 ?v0) ?v1) (f195 (f196 ?v2) ?v3)) f1) (= (f37 (f8 (f9 f10 (f197 ?v3 ?v0)) (f197 ?v3 ?v1)) ?v2) f1))))
+(assert (forall ((?v0 S8) (?v1 S8) (?v2 S15) (?v3 S117)) (= (= (f30 (f12 (f13 f14 ?v0) ?v1) (f198 (f199 ?v2) ?v3)) f1) (= (f37 (f8 (f9 f10 (f200 ?v3 ?v0)) (f200 ?v3 ?v1)) ?v2) f1))))
+(assert (forall ((?v0 S3) (?v1 S3) (?v2 S15) (?v3 S2)) (= (= (f33 (f16 (f17 f18 ?v0) ?v1) (f201 (f202 ?v2) ?v3)) f1) (= (f37 (f8 (f9 f10 (f6 ?v3 ?v0)) (f6 ?v3 ?v1)) ?v2) f1))))
+(assert (forall ((?v0 S18) (?v1 S18) (?v2 S15) (?v3 S99)) (= (= (f41 (f21 (f22 f23 ?v0) ?v1) (f203 (f204 ?v2) ?v3)) f1) (= (f37 (f8 (f9 f10 (f154 ?v3 ?v0)) (f154 ?v3 ?v1)) ?v2) f1))))
+(assert (forall ((?v0 S18) (?v1 S18) (?v2 S6) (?v3 S121)) (= (= (f41 (f21 (f22 f23 ?v0) ?v1) (f205 (f206 ?v2) ?v3)) f1) (= (f30 (f12 (f13 f14 (f207 ?v3 ?v0)) (f207 ?v3 ?v1)) ?v2) f1))))
+(assert (forall ((?v0 S18) (?v1 S18) (?v2 S11) (?v3 S123)) (= (= (f41 (f21 (f22 f23 ?v0) ?v1) (f208 (f209 ?v2) ?v3)) f1) (= (f33 (f16 (f17 f18 (f210 ?v3 ?v0)) (f210 ?v3 ?v1)) ?v2) f1))))
+(assert (forall ((?v0 S17) (?v1 S17) (?v2 S15) (?v3 S125)) (= (= (f44 (f25 (f26 f27 ?v0) ?v1) (f211 (f212 ?v2) ?v3)) f1) (= (f37 (f8 (f9 f10 (f213 ?v3 ?v0)) (f213 ?v3 ?v1)) ?v2) f1))))
+(assert (forall ((?v0 S17) (?v1 S17) (?v2 S6) (?v3 S22)) (= (= (f44 (f25 (f26 f27 ?v0) ?v1) (f214 (f215 ?v2) ?v3)) f1) (= (f30 (f12 (f13 f14 (f25 ?v3 ?v0)) (f25 ?v3 ?v1)) ?v2) f1))))
+(assert (forall ((?v0 S17) (?v1 S17) (?v2 S11) (?v3 S128)) (= (= (f44 (f25 (f26 f27 ?v0) ?v1) (f216 (f217 ?v2) ?v3)) f1) (= (f33 (f16 (f17 f18 (f218 ?v3 ?v0)) (f218 ?v3 ?v1)) ?v2) f1))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 S16) (?v3 S101)) (= (= (f37 (f8 (f9 f10 ?v0) ?v1) (f219 (f220 ?v2) ?v3)) f1) (= (f41 (f21 (f22 f23 (f160 ?v3 ?v0)) (f160 ?v3 ?v1)) ?v2) f1))))
+(assert (forall ((?v0 S8) (?v1 S8) (?v2 S16) (?v3 S98)) (= (= (f30 (f12 (f13 f14 ?v0) ?v1) (f221 (f222 ?v2) ?v3)) f1) (= (f41 (f21 (f22 f23 (f156 ?v3 ?v0)) (f156 ?v3 ?v1)) ?v2) f1))))
+(assert (forall ((?v0 S3) (?v1 S3) (?v2 S16) (?v3 S100)) (= (= (f33 (f16 (f17 f18 ?v0) ?v1) (f223 (f224 ?v2) ?v3)) f1) (= (f41 (f21 (f22 f23 (f158 ?v3 ?v0)) (f158 ?v3 ?v1)) ?v2) f1))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 S21) (?v3 S133)) (= (= (f37 (f8 (f9 f10 ?v0) ?v1) (f225 (f226 ?v2) ?v3)) f1) (= (f44 (f25 (f26 f27 (f227 ?v3 ?v0)) (f227 ?v3 ?v1)) ?v2) f1))))
+(assert (forall ((?v0 S8) (?v1 S8) (?v2 S21) (?v3 S135)) (= (= (f30 (f12 (f13 f14 ?v0) ?v1) (f228 (f229 ?v2) ?v3)) f1) (= (f44 (f25 (f26 f27 (f230 ?v3 ?v0)) (f230 ?v3 ?v1)) ?v2) f1))))
+(assert (forall ((?v0 S3) (?v1 S3) (?v2 S21) (?v3 S137)) (= (= (f33 (f16 (f17 f18 ?v0) ?v1) (f231 (f232 ?v2) ?v3)) f1) (= (f44 (f25 (f26 f27 (f233 ?v3 ?v0)) (f233 ?v3 ?v1)) ?v2) f1))))
+(assert (forall ((?v0 S24) (?v1 S8) (?v2 S8)) (=> (= (f24 (f28 ?v0 ?v1) ?v2) f1) (= (f11 (f234 ?v0) (f12 (f13 f14 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S25) (?v1 S3) (?v2 S3)) (=> (= (f19 (f31 ?v0 ?v1) ?v2) f1) (= (f15 (f235 ?v0) (f16 (f17 f18 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S27) (?v1 Int) (?v2 Int)) (=> (= (f34 (f35 ?v0 ?v1) ?v2) f1) (= (f19 (f236 f189 ?v0) (f8 (f9 f10 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S29) (?v1 S18) (?v2 S18)) (=> (= (f38 (f39 ?v0 ?v1) ?v2) f1) (= (f20 (f237 f187 ?v0) (f21 (f22 f23 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S30) (?v1 S17) (?v2 S17)) (=> (= (f20 (f42 ?v0 ?v1) ?v2) f1) (= (f24 (f238 f185 ?v0) (f25 (f26 f27 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S24) (?v1 S8) (?v2 S8)) (=> (= (f24 (f28 ?v0 ?v1) ?v2) f1) (= (f11 (f234 ?v0) (f12 (f13 f14 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S25) (?v1 S3) (?v2 S3)) (=> (= (f19 (f31 ?v0 ?v1) ?v2) f1) (= (f15 (f235 ?v0) (f16 (f17 f18 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S27) (?v1 Int) (?v2 Int)) (=> (= (f34 (f35 ?v0 ?v1) ?v2) f1) (= (f19 (f236 f189 ?v0) (f8 (f9 f10 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S29) (?v1 S18) (?v2 S18)) (=> (= (f38 (f39 ?v0 ?v1) ?v2) f1) (= (f20 (f237 f187 ?v0) (f21 (f22 f23 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S30) (?v1 S17) (?v2 S17)) (=> (= (f20 (f42 ?v0 ?v1) ?v2) f1) (= (f24 (f238 f185 ?v0) (f25 (f26 f27 ?v1) ?v2)) f1))))
+(assert (forall ((?v0 S3) (?v1 S139) (?v2 Int) (?v3 Int)) (=> (= (f37 ?v0 (f55 (f239 ?v1 ?v2) ?v3)) f1) (= (f37 ?v0 (f31 (f240 ?v1) (f8 (f9 f10 ?v2) ?v3))) f1))))
+(assert (forall ((?v0 S7) (?v1 S140) (?v2 Int) (?v3 Int)) (=> (= (f30 ?v0 (f241 (f242 ?v1 ?v2) ?v3)) f1) (= (f30 ?v0 (f243 (f244 ?v1) (f8 (f9 f10 ?v2) ?v3))) f1))))
+(assert (forall ((?v0 S12) (?v1 S143) (?v2 Int) (?v3 Int)) (=> (= (f33 ?v0 (f245 (f246 ?v1 ?v2) ?v3)) f1) (= (f33 ?v0 (f50 (f247 ?v1) (f8 (f9 f10 ?v2) ?v3))) f1))))
+(assert (forall ((?v0 S18) (?v1 S145) (?v2 Int) (?v3 Int)) (=> (= (f182 ?v0 (f248 (f249 ?v1 ?v2) ?v3)) f1) (= (f182 ?v0 (f250 (f251 ?v1) (f8 (f9 f10 ?v2) ?v3))) f1))))
+(assert (forall ((?v0 Int) (?v1 S148) (?v2 Int) (?v3 Int)) (=> (= (f179 ?v0 (f35 (f252 ?v1 ?v2) ?v3)) f1) (= (f179 ?v0 (f253 (f254 ?v1) (f8 (f9 f10 ?v2) ?v3))) f1))))
+(assert (forall ((?v0 S3) (?v1 S150) (?v2 S18) (?v3 S18)) (=> (= (f37 ?v0 (f255 (f256 ?v1 ?v2) ?v3)) f1) (= (f37 ?v0 (f257 (f258 ?v1) (f21 (f22 f23 ?v2) ?v3))) f1))))
+(assert (forall ((?v0 S7) (?v1 S153) (?v2 S18) (?v3 S18)) (=> (= (f30 ?v0 (f259 (f260 ?v1 ?v2) ?v3)) f1) (= (f30 ?v0 (f261 (f262 ?v1) (f21 (f22 f23 ?v2) ?v3))) f1))))
+(assert (forall ((?v0 S12) (?v1 S156) (?v2 S18) (?v3 S18)) (=> (= (f33 ?v0 (f263 (f264 ?v1 ?v2) ?v3)) f1) (= (f33 ?v0 (f265 (f266 ?v1) (f21 (f22 f23 ?v2) ?v3))) f1))))
+(assert (forall ((?v0 S18) (?v1 S159) (?v2 S18) (?v3 S18)) (=> (= (f182 ?v0 (f39 (f267 ?v1 ?v2) ?v3)) f1) (= (f182 ?v0 (f268 (f269 ?v1) (f21 (f22 f23 ?v2) ?v3))) f1))))
+(assert (forall ((?v0 Int) (?v1 S161) (?v2 S18) (?v3 S18)) (=> (= (f179 ?v0 (f270 (f271 ?v1 ?v2) ?v3)) f1) (= (f179 ?v0 (f272 (f273 ?v1) (f21 (f22 f23 ?v2) ?v3))) f1))))
+(assert (forall ((?v0 S3) (?v1 S164) (?v2 S17) (?v3 S17)) (=> (= (f37 ?v0 (f257 (f274 ?v1 ?v2) ?v3)) f1) (= (f37 ?v0 (f275 (f276 ?v1) (f25 (f26 f27 ?v2) ?v3))) f1))))
+(assert (forall ((?v0 S7) (?v1 S166) (?v2 S17) (?v3 S17)) (=> (= (f30 ?v0 (f261 (f277 ?v1 ?v2) ?v3)) f1) (= (f30 ?v0 (f45 (f278 ?v1) (f25 (f26 f27 ?v2) ?v3))) f1))))
+(assert (forall ((?v0 S12) (?v1 S167) (?v2 S17) (?v3 S17)) (=> (= (f33 ?v0 (f265 (f279 ?v1 ?v2) ?v3)) f1) (= (f33 ?v0 (f280 (f281 ?v1) (f25 (f26 f27 ?v2) ?v3))) f1))))
+(assert (forall ((?v0 S18) (?v1 S169) (?v2 S17) (?v3 S17)) (=> (= (f182 ?v0 (f268 (f282 ?v1 ?v2) ?v3)) f1) (= (f182 ?v0 (f283 (f284 ?v1) (f25 (f26 f27 ?v2) ?v3))) f1))))
+(assert (forall ((?v0 Int) (?v1 S171) (?v2 S17) (?v3 S17)) (=> (= (f179 ?v0 (f272 (f285 ?v1 ?v2) ?v3)) f1) (= (f179 ?v0 (f286 (f287 ?v1) (f25 (f26 f27 ?v2) ?v3))) f1))))
+(assert (forall ((?v0 S17) (?v1 S173) (?v2 S8) (?v3 S8)) (=> (= (f41 ?v0 (f288 (f289 ?v1 ?v2) ?v3)) f1) (= (f41 ?v0 (f290 (f291 ?v1) (f12 (f13 f14 ?v2) ?v3))) f1))))
+(assert (forall ((?v0 S17) (?v1 S176) (?v2 S3) (?v3 S3)) (=> (= (f41 ?v0 (f292 (f293 ?v1 ?v2) ?v3)) f1) (= (f41 ?v0 (f294 (f295 ?v1) (f16 (f17 f18 ?v2) ?v3))) f1))))
+(assert (forall ((?v0 S8) (?v1 S179) (?v2 S8) (?v3 S8)) (=> (= (f44 ?v0 (f28 (f296 ?v1 ?v2) ?v3)) f1) (= (f44 ?v0 (f297 (f298 ?v1) (f12 (f13 f14 ?v2) ?v3))) f1))))
+(assert (forall ((?v0 S8) (?v1 S181) (?v2 S3) (?v3 S3)) (=> (= (f44 ?v0 (f299 (f300 ?v1 ?v2) ?v3)) f1) (= (f44 ?v0 (f301 (f302 ?v1) (f16 (f17 f18 ?v2) ?v3))) f1))))
+(assert (forall ((?v0 S8) (?v1 S8) (?v2 S30)) (let ((?v_0 (f238 f185 ?v2))) (=> (= ?v0 ?v1) (= (= (f24 ?v_0 ?v0) f1) (= (f24 ?v_0 ?v1) f1))))))
+(assert (forall ((?v0 S17) (?v1 S17) (?v2 S29)) (let ((?v_0 (f237 f187 ?v2))) (=> (= ?v0 ?v1) (= (= (f20 ?v_0 ?v0) f1) (= (f20 ?v_0 ?v1) f1))))))
+(assert (forall ((?v0 S3) (?v1 S3) (?v2 S27)) (let ((?v_0 (f236 f189 ?v2))) (=> (= ?v0 ?v1) (= (= (f19 ?v_0 ?v0) f1) (= (f19 ?v_0 ?v1) f1))))))
+(assert (forall ((?v0 S24) (?v1 S8) (?v2 S8)) (=> (= (f11 (f234 ?v0) (f12 (f13 f14 ?v1) ?v2)) f1) (= (f24 (f28 ?v0 ?v1) ?v2) f1))))
+(assert (forall ((?v0 S25) (?v1 S3) (?v2 S3)) (=> (= (f15 (f235 ?v0) (f16 (f17 f18 ?v1) ?v2)) f1) (= (f19 (f31 ?v0 ?v1) ?v2) f1))))
+(assert (forall ((?v0 S27) (?v1 Int) (?v2 Int)) (=> (= (f19 (f236 f189 ?v0) (f8 (f9 f10 ?v1) ?v2)) f1) (= (f34 (f35 ?v0 ?v1) ?v2) f1))))
+(assert (forall ((?v0 S29) (?v1 S18) (?v2 S18)) (=> (= (f20 (f237 f187 ?v0) (f21 (f22 f23 ?v1) ?v2)) f1) (= (f38 (f39 ?v0 ?v1) ?v2) f1))))
+(assert (forall ((?v0 S30) (?v1 S17) (?v2 S17)) (=> (= (f24 (f238 f185 ?v0) (f25 (f26 f27 ?v1) ?v2)) f1) (= (f20 (f42 ?v0 ?v1) ?v2) f1))))
+(assert (forall ((?v0 S27) (?v1 Int) (?v2 Int)) (= (= (f19 (f236 f189 ?v0) (f8 (f9 f10 ?v1) ?v2)) f1) (= (f34 (f35 ?v0 ?v1) ?v2) f1))))
+(assert (forall ((?v0 S29) (?v1 S18) (?v2 S18)) (= (= (f20 (f237 f187 ?v0) (f21 (f22 f23 ?v1) ?v2)) f1) (= (f38 (f39 ?v0 ?v1) ?v2) f1))))
+(assert (forall ((?v0 S30) (?v1 S17) (?v2 S17)) (= (= (f24 (f238 f185 ?v0) (f25 (f26 f27 ?v1) ?v2)) f1) (= (f20 (f42 ?v0 ?v1) ?v2) f1))))
+(assert (forall ((?v0 S29) (?v1 S18) (?v2 S18)) (= (= (f20 (f237 f187 ?v0) (f21 (f22 f23 ?v1) ?v2)) f1) (= (f38 (f39 ?v0 ?v1) ?v2) f1))))
+(assert (forall ((?v0 S30) (?v1 S17) (?v2 S17)) (= (= (f24 (f238 f185 ?v0) (f25 (f26 f27 ?v1) ?v2)) f1) (= (f20 (f42 ?v0 ?v1) ?v2) f1))))
+(assert (forall ((?v0 S30) (?v1 S8)) (=> (= (f24 (f238 f185 ?v0) ?v1) f1) (=> (forall ((?v2 S17) (?v3 S17)) (=> (= ?v1 (f25 (f26 f27 ?v2) ?v3)) (=> (= (f20 (f42 ?v0 ?v2) ?v3) f1) false))) false))))
+(assert (forall ((?v0 S29) (?v1 S17)) (=> (= (f20 (f237 f187 ?v0) ?v1) f1) (=> (forall ((?v2 S18) (?v3 S18)) (=> (= ?v1 (f21 (f22 f23 ?v2) ?v3)) (=> (= (f38 (f39 ?v0 ?v2) ?v3) f1) false))) false))))
+(assert (forall ((?v0 S27) (?v1 S3)) (=> (= (f19 (f236 f189 ?v0) ?v1) f1) (=> (forall ((?v2 Int) (?v3 Int)) (=> (= ?v1 (f8 (f9 f10 ?v2) ?v3)) (=> (= (f34 (f35 ?v0 ?v2) ?v3) f1) false))) false))))
+(assert (forall ((?v0 S8) (?v1 S30)) (=> (forall ((?v2 S17) (?v3 S17)) (=> (= ?v0 (f25 (f26 f27 ?v2) ?v3)) (= (f20 (f42 ?v1 ?v2) ?v3) f1))) (= (f24 (f238 f185 ?v1) ?v0) f1))))
+(assert (forall ((?v0 S17) (?v1 S29)) (=> (forall ((?v2 S18) (?v3 S18)) (=> (= ?v0 (f21 (f22 f23 ?v2) ?v3)) (= (f38 (f39 ?v1 ?v2) ?v3) f1))) (= (f20 (f237 f187 ?v1) ?v0) f1))))
+(assert (forall ((?v0 S3) (?v1 S27)) (=> (forall ((?v2 Int) (?v3 Int)) (=> (= ?v0 (f8 (f9 f10 ?v2) ?v3)) (= (f34 (f35 ?v1 ?v2) ?v3) f1))) (= (f19 (f236 f189 ?v1) ?v0) f1))))
+(assert (forall ((?v0 S18) (?v1 S18)) (= (= (f41 (f21 (f22 f23 ?v0) ?v1) f303) f1) (< (f154 f155 ?v0) (f154 f155 ?v1)))))
+(assert (= f304 (f103 (f104 f303) f303)))
+(assert (= (f305 f303) f1))
+(assert (forall ((?v0 S103)) (= (f306 (f163 ?v0)) f1)))
+(assert (forall ((?v0 S102)) (= (f307 (f161 ?v0)) f1)))
+(assert (forall ((?v0 S21)) (= (= (f308 ?v0) f1) (forall ((?v1 S17) (?v2 S17)) (=> (= (f44 (f25 (f26 f27 ?v1) ?v2) ?v0) f1) (=> (= (f44 (f25 (f26 f27 ?v2) ?v1) ?v0) f1) (= ?v1 ?v2)))))))
+(assert (forall ((?v0 S16)) (= (= (f309 ?v0) f1) (forall ((?v1 S18) (?v2 S18)) (=> (= (f41 (f21 (f22 f23 ?v1) ?v2) ?v0) f1) (=> (= (f41 (f21 (f22 f23 ?v2) ?v1) ?v0) f1) (= ?v1 ?v2)))))))
+(assert (forall ((?v0 S15)) (= (= (f310 ?v0) f1) (forall ((?v1 Int) (?v2 Int)) (=> (= (f37 (f8 (f9 f10 ?v1) ?v2) ?v0) f1) (=> (= (f37 (f8 (f9 f10 ?v2) ?v1) ?v0) f1) (= ?v1 ?v2)))))))
+(assert (= (f307 f303) f1))
+(assert (forall ((?v0 S16) (?v1 S16)) (=> (= (f307 ?v0) f1) (=> (= (f307 ?v1) f1) (= (f306 (f103 (f104 ?v0) ?v1)) f1)))))
+(assert (forall ((?v0 S16) (?v1 S16)) (=> (= (f305 ?v0) f1) (=> (= (f305 ?v1) f1) (= (f311 (f103 (f104 ?v0) ?v1)) f1)))))
+(assert (forall ((?v0 S18) (?v1 S18) (?v2 S18) (?v3 S18)) (=> (<= (f154 f155 ?v0) (f154 f155 ?v1)) (=> (< (f154 f155 ?v2) (f154 f155 ?v3)) (= (f44 (f25 (f26 f27 (f21 (f22 f23 ?v0) ?v2)) (f21 (f22 f23 ?v1) ?v3)) f304) f1)))))
+(assert (forall ((?v0 S18) (?v1 S18) (?v2 S18) (?v3 S18)) (=> (< (f154 f155 ?v0) (f154 f155 ?v1)) (= (f44 (f25 (f26 f27 (f21 (f22 f23 ?v0) ?v2)) (f21 (f22 f23 ?v1) ?v3)) f304) f1))))
+(assert (= (f306 f304) f1))
+(assert (forall ((?v0 S21) (?v1 S17)) (=> (= (f306 ?v0) f1) (=> (=> (not (= (f44 (f25 (f26 f27 ?v1) ?v1) ?v0) f1)) false) false))))
+(assert (forall ((?v0 S16) (?v1 S18)) (=> (= (f307 ?v0) f1) (=> (=> (not (= (f41 (f21 (f22 f23 ?v1) ?v1) ?v0) f1)) false) false))))
+(assert (forall ((?v0 S15) (?v1 Int)) (=> (= (f312 ?v0) f1) (=> (=> (not (= (f37 (f8 (f9 f10 ?v1) ?v1) ?v0) f1)) false) false))))
+(assert (forall ((?v0 S21) (?v1 S17) (?v2 S17)) (=> (= (f306 ?v0) f1) (=> (= (f44 (f25 (f26 f27 ?v1) ?v2) ?v0) f1) (=> (=> (not (= (f44 (f25 (f26 f27 ?v2) ?v1) ?v0) f1)) false) false)))))
+(assert (forall ((?v0 S16) (?v1 S18) (?v2 S18)) (=> (= (f307 ?v0) f1) (=> (= (f41 (f21 (f22 f23 ?v1) ?v2) ?v0) f1) (=> (=> (not (= (f41 (f21 (f22 f23 ?v2) ?v1) ?v0) f1)) false) false)))))
+(assert (forall ((?v0 S15) (?v1 Int) (?v2 Int)) (=> (= (f312 ?v0) f1) (=> (= (f37 (f8 (f9 f10 ?v1) ?v2) ?v0) f1) (=> (=> (not (= (f37 (f8 (f9 f10 ?v2) ?v1) ?v0) f1)) false) false)))))
+(assert (forall ((?v0 S21) (?v1 S17) (?v2 S17)) (=> (= (f306 ?v0) f1) (=> (= (f44 (f25 (f26 f27 ?v1) ?v2) ?v0) f1) (not (= (f44 (f25 (f26 f27 ?v2) ?v1) ?v0) f1))))))
+(assert (forall ((?v0 S16) (?v1 S18) (?v2 S18)) (=> (= (f307 ?v0) f1) (=> (= (f41 (f21 (f22 f23 ?v1) ?v2) ?v0) f1) (not (= (f41 (f21 (f22 f23 ?v2) ?v1) ?v0) f1))))))
+(assert (forall ((?v0 S15) (?v1 Int) (?v2 Int)) (=> (= (f312 ?v0) f1) (=> (= (f37 (f8 (f9 f10 ?v1) ?v2) ?v0) f1) (not (= (f37 (f8 (f9 f10 ?v2) ?v1) ?v0) f1))))))
+(assert (forall ((?v0 S21) (?v1 S17)) (=> (= (f306 ?v0) f1) (not (= (f44 (f25 (f26 f27 ?v1) ?v1) ?v0) f1)))))
+(assert (forall ((?v0 S16) (?v1 S18)) (=> (= (f307 ?v0) f1) (not (= (f41 (f21 (f22 f23 ?v1) ?v1) ?v0) f1)))))
+(assert (forall ((?v0 S15) (?v1 Int)) (=> (= (f312 ?v0) f1) (not (= (f37 (f8 (f9 f10 ?v1) ?v1) ?v0) f1)))))
+(assert (forall ((?v0 S8) (?v1 S21)) (= (= (f44 ?v0 ?v1) f1) (= (f24 ?v1 ?v0) f1))))
+(assert (forall ((?v0 S17) (?v1 S16)) (= (= (f41 ?v0 ?v1) f1) (= (f20 ?v1 ?v0) f1))))
+(assert (forall ((?v0 S21) (?v1 S17) (?v2 S17) (?v3 S17)) (let ((?v_0 (f26 f27 ?v1))) (=> (= (f311 ?v0) f1) (=> (= (f44 (f25 ?v_0 ?v2) ?v0) f1) (=> (= (f44 (f25 (f26 f27 ?v2) ?v3) ?v0) f1) (= (f44 (f25 ?v_0 ?v3) ?v0) f1)))))))
+(assert (forall ((?v0 S16) (?v1 S18) (?v2 S18) (?v3 S18)) (let ((?v_0 (f22 f23 ?v1))) (=> (= (f305 ?v0) f1) (=> (= (f41 (f21 ?v_0 ?v2) ?v0) f1) (=> (= (f41 (f21 (f22 f23 ?v2) ?v3) ?v0) f1) (= (f41 (f21 ?v_0 ?v3) ?v0) f1)))))))
+(assert (forall ((?v0 S15) (?v1 Int) (?v2 Int) (?v3 Int)) (let ((?v_0 (f9 f10 ?v1))) (=> (= (f313 ?v0) f1) (=> (= (f37 (f8 ?v_0 ?v2) ?v0) f1) (=> (= (f37 (f8 (f9 f10 ?v2) ?v3) ?v0) f1) (= (f37 (f8 ?v_0 ?v3) ?v0) f1)))))))
+(assert (forall ((?v0 S21)) (= (= (f311 ?v0) f1) (forall ((?v1 S17) (?v2 S17) (?v3 S17)) (let ((?v_0 (f26 f27 ?v1))) (=> (= (f44 (f25 ?v_0 ?v2) ?v0) f1) (=> (= (f44 (f25 (f26 f27 ?v2) ?v3) ?v0) f1) (= (f44 (f25 ?v_0 ?v3) ?v0) f1))))))))
+(assert (forall ((?v0 S16)) (= (= (f305 ?v0) f1) (forall ((?v1 S18) (?v2 S18) (?v3 S18)) (let ((?v_0 (f22 f23 ?v1))) (=> (= (f41 (f21 ?v_0 ?v2) ?v0) f1) (=> (= (f41 (f21 (f22 f23 ?v2) ?v3) ?v0) f1) (= (f41 (f21 ?v_0 ?v3) ?v0) f1))))))))
+(assert (forall ((?v0 S15)) (= (= (f313 ?v0) f1) (forall ((?v1 Int) (?v2 Int) (?v3 Int)) (let ((?v_0 (f9 f10 ?v1))) (=> (= (f37 (f8 ?v_0 ?v2) ?v0) f1) (=> (= (f37 (f8 (f9 f10 ?v2) ?v3) ?v0) f1) (= (f37 (f8 ?v_0 ?v3) ?v0) f1))))))))
+(assert (forall ((?v0 S21) (?v1 S103)) (=> (= (f306 ?v0) f1) (= (f306 (f173 (f174 ?v1) ?v0)) f1))))
+(assert (forall ((?v0 S16) (?v1 S102)) (=> (= (f307 ?v0) f1) (= (f307 (f171 (f172 ?v1) ?v0)) f1))))
+(assert (forall ((?v0 S21) (?v1 S17) (?v2 S17)) (=> (= (f308 ?v0) f1) (=> (= (f44 (f25 (f26 f27 ?v1) ?v2) ?v0) f1) (=> (= (f44 (f25 (f26 f27 ?v2) ?v1) ?v0) f1) (= ?v1 ?v2))))))
+(assert (forall ((?v0 S16) (?v1 S18) (?v2 S18)) (=> (= (f309 ?v0) f1) (=> (= (f41 (f21 (f22 f23 ?v1) ?v2) ?v0) f1) (=> (= (f41 (f21 (f22 f23 ?v2) ?v1) ?v0) f1) (= ?v1 ?v2))))))
+(assert (forall ((?v0 S15) (?v1 Int) (?v2 Int)) (=> (= (f310 ?v0) f1) (=> (= (f37 (f8 (f9 f10 ?v1) ?v2) ?v0) f1) (=> (= (f37 (f8 (f9 f10 ?v2) ?v1) ?v0) f1) (= ?v1 ?v2))))))
+(assert (forall ((?v0 S28) (?v1 S43)) (=> (forall ((?v2 S18)) (=> (= (f38 ?v0 ?v2) f1) (= (f307 (f61 ?v1 ?v2)) f1))) (= (f306 (f62 (f63 ?v0) ?v1)) f1))))
+(assert (forall ((?v0 S21)) (=> (forall ((?v1 S17) (?v2 S17)) (=> (= (f44 (f25 (f26 f27 ?v1) ?v2) ?v0) f1) (=> (= (f44 (f25 (f26 f27 ?v2) ?v1) ?v0) f1) (= ?v1 ?v2)))) (= (f308 ?v0) f1))))
+(assert (forall ((?v0 S16)) (=> (forall ((?v1 S18) (?v2 S18)) (=> (= (f41 (f21 (f22 f23 ?v1) ?v2) ?v0) f1) (=> (= (f41 (f21 (f22 f23 ?v2) ?v1) ?v0) f1) (= ?v1 ?v2)))) (= (f309 ?v0) f1))))
+(assert (forall ((?v0 S15)) (=> (forall ((?v1 Int) (?v2 Int)) (=> (= (f37 (f8 (f9 f10 ?v1) ?v2) ?v0) f1) (=> (= (f37 (f8 (f9 f10 ?v2) ?v1) ?v0) f1) (= ?v1 ?v2)))) (= (f310 ?v0) f1))))
+(assert (forall ((?v0 S21)) (=> (forall ((?v1 S17) (?v2 S17) (?v3 S17)) (let ((?v_0 (f26 f27 ?v1))) (=> (= (f44 (f25 ?v_0 ?v2) ?v0) f1) (=> (= (f44 (f25 (f26 f27 ?v2) ?v3) ?v0) f1) (= (f44 (f25 ?v_0 ?v3) ?v0) f1))))) (= (f311 ?v0) f1))))
+(assert (forall ((?v0 S16)) (=> (forall ((?v1 S18) (?v2 S18) (?v3 S18)) (let ((?v_0 (f22 f23 ?v1))) (=> (= (f41 (f21 ?v_0 ?v2) ?v0) f1) (=> (= (f41 (f21 (f22 f23 ?v2) ?v3) ?v0) f1) (= (f41 (f21 ?v_0 ?v3) ?v0) f1))))) (= (f305 ?v0) f1))))
+(assert (forall ((?v0 S15)) (=> (forall ((?v1 Int) (?v2 Int) (?v3 Int)) (let ((?v_0 (f9 f10 ?v1))) (=> (= (f37 (f8 ?v_0 ?v2) ?v0) f1) (=> (= (f37 (f8 (f9 f10 ?v2) ?v3) ?v0) f1) (= (f37 (f8 ?v_0 ?v3) ?v0) f1))))) (= (f313 ?v0) f1))))
+(assert (forall ((?v0 S21)) (= (= (f306 ?v0) f1) (forall ((?v1 S16) (?v2 S17)) (=> (= (f41 ?v2 ?v1) f1) (exists ((?v3 S17)) (and (= (f41 ?v3 ?v1) f1) (forall ((?v4 S17)) (=> (= (f44 (f25 (f26 f27 ?v4) ?v3) ?v0) f1) (not (= (f41 ?v4 ?v1) f1)))))))))))
+(assert (forall ((?v0 S16)) (= (= (f307 ?v0) f1) (forall ((?v1 S28) (?v2 S18)) (=> (= (f182 ?v2 ?v1) f1) (exists ((?v3 S18)) (and (= (f182 ?v3 ?v1) f1) (forall ((?v4 S18)) (=> (= (f41 (f21 (f22 f23 ?v4) ?v3) ?v0) f1) (not (= (f182 ?v4 ?v1) f1)))))))))))
+(assert (forall ((?v0 S6)) (= (= (f314 ?v0) f1) (forall ((?v1 S21) (?v2 S8)) (=> (= (f44 ?v2 ?v1) f1) (exists ((?v3 S8)) (and (= (f44 ?v3 ?v1) f1) (forall ((?v4 S8)) (=> (= (f30 (f12 (f13 f14 ?v4) ?v3) ?v0) f1) (not (= (f44 ?v4 ?v1) f1)))))))))))
+(assert (forall ((?v0 S15)) (= (= (f312 ?v0) f1) (forall ((?v1 S26) (?v2 Int)) (=> (= (f179 ?v2 ?v1) f1) (exists ((?v3 Int)) (and (= (f179 ?v3 ?v1) f1) (forall ((?v4 Int)) (=> (= (f37 (f8 (f9 f10 ?v4) ?v3) ?v0) f1) (not (= (f179 ?v4 ?v1) f1)))))))))))
+(assert (forall ((?v0 S21) (?v1 S103) (?v2 S103)) (=> (forall ((?v3 S17) (?v4 S17)) (let ((?v_0 (f154 f155 (f164 ?v1 ?v3))) (?v_1 (f154 f155 (f164 ?v2 ?v4)))) (=> (= (f44 (f25 (f26 f27 ?v4) ?v3) ?v0) f1) (and (<= (f154 f155 (f164 ?v1 ?v4)) ?v_0) (and (<= ?v_1 ?v_0) (< (f154 f155 (f164 ?v2 ?v3)) ?v_1)))))) (= (f306 ?v0) f1))))
+(assert (forall ((?v0 S16) (?v1 S102) (?v2 S102)) (=> (forall ((?v3 S18) (?v4 S18)) (let ((?v_0 (f154 f155 (f162 ?v1 ?v3))) (?v_1 (f154 f155 (f162 ?v2 ?v4)))) (=> (= (f41 (f21 (f22 f23 ?v4) ?v3) ?v0) f1) (and (<= (f154 f155 (f162 ?v1 ?v4)) ?v_0) (and (<= ?v_1 ?v_0) (< (f154 f155 (f162 ?v2 ?v3)) ?v_1)))))) (= (f307 ?v0) f1))))
+(assert (forall ((?v0 S15) (?v1 S101) (?v2 S101)) (=> (forall ((?v3 Int) (?v4 Int)) (let ((?v_0 (f154 f155 (f160 ?v1 ?v3))) (?v_1 (f154 f155 (f160 ?v2 ?v4)))) (=> (= (f37 (f8 (f9 f10 ?v4) ?v3) ?v0) f1) (and (<= (f154 f155 (f160 ?v1 ?v4)) ?v_0) (and (<= ?v_1 ?v_0) (< (f154 f155 (f160 ?v2 ?v3)) ?v_1)))))) (= (f312 ?v0) f1))))
+(assert (forall ((?v0 S21)) (= (= (f306 ?v0) f1) (not (exists ((?v1 S19)) (forall ((?v2 S18)) (= (f44 (f25 (f26 f27 (f21 ?v1 (f160 f315 (+ (f154 f155 ?v2) 1)))) (f21 ?v1 ?v2)) ?v0) f1)))))))
+(assert (forall ((?v0 S16)) (= (= (f307 ?v0) f1) (not (exists ((?v1 S102)) (forall ((?v2 S18)) (= (f41 (f21 (f22 f23 (f162 ?v1 (f160 f315 (+ (f154 f155 ?v2) 1)))) (f162 ?v1 ?v2)) ?v0) f1)))))))
+(assert (forall ((?v0 S15)) (= (= (f312 ?v0) f1) (not (exists ((?v1 S99)) (forall ((?v2 S18)) (= (f37 (f8 (f9 f10 (f154 ?v1 (f160 f315 (+ (f154 f155 ?v2) 1)))) (f154 ?v1 ?v2)) ?v0) f1)))))))
+(assert (forall ((?v0 S21)) (=> (= (f306 ?v0) f1) (= (f316 (f43 ?v0)) f1))))
+(assert (forall ((?v0 S16)) (=> (= (f307 ?v0) f1) (= (f317 (f40 ?v0)) f1))))
+(assert (forall ((?v0 S21) (?v1 S19)) (=> (= (f306 ?v0) f1) (=> (forall ((?v2 S18)) (=> (not (= (f44 (f25 (f26 f27 (f21 ?v1 (f160 f315 (+ (f154 f155 ?v2) 1)))) (f21 ?v1 ?v2)) ?v0) f1)) false)) false))))
+(assert (forall ((?v0 S16) (?v1 S102)) (=> (= (f307 ?v0) f1) (=> (forall ((?v2 S18)) (=> (not (= (f41 (f21 (f22 f23 (f162 ?v1 (f160 f315 (+ (f154 f155 ?v2) 1)))) (f162 ?v1 ?v2)) ?v0) f1)) false)) false))))
+(assert (forall ((?v0 S15) (?v1 S99)) (=> (= (f312 ?v0) f1) (=> (forall ((?v2 S18)) (=> (not (= (f37 (f8 (f9 f10 (f154 ?v1 (f160 f315 (+ (f154 f155 ?v2) 1)))) (f154 ?v1 ?v2)) ?v0) f1)) false)) false))))
+(assert (forall ((?v0 S24)) (= (= (f318 ?v0) f1) (forall ((?v1 S21) (?v2 S8)) (=> (= (f44 ?v2 ?v1) f1) (exists ((?v3 S8)) (and (= (f44 ?v3 ?v1) f1) (forall ((?v4 S8)) (=> (= (f24 (f28 ?v0 ?v4) ?v3) f1) (not (= (f44 ?v4 ?v1) f1)))))))))))
+(assert (forall ((?v0 S30)) (= (= (f316 ?v0) f1) (forall ((?v1 S16) (?v2 S17)) (=> (= (f41 ?v2 ?v1) f1) (exists ((?v3 S17)) (and (= (f41 ?v3 ?v1) f1) (forall ((?v4 S17)) (=> (= (f20 (f42 ?v0 ?v4) ?v3) f1) (not (= (f41 ?v4 ?v1) f1)))))))))))
+(assert (= (f307 f319) f1))
+(assert (forall ((?v0 S18) (?v1 S18) (?v2 S18) (?v3 S18)) (=> (< (f154 f155 ?v0) (f154 f155 ?v1)) (= (f44 (f25 (f26 f27 (f21 (f22 f23 ?v0) ?v2)) (f21 (f22 f23 ?v1) ?v3)) f320) f1))))
+(assert (forall ((?v0 S18) (?v1 S18) (?v2 S18) (?v3 S18)) (=> (<= (f154 f155 ?v0) (f154 f155 ?v1)) (=> (<= (f154 f155 ?v2) (f154 f155 ?v3)) (= (f44 (f25 (f26 f27 (f21 (f22 f23 ?v0) ?v2)) (f21 (f22 f23 ?v1) ?v3)) f320) f1)))))
+(assert (forall ((?v0 S21)) (= (= (f306 ?v0) f1) (forall ((?v1 S16)) (=> (forall ((?v2 S17)) (=> (forall ((?v3 S17)) (=> (= (f44 (f25 (f26 f27 ?v3) ?v2) ?v0) f1) (= (f20 ?v1 ?v3) f1))) (= (f20 ?v1 ?v2) f1))) (forall ((?v2 S17)) (= (f20 ?v1 ?v2) f1)))))))
+(assert (forall ((?v0 S16)) (= (= (f307 ?v0) f1) (forall ((?v1 S28)) (=> (forall ((?v2 S18)) (=> (forall ((?v3 S18)) (=> (= (f41 (f21 (f22 f23 ?v3) ?v2) ?v0) f1) (= (f38 ?v1 ?v3) f1))) (= (f38 ?v1 ?v2) f1))) (forall ((?v2 S18)) (= (f38 ?v1 ?v2) f1)))))))
+(assert (forall ((?v0 S15)) (= (= (f312 ?v0) f1) (forall ((?v1 S26)) (=> (forall ((?v2 Int)) (=> (forall ((?v3 Int)) (=> (= (f37 (f8 (f9 f10 ?v3) ?v2) ?v0) f1) (= (f34 ?v1 ?v3) f1))) (= (f34 ?v1 ?v2) f1))) (forall ((?v2 Int)) (= (f34 ?v1 ?v2) f1)))))))
+(assert (forall ((?v0 S21)) (=> (forall ((?v1 S17) (?v2 S16)) (=> (= (f41 ?v1 ?v2) f1) (exists ((?v3 S17)) (and (= (f41 ?v3 ?v2) f1) (forall ((?v4 S17)) (=> (= (f44 (f25 (f26 f27 ?v4) ?v3) ?v0) f1) (not (= (f41 ?v4 ?v2) f1)))))))) (= (f306 ?v0) f1))))
+(assert (forall ((?v0 S16)) (=> (forall ((?v1 S18) (?v2 S28)) (=> (= (f182 ?v1 ?v2) f1) (exists ((?v3 S18)) (and (= (f182 ?v3 ?v2) f1) (forall ((?v4 S18)) (=> (= (f41 (f21 (f22 f23 ?v4) ?v3) ?v0) f1) (not (= (f182 ?v4 ?v2) f1)))))))) (= (f307 ?v0) f1))))
+(assert (forall ((?v0 S6)) (=> (forall ((?v1 S8) (?v2 S21)) (=> (= (f44 ?v1 ?v2) f1) (exists ((?v3 S8)) (and (= (f44 ?v3 ?v2) f1) (forall ((?v4 S8)) (=> (= (f30 (f12 (f13 f14 ?v4) ?v3) ?v0) f1) (not (= (f44 ?v4 ?v2) f1)))))))) (= (f314 ?v0) f1))))
+(assert (forall ((?v0 S15)) (=> (forall ((?v1 Int) (?v2 S26)) (=> (= (f179 ?v1 ?v2) f1) (exists ((?v3 Int)) (and (= (f179 ?v3 ?v2) f1) (forall ((?v4 Int)) (=> (= (f37 (f8 (f9 f10 ?v4) ?v3) ?v0) f1) (not (= (f179 ?v4 ?v2) f1)))))))) (= (f312 ?v0) f1))))
+(assert (forall ((?v0 S21) (?v1 S16) (?v2 S17)) (=> (= (f306 ?v0) f1) (=> (forall ((?v3 S17)) (=> (forall ((?v4 S17)) (=> (= (f44 (f25 (f26 f27 ?v4) ?v3) ?v0) f1) (= (f20 ?v1 ?v4) f1))) (= (f20 ?v1 ?v3) f1))) (= (f20 ?v1 ?v2) f1)))))
+(assert (forall ((?v0 S16) (?v1 S28) (?v2 S18)) (=> (= (f307 ?v0) f1) (=> (forall ((?v3 S18)) (=> (forall ((?v4 S18)) (=> (= (f41 (f21 (f22 f23 ?v4) ?v3) ?v0) f1) (= (f38 ?v1 ?v4) f1))) (= (f38 ?v1 ?v3) f1))) (= (f38 ?v1 ?v2) f1)))))
+(assert (forall ((?v0 S15) (?v1 S26) (?v2 Int)) (=> (= (f312 ?v0) f1) (=> (forall ((?v3 Int)) (=> (forall ((?v4 Int)) (=> (= (f37 (f8 (f9 f10 ?v4) ?v3) ?v0) f1) (= (f34 ?v1 ?v4) f1))) (= (f34 ?v1 ?v3) f1))) (= (f34 ?v1 ?v2) f1)))))
+(assert (forall ((?v0 S21) (?v1 S16) (?v2 S17)) (=> (= (f306 ?v0) f1) (=> (forall ((?v3 S17)) (=> (forall ((?v4 S17)) (=> (= (f44 (f25 (f26 f27 ?v4) ?v3) ?v0) f1) (= (f20 ?v1 ?v4) f1))) (= (f20 ?v1 ?v3) f1))) (= (f20 ?v1 ?v2) f1)))))
+(assert (forall ((?v0 S16) (?v1 S28) (?v2 S18)) (=> (= (f307 ?v0) f1) (=> (forall ((?v3 S18)) (=> (forall ((?v4 S18)) (=> (= (f41 (f21 (f22 f23 ?v4) ?v3) ?v0) f1) (= (f38 ?v1 ?v4) f1))) (= (f38 ?v1 ?v3) f1))) (= (f38 ?v1 ?v2) f1)))))
+(assert (forall ((?v0 S15) (?v1 S26) (?v2 Int)) (=> (= (f312 ?v0) f1) (=> (forall ((?v3 Int)) (=> (forall ((?v4 Int)) (=> (= (f37 (f8 (f9 f10 ?v4) ?v3) ?v0) f1) (= (f34 ?v1 ?v4) f1))) (= (f34 ?v1 ?v3) f1))) (= (f34 ?v1 ?v2) f1)))))
+(assert (forall ((?v0 S21) (?v1 S17) (?v2 S16)) (=> (= (f306 ?v0) f1) (=> (= (f41 ?v1 ?v2) f1) (=> (forall ((?v3 S17)) (=> (= (f41 ?v3 ?v2) f1) (=> (forall ((?v4 S17)) (=> (= (f44 (f25 (f26 f27 ?v4) ?v3) ?v0) f1) (not (= (f41 ?v4 ?v2) f1)))) false))) false)))))
+(assert (forall ((?v0 S16) (?v1 S18) (?v2 S28)) (=> (= (f307 ?v0) f1) (=> (= (f182 ?v1 ?v2) f1) (=> (forall ((?v3 S18)) (=> (= (f182 ?v3 ?v2) f1) (=> (forall ((?v4 S18)) (=> (= (f41 (f21 (f22 f23 ?v4) ?v3) ?v0) f1) (not (= (f182 ?v4 ?v2) f1)))) false))) false)))))
+(assert (forall ((?v0 S6) (?v1 S8) (?v2 S21)) (=> (= (f314 ?v0) f1) (=> (= (f44 ?v1 ?v2) f1) (=> (forall ((?v3 S8)) (=> (= (f44 ?v3 ?v2) f1) (=> (forall ((?v4 S8)) (=> (= (f30 (f12 (f13 f14 ?v4) ?v3) ?v0) f1) (not (= (f44 ?v4 ?v2) f1)))) false))) false)))))
+(assert (forall ((?v0 S15) (?v1 Int) (?v2 S26)) (=> (= (f312 ?v0) f1) (=> (= (f179 ?v1 ?v2) f1) (=> (forall ((?v3 Int)) (=> (= (f179 ?v3 ?v2) f1) (=> (forall ((?v4 Int)) (=> (= (f37 (f8 (f9 f10 ?v4) ?v3) ?v0) f1) (not (= (f179 ?v4 ?v2) f1)))) false))) false)))))
+(assert (forall ((?v0 S21)) (=> (= (f306 ?v0) f1) (forall ((?v1 S16)) (=> (forall ((?v2 S17)) (=> (forall ((?v3 S17)) (=> (= (f44 (f25 (f26 f27 ?v3) ?v2) ?v0) f1) (= (f20 ?v1 ?v3) f1))) (= (f20 ?v1 ?v2) f1))) (forall ((?v2 S17)) (= (f20 ?v1 ?v2) f1)))))))
+(assert (forall ((?v0 S16)) (=> (= (f307 ?v0) f1) (forall ((?v1 S28)) (=> (forall ((?v2 S18)) (=> (forall ((?v3 S18)) (=> (= (f41 (f21 (f22 f23 ?v3) ?v2) ?v0) f1) (= (f38 ?v1 ?v3) f1))) (= (f38 ?v1 ?v2) f1))) (forall ((?v2 S18)) (= (f38 ?v1 ?v2) f1)))))))
+(assert (forall ((?v0 S15)) (=> (= (f312 ?v0) f1) (forall ((?v1 S26)) (=> (forall ((?v2 Int)) (=> (forall ((?v3 Int)) (=> (= (f37 (f8 (f9 f10 ?v3) ?v2) ?v0) f1) (= (f34 ?v1 ?v3) f1))) (= (f34 ?v1 ?v2) f1))) (forall ((?v2 Int)) (= (f34 ?v1 ?v2) f1)))))))
+(assert (forall ((?v0 S21)) (=> (= (f306 ?v0) f1) (= (f321 (f322 ?v0)) f1))))
+(assert (forall ((?v0 S16)) (=> (= (f307 ?v0) f1) (= (f323 (f324 ?v0)) f1))))
+(assert (= f303 (f325 f319)))
+(assert (forall ((?v0 S18) (?v1 S18)) (= (= (f41 (f21 (f22 f23 ?v0) ?v1) (f325 f319)) f1) (< (f154 f155 ?v0) (f154 f155 ?v1)))))
+(assert (forall ((?v0 S21)) (=> (= (f306 ?v0) f1) (= (f306 (f326 ?v0)) f1))))
+(assert (forall ((?v0 S16)) (=> (= (f307 ?v0) f1) (= (f307 (f325 ?v0)) f1))))
+(assert (forall ((?v0 S17) (?v1 S17) (?v2 S21)) (let ((?v_0 (f25 (f26 f27 ?v0) ?v1))) (=> (= (f44 ?v_0 ?v2) f1) (= (f44 ?v_0 (f326 ?v2)) f1)))))
+(assert (forall ((?v0 S18) (?v1 S18) (?v2 S16)) (let ((?v_0 (f21 (f22 f23 ?v0) ?v1))) (=> (= (f41 ?v_0 ?v2) f1) (= (f41 ?v_0 (f325 ?v2)) f1)))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 S15)) (let ((?v_0 (f8 (f9 f10 ?v0) ?v1))) (=> (= (f37 ?v_0 ?v2) f1) (= (f37 ?v_0 (f327 ?v2)) f1)))))
+(assert (forall ((?v0 S16)) (=> (= (f305 ?v0) f1) (= (f325 ?v0) ?v0))))
+(assert (forall ((?v0 S16)) (= (f305 (f325 ?v0)) f1)))
+(assert (forall ((?v0 S17) (?v1 S17) (?v2 S21) (?v3 S17)) (let ((?v_0 (f26 f27 ?v0))) (=> (= (f44 (f25 ?v_0 ?v1) ?v2) f1) (=> (= (f44 (f25 (f26 f27 ?v1) ?v3) ?v2) f1) (= (f44 (f25 ?v_0 ?v3) (f326 ?v2)) f1))))))
+(assert (forall ((?v0 S18) (?v1 S18) (?v2 S16) (?v3 S18)) (let ((?v_0 (f22 f23 ?v0))) (=> (= (f41 (f21 ?v_0 ?v1) ?v2) f1) (=> (= (f41 (f21 (f22 f23 ?v1) ?v3) ?v2) f1) (= (f41 (f21 ?v_0 ?v3) (f325 ?v2)) f1))))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 S15) (?v3 Int)) (let ((?v_0 (f9 f10 ?v0))) (=> (= (f37 (f8 ?v_0 ?v1) ?v2) f1) (=> (= (f37 (f8 (f9 f10 ?v1) ?v3) ?v2) f1) (= (f37 (f8 ?v_0 ?v3) (f327 ?v2)) f1))))))
+(assert (forall ((?v0 S17) (?v1 S17) (?v2 S21) (?v3 S17)) (let ((?v_0 (f26 f27 ?v0)) (?v_1 (f326 ?v2))) (=> (= (f44 (f25 ?v_0 ?v1) ?v2) f1) (=> (= (f44 (f25 (f26 f27 ?v1) ?v3) ?v_1) f1) (= (f44 (f25 ?v_0 ?v3) ?v_1) f1))))))
+(assert (forall ((?v0 S18) (?v1 S18) (?v2 S16) (?v3 S18)) (let ((?v_0 (f22 f23 ?v0)) (?v_1 (f325 ?v2))) (=> (= (f41 (f21 ?v_0 ?v1) ?v2) f1) (=> (= (f41 (f21 (f22 f23 ?v1) ?v3) ?v_1) f1) (= (f41 (f21 ?v_0 ?v3) ?v_1) f1))))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 S15) (?v3 Int)) (let ((?v_0 (f9 f10 ?v0)) (?v_1 (f327 ?v2))) (=> (= (f37 (f8 ?v_0 ?v1) ?v2) f1) (=> (= (f37 (f8 (f9 f10 ?v1) ?v3) ?v_1) f1) (= (f37 (f8 ?v_0 ?v3) ?v_1) f1))))))
+(assert (forall ((?v0 S8) (?v1 S21)) (=> (= (f44 ?v0 ?v1) f1) (= (f44 ?v0 (f326 ?v1)) f1))))
+(assert (forall ((?v0 S17) (?v1 S16)) (=> (= (f41 ?v0 ?v1) f1) (= (f41 ?v0 (f325 ?v1)) f1))))
+(assert (forall ((?v0 S17) (?v1 S17) (?v2 S21) (?v3 S17)) (let ((?v_1 (f26 f27 ?v0)) (?v_0 (f326 ?v2))) (=> (= (f44 (f25 ?v_1 ?v1) ?v_0) f1) (=> (= (f44 (f25 (f26 f27 ?v1) ?v3) ?v_0) f1) (= (f44 (f25 ?v_1 ?v3) ?v_0) f1))))))
+(assert (forall ((?v0 S18) (?v1 S18) (?v2 S16) (?v3 S18)) (let ((?v_1 (f22 f23 ?v0)) (?v_0 (f325 ?v2))) (=> (= (f41 (f21 ?v_1 ?v1) ?v_0) f1) (=> (= (f41 (f21 (f22 f23 ?v1) ?v3) ?v_0) f1) (= (f41 (f21 ?v_1 ?v3) ?v_0) f1))))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 S15) (?v3 Int)) (let ((?v_1 (f9 f10 ?v0)) (?v_0 (f327 ?v2))) (=> (= (f37 (f8 ?v_1 ?v1) ?v_0) f1) (=> (= (f37 (f8 (f9 f10 ?v1) ?v3) ?v_0) f1) (= (f37 (f8 ?v_1 ?v3) ?v_0) f1))))))
+(assert (forall ((?v0 S17) (?v1 S17) (?v2 S21) (?v3 S17)) (let ((?v_0 (f26 f27 ?v0)) (?v_1 (f326 ?v2))) (=> (= (f44 (f25 ?v_0 ?v1) ?v_1) f1) (=> (= (f44 (f25 (f26 f27 ?v1) ?v3) ?v2) f1) (= (f44 (f25 ?v_0 ?v3) ?v_1) f1))))))
+(assert (forall ((?v0 S18) (?v1 S18) (?v2 S16) (?v3 S18)) (let ((?v_0 (f22 f23 ?v0)) (?v_1 (f325 ?v2))) (=> (= (f41 (f21 ?v_0 ?v1) ?v_1) f1) (=> (= (f41 (f21 (f22 f23 ?v1) ?v3) ?v2) f1) (= (f41 (f21 ?v_0 ?v3) ?v_1) f1))))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 S15) (?v3 Int)) (let ((?v_0 (f9 f10 ?v0)) (?v_1 (f327 ?v2))) (=> (= (f37 (f8 ?v_0 ?v1) ?v_1) f1) (=> (= (f37 (f8 (f9 f10 ?v1) ?v3) ?v2) f1) (= (f37 (f8 ?v_0 ?v3) ?v_1) f1))))))
+(assert (forall ((?v0 S17) (?v1 S17) (?v2 S21)) (let ((?v_0 (f25 (f26 f27 ?v0) ?v1))) (=> (= (f44 ?v_0 (f326 ?v2)) f1) (=> (=> (= (f44 ?v_0 ?v2) f1) false) (=> (forall ((?v3 S17)) (=> (= (f44 (f25 (f26 f27 ?v0) ?v3) (f326 ?v2)) f1) (=> (= (f44 (f25 (f26 f27 ?v3) ?v1) ?v2) f1) false))) false))))))
+(assert (forall ((?v0 S18) (?v1 S18) (?v2 S16)) (let ((?v_0 (f21 (f22 f23 ?v0) ?v1))) (=> (= (f41 ?v_0 (f325 ?v2)) f1) (=> (=> (= (f41 ?v_0 ?v2) f1) false) (=> (forall ((?v3 S18)) (=> (= (f41 (f21 (f22 f23 ?v0) ?v3) (f325 ?v2)) f1) (=> (= (f41 (f21 (f22 f23 ?v3) ?v1) ?v2) f1) false))) false))))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 S15)) (let ((?v_0 (f8 (f9 f10 ?v0) ?v1))) (=> (= (f37 ?v_0 (f327 ?v2)) f1) (=> (=> (= (f37 ?v_0 ?v2) f1) false) (=> (forall ((?v3 Int)) (=> (= (f37 (f8 (f9 f10 ?v0) ?v3) (f327 ?v2)) f1) (=> (= (f37 (f8 (f9 f10 ?v3) ?v1) ?v2) f1) false))) false))))))
+(assert (forall ((?v0 S17) (?v1 S17) (?v2 S21)) (let ((?v_0 (f25 (f26 f27 ?v0) ?v1))) (=> (= (f44 ?v_0 (f326 ?v2)) f1) (=> (=> (= (f44 ?v_0 ?v2) f1) false) (=> (forall ((?v3 S17)) (=> (= (f44 (f25 (f26 f27 ?v0) ?v3) ?v2) f1) (=> (= (f44 (f25 (f26 f27 ?v3) ?v1) (f326 ?v2)) f1) false))) false))))))
+(assert (forall ((?v0 S18) (?v1 S18) (?v2 S16)) (let ((?v_0 (f21 (f22 f23 ?v0) ?v1))) (=> (= (f41 ?v_0 (f325 ?v2)) f1) (=> (=> (= (f41 ?v_0 ?v2) f1) false) (=> (forall ((?v3 S18)) (=> (= (f41 (f21 (f22 f23 ?v0) ?v3) ?v2) f1) (=> (= (f41 (f21 (f22 f23 ?v3) ?v1) (f325 ?v2)) f1) false))) false))))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 S15)) (let ((?v_0 (f8 (f9 f10 ?v0) ?v1))) (=> (= (f37 ?v_0 (f327 ?v2)) f1) (=> (=> (= (f37 ?v_0 ?v2) f1) false) (=> (forall ((?v3 Int)) (=> (= (f37 (f8 (f9 f10 ?v0) ?v3) ?v2) f1) (=> (= (f37 (f8 (f9 f10 ?v3) ?v1) (f327 ?v2)) f1) false))) false))))))
+(assert (forall ((?v0 S21) (?v1 S17) (?v2 S17)) (=> (forall ((?v3 S17)) (not (= (f44 (f25 (f26 f27 ?v3) ?v3) (f326 ?v0)) f1))) (=> (= (f44 (f25 (f26 f27 ?v1) ?v2) ?v0) f1) (not (= ?v1 ?v2))))))
+(assert (forall ((?v0 S16) (?v1 S18) (?v2 S18)) (=> (forall ((?v3 S18)) (not (= (f41 (f21 (f22 f23 ?v3) ?v3) (f325 ?v0)) f1))) (=> (= (f41 (f21 (f22 f23 ?v1) ?v2) ?v0) f1) (not (= ?v1 ?v2))))))
+(assert (forall ((?v0 S15) (?v1 Int) (?v2 Int)) (=> (forall ((?v3 Int)) (not (= (f37 (f8 (f9 f10 ?v3) ?v3) (f327 ?v0)) f1))) (=> (= (f37 (f8 (f9 f10 ?v1) ?v2) ?v0) f1) (not (= ?v1 ?v2))))))
+(assert (forall ((?v0 S21)) (=> (= (f306 ?v0) f1) (= (f321 (f328 ?v0)) f1))))
+(assert (forall ((?v0 S16)) (=> (= (f307 ?v0) f1) (= (f323 (f329 ?v0)) f1))))
+(assert (forall ((?v0 S18) (?v1 S18) (?v2 S18) (?v3 S18) (?v4 S21) (?v5 S29)) (=> (= (f44 (f25 (f26 f27 (f21 (f22 f23 ?v0) ?v1)) (f21 (f22 f23 ?v2) ?v3)) (f326 ?v4)) f1) (=> (forall ((?v6 S18) (?v7 S18)) (=> (= (f44 (f25 (f26 f27 (f21 (f22 f23 ?v0) ?v1)) (f21 (f22 f23 ?v6) ?v7)) ?v4) f1) (= (f38 (f39 ?v5 ?v6) ?v7) f1))) (=> (forall ((?v6 S18) (?v7 S18) (?v8 S18) (?v9 S18)) (let ((?v_0 (f21 (f22 f23 ?v6) ?v7))) (=> (= (f44 (f25 (f26 f27 (f21 (f22 f23 ?v0) ?v1)) ?v_0) (f326 ?v4)) f1) (=> ( [...]
+(assert (forall ((?v0 S17) (?v1 S17) (?v2 S17) (?v3 S17) (?v4 S6) (?v5 S30)) (=> (= (f30 (f12 (f13 f14 (f25 (f26 f27 ?v0) ?v1)) (f25 (f26 f27 ?v2) ?v3)) (f330 ?v4)) f1) (=> (forall ((?v6 S17) (?v7 S17)) (=> (= (f30 (f12 (f13 f14 (f25 (f26 f27 ?v0) ?v1)) (f25 (f26 f27 ?v6) ?v7)) ?v4) f1) (= (f20 (f42 ?v5 ?v6) ?v7) f1))) (=> (forall ((?v6 S17) (?v7 S17) (?v8 S17) (?v9 S17)) (let ((?v_0 (f25 (f26 f27 ?v6) ?v7))) (=> (= (f30 (f12 (f13 f14 (f25 (f26 f27 ?v0) ?v1)) ?v_0) (f330 ?v4)) f1) (=> (= [...]
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 Int) (?v3 Int) (?v4 S11) (?v5 S27)) (=> (= (f33 (f16 (f17 f18 (f8 (f9 f10 ?v0) ?v1)) (f8 (f9 f10 ?v2) ?v3)) (f331 ?v4)) f1) (=> (forall ((?v6 Int) (?v7 Int)) (=> (= (f33 (f16 (f17 f18 (f8 (f9 f10 ?v0) ?v1)) (f8 (f9 f10 ?v6) ?v7)) ?v4) f1) (= (f34 (f35 ?v5 ?v6) ?v7) f1))) (=> (forall ((?v6 Int) (?v7 Int) (?v8 Int) (?v9 Int)) (let ((?v_0 (f8 (f9 f10 ?v6) ?v7))) (=> (= (f33 (f16 (f17 f18 (f8 (f9 f10 ?v0) ?v1)) ?v_0) (f331 ?v4)) f1) (=> (= (f33 (f16  [...]
+(assert (forall ((?v0 S17) (?v1 S17) (?v2 S21) (?v3 S16)) (=> (= (f44 (f25 (f26 f27 ?v0) ?v1) (f326 ?v2)) f1) (=> (forall ((?v4 S17)) (=> (= (f44 (f25 (f26 f27 ?v4) ?v1) ?v2) f1) (= (f20 ?v3 ?v4) f1))) (=> (forall ((?v4 S17) (?v5 S17)) (=> (= (f44 (f25 (f26 f27 ?v4) ?v5) ?v2) f1) (=> (= (f44 (f25 (f26 f27 ?v5) ?v1) (f326 ?v2)) f1) (=> (= (f20 ?v3 ?v5) f1) (= (f20 ?v3 ?v4) f1))))) (= (f20 ?v3 ?v0) f1))))))
+(assert (forall ((?v0 S18) (?v1 S18) (?v2 S16) (?v3 S28)) (=> (= (f41 (f21 (f22 f23 ?v0) ?v1) (f325 ?v2)) f1) (=> (forall ((?v4 S18)) (=> (= (f41 (f21 (f22 f23 ?v4) ?v1) ?v2) f1) (= (f38 ?v3 ?v4) f1))) (=> (forall ((?v4 S18) (?v5 S18)) (=> (= (f41 (f21 (f22 f23 ?v4) ?v5) ?v2) f1) (=> (= (f41 (f21 (f22 f23 ?v5) ?v1) (f325 ?v2)) f1) (=> (= (f38 ?v3 ?v5) f1) (= (f38 ?v3 ?v4) f1))))) (= (f38 ?v3 ?v0) f1))))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 S15) (?v3 S26)) (=> (= (f37 (f8 (f9 f10 ?v0) ?v1) (f327 ?v2)) f1) (=> (forall ((?v4 Int)) (=> (= (f37 (f8 (f9 f10 ?v4) ?v1) ?v2) f1) (= (f34 ?v3 ?v4) f1))) (=> (forall ((?v4 Int) (?v5 Int)) (=> (= (f37 (f8 (f9 f10 ?v4) ?v5) ?v2) f1) (=> (= (f37 (f8 (f9 f10 ?v5) ?v1) (f327 ?v2)) f1) (=> (= (f34 ?v3 ?v5) f1) (= (f34 ?v3 ?v4) f1))))) (= (f34 ?v3 ?v0) f1))))))
+(assert (forall ((?v0 S17) (?v1 S17) (?v2 S21) (?v3 S16)) (=> (= (f44 (f25 (f26 f27 ?v0) ?v1) (f326 ?v2)) f1) (=> (forall ((?v4 S17)) (=> (= (f44 (f25 (f26 f27 ?v0) ?v4) ?v2) f1) (= (f20 ?v3 ?v4) f1))) (=> (forall ((?v4 S17) (?v5 S17)) (=> (= (f44 (f25 (f26 f27 ?v0) ?v4) (f326 ?v2)) f1) (=> (= (f44 (f25 (f26 f27 ?v4) ?v5) ?v2) f1) (=> (= (f20 ?v3 ?v4) f1) (= (f20 ?v3 ?v5) f1))))) (= (f20 ?v3 ?v1) f1))))))
+(assert (forall ((?v0 S18) (?v1 S18) (?v2 S16) (?v3 S28)) (=> (= (f41 (f21 (f22 f23 ?v0) ?v1) (f325 ?v2)) f1) (=> (forall ((?v4 S18)) (=> (= (f41 (f21 (f22 f23 ?v0) ?v4) ?v2) f1) (= (f38 ?v3 ?v4) f1))) (=> (forall ((?v4 S18) (?v5 S18)) (=> (= (f41 (f21 (f22 f23 ?v0) ?v4) (f325 ?v2)) f1) (=> (= (f41 (f21 (f22 f23 ?v4) ?v5) ?v2) f1) (=> (= (f38 ?v3 ?v4) f1) (= (f38 ?v3 ?v5) f1))))) (= (f38 ?v3 ?v1) f1))))))
+(assert (forall ((?v0 Int) (?v1 Int) (?v2 S15) (?v3 S26)) (=> (= (f37 (f8 (f9 f10 ?v0) ?v1) (f327 ?v2)) f1) (=> (forall ((?v4 Int)) (=> (= (f37 (f8 (f9 f10 ?v0) ?v4) ?v2) f1) (= (f34 ?v3 ?v4) f1))) (=> (forall ((?v4 Int) (?v5 Int)) (=> (= (f37 (f8 (f9 f10 ?v0) ?v4) (f327 ?v2)) f1) (=> (= (f37 (f8 (f9 f10 ?v4) ?v5) ?v2) f1) (=> (= (f34 ?v3 ?v4) f1) (= (f34 ?v3 ?v5) f1))))) (= (f34 ?v3 ?v1) f1))))))
+(assert (forall ((?v0 S18)) (= (f160 f315 (f154 f155 ?v0)) ?v0)))
+(assert (forall ((?v0 Int)) (=> (<= 0 ?v0) (= (f154 f155 (f160 f315 ?v0)) ?v0))))
+(assert (forall ((?v0 Int)) (=> (< ?v0 0) (= (f154 f155 (f160 f315 ?v0)) 0))))
+(check-sat)
+(exit)
diff --git a/test/regress/regress0/nl/real-div-ufnra.smt2 b/test/regress/regress0/nl/real-div-ufnra.smt2
new file mode 100644
index 0000000..e7a031f
--- /dev/null
+++ b/test/regress/regress0/nl/real-div-ufnra.smt2
@@ -0,0 +1,13 @@
+; COMMAND-LINE: --nl-ext --simplification=none
+; EXPECT: sat
+(set-logic QF_UFNRA)
+(set-info :status sat)
+(declare-fun x () Real)
+(declare-fun y () Real)
+(declare-fun f (Real) Real)
+
+(assert (= (f x) 0.2))
+(assert (= (f y) 0.4)) 
+(assert (= (/ (f x) (f y)) 0.5))
+
+(check-sat)
diff --git a/test/regress/regress0/nl/red-exp.smt2 b/test/regress/regress0/nl/red-exp.smt2
new file mode 100644
index 0000000..5dc5258
--- /dev/null
+++ b/test/regress/regress0/nl/red-exp.smt2
@@ -0,0 +1,11 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: unsat
+(set-logic QF_NRA)
+(set-info :status unsat)
+
+(declare-fun a () Real)
+(declare-fun b () Real)
+
+(assert (or (= a (* b b)) (and (= a 9) (= b 3))))
+(assert (not (= (* a a) (* b b b b))))
+(check-sat)
diff --git a/test/regress/regress0/nl/rewriting-sums.smt2 b/test/regress/regress0/nl/rewriting-sums.smt2
new file mode 100644
index 0000000..ca2edf0
--- /dev/null
+++ b/test/regress/regress0/nl/rewriting-sums.smt2
@@ -0,0 +1,18 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: unsat
+(set-logic QF_NIA)
+(set-info :status unsat)
+(declare-fun x () Int)
+(declare-fun y () Int)
+(declare-fun z () Int)
+
+
+(assert (or (= x 5) (= x 7) (= x 9)))
+
+(assert (or (= y (+ x 1)) (= y (+ x 2))))
+
+(assert (or (= z (+ y 5)) (= z (+ y 10))))
+
+(assert (> (* z z) 1000000000))
+
+(check-sat)
diff --git a/test/regress/regress0/nl/simple-mono-unsat.smt2 b/test/regress/regress0/nl/simple-mono-unsat.smt2
new file mode 100644
index 0000000..b82b7ad
--- /dev/null
+++ b/test/regress/regress0/nl/simple-mono-unsat.smt2
@@ -0,0 +1,18 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: unsat
+(set-logic QF_NRA)
+(set-info :status unsat)
+
+(declare-fun a () Real)
+(declare-fun b () Real)
+(declare-fun c () Real)
+(declare-fun d () Real)
+
+(assert (or (= a 4) (= a 3)))
+
+(assert (> b 0))
+(assert (> c 0))
+
+(assert (< (* a b c d d) 0))
+
+(check-sat)
diff --git a/test/regress/regress0/nl/simple-mono.smt2 b/test/regress/regress0/nl/simple-mono.smt2
new file mode 100644
index 0000000..3d4adad
--- /dev/null
+++ b/test/regress/regress0/nl/simple-mono.smt2
@@ -0,0 +1,17 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: unsat
+(set-logic QF_NRA)
+(set-info :status unsat)
+(declare-fun x () Real)
+(declare-fun y () Real)
+(declare-fun z () Real)
+
+
+(assert (> z 0))
+(assert (> x y))
+
+;(assert (not (> (* x z) (* y z))))
+(assert (< (* x z) (* y z)))
+
+
+(check-sat)
diff --git a/test/regress/regress0/nl/subs0-unsat-confirm.smt2 b/test/regress/regress0/nl/subs0-unsat-confirm.smt2
new file mode 100644
index 0000000..a1df91b
--- /dev/null
+++ b/test/regress/regress0/nl/subs0-unsat-confirm.smt2
@@ -0,0 +1,18 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: unsat
+(set-logic QF_NRA)
+(set-info :status unsat)
+(declare-fun v1 () Real)
+(declare-fun v2 () Real)
+(declare-fun v3 () Real)
+(declare-fun v4 () Real)
+(declare-fun v5 () Real)
+(declare-fun v6 () Real)
+(declare-fun v7 () Real)
+(declare-fun v8 () Real)
+
+(assert (or (= v1 0) (= v2 0)))
+
+(assert (not (= (* v1 v2 v3 v4 v5 v6 v7) 0)))
+
+(check-sat)
diff --git a/test/regress/regress0/nl/very-easy-sat.smt2 b/test/regress/regress0/nl/very-easy-sat.smt2
new file mode 100644
index 0000000..06efa58
--- /dev/null
+++ b/test/regress/regress0/nl/very-easy-sat.smt2
@@ -0,0 +1,30 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: sat
+(set-logic QF_NRA)
+(set-info :source |
+These benchmarks used in the paper:
+
+  Dejan Jovanovic and Leonardo de Moura.  Solving Non-Linear Arithmetic.
+  In IJCAR 2012, published as LNCS volume 7364, pp. 339--354.
+
+The meti-tarski benchmarks are proof obligations extracted from the
+Meti-Tarski project, see:
+
+  B. Akbarpour and L. C. Paulson. MetiTarski: An automatic theorem prover
+  for real-valued special functions. Journal of Automated Reasoning,
+  44(3):175-205, 2010.
+
+Submitted by Dejan Jovanovic for SMT-LIB.
+
+
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status sat)
+(declare-fun skoC () Real)
+(declare-fun skoS () Real)
+(declare-fun skoCB () Real)
+(declare-fun skoSB () Real)
+(declare-fun skoX () Real)
+(assert (and (<= skoX (/ 177 366500000)) (and (not (<= (/ 177 366500000) skoX)) (and (= (* skoSB skoSB) (+ 1 (* skoCB (* skoCB (- 1))))) (and (= (* skoS skoS) (+ 1 (* skoC (* skoC (- 1))))) (and (<= skoX (/ 1 10000000)) (<= 0 skoX)))))))
+(check-sat)
diff --git a/test/regress/regress0/nl/very-simple-unsat.smt2 b/test/regress/regress0/nl/very-simple-unsat.smt2
new file mode 100644
index 0000000..e23d2d5
--- /dev/null
+++ b/test/regress/regress0/nl/very-simple-unsat.smt2
@@ -0,0 +1,15 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: unsat
+(set-logic QF_NRA)
+(set-info :source |
+Harald Roman Zankl <Harald.Zankl at uibk.ac.at>
+
+|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "crafted")
+(set-info :status unsat)
+(declare-fun a () Real)
+(assert (= (* a a) (- 2)))
+(check-sat)
+(exit)
+
diff --git a/test/regress/regress0/nl/zero-subset.smt2 b/test/regress/regress0/nl/zero-subset.smt2
new file mode 100644
index 0000000..a8ce65b
--- /dev/null
+++ b/test/regress/regress0/nl/zero-subset.smt2
@@ -0,0 +1,15 @@
+; COMMAND-LINE: --nl-ext
+; EXPECT: unsat
+(set-logic QF_NRA)
+(set-info :status unsat)
+(declare-fun a () Real)
+(declare-fun b () Real)
+(declare-fun c () Real)
+(declare-fun d () Real)
+(declare-fun e () Real)
+
+(assert (= (* a b c d) 0))
+
+(assert (not (= (* a b c d e) 0)))
+
+(check-sat)
diff --git a/test/regress/regress0/parser/Makefile.in b/test/regress/regress0/parser/Makefile.in
index c27a5dd..b836481 100644
--- a/test/regress/regress0/parser/Makefile.in
+++ b/test/regress/regress0/parser/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress0/precedence/Makefile.in b/test/regress/regress0/precedence/Makefile.in
index da3dc58..c53a788 100644
--- a/test/regress/regress0/precedence/Makefile.in
+++ b/test/regress/regress0/precedence/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress0/preprocess/Makefile.in b/test/regress/regress0/preprocess/Makefile.in
index a5b5b98..dd4ab87 100644
--- a/test/regress/regress0/preprocess/Makefile.in
+++ b/test/regress/regress0/preprocess/Makefile.in
@@ -436,6 +436,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress0/push-pop/Makefile.am b/test/regress/regress0/push-pop/Makefile.am
index 2621327..0f25081 100644
--- a/test/regress/regress0/push-pop/Makefile.am
+++ b/test/regress/regress0/push-pop/Makefile.am
@@ -48,7 +48,9 @@ BUG_TESTS = \
   inc-define.smt2 \
   bug765.smt2 \
   bug691.smt2 \
-  bug694-Unapply1.scala-0.smt2
+  bug694-Unapply1.scala-0.smt2 \
+  simple_unsat_cores.smt2 \
+  bug821.smt2
 
 TESTS =	$(SMT_TESTS) $(SMT2_TESTS) $(CVC_TESTS) $(BUG_TESTS)
 
diff --git a/test/regress/regress0/push-pop/Makefile.in b/test/regress/regress0/push-pop/Makefile.in
index 44a7d53..df4e435 100644
--- a/test/regress/regress0/push-pop/Makefile.in
+++ b/test/regress/regress0/push-pop/Makefile.in
@@ -435,6 +435,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -694,7 +695,9 @@ BUG_TESTS = \
   inc-define.smt2 \
   bug765.smt2 \
   bug691.smt2 \
-  bug694-Unapply1.scala-0.smt2
+  bug694-Unapply1.scala-0.smt2 \
+  simple_unsat_cores.smt2 \
+  bug821.smt2
 
 EXTRA_DIST = $(TESTS) \
 	bug216.smt2.expect \
@@ -1134,6 +1137,20 @@ bug694-Unapply1.scala-0.smt2.log: bug694-Unapply1.scala-0.smt2
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+simple_unsat_cores.smt2.log: simple_unsat_cores.smt2
+	@p='simple_unsat_cores.smt2'; \
+	b='simple_unsat_cores.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug821.smt2.log: bug821.smt2
+	@p='bug821.smt2'; \
+	b='bug821.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 .test.log:
 	@p='$<'; \
 	$(am__set_b); \
diff --git a/test/regress/regress0/push-pop/arith/Makefile.in b/test/regress/regress0/push-pop/arith/Makefile.in
index e00a38f..f041a26 100644
--- a/test/regress/regress0/push-pop/arith/Makefile.in
+++ b/test/regress/regress0/push-pop/arith/Makefile.in
@@ -436,6 +436,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress0/push-pop/boolean/Makefile.in b/test/regress/regress0/push-pop/boolean/Makefile.in
index 7cb5c04..49a1443 100644
--- a/test/regress/regress0/push-pop/boolean/Makefile.in
+++ b/test/regress/regress0/push-pop/boolean/Makefile.in
@@ -436,6 +436,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress0/push-pop/bug821.smt2 b/test/regress/regress0/push-pop/bug821.smt2
new file mode 100644
index 0000000..b537197
--- /dev/null
+++ b/test/regress/regress0/push-pop/bug821.smt2
@@ -0,0 +1,8 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+(set-logic UF)
+(push 1)
+(declare-fun _substvar_4_ () Bool)
+(assert _substvar_4_)
+(assert _substvar_4_)
+(check-sat)
diff --git a/test/regress/regress0/push-pop/simple_unsat_cores.smt2 b/test/regress/regress0/push-pop/simple_unsat_cores.smt2
new file mode 100644
index 0000000..e85a546
--- /dev/null
+++ b/test/regress/regress0/push-pop/simple_unsat_cores.smt2
@@ -0,0 +1,10 @@
+; COMMAND-LINE: --incremental
+; EXPECT: unsat
+; EXPECT: unsat
+(set-logic UF)
+(push 1)
+(assert false)
+(check-sat)
+(pop 1)
+(assert false)
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/Makefile.am b/test/regress/regress0/quantifiers/Makefile.am
index faa2abe..c5a81c9 100644
--- a/test/regress/regress0/quantifiers/Makefile.am
+++ b/test/regress/regress0/quantifiers/Makefile.am
@@ -88,8 +88,11 @@ TESTS =	\
 	quaternion_ds1_symm_0428.fof.smt2 \
 	bug749-rounding.smt2 \
 	RNDPRE_4_1-dd-nqe.smt2 \
-	mix-complete-strat.smt2
-
+	mix-complete-strat.smt2 \
+	cbqi-sdlx-fixpoint-3-dd.smt2 \
+	qbv-simp.smt2 \
+	psyco-001-bv.smt2 \
+	bug822.smt2
 
 # regression can be solved with --finite-model-find --fmf-inst-engine
 # set3.smt2
diff --git a/test/regress/regress0/quantifiers/Makefile.in b/test/regress/regress0/quantifiers/Makefile.in
index 21a5afb..1bc7778 100644
--- a/test/regress/regress0/quantifiers/Makefile.in
+++ b/test/regress/regress0/quantifiers/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -675,7 +676,11 @@ TESTS = \
 	quaternion_ds1_symm_0428.fof.smt2 \
 	bug749-rounding.smt2 \
 	RNDPRE_4_1-dd-nqe.smt2 \
-	mix-complete-strat.smt2
+	mix-complete-strat.smt2 \
+	cbqi-sdlx-fixpoint-3-dd.smt2 \
+	qbv-simp.smt2 \
+	psyco-001-bv.smt2 \
+	bug822.smt2
 
 
 # regression can be solved with --finite-model-find --fmf-inst-engine
@@ -1363,6 +1368,34 @@ mix-complete-strat.smt2.log: mix-complete-strat.smt2
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cbqi-sdlx-fixpoint-3-dd.smt2.log: cbqi-sdlx-fixpoint-3-dd.smt2
+	@p='cbqi-sdlx-fixpoint-3-dd.smt2'; \
+	b='cbqi-sdlx-fixpoint-3-dd.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+qbv-simp.smt2.log: qbv-simp.smt2
+	@p='qbv-simp.smt2'; \
+	b='qbv-simp.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+psyco-001-bv.smt2.log: psyco-001-bv.smt2
+	@p='psyco-001-bv.smt2'; \
+	b='psyco-001-bv.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug822.smt2.log: bug822.smt2
+	@p='bug822.smt2'; \
+	b='bug822.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 .test.log:
 	@p='$<'; \
 	$(am__set_b); \
diff --git a/test/regress/regress0/quantifiers/RND-small.smt2 b/test/regress/regress0/quantifiers/RND-small.smt2
index 1401e5d..cf5c3bc 100644
--- a/test/regress/regress0/quantifiers/RND-small.smt2
+++ b/test/regress/regress0/quantifiers/RND-small.smt2
@@ -1,4 +1,4 @@
-; COMMAND-LINE: --cbqi-recurse
+; COMMAND-LINE: --no-check-models
 ; EXPECT: sat
 (set-logic LRA)
 (declare-fun y1 () Real)
diff --git a/test/regress/regress0/quantifiers/anti-sk-simp.smt2 b/test/regress/regress0/quantifiers/anti-sk-simp.smt2
index ba4f9cb..2ae54a0 100644
--- a/test/regress/regress0/quantifiers/anti-sk-simp.smt2
+++ b/test/regress/regress0/quantifiers/anti-sk-simp.smt2
@@ -1,4 +1,4 @@
-; COMMAND-LINE: --quant-anti-skolem
+; COMMAND-LINE: --cbqi --quant-anti-skolem
 ; EXPECT: unsat
 (set-logic ALL_SUPPORTED)
 (set-info :status unsat)
diff --git a/test/regress/regress0/quantifiers/ari056.smt2 b/test/regress/regress0/quantifiers/ari056.smt2
index ed4d2bf..a1f4aef 100644
--- a/test/regress/regress0/quantifiers/ari056.smt2
+++ b/test/regress/regress0/quantifiers/ari056.smt2
@@ -1,3 +1,5 @@
+; COMMAND-LINE: --cbqi
+; EXPECT: unsat
 (set-logic UFNIRA)
 (set-info :status unsat)
 (assert (forall ((X Int)) (= X 12) ))
diff --git a/test/regress/regress0/quantifiers/bug822.smt2 b/test/regress/regress0/quantifiers/bug822.smt2
new file mode 100644
index 0000000..fc846b6
--- /dev/null
+++ b/test/regress/regress0/quantifiers/bug822.smt2
@@ -0,0 +1,1183 @@
+; COMMAND-LINE: --lang=smt2.6
+; EXPECT: unsat
+(set-logic UFDT)
+(set-info :source |
+Generated by: Andrew Reynolds
+Generated on: 2017-04-28
+Generator: Sledgehammer, converted to v2.6 by CVC4
+Application: Verfication goals in Isabelle
+Target solver: CVC4, Z3
+Publications: "A Decision Procedure for (Co)Datatypes" by Andrew Reynolds and Jasmin Blanchette, CADE 2015.
+|)
+(set-info :status unsat)
+(declare-sort A$ 0)
+(declare-sort B$ 0)
+(declare-sort A_a_fun$ 0)
+(declare-sort A_b_fun$ 0)
+(declare-sort B_a_fun$ 0)
+(declare-sort B_b_fun$ 0)
+(declare-sort A_bool_fun$ 0)
+(declare-sort B_bool_fun$ 0)
+(declare-sort A_a_tree_fun$ 0)
+(declare-sort A_b_tree_fun$ 0)
+(declare-sort A_tree_b_fun$ 0)
+(declare-sort B_a_tree_fun$ 0)
+(declare-sort B_b_tree_fun$ 0)
+(declare-sort B_tree_b_fun$ 0)
+(declare-sort A_a_sum_a_fun$ 0)
+(declare-sort A_a_sum_b_fun$ 0)
+(declare-sort A_b_fun_b_fun$ 0)
+(declare-sort B_b_fun_b_fun$ 0)
+(declare-sort B_b_sum_b_fun$ 0)
+(declare-sort A_a_a_prod_fun$ 0)
+(declare-sort A_b_b_prod_fun$ 0)
+(declare-sort B_b_b_prod_fun$ 0)
+(declare-sort B_b_prod_b_fun$ 0)
+(declare-sort B_tree_bool_fun$ 0)
+(declare-sort A_b_fun_bool_fun$ 0)
+(declare-sort B_b_bool_fun_fun$ 0)
+(declare-sort A_tree_a_tree_fun$ 0)
+(declare-sort A_tree_b_tree_fun$ 0)
+(declare-sort B_tree_a_tree_fun$ 0)
+(declare-sort B_tree_b_tree_fun$ 0)
+(declare-sort A_b_fun_b_tree_fun$ 0)
+(declare-sort B_b_tree_sum_b_fun$ 0)
+(declare-sort A_a_fun_a_a_fun_fun$ 0)
+(declare-sort A_a_fun_a_b_fun_fun$ 0)
+(declare-sort A_a_sum_a_a_sum_fun$ 0)
+(declare-sort A_a_sum_b_b_sum_fun$ 0)
+(declare-sort A_b_fun_a_a_fun_fun$ 0)
+(declare-sort A_b_fun_a_b_fun_fun$ 0)
+(declare-sort A_b_sum_b_b_sum_fun$ 0)
+(declare-sort B_a_fun_b_a_fun_fun$ 0)
+(declare-sort B_a_fun_b_b_fun_fun$ 0)
+(declare-sort B_b_b_tree_prod_fun$ 0)
+(declare-sort B_b_fun_b_a_fun_fun$ 0)
+(declare-sort B_b_fun_b_b_fun_fun$ 0)
+(declare-sort B_b_sum_b_b_sum_fun$ 0)
+(declare-sort A_a_prod_a_a_prod_fun$ 0)
+(declare-sort A_a_prod_b_b_prod_fun$ 0)
+(declare-sort B_a_b_b_prod_prod_fun$ 0)
+(declare-sort B_b_b_b_prod_prod_fun$ 0)
+(declare-sort B_b_prod_b_b_prod_fun$ 0)
+(declare-sort A_a_sum_tree_a_tree_fun$ 0)
+(declare-sort A_a_sum_tree_b_tree_fun$ 0)
+(declare-sort B_tree_b_sum_b_tree_fun$ 0)
+(declare-sort A_a_fun_a_a_tree_fun_fun$ 0)
+(declare-sort A_tree_b_b_prod_tree_fun$ 0)
+(declare-sort B_b_fun_b_b_tree_fun_fun$ 0)
+(declare-sort B_b_sum_b_tree_b_sum_fun$ 0)
+(declare-sort B_b_tree_a_b_fun_sum_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_fun$ 0)
+(declare-sort B_tree_b_sum_b_b_sum_fun$ 0)
+(declare-sort B_tree_b_tree_b_prod_fun$ 0)
+(declare-sort A_a_fun_a_a_sum_a_fun_fun$ 0)
+(declare-sort A_a_fun_a_b_b_prod_fun_fun$ 0)
+(declare-sort A_b_fun_a_b_b_prod_fun_fun$ 0)
+(declare-sort B_b_b_prod_fun_b_b_fun_fun$ 0)
+(declare-sort B_b_prod_b_tree_b_prod_fun$ 0)
+(declare-sort B_tree_b_prod_b_b_prod_fun$ 0)
+(declare-sort B_tree_b_tree_bool_fun_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_bool_fun$ 0)
+(declare-sort B_tree_tree_b_tree_tree_fun$ 0)
+(declare-sort B_b_fun_b_b_bool_fun_fun_fun$ 0)
+(declare-sort B_tree_b_tree_fun_b_tree_fun$ 0)
+(declare-sort B_tree_b_tree_sum_b_tree_fun$ 0)
+(declare-sort A_b_fun_tree_a_b_fun_tree_fun$ 0)
+(declare-sort A_b_tree_sum_b_b_tree_sum_fun$ 0)
+(declare-sort A_tree_b_sum_a_tree_b_sum_fun$ 0)
+(declare-sort A_tree_b_sum_b_tree_b_sum_fun$ 0)
+(declare-sort B_a_tree_fun_b_b_tree_fun_fun$ 0)
+(declare-sort B_b_fun_tree_b_b_fun_tree_fun$ 0)
+(declare-sort B_b_sum_tree_b_b_sum_tree_fun$ 0)
+(declare-sort B_b_tree_fun_b_b_tree_fun_fun$ 0)
+(declare-sort B_b_tree_sum_b_b_tree_sum_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_fun$ 0)
+(declare-sort B_tree_b_fun_b_tree_b_fun_fun$ 0)
+(declare-sort B_tree_b_sum_b_tree_b_sum_fun$ 0)
+(declare-sort B_tree_b_tree_a_b_fun_sum_fun$ 0)
+(declare-sort B_tree_b_tree_b_tree_prod_fun$ 0)
+(declare-sort B_tree_b_tree_prod_b_tree_fun$ 0)
+(declare-sort A_b_fun_b_tree_a_b_fun_sum_fun$ 0)
+(declare-sort B_b_tree_b_tree_prod_prod_b_fun$ 0)
+(declare-sort B_b_tree_prod_b_b_tree_prod_fun$ 0)
+(declare-sort B_tree_b_prod_b_tree_b_prod_fun$ 0)
+(declare-sort A_a_a_prod_fun_a_b_b_prod_fun_fun$ 0)
+(declare-sort B_b_b_fun_b_b_bool_fun_fun_fun_fun$ 0)
+(declare-sort B_b_tree_sum_b_tree_b_tree_sum_fun$ 0)
+(declare-sort B_tree_b_tree_fun_b_tree_b_fun_fun$ 0)
+(declare-sort B_tree_b_tree_sum_b_b_tree_sum_fun$ 0)
+(declare-sort A_a_a_prod_prod_a_a_a_prod_prod_fun$ 0)
+(declare-sort A_a_a_prod_prod_b_b_b_prod_prod_fun$ 0)
+(declare-sort A_b_b_prod_prod_a_b_b_prod_prod_fun$ 0)
+(declare-sort A_b_b_prod_prod_b_b_b_prod_prod_fun$ 0)
+(declare-sort B_b_b_prod_prod_b_b_b_prod_prod_fun$ 0)
+(declare-sort A_a_fun_a_a_fun_a_a_tree_fun_fun_fun$ 0)
+(declare-sort A_tree_a_a_tree_a_tree_prod_prod_fun$ 0)
+(declare-sort A_tree_b_b_tree_b_tree_prod_prod_fun$ 0)
+(declare-sort B_b_tree_prod_b_tree_b_tree_prod_fun$ 0)
+(declare-sort B_tree_a_b_tree_b_tree_prod_prod_fun$ 0)
+(declare-sort B_tree_b_b_tree_b_tree_prod_prod_fun$ 0)
+(declare-sort B_tree_b_tree_prod_b_b_tree_prod_fun$ 0)
+(declare-sort A_b_fun_b_b_tree_b_tree_prod_prod_fun$ 0)
+(declare-sort A_tree_a_tree_fun_a_tree_a_tree_fun_fun$ 0)
+(declare-sort A_tree_a_tree_fun_a_tree_b_tree_fun_fun$ 0)
+(declare-sort A_tree_b_tree_fun_a_tree_a_tree_fun_fun$ 0)
+(declare-sort A_tree_b_tree_fun_a_tree_b_tree_fun_fun$ 0)
+(declare-sort A_tree_b_tree_sum_a_tree_b_tree_sum_fun$ 0)
+(declare-sort A_tree_b_tree_sum_b_tree_b_tree_sum_fun$ 0)
+(declare-sort B_tree_a_tree_fun_b_tree_b_tree_fun_fun$ 0)
+(declare-sort B_tree_b_tree_fun_b_tree_b_tree_fun_fun$ 0)
+(declare-sort B_tree_b_tree_sum_b_tree_b_tree_sum_fun$ 0)
+(declare-sort A_a_tree_fun_a_a_fun_a_a_tree_fun_fun_fun$ 0)
+(declare-sort A_b_fun_b_tree_fun_a_b_fun_b_tree_fun_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_b_tree_prod_fun$ 0)
+(declare-sort B_tree_b_tree_prod_b_tree_b_tree_prod_fun$ 0)
+(declare-sort A_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun$ 0)
+(declare-sort B_a_a_tree_b_sum_a_tree_b_sum_prod_prod_fun$ 0)
+(declare-sort B_b_b_tree_b_sum_b_tree_b_sum_prod_prod_fun$ 0)
+(declare-sort B_tree_b_b_prod_prod_b_tree_b_b_prod_prod_fun$ 0)
+(declare-sort B_b_fun_b_b_b_fun_b_b_bool_fun_fun_fun_fun_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_set$ 0)
+(declare-sort B_a_b_b_prod_prod_fun_b_a_b_b_prod_prod_fun_fun$ 0)
+(declare-sort A_b_fun_bool_fun_b_tree_a_b_fun_sum_bool_fun_fun$ 0)
+(declare-sort B_b_tree_b_tree_prod_prod_b_tree_b_tree_prod_fun$ 0)
+(declare-sort B_tree_b_tree_fun_b_tree_b_tree_bool_fun_fun_fun$ 0)
+(declare-sort B_tree_b_tree_fun_tree_b_tree_b_tree_fun_tree_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_bool_fun_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_bool_fun$ 0)
+(declare-sort B_tree_b_tree_a_b_fun_sum_fun_b_tree_b_tree_fun_fun$ 0)
+(declare-sort B_tree_b_tree_b_tree_prod_fun_b_tree_b_tree_fun_fun$ 0)
+(declare-sort A_b_fun_b_tree_fun_b_tree_a_b_fun_sum_b_tree_fun_fun$ 0)
+(declare-sort A_b_fun_b_tree_a_b_fun_sum_fun_a_b_fun_b_tree_fun_fun$ 0)
+(declare-sort B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_set$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_fun$ 0)
+(declare-sort A_a_tree_a_tree_prod_prod_a_a_tree_a_tree_prod_prod_fun$ 0)
+(declare-sort A_a_tree_a_tree_prod_prod_b_b_tree_b_tree_prod_prod_fun$ 0)
+(declare-sort A_b_tree_b_tree_prod_prod_a_b_tree_b_tree_prod_prod_fun$ 0)
+(declare-sort A_b_tree_b_tree_prod_prod_b_b_tree_b_tree_prod_prod_fun$ 0)
+(declare-sort B_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$ 0)
+(declare-sort B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_fun$ 0)
+(declare-sort B_b_tree_b_tree_prod_prod_b_b_tree_b_tree_prod_prod_fun$ 0)
+(declare-sort A_bool_fun_a_a_tree_fun_a_a_fun_a_a_tree_fun_fun_fun_fun$ 0)
+(declare-sort B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_bool_fun_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_bool_fun_fun$ 0)
+(declare-sort B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_bool_fun$ 0)
+(declare-sort B_tree_a_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_fun$ 0)
+(declare-sort B_tree_b_b_tree_b_tree_sum_b_tree_b_tree_sum_prod_prod_fun$ 0)
+(declare-sort B_tree_b_tree_b_tree_fun_b_tree_b_tree_bool_fun_fun_fun_fun$ 0)
+(declare-sort A_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_fun_b_tree_a_b_fun_sum_b_tree_fun_fun$ 0)
+(declare-sort B_tree_b_tree_fun_b_tree_b_tree_prod_b_tree_b_tree_prod_fun_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_b_tree_prod_fun_fun$ 0)
+(declare-sort A_b_fun_a_b_fun_fun_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun_fun$ 0)
+(declare-sort A_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$ 0)
+(declare-sort B_tree_b_tree_b_tree_prod_prod_b_tree_b_tree_b_tree_prod_prod_fun$ 0)
+(declare-sort A_b_fun_a_b_fun_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun_fun$ 0)
+(declare-sort A_a_fun_a_bool_fun_a_a_tree_fun_a_a_fun_a_a_tree_fun_fun_fun_fun_fun$ 0)
+(declare-sort B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_tree_b_tree_prod_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_b_tree_b_tree_prod_prod_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun_b_tree_a_b_fun_sum_b_tree_fun_fun$ 0)
+(declare-sort B_tree_a_b_tree_b_tree_prod_prod_fun_b_tree_a_b_tree_b_tree_prod_prod_fun_fun$ 0)
+(declare-sort B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_b_tree_b_tree_prod_prod_fun_fun$ 0)
+(declare-sort A_a_tree_b_sum_a_tree_b_sum_prod_prod_a_a_tree_b_sum_a_tree_b_sum_prod_prod_fun$ 0)
+(declare-sort A_a_tree_b_sum_a_tree_b_sum_prod_prod_b_b_tree_b_sum_b_tree_b_sum_prod_prod_fun$ 0)
+(declare-sort B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_b_tree_b_tree_prod_prod_fun$ 0)
+(declare-sort B_tree_b_tree_fun_b_tree_b_tree_b_tree_fun_b_tree_b_tree_bool_fun_fun_fun_fun_fun$ 0)
+(declare-sort A_a_tree_fun_a_a_fun_a_bool_fun_a_a_tree_fun_a_a_fun_a_a_tree_fun_fun_fun_fun_fun_fun$ 0)
+(declare-sort A_b_fun_a_b_fun_fun_a_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun$ 0)
+(declare-sort A_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun_fun_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$ 0)
+(declare-sort B_a_a_tree_b_sum_a_tree_b_sum_prod_prod_fun_b_a_a_tree_b_sum_a_tree_b_sum_prod_prod_fun_fun$ 0)
+(declare-sort B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$ 0)
+(declare-sort A_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_a_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_fun$ 0)
+(declare-sort A_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_b_b_tree_b_tree_sum_b_tree_b_tree_sum_prod_prod_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_fun_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun_fun$ 0)
+(declare-sort A_bool_fun_a_a_tree_fun_a_a_fun_a_bool_fun_a_a_tree_fun_a_a_fun_a_a_tree_fun_fun_fun_fun_fun_fun_fun$ 0)
+(declare-sort B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun$ 0)
+(declare-sort B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_prod_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$ 0)
+(declare-sort A_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun_fun$ 0)
+(declare-sort A_b_fun_a_b_fun_fun_a_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun_fun_fun_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun_fun$ 0)
+(declare-sort B_tree_a_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_fun_b_tree_a_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_fun_fun$ 0)
+(declare-sort A_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun_fun_fun$ 0)
+(declare-sort A_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun_fun_fun_fun_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun_fun$ 0)
+(declare-sort A_b_fun_a_b_fun_fun_a_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun_fun_fun_fun$ 0)
+(declare-sort A_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun_fun_fun_fun_fun_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_fun_fun$ 0)
+(declare-sort B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun_fun$ 0)
+(declare-sort A_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun_fun_fun_fun_fun$ 0)
+(declare-sort A_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun_fun_fun_fun_fun_fun$ 0)
+(declare-sort B_tree$ 0)
+(declare-fun root$ (B_tree$) B$)
+(declare-fun left$ (B_tree$) B_tree$)
+(declare-fun right$ (B_tree$) B_tree$)
+(declare-fun node$ (B$ B_tree$ B_tree$) B_tree$)
+(declare-datatypes ((B_tree_b_tree_prod$ 0)(B_b_tree_b_tree_prod_prod$ 0)(B_tree_a_b_fun_sum$ 0)(B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$ 0)(B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$ 0)) (((pair$ (fst$ B_tree$) (snd$ B_tree$)))
+((pair$a (fst$a B$) (snd$a B_tree_b_tree_prod$)))
+((inl$ (select$ B_tree$)) (inr$ (selecta$ A_b_fun$)))
+((pair$b (fst$b B_tree_a_b_fun_sum$) (snd$b B_tree_a_b_fun_sum$)))
+((pair$c (fst$c B$) (snd$c B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)))
+))
+(declare-sort A_tree$ 0)
+(declare-fun root$a (A_tree$) A$)
+(declare-fun left$a (A_tree$) A_tree$)
+(declare-fun right$a (A_tree$) A_tree$)
+(declare-fun node$a (A$ A_tree$ A_tree$) A_tree$)
+(declare-datatypes ((A_tree_a_tree_prod$ 0)(A_a_tree_a_tree_prod_prod$ 0)(B_b_prod$ 0)) (((pair$d (fst$d A_tree$) (snd$d A_tree$)))
+((pair$e (fst$e A$) (snd$e A_tree_a_tree_prod$)))
+((pair$f (fst$f B$) (snd$f B$)))
+))
+(declare-sort B_b_prod_tree$ 0)
+(declare-fun root$b (B_b_prod_tree$) B_b_prod$)
+(declare-fun left$b (B_b_prod_tree$) B_b_prod_tree$)
+(declare-fun right$b (B_b_prod_tree$) B_b_prod_tree$)
+(declare-fun node$b (B_b_prod$ B_b_prod_tree$ B_b_prod_tree$) B_b_prod_tree$)
+(declare-datatypes ((A_a_sum$ 0)) (((inl$a (projl$ A$)) (inr$a (projr$ A$)))
+))
+(declare-sort A_a_sum_tree$ 0)
+(declare-sort B_tree_tree$ 0)
+(declare-fun root$c (A_a_sum_tree$) A_a_sum$)
+(declare-fun left$c (A_a_sum_tree$) A_a_sum_tree$)
+(declare-fun right$c (A_a_sum_tree$) A_a_sum_tree$)
+(declare-fun node$c (A_a_sum$ A_a_sum_tree$ A_a_sum_tree$) A_a_sum_tree$)
+(declare-fun root$d (B_tree_tree$) B_tree$)
+(declare-fun left$d (B_tree_tree$) B_tree_tree$)
+(declare-fun right$d (B_tree_tree$) B_tree_tree$)
+(declare-fun node$d (B_tree$ B_tree_tree$ B_tree_tree$) B_tree_tree$)
+(declare-datatypes ((B_b_sum$ 0)) (((inl$b (projl$a B$)) (inr$b (projr$a B$)))
+))
+(declare-sort B_b_sum_tree$ 0)
+(declare-sort B_tree_b_tree_fun_tree$ 0)
+(declare-sort B_b_fun_tree$ 0)
+(declare-sort A_b_fun_tree$ 0)
+(declare-fun root$e (B_b_sum_tree$) B_b_sum$)
+(declare-fun left$e (B_b_sum_tree$) B_b_sum_tree$)
+(declare-fun right$e (B_b_sum_tree$) B_b_sum_tree$)
+(declare-fun node$e (B_b_sum$ B_b_sum_tree$ B_b_sum_tree$) B_b_sum_tree$)
+(declare-fun selectb$ (B_tree_b_tree_fun_tree$) B_tree_b_tree_fun$)
+(declare-fun selectc$ (B_tree_b_tree_fun_tree$) B_tree_b_tree_fun_tree$)
+(declare-fun selectd$ (B_tree_b_tree_fun_tree$) B_tree_b_tree_fun_tree$)
+(declare-fun node$f (B_tree_b_tree_fun$ B_tree_b_tree_fun_tree$ B_tree_b_tree_fun_tree$) B_tree_b_tree_fun_tree$)
+(declare-fun selecte$ (B_b_fun_tree$) B_b_fun$)
+(declare-fun selectf$ (B_b_fun_tree$) B_b_fun_tree$)
+(declare-fun selectg$ (B_b_fun_tree$) B_b_fun_tree$)
+(declare-fun node$g (B_b_fun$ B_b_fun_tree$ B_b_fun_tree$) B_b_fun_tree$)
+(declare-fun selecth$ (A_b_fun_tree$) A_b_fun$)
+(declare-fun selecti$ (A_b_fun_tree$) A_b_fun_tree$)
+(declare-fun selectj$ (A_b_fun_tree$) A_b_fun_tree$)
+(declare-fun node$h (A_b_fun$ A_b_fun_tree$ A_b_fun_tree$) A_b_fun_tree$)
+(declare-datatypes ((A_a_prod$ 0)(A_b_tree_sum$ 0)(A_b_sum$ 0)(B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_prod$ 0)(B_b_tree_prod$ 0)(B_tree_b_prod$ 0)(B_b_b_prod_prod$ 0)(A_a_a_prod_prod$ 0)(B_tree_b_b_prod_prod$ 0)(B_tree_b_tree_b_tree_prod_prod$ 0)(A_b_b_prod_prod$ 0)(A_b_tree_b_tree_prod_prod$ 0)(A_tree_b_sum$ 0)(A_tree_b_sum_a_tree_b_sum_prod$ 0)(A_a_tree_b_sum_a_tree_b_sum_prod_prod$ 0)(B_tree_b_sum$ 0)(B_tree_b_sum_b_tree_b_sum_prod$ 0)(B_b_tree_b_sum_b_tree_b_sum_prod_prod$ 0)(A [...]
+((inl$c (projl$b A$)) (inr$c (projr$b B_tree$)))
+((inl$d (projl$c A$)) (inr$d (projr$c B$)))
+((pair$h (fst$h B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) (snd$h B$)))
+((pair$i (fst$i B$) (snd$i B_tree$)))
+((pair$j (fst$j B_tree$) (snd$j B$)))
+((pair$k (fst$k B$) (snd$k B_b_prod$)))
+((pair$l (fst$l A$) (snd$l A_a_prod$)))
+((pair$m (fst$m B_tree$) (snd$m B_b_prod$)))
+((pair$n (fst$n B_tree$) (snd$n B_tree_b_tree_prod$)))
+((pair$o (fst$o A$) (snd$o B_b_prod$)))
+((pair$p (fst$p A$) (snd$p B_tree_b_tree_prod$)))
+((inl$e (projl$d A_tree$)) (inr$e (projr$d B$)))
+((pair$q (fst$q A_tree_b_sum$) (snd$q A_tree_b_sum$)))
+((pair$r (fst$r A$) (snd$r A_tree_b_sum_a_tree_b_sum_prod$)))
+((inl$f (projl$e B_tree$)) (inr$f (projr$e B$)))
+((pair$s (fst$s B_tree_b_sum$) (snd$s B_tree_b_sum$)))
+((pair$t (fst$t B$) (snd$t B_tree_b_sum_b_tree_b_sum_prod$)))
+((inl$g (projl$f A_tree$)) (inr$g (projr$f B_tree$)))
+((pair$u (fst$u A_tree_b_tree_sum$) (snd$u A_tree_b_tree_sum$)))
+((pair$v (fst$v A$) (snd$v A_tree_b_tree_sum_a_tree_b_tree_sum_prod$)))
+((inl$h (projl$g B_tree$)) (inr$h (projr$g B_tree$)))
+((pair$w (fst$w B_tree_b_tree_sum$) (snd$w B_tree_b_tree_sum$)))
+((pair$x (fst$x B$) (snd$x B_tree_b_tree_sum_b_tree_b_tree_sum_prod$)))
+((inl$i (projl$h B$)) (inr$i (projr$h B_tree$)))
+))
+(declare-fun l$ () A_a_fun$)
+(declare-fun r$ () A_a_fun$)
+(declare-fun t$ () A_tree$)
+(declare-fun x$ () A$)
+(declare-fun id$ () B_b_fun$)
+(declare-fun uu$ () A_b_fun_b_tree_fun$)
+(declare-fun id$a () B_tree_b_tree_fun$)
+(declare-fun id$b () B_b_sum_b_b_sum_fun$)
+(declare-fun id$c () B_tree_b_tree_fun_b_tree_b_tree_fun_fun$)
+(declare-fun id$d () B_b_fun_b_b_fun_fun$)
+(declare-fun id$e () A_b_fun_a_b_fun_fun$)
+(declare-fun id$f () A_a_fun$)
+(declare-fun id$g () B_b_sum_tree_b_b_sum_tree_fun$)
+(declare-fun id$h () B_tree_b_tree_fun_tree_b_tree_b_tree_fun_tree_fun$)
+(declare-fun id$i () B_b_fun_tree_b_b_fun_tree_fun$)
+(declare-fun id$j () A_b_fun_tree_a_b_fun_tree_fun$)
+(declare-fun id$k () B_tree_tree_b_tree_tree_fun$)
+(declare-fun id$l () A_tree_a_tree_fun$)
+(declare-fun id$m () B_b_tree_b_tree_prod_prod_b_b_tree_b_tree_prod_prod_fun$)
+(declare-fun id$n () B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$)
+(declare-fun id$o () B_b_prod_b_b_prod_fun$)
+(declare-fun id$p () A_a_prod_a_a_prod_fun$)
+(declare-fun id$q () B_b_tree_prod_b_b_tree_prod_fun$)
+(declare-fun id$r () B_tree_b_prod_b_tree_b_prod_fun$)
+(declare-fun id$s () B_tree_b_tree_prod_b_tree_b_tree_prod_fun$)
+(declare-fun id$t () B_b_b_prod_prod_b_b_b_prod_prod_fun$)
+(declare-fun id$u () B_tree_b_b_prod_prod_b_tree_b_b_prod_prod_fun$)
+(declare-fun id$v () B_tree_b_tree_b_tree_prod_prod_b_tree_b_tree_b_tree_prod_prod_fun$)
+(declare-fun id$w () B_b_tree_sum_b_b_tree_sum_fun$)
+(declare-fun id$x () B_tree_b_sum_b_tree_b_sum_fun$)
+(declare-fun id$y () B_tree_b_tree_sum_b_tree_b_tree_sum_fun$)
+(declare-fun id$z (B_tree_a_b_fun_sum$) B_tree_a_b_fun_sum$)
+(declare-fun uua$ () B_b_fun$)
+(declare-fun uub$ () B_tree_b_tree_fun$)
+(declare-fun uuc$ () A_a_fun$)
+(declare-fun uud$ (B$) B_b_fun$)
+(declare-fun uue$ (B$) A_b_fun$)
+(declare-fun uuf$ (B$) B_tree_b_fun$)
+(declare-fun uug$ (A$) A_a_fun$)
+(declare-fun uuh$ (B_tree$) B_tree_b_tree_fun$)
+(declare-fun uui$ (B_tree$) A_b_fun_b_tree_fun$)
+(declare-fun uuj$ () B_tree_b_tree_prod_b_tree_b_tree_prod_fun$)
+(declare-fun uuk$ () B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$)
+(declare-fun uul$ (B_tree_b_tree_fun$) B_tree_b_tree_fun_b_tree_b_tree_fun_fun$)
+(declare-fun uum$ (B_tree_b_tree_fun$) A_b_fun_b_tree_fun_a_b_fun_b_tree_fun_fun$)
+(declare-fun uun$ () A_b_fun_b_tree_a_b_fun_sum_fun$)
+(declare-fun uuo$ (A$) A_b_fun_b_fun$)
+(declare-fun uup$ (A_a_fun$) A_b_fun_a_b_fun_fun$)
+(declare-fun uuq$ (A_b_fun_b_fun$) A_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun_fun_fun_fun_fun_fun$)
+(declare-fun uur$ () B_tree_b_tree_a_b_fun_sum_fun$)
+(declare-fun uus$ (B_tree_a_b_fun_sum_b_tree_fun$) B_tree_b_tree_fun$)
+(declare-fun uut$ (B_tree_a_b_fun_sum_b_tree_fun$) A_b_fun_b_tree_fun$)
+(declare-fun uuu$ (B$) B_b_fun_b_fun$)
+(declare-fun uuv$ (B_b_fun$) B_b_fun_b_b_fun_fun$)
+(declare-fun uuw$ (B_tree$) B_tree_b_tree_fun_b_tree_fun$)
+(declare-fun uux$ (B_tree_b_tree_fun$) B_tree_b_tree_fun_b_tree_b_tree_fun_fun$)
+(declare-fun uuy$ (B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_set$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_bool_fun_fun$)
+(declare-fun uuz$ (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_set$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_bool_fun_fun$)
+(declare-fun uva$ () B_b_tree_b_tree_prod_prod_b_fun$)
+(declare-fun uvb$ () B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_fun$)
+(declare-fun uvc$ () B_tree_b_tree_prod_b_tree_fun$)
+(declare-fun uvd$ () B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_fun$)
+(declare-fun uve$ () B_b_tree_b_tree_prod_prod_b_tree_b_tree_prod_fun$)
+(declare-fun uvf$ () B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$)
+(declare-fun uvg$ () B_tree_b_tree_prod_b_tree_fun$)
+(declare-fun uvh$ () B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_fun$)
+(declare-fun uvi$ () B_b_prod_b_fun$)
+(declare-fun uvj$ () B_b_b_prod_fun$)
+(declare-fun uvk$ () B_tree_b_tree_b_tree_prod_fun$)
+(declare-fun uvl$ () B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$)
+(declare-fun uvm$ () B_b_prod_b_fun$)
+(declare-fun uvn$ () B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun$)
+(declare-fun uvo$ () B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun_fun$)
+(declare-fun uvp$ () B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun$)
+(declare-fun uvq$ () B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun_fun$)
+(declare-fun uvr$ (B_b_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_b_tree_b_tree_prod_prod_fun_fun$)
+(declare-fun uvs$ (B_tree_a_b_fun_sum_b_tree_fun$ B_tree_a_b_fun_sum_b_tree_fun$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_b_tree_prod_fun_fun$)
+(declare-fun comp$ (B_tree_b_tree_fun$) B_tree_b_tree_fun_b_tree_b_tree_fun_fun$)
+(declare-fun id$aa () B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$)
+(declare-fun swap$ (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_prod$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)
+(declare-fun xtor$ (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)
+(declare-fun apfst$ (B_b_fun$ B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)
+(declare-fun apsnd$ (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$ B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)
+(declare-fun comp$a (B_b_fun$) B_b_fun_b_b_fun_fun$)
+(declare-fun comp$b (A_b_fun$) A_a_fun_a_b_fun_fun$)
+(declare-fun comp$c (B_b_fun$) A_b_fun_a_b_fun_fun$)
+(declare-fun comp$d (B_a_fun$) A_b_fun_a_a_fun_fun$)
+(declare-fun comp$e (A_a_fun$) A_a_fun_a_a_fun_fun$)
+(declare-fun comp$f (A_b_fun$) B_a_fun_b_b_fun_fun$)
+(declare-fun comp$g (A_a_fun$) B_a_fun_b_a_fun_fun$)
+(declare-fun comp$h (B_a_fun$) B_b_fun_b_a_fun_fun$)
+(declare-fun comp$i (A_b_b_prod_fun$) A_a_fun_a_b_b_prod_fun_fun$)
+(declare-fun comp$j (A_b_fun$ A_a_sum_a_fun$) A_a_sum_b_fun$)
+(declare-fun comp$k (B_tree_b_tree_fun$) A_tree_b_tree_fun_a_tree_b_tree_fun_fun$)
+(declare-fun comp$l (A_tree_b_tree_fun$) A_tree_a_tree_fun_a_tree_b_tree_fun_fun$)
+(declare-fun comp$m (B_tree_a_tree_fun$) A_tree_b_tree_fun_a_tree_a_tree_fun_fun$)
+(declare-fun comp$n (A_tree_a_tree_fun$) A_tree_a_tree_fun_a_tree_a_tree_fun_fun$)
+(declare-fun comp$o (A_tree_a_tree_fun$ B_tree_a_tree_fun$) B_tree_a_tree_fun$)
+(declare-fun comp$p (B_tree_a_tree_fun$ B_tree_b_tree_fun$) B_tree_a_tree_fun$)
+(declare-fun comp$q (A_tree_b_tree_fun$) B_tree_a_tree_fun_b_tree_b_tree_fun_fun$)
+(declare-fun comp$r (A_tree_b_b_prod_tree_fun$ A_tree_a_tree_fun$) A_tree_b_b_prod_tree_fun$)
+(declare-fun comp$s (A_tree_b_tree_fun$ A_a_sum_tree_a_tree_fun$) A_a_sum_tree_b_tree_fun$)
+(declare-fun comp$t (A_a_prod_b_b_prod_fun$ A_a_prod_a_a_prod_fun$) A_a_prod_b_b_prod_fun$)
+(declare-fun comp$u (B_b_tree_b_tree_prod_prod_b_b_tree_b_tree_prod_prod_fun$ B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_b_tree_b_tree_prod_prod_fun$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_b_tree_b_tree_prod_prod_fun$)
+(declare-fun comp$v (B_tree_b_tree_prod_b_tree_b_tree_prod_fun$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun_fun$)
+(declare-fun comp$w (B_tree_b_tree_fun$) B_tree_a_b_fun_sum_b_tree_fun_b_tree_a_b_fun_sum_b_tree_fun_fun$)
+(declare-fun comp$x (B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_b_tree_b_tree_prod_prod_fun$ B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_b_tree_b_tree_prod_prod_fun$)
+(declare-fun comp$y (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun_fun$)
+(declare-fun comp$z (B_tree_a_b_fun_sum_b_tree_fun$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun_b_tree_a_b_fun_sum_b_tree_fun_fun$)
+(declare-fun swap$a (B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_prod$)
+(declare-fun swap$b (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)
+(declare-fun xtor$a (B_b_tree_b_tree_prod_prod$) B_b_tree_b_tree_prod_prod$)
+(declare-fun xtor$b (B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)
+(declare-fun xtor$c (B_tree_a_b_fun_sum$) B_tree_a_b_fun_sum$)
+(declare-fun apfst$a (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$)
+(declare-fun apsnd$a (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$)
+(declare-fun apsnd$b (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_b_tree_b_tree_prod_prod_fun$)
+(declare-fun comp$aa (B_tree_a_b_fun_sum_b_tree_fun$) A_b_fun_b_tree_a_b_fun_sum_fun_a_b_fun_b_tree_fun_fun$)
+(declare-fun comp$ab (B_tree_b_tree_fun$) A_b_fun_b_tree_fun_a_b_fun_b_tree_fun_fun$)
+(declare-fun comp$ac (A_tree_b_tree_fun$ A_a_tree_fun$) A_b_tree_fun$)
+(declare-fun comp$ad (B_tree_a_b_fun_sum_b_tree_fun$) B_tree_b_tree_a_b_fun_sum_fun_b_tree_b_tree_fun_fun$)
+(declare-fun comp$ae (B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_b_tree_b_tree_prod_prod_fun$ A_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$) A_b_fun_b_b_tree_b_tree_prod_prod_fun$)
+(declare-fun comp$af (B_tree_b_b_tree_b_tree_prod_prod_fun$ A_b_fun_b_tree_fun$) A_b_fun_b_b_tree_b_tree_prod_prod_fun$)
+(declare-fun comp$ag (A_a_a_prod_prod_b_b_b_prod_prod_fun$ A_a_a_prod_prod_a_a_a_prod_prod_fun$) A_a_a_prod_prod_b_b_b_prod_prod_fun$)
+(declare-fun comp$ah (A_tree_b_tree_fun$) B_a_tree_fun_b_b_tree_fun_fun$)
+(declare-fun comp$ai (A_b_b_prod_prod_b_b_b_prod_prod_fun$ B_a_b_b_prod_prod_fun$) B_b_b_b_prod_prod_fun$)
+(declare-fun comp$aj (A_b_tree_b_tree_prod_prod_b_b_tree_b_tree_prod_prod_fun$ B_tree_a_b_tree_b_tree_prod_prod_fun$) B_tree_b_b_tree_b_tree_prod_prod_fun$)
+(declare-fun comp$ak (A_tree_a_tree_fun$ B_a_tree_fun$) B_a_tree_fun$)
+(declare-fun comp$al (A_b_b_prod_prod_a_b_b_prod_prod_fun$) B_a_b_b_prod_prod_fun_b_a_b_b_prod_prod_fun_fun$)
+(declare-fun comp$am (A_b_tree_b_tree_prod_prod_a_b_tree_b_tree_prod_prod_fun$) B_tree_a_b_tree_b_tree_prod_prod_fun_b_tree_a_b_tree_b_tree_prod_prod_fun_fun$)
+(declare-fun comp$an (B_b_prod_b_b_prod_fun$ B_b_b_prod_fun$ B$) B_b_prod$)
+(declare-fun comp$ao (B_b_prod_b_tree_b_prod_fun$ B_b_b_prod_fun$ B$) B_tree_b_prod$)
+(declare-fun comp$ap (B_tree_b_tree_fun$) B_b_tree_fun_b_b_tree_fun_fun$)
+(declare-fun comp$aq (B_tree_b_prod_b_b_prod_fun$ B_tree_b_tree_b_prod_fun$ B_tree$) B_b_prod$)
+(declare-fun comp$ar (B_b_fun$) B_tree_b_fun_b_tree_b_fun_fun$)
+(declare-fun comp$as (B_tree_b_prod_b_tree_b_prod_fun$ B_tree_b_tree_b_prod_fun$ B_tree$) B_tree_b_prod$)
+(declare-fun comp$at (B_b_tree_prod_b_b_tree_prod_fun$ B_b_b_tree_prod_fun$ B$) B_b_tree_prod$)
+(declare-fun comp$au (B_b_tree_prod_b_tree_b_tree_prod_fun$ B_b_b_tree_prod_fun$ B$) B_tree_b_tree_prod$)
+(declare-fun comp$av (B_tree_b_tree_prod_b_b_tree_prod_fun$ B_tree_b_tree_b_tree_prod_fun$ B_tree$) B_b_tree_prod$)
+(declare-fun comp$aw (B_tree_b_tree_prod_b_tree_b_tree_prod_fun$ B_tree_b_tree_b_tree_prod_fun$ B_tree$) B_tree_b_tree_prod$)
+(declare-fun comp$ax (A_tree_a_a_tree_a_tree_prod_prod_fun$ A_tree_a_tree_fun$) A_tree_a_a_tree_a_tree_prod_prod_fun$)
+(declare-fun comp$ay (A_a_tree_a_tree_prod_prod_a_a_tree_a_tree_prod_prod_fun$ A_tree_a_a_tree_a_tree_prod_prod_fun$) A_tree_a_a_tree_a_tree_prod_prod_fun$)
+(declare-fun comp$az (B_tree_b_b_tree_b_tree_prod_prod_fun$ A_tree_b_tree_fun$) A_tree_b_b_tree_b_tree_prod_prod_fun$)
+(declare-fun comp$ba (A_a_tree_a_tree_prod_prod_b_b_tree_b_tree_prod_prod_fun$ A_tree_a_a_tree_a_tree_prod_prod_fun$) A_tree_b_b_tree_b_tree_prod_prod_fun$)
+(declare-fun comp$bb (B_tree_b_b_tree_b_tree_prod_prod_fun$ B_tree_b_tree_fun$) B_tree_b_b_tree_b_tree_prod_prod_fun$)
+(declare-fun comp$bc (B_b_tree_b_tree_prod_prod_b_b_tree_b_tree_prod_prod_fun$ B_tree_b_b_tree_b_tree_prod_prod_fun$) B_tree_b_b_tree_b_tree_prod_prod_fun$)
+(declare-fun comp$bd (A_a_prod_b_b_prod_fun$) A_a_a_prod_fun_a_b_b_prod_fun_fun$)
+(declare-fun comp$be (A_a_tree_b_sum_a_tree_b_sum_prod_prod_b_b_tree_b_sum_b_tree_b_sum_prod_prod_fun$ B_a_a_tree_b_sum_a_tree_b_sum_prod_prod_fun$) B_b_b_tree_b_sum_b_tree_b_sum_prod_prod_fun$)
+(declare-fun comp$bf (A_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_b_b_tree_b_tree_sum_b_tree_b_tree_sum_prod_prod_fun$ B_tree_a_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_fun$) B_tree_b_b_tree_b_tree_sum_b_tree_b_tree_sum_prod_prod_fun$)
+(declare-fun comp$bg (A_a_tree_b_sum_a_tree_b_sum_prod_prod_a_a_tree_b_sum_a_tree_b_sum_prod_prod_fun$) B_a_a_tree_b_sum_a_tree_b_sum_prod_prod_fun_b_a_a_tree_b_sum_a_tree_b_sum_prod_prod_fun_fun$)
+(declare-fun comp$bh (A_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_a_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_fun$) B_tree_a_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_fun_b_tree_a_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_fun_fun$)
+(declare-fun comp$bi (A_a_sum_b_b_sum_fun$ A_a_sum_a_a_sum_fun$) A_a_sum_b_b_sum_fun$)
+(declare-fun comp$bj (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$ A_b_fun_b_tree_a_b_fun_sum_fun$) A_b_fun_b_tree_a_b_fun_sum_fun$)
+(declare-fun comp$bk (A_b_fun_b_tree_a_b_fun_sum_fun$ A_b_fun_a_b_fun_fun$) A_b_fun_b_tree_a_b_fun_sum_fun$)
+(declare-fun comp$bl (A_a_sum_b_fun$ A_a_sum_a_a_sum_fun$) A_a_sum_b_fun$)
+(declare-fun comp$bm (A_b_fun_b_tree_fun$) A_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun$)
+(declare-fun comp$bn (B_b_sum_b_fun$ B_b_sum_b_b_sum_fun$ B_b_sum$) B$)
+(declare-fun comp$bo (B_b_sum_b_fun$ A_b_sum_b_b_sum_fun$ A_b_sum$) B$)
+(declare-fun comp$bp (B_b_sum_b_fun$ B_tree_b_sum_b_b_sum_fun$ B_tree_b_sum$) B$)
+(declare-fun comp$bq (B_tree_b_fun$) B_tree_b_tree_fun_b_tree_b_fun_fun$)
+(declare-fun comp$br (B_b_tree_sum_b_fun$ B_b_tree_sum_b_b_tree_sum_fun$ B_b_tree_sum$) B$)
+(declare-fun comp$bs (B_tree_b_sum_b_tree_fun$ B_b_sum_b_tree_b_sum_fun$ B_b_sum$) B_tree$)
+(declare-fun comp$bt (B_b_tree_fun$) B_b_fun_b_b_tree_fun_fun$)
+(declare-fun comp$bu (B_b_tree_sum_b_fun$ A_b_tree_sum_b_b_tree_sum_fun$ A_b_tree_sum$) B$)
+(declare-fun comp$bv (B_b_tree_sum_b_fun$ B_tree_b_tree_sum_b_b_tree_sum_fun$ B_tree_b_tree_sum$) B$)
+(declare-fun comp$bw (B_tree_b_sum_b_tree_fun$ B_tree_b_sum_b_tree_b_sum_fun$ B_tree_b_sum$) B_tree$)
+(declare-fun comp$bx (B_tree_b_tree_sum_b_tree_fun$ B_b_tree_sum_b_tree_b_tree_sum_fun$ B_b_tree_sum$) B_tree$)
+(declare-fun comp$by (B_tree_b_tree_sum_b_tree_fun$ B_tree_b_tree_sum_b_tree_b_tree_sum_fun$ B_tree_b_tree_sum$) B_tree$)
+(declare-fun comp$bz (B_b_tree_b_tree_prod_prod_b_fun$ B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_b_tree_b_tree_prod_prod_fun$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_fun$)
+(declare-fun comp$ca (B_b_fun$ B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_fun$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_fun$)
+(declare-fun comp$cb (B_tree_b_tree_prod_b_tree_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_fun$)
+(declare-fun comp$cc (B_tree_a_b_fun_sum_b_tree_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_fun$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_fun$)
+(declare-fun comp$cd (B_b_tree_b_tree_prod_prod_b_tree_b_tree_prod_fun$ B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_b_tree_b_tree_prod_prod_fun$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_tree_b_tree_prod_fun$)
+(declare-fun comp$ce (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$ B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_tree_b_tree_prod_fun$)
+(declare-fun comp$cf (B_b_prod_b_fun$) B_b_b_prod_fun_b_b_fun_fun$)
+(declare-fun comp$cg (B_tree_b_tree_prod_b_tree_fun$) B_tree_b_tree_b_tree_prod_fun_b_tree_b_tree_fun_fun$)
+(declare-fun comp$ch (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_fun$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun_fun$)
+(declare-fun comp$ci (B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_prod_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_prod$) B$)
+(declare-fun comp$cj (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_fun$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_fun_fun$)
+(declare-fun convol$ (B_b_fun$ B_b_fun$) B_b_b_prod_fun$)
+(declare-fun id_bnf$ (B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)
+(declare-fun member$ (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_set$) Bool)
+(declare-fun convol$a (B_b_tree_fun$ B_b_fun$ B$) B_tree_b_prod$)
+(declare-fun convol$b (B_tree_b_tree_fun$ B_tree_b_fun$) B_tree_b_tree_b_prod_fun$)
+(declare-fun convol$c (B_tree_b_fun$ B_tree_b_fun$ B_tree$) B_b_prod$)
+(declare-fun convol$d (B_b_fun$ B_b_tree_fun$) B_b_b_tree_prod_fun$)
+(declare-fun convol$e (B_b_tree_fun$ B_b_tree_fun$ B$) B_tree_b_tree_prod$)
+(declare-fun convol$f (B_tree_b_tree_fun$ B_tree_b_tree_fun$) B_tree_b_tree_b_tree_prod_fun$)
+(declare-fun convol$g (B_tree_b_fun$ B_tree_b_tree_fun$ B_tree$) B_b_tree_prod$)
+(declare-fun convol$h (A_b_fun$) A_b_fun_a_b_b_prod_fun_fun$)
+(declare-fun convol$i (A_a_fun$ A_a_fun$) A_a_a_prod_fun$)
+(declare-fun fun_app$ (B_tree_b_tree_b_tree_prod_fun$ B_tree$) B_tree_b_tree_prod$)
+(declare-fun id_bnf$a (B_b_tree_b_tree_prod_prod$) B_b_tree_b_tree_prod_prod$)
+(declare-fun id_bnf$b (A_a_tree_a_tree_prod_prod$) A_a_tree_a_tree_prod_prod$)
+(declare-fun id_bnf$c () A_a_fun$)
+(declare-fun id_bnf$d (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)
+(declare-fun id_bnf$e (B_tree_a_b_fun_sum$) B_tree_a_b_fun_sum$)
+(declare-fun map_sum$ (A_tree_b_tree_fun$ B_b_fun$) A_tree_b_sum_b_tree_b_sum_fun$)
+(declare-fun member$a (B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$ B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_set$) Bool)
+(declare-fun uncurry$ (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_prod_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$)
+(declare-fun case_sum$ (B_tree_b_tree_fun$) A_b_fun_b_tree_fun_b_tree_a_b_fun_sum_b_tree_fun_fun$)
+(declare-fun ctor_rec$ (A_b_fun$) A_b_fun$)
+(declare-fun fun_app$a (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$ B_tree_a_b_fun_sum$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)
+(declare-fun fun_app$b (B_b_b_prod_fun$ B$) B_b_prod$)
+(declare-fun fun_app$c (A_b_fun_b_tree_fun$ A_b_fun$) B_tree$)
+(declare-fun fun_app$d (A_tree_b_tree_fun$ A_tree$) B_tree$)
+(declare-fun fun_app$e (B_tree_b_tree_prod_b_tree_fun$ B_tree_b_tree_prod$) B_tree$)
+(declare-fun fun_app$f (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) B_tree_a_b_fun_sum$)
+(declare-fun fun_app$g (B_b_tree_b_tree_prod_prod_b_tree_b_tree_prod_fun$ B_b_tree_b_tree_prod_prod$) B_tree_b_tree_prod$)
+(declare-fun fun_app$h (B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$ B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)
+(declare-fun fun_app$i (B_b_prod_b_fun$ B_b_prod$) B$)
+(declare-fun fun_app$j (B_b_tree_b_tree_prod_prod_b_fun$ B_b_tree_b_tree_prod_prod$) B$)
+(declare-fun fun_app$k (B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_fun$ B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$) B$)
+(declare-fun fun_app$l (A_b_fun_b_tree_a_b_fun_sum_fun$ A_b_fun$) B_tree_a_b_fun_sum$)
+(declare-fun fun_app$m (B_tree_b_tree_a_b_fun_sum_fun$ B_tree$) B_tree_a_b_fun_sum$)
+(declare-fun fun_app$n (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun_fun$ B_tree_a_b_fun_sum$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$)
+(declare-fun fun_app$o (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)
+(declare-fun fun_app$p (B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun$ B$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$)
+(declare-fun fun_app$q (B_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$ B$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)
+(declare-fun fun_app$r (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) B_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$)
+(declare-fun fun_app$s (B_tree_b_tree_fun_b_tree_b_tree_fun_fun$ B_tree_b_tree_fun$) B_tree_b_tree_fun$)
+(declare-fun fun_app$t (B_b_fun_b_b_fun_fun$ B_b_fun$) B_b_fun$)
+(declare-fun fun_app$u (A_b_fun_a_b_fun_fun$ A_b_fun$) A_b_fun$)
+(declare-fun fun_app$v (A_a_fun_a_b_fun_fun$ A_a_fun$) A_b_fun$)
+(declare-fun fun_app$w (B_tree_a_b_fun_sum_b_tree_fun$ B_tree_a_b_fun_sum$) B_tree$)
+(declare-fun fun_app$x (B_tree_b_tree_fun$ B_tree$) B_tree$)
+(declare-fun fun_app$y (B_tree_b_tree_fun_b_tree_fun$ B_tree_b_tree_fun$) B_tree$)
+(declare-fun fun_app$z (B_b_fun_b_fun$ B_b_fun$) B$)
+(declare-fun map_prod$ (B_b_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_b_tree_b_tree_prod_prod_fun$)
+(declare-fun map_sum$a (A_tree_b_tree_fun$ B_tree_b_tree_fun$) A_tree_b_tree_sum_b_tree_b_tree_sum_fun$)
+(declare-fun map_sum$b (A_tree_a_tree_fun$ B_b_fun$) A_tree_b_sum_a_tree_b_sum_fun$)
+(declare-fun map_sum$c (A_tree_a_tree_fun$ B_tree_b_tree_fun$) A_tree_b_tree_sum_a_tree_b_tree_sum_fun$)
+(declare-fun map_sum$d (A_b_fun$ A_b_fun$) A_a_sum_b_b_sum_fun$)
+(declare-fun map_sum$e (A_a_fun$ A_a_fun$) A_a_sum_a_a_sum_fun$)
+(declare-fun map_sum$f (B_b_fun$ B_b_fun$) B_b_sum_b_b_sum_fun$)
+(declare-fun map_sum$g (B_b_fun$ B_tree_b_tree_fun$) B_b_tree_sum_b_b_tree_sum_fun$)
+(declare-fun map_sum$h (B_tree_b_tree_fun$ B_b_fun$) B_tree_b_sum_b_tree_b_sum_fun$)
+(declare-fun map_sum$i (B_tree_b_tree_fun$ B_tree_b_tree_fun$) B_tree_b_tree_sum_b_tree_b_tree_sum_fun$)
+(declare-fun map_sum$j (B_tree_b_tree_fun$) A_b_fun_a_b_fun_fun_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun_fun$)
+(declare-fun map_sum$k (A_b_fun$ B_b_fun$) A_b_sum_b_b_sum_fun$)
+(declare-fun map_sum$l (B_tree_b_fun$ B_b_fun$) B_tree_b_sum_b_b_sum_fun$)
+(declare-fun map_sum$m (B_b_tree_fun$ B_b_fun$) B_b_sum_b_tree_b_sum_fun$)
+(declare-fun map_sum$n (A_b_fun$ B_tree_b_tree_fun$) A_b_tree_sum_b_b_tree_sum_fun$)
+(declare-fun map_sum$o (B_tree_b_fun$ B_tree_b_tree_fun$) B_tree_b_tree_sum_b_b_tree_sum_fun$)
+(declare-fun map_sum$p (B_b_tree_fun$ B_tree_b_tree_fun$) B_b_tree_sum_b_tree_b_tree_sum_fun$)
+(declare-fun map_tree$ (A_b_fun$) A_tree_b_tree_fun$)
+(declare-fun uncurry$a (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun_fun$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$)
+(declare-fun uncurry$b (B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$)
+(declare-fun uncurry$c (B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_b_tree_b_tree_prod_prod_fun_fun$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_b_tree_b_tree_prod_prod_fun$)
+(declare-fun uncurry$d (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_b_tree_prod_fun_fun$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$)
+(declare-fun case_sum$a (B_b_fun$ B_b_fun$) B_b_sum_b_fun$)
+(declare-fun case_sum$b (A_b_fun$ B_tree_b_fun$ A_b_tree_sum$) B$)
+(declare-fun case_sum$c (A_b_fun$ B_b_fun$ A_b_sum$) B$)
+(declare-fun case_sum$d (A_b_fun$ A_b_fun$) A_a_sum_b_fun$)
+(declare-fun case_sum$e (A_a_fun$) A_a_fun_a_a_sum_a_fun_fun$)
+(declare-fun case_sum$f (B_tree_bool_fun$) A_b_fun_bool_fun_b_tree_a_b_fun_sum_bool_fun_fun$)
+(declare-fun case_sum$g (B_tree_b_fun$ B_b_fun$ B_tree_b_sum$) B$)
+(declare-fun case_sum$h (B_b_fun$ B_tree_b_fun$) B_b_tree_sum_b_fun$)
+(declare-fun case_sum$i (B_tree_b_tree_fun$ B_b_tree_fun$) B_tree_b_sum_b_tree_fun$)
+(declare-fun case_sum$j (B_b_tree_fun$ B_b_tree_fun$ B_b_sum$) B_tree$)
+(declare-fun case_sum$k (B_tree_b_fun$ B_tree_b_fun$ B_tree_b_tree_sum$) B$)
+(declare-fun case_sum$l (B_tree_b_tree_fun$ B_tree_b_tree_fun$) B_tree_b_tree_sum_b_tree_fun$)
+(declare-fun case_sum$m (B_b_tree_fun$ B_tree_b_tree_fun$ B_b_tree_sum$) B_tree$)
+(declare-fun ctor_tree$ (B_b_tree_b_tree_prod_prod$) B_tree$)
+(declare-fun dtor_tree$ () B_tree_b_b_tree_b_tree_prod_prod_fun$)
+(declare-fun fun_app$aa (B_b_fun$ B$) B$)
+(declare-fun fun_app$ab (A_b_fun_b_fun$ A_b_fun$) B$)
+(declare-fun fun_app$ac (A_b_fun$ A$) B$)
+(declare-fun fun_app$ad (B_tree_a_b_fun_sum_bool_fun$ B_tree_a_b_fun_sum$) Bool)
+(declare-fun fun_app$ae (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_bool_fun_fun$ B_tree_a_b_fun_sum$) B_tree_a_b_fun_sum_bool_fun$)
+(declare-fun fun_app$af (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_bool_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) Bool)
+(declare-fun fun_app$ag (B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_bool_fun_fun$ B$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_bool_fun$)
+(declare-fun fun_app$ah (A_b_fun_b_tree_fun_a_b_fun_b_tree_fun_fun$ A_b_fun_b_tree_fun$) A_b_fun_b_tree_fun$)
+(declare-fun fun_app$ai (B_tree_a_b_fun_sum_b_tree_b_tree_prod_fun$ B_tree_a_b_fun_sum$) B_tree_b_tree_prod$)
+(declare-fun fun_app$aj (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_b_tree_prod_fun_fun$ B_tree_a_b_fun_sum$) B_tree_a_b_fun_sum_b_tree_b_tree_prod_fun$)
+(declare-fun fun_app$ak (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_b_tree_b_tree_prod_prod_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) B_b_tree_b_tree_prod_prod$)
+(declare-fun fun_app$al (B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_b_tree_b_tree_prod_prod_fun_fun$ B$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_b_tree_b_tree_prod_prod_fun$)
+(declare-fun fun_app$am (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) B_tree_b_tree_prod$)
+(declare-fun fun_app$an (A_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$ A_b_fun$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)
+(declare-fun fun_app$ao (A_b_fun_a_b_fun_fun_a_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun$ A_b_fun_a_b_fun_fun$) A_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$)
+(declare-fun fun_app$ap (A_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun_fun$ A_b_fun_b_tree_fun$) A_b_fun_a_b_fun_fun_a_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun$)
+(declare-fun fun_app$aq (A_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun_fun_fun$ A_b_fun_bool_fun$) A_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun_fun$)
+(declare-fun fun_app$ar (A_b_fun_a_b_fun_fun_a_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun_fun_fun_fun$ A_b_fun_a_b_fun_fun$) A_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun_fun_fun$)
+(declare-fun fun_app$as (A_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun_fun_fun_fun_fun$ A_b_fun_b_tree_fun$) A_b_fun_a_b_fun_fun_a_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun_fun_fun_fun$)
+(declare-fun fun_app$at (A_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun_fun_fun_fun_fun_fun$ A_b_fun_bool_fun$) A_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun_fun_fun_fun_fun_fun$)
+(declare-fun fun_app$au (A_b_fun_bool_fun$ A_b_fun$) Bool)
+(declare-fun fun_app$av (B_tree_b_fun$ B_tree$) B$)
+(declare-fun fun_app$aw (A_a_fun$ A$) A$)
+(declare-fun fun_app$ax (B_tree_b_tree_prod_b_tree_b_tree_prod_fun$ B_tree_b_tree_prod$) B_tree_b_tree_prod$)
+(declare-fun fun_app$ay (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)
+(declare-fun fun_app$az (B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_b_tree_b_tree_prod_prod_fun$ B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$) B_b_tree_b_tree_prod_prod$)
+(declare-fun fun_app$ba (B_tree_a_b_fun_sum_b_tree_fun_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun_fun$ B_tree_a_b_fun_sum_b_tree_fun$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$)
+(declare-fun fun_app$bb (A_b_fun_b_tree_fun_b_tree_a_b_fun_sum_b_tree_fun_fun$ A_b_fun_b_tree_fun$) B_tree_a_b_fun_sum_b_tree_fun$)
+(declare-fun fun_app$bc (B_tree_b_b_tree_b_tree_prod_prod_fun$ B_tree$) B_b_tree_b_tree_prod_prod$)
+(declare-fun fun_app$bd (A_tree_a_a_tree_a_tree_prod_prod_fun$ A_tree$) A_a_tree_a_tree_prod_prod$)
+(declare-fun fun_app$be (B_tree_a_tree_fun$ B_tree$) A_tree$)
+(declare-fun fun_app$bf (A_tree_a_tree_fun$ A_tree$) A_tree$)
+(declare-fun fun_app$bg (A_b_fun_a_a_fun_fun$ A_b_fun$) A_a_fun$)
+(declare-fun fun_app$bh (A_a_fun_a_a_fun_fun$ A_a_fun$) A_a_fun$)
+(declare-fun fun_app$bi (B_a_fun_b_b_fun_fun$ B_a_fun$) B_b_fun$)
+(declare-fun fun_app$bj (B_a_fun_b_a_fun_fun$ B_a_fun$) B_a_fun$)
+(declare-fun fun_app$bk (B_b_fun_b_a_fun_fun$ B_b_fun$) B_a_fun$)
+(declare-fun fun_app$bl (A_tree_b_b_prod_tree_fun$ A_tree$) B_b_prod_tree$)
+(declare-fun fun_app$bm (A_a_fun_a_b_b_prod_fun_fun$ A_a_fun$) A_b_b_prod_fun$)
+(declare-fun fun_app$bn (A_a_sum_tree_a_tree_fun$ A_a_sum_tree$) A_tree$)
+(declare-fun fun_app$bo (A_a_sum_tree_b_tree_fun$ A_a_sum_tree$) B_tree$)
+(declare-fun fun_app$bp (A_tree_b_tree_fun_a_tree_b_tree_fun_fun$ A_tree_b_tree_fun$) A_tree_b_tree_fun$)
+(declare-fun fun_app$bq (A_tree_a_tree_fun_a_tree_b_tree_fun_fun$ A_tree_a_tree_fun$) A_tree_b_tree_fun$)
+(declare-fun fun_app$br (A_tree_b_tree_fun_a_tree_a_tree_fun_fun$ A_tree_b_tree_fun$) A_tree_a_tree_fun$)
+(declare-fun fun_app$bs (A_tree_a_tree_fun_a_tree_a_tree_fun_fun$ A_tree_a_tree_fun$) A_tree_a_tree_fun$)
+(declare-fun fun_app$bt (B_tree_a_tree_fun_b_tree_b_tree_fun_fun$ B_tree_a_tree_fun$) B_tree_b_tree_fun$)
+(declare-fun fun_app$bu (B_tree_tree_b_tree_tree_fun$ B_tree_tree$) B_tree_tree$)
+(declare-fun fun_app$bv (B_b_sum_tree_b_b_sum_tree_fun$ B_b_sum_tree$) B_b_sum_tree$)
+(declare-fun fun_app$bw (B_tree_b_tree_fun_tree_b_tree_b_tree_fun_tree_fun$ B_tree_b_tree_fun_tree$) B_tree_b_tree_fun_tree$)
+(declare-fun fun_app$bx (B_b_fun_tree_b_b_fun_tree_fun$ B_b_fun_tree$) B_b_fun_tree$)
+(declare-fun fun_app$by (A_b_fun_tree_a_b_fun_tree_fun$ A_b_fun_tree$) A_b_fun_tree$)
+(declare-fun fun_app$bz (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$)
+(declare-fun fun_app$ca (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$ B_tree_a_b_fun_sum$) B_tree_a_b_fun_sum$)
+(declare-fun fun_app$cb (B_b_tree_a_b_fun_sum_fun$ B$) B_tree_a_b_fun_sum$)
+(declare-fun fun_app$cc (B_tree_a_b_fun_sum_b_fun$ B_tree_a_b_fun_sum$) B$)
+(declare-fun fun_app$cd (B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$ B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)
+(declare-fun fun_app$ce (B_b_prod_b_b_prod_fun$ B_b_prod$) B_b_prod$)
+(declare-fun fun_app$cf (A_a_prod_b_b_prod_fun$ A_a_prod$) B_b_prod$)
+(declare-fun fun_app$cg (A_a_prod_a_a_prod_fun$ A_a_prod$) A_a_prod$)
+(declare-fun fun_app$ch (A_tree_b_fun$ A_tree$) B$)
+(declare-fun fun_app$ci (B_b_sum_b_fun$ B_b_sum$) B$)
+(declare-fun fun_app$cj (A_a_sum_b_fun$ A_a_sum$) B$)
+(declare-fun fun_app$ck (A_a_sum_a_fun$ A_a_sum$) A$)
+(declare-fun fun_app$cl (A_a_fun_a_a_sum_a_fun_fun$ A_a_fun$) A_a_sum_a_fun$)
+(declare-fun fun_app$cm (B_b_tree_b_tree_prod_prod_b_b_tree_b_tree_prod_prod_fun$ B_b_tree_b_tree_prod_prod$) B_b_tree_b_tree_prod_prod$)
+(declare-fun fun_app$cn (B_b_sum_b_b_sum_fun$ B_b_sum$) B_b_sum$)
+(declare-fun fun_app$co (B_a_fun$ B$) A$)
+(declare-fun fun_app$cp (A_b_b_prod_fun$ A$) B_b_prod$)
+(declare-fun fun_app$cq (B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_bool_fun$ B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$) Bool)
+(declare-fun fun_app$cr (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$)
+(declare-fun fun_app$cs (B_tree_b_tree_fun_b_tree_b_tree_prod_b_tree_b_tree_prod_fun_fun$ B_tree_b_tree_fun$) B_tree_b_tree_prod_b_tree_b_tree_prod_fun$)
+(declare-fun fun_app$ct (B_tree_a_b_fun_sum_b_tree_fun_b_tree_a_b_fun_sum_b_tree_fun_fun$ B_tree_a_b_fun_sum_b_tree_fun$) B_tree_a_b_fun_sum_b_tree_fun$)
+(declare-fun fun_app$cu (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$)
+(declare-fun fun_app$cv (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun_b_tree_a_b_fun_sum_b_tree_fun_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$) B_tree_a_b_fun_sum_b_tree_fun$)
+(declare-fun fun_app$cw (B_b_tree_prod_b_b_tree_prod_fun$ B_b_tree_prod$) B_b_tree_prod$)
+(declare-fun fun_app$cx (B_tree_b_prod_b_tree_b_prod_fun$ B_tree_b_prod$) B_tree_b_prod$)
+(declare-fun fun_app$cy (A_b_fun_b_tree_a_b_fun_sum_fun_a_b_fun_b_tree_fun_fun$ A_b_fun_b_tree_a_b_fun_sum_fun$) A_b_fun_b_tree_fun$)
+(declare-fun fun_app$cz (A_a_fun_a_a_tree_fun_fun$ A_a_fun$) A_a_tree_fun$)
+(declare-fun fun_app$da (A_a_tree_fun_a_a_fun_a_a_tree_fun_fun_fun$ A_a_tree_fun$) A_a_fun_a_a_tree_fun_fun$)
+(declare-fun fun_app$db (A_bool_fun_a_a_tree_fun_a_a_fun_a_a_tree_fun_fun_fun_fun$ A_bool_fun$) A_a_tree_fun_a_a_fun_a_a_tree_fun_fun_fun$)
+(declare-fun fun_app$dc (A_a_fun_a_bool_fun_a_a_tree_fun_a_a_fun_a_a_tree_fun_fun_fun_fun_fun$ A_a_fun$) A_bool_fun_a_a_tree_fun_a_a_fun_a_a_tree_fun_fun_fun_fun$)
+(declare-fun fun_app$dd (A_a_tree_fun_a_a_fun_a_bool_fun_a_a_tree_fun_a_a_fun_a_a_tree_fun_fun_fun_fun_fun_fun$ A_a_tree_fun$) A_a_fun_a_bool_fun_a_a_tree_fun_a_a_fun_a_a_tree_fun_fun_fun_fun_fun$)
+(declare-fun fun_app$de (A_bool_fun_a_a_tree_fun_a_a_fun_a_bool_fun_a_a_tree_fun_a_a_fun_a_a_tree_fun_fun_fun_fun_fun_fun_fun$ A_bool_fun$) A_a_tree_fun_a_a_fun_a_bool_fun_a_a_tree_fun_a_a_fun_a_a_tree_fun_fun_fun_fun_fun_fun$)
+(declare-fun fun_app$df (A_b_fun_bool_fun_b_tree_a_b_fun_sum_bool_fun_fun$ A_b_fun_bool_fun$) B_tree_a_b_fun_sum_bool_fun$)
+(declare-fun fun_app$dg (B_tree_bool_fun$ B_tree$) Bool)
+(declare-fun fun_app$dh (A_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun$ A_b_fun_a_b_fun_fun$) A_b_fun_b_tree_fun$)
+(declare-fun fun_app$di (A_b_fun_a_b_fun_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun_fun$ A_b_fun_a_b_fun_fun$) A_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun$)
+(declare-fun fun_app$dj (A_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun_fun$ A_b_fun_b_tree_fun$) A_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun$)
+(declare-fun fun_app$dk (A_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun_fun_fun$ A_b_fun_bool_fun$) A_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun_fun$)
+(declare-fun fun_app$dl (A_b_fun_a_b_fun_fun_a_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun_fun_fun_fun$ A_b_fun_a_b_fun_fun$) A_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun_fun_fun$)
+(declare-fun fun_app$dm (A_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun_fun_fun_fun_fun$ A_b_fun_b_tree_fun$) A_b_fun_a_b_fun_fun_a_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun_fun_fun_fun$)
+(declare-fun fun_app$dn (A_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun_fun_fun_fun_fun_fun$ A_b_fun_bool_fun$) A_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun_fun_fun_fun_fun$)
+(declare-fun fun_app$do (B_tree_b_tree_a_b_fun_sum_fun_b_tree_b_tree_fun_fun$ B_tree_b_tree_a_b_fun_sum_fun$) B_tree_b_tree_fun$)
+(declare-fun fun_app$dp (A_a_tree_fun$ A$) A_tree$)
+(declare-fun fun_app$dq (A_a_fun_a_a_fun_a_a_tree_fun_fun_fun$ A_a_fun$) A_a_fun_a_a_tree_fun_fun$)
+(declare-fun fun_app$dr (A_a_a_prod_prod_b_b_b_prod_prod_fun$ A_a_a_prod_prod$) B_b_b_prod_prod$)
+(declare-fun fun_app$ds (A_a_a_prod_prod_a_a_a_prod_prod_fun$ A_a_a_prod_prod$) A_a_a_prod_prod$)
+(declare-fun fun_app$dt (B_b_b_prod_prod_b_b_b_prod_prod_fun$ B_b_b_prod_prod$) B_b_b_prod_prod$)
+(declare-fun fun_app$du (B_tree_b_b_prod_prod_b_tree_b_b_prod_prod_fun$ B_tree_b_b_prod_prod$) B_tree_b_b_prod_prod$)
+(declare-fun fun_app$dv (B_tree_b_tree_b_tree_prod_prod_b_tree_b_tree_b_tree_prod_prod_fun$ B_tree_b_tree_b_tree_prod_prod$) B_tree_b_tree_b_tree_prod_prod$)
+(declare-fun fun_app$dw (B_a_tree_fun_b_b_tree_fun_fun$ B_a_tree_fun$) B_b_tree_fun$)
+(declare-fun fun_app$dx (B_a_b_b_prod_prod_fun_b_a_b_b_prod_prod_fun_fun$ B_a_b_b_prod_prod_fun$) B_a_b_b_prod_prod_fun$)
+(declare-fun fun_app$dy (B_tree_a_b_tree_b_tree_prod_prod_fun_b_tree_a_b_tree_b_tree_prod_prod_fun_fun$ B_tree_a_b_tree_b_tree_prod_prod_fun$) B_tree_a_b_tree_b_tree_prod_prod_fun$)
+(declare-fun fun_app$dz (B_b_tree_fun$ B$) B_tree$)
+(declare-fun fun_app$ea (B_b_fun_b_b_tree_fun_fun$ B_b_fun$) B_b_tree_fun$)
+(declare-fun fun_app$eb (B_b_tree_fun_b_b_tree_fun_fun$ B_b_tree_fun$) B_b_tree_fun$)
+(declare-fun fun_app$ec (B_tree_b_fun_b_tree_b_fun_fun$ B_tree_b_fun$) B_tree_b_fun$)
+(declare-fun fun_app$ed (B_tree_b_tree_b_prod_fun$ B_tree$) B_tree_b_prod$)
+(declare-fun fun_app$ee (B_b_b_tree_prod_fun$ B$) B_b_tree_prod$)
+(declare-fun fun_app$ef (A_a_tree_a_tree_prod_prod_a_a_tree_a_tree_prod_prod_fun$ A_a_tree_a_tree_prod_prod$) A_a_tree_a_tree_prod_prod$)
+(declare-fun fun_app$eg (A_a_tree_a_tree_prod_prod_b_b_tree_b_tree_prod_prod_fun$ A_a_tree_a_tree_prod_prod$) B_b_tree_b_tree_prod_prod$)
+(declare-fun fun_app$eh (A_b_fun_a_b_b_prod_fun_fun$ A_b_fun$) A_b_b_prod_fun$)
+(declare-fun fun_app$ei (A_a_a_prod_fun_a_b_b_prod_fun_fun$ A_a_a_prod_fun$) A_b_b_prod_fun$)
+(declare-fun fun_app$ej (B_a_a_tree_b_sum_a_tree_b_sum_prod_prod_fun_b_a_a_tree_b_sum_a_tree_b_sum_prod_prod_fun_fun$ B_a_a_tree_b_sum_a_tree_b_sum_prod_prod_fun$) B_a_a_tree_b_sum_a_tree_b_sum_prod_prod_fun$)
+(declare-fun fun_app$ek (B_tree_a_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_fun_b_tree_a_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_fun_fun$ B_tree_a_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_fun$) B_tree_a_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_fun$)
+(declare-fun fun_app$el (A_a_sum_b_b_sum_fun$ A_a_sum$) B_b_sum$)
+(declare-fun fun_app$em (A_a_sum_a_a_sum_fun$ A_a_sum$) A_a_sum$)
+(declare-fun fun_app$en (B_b_tree_sum_b_b_tree_sum_fun$ B_b_tree_sum$) B_b_tree_sum$)
+(declare-fun fun_app$eo (B_tree_b_sum_b_tree_b_sum_fun$ B_tree_b_sum$) B_tree_b_sum$)
+(declare-fun fun_app$ep (B_tree_b_tree_sum_b_tree_b_tree_sum_fun$ B_tree_b_tree_sum$) B_tree_b_tree_sum$)
+(declare-fun fun_app$eq (A_b_fun_a_b_fun_fun_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun_fun$ A_b_fun_a_b_fun_fun$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$)
+(declare-fun fun_app$er (B_tree_b_tree_fun_b_tree_b_fun_fun$ B_tree_b_tree_fun$) B_tree_b_fun$)
+(declare-fun fun_app$es (B_b_tree_sum_b_fun$ B_b_tree_sum$) B$)
+(declare-fun fun_app$et (B_tree_b_sum_b_tree_fun$ B_tree_b_sum$) B_tree$)
+(declare-fun fun_app$eu (B_tree_b_tree_sum_b_tree_fun$ B_tree_b_tree_sum$) B_tree$)
+(declare-fun fun_app$ev (A_bool_fun$ A$) Bool)
+(declare-fun fun_app$ew (B_bool_fun$ B$) Bool)
+(declare-fun fun_app$ex (B_b_bool_fun_fun$ B$) B_bool_fun$)
+(declare-fun fun_app$ey (B_b_fun_b_b_bool_fun_fun_fun$ B_b_fun$) B_b_bool_fun_fun$)
+(declare-fun fun_app$ez (B_b_b_fun_b_b_bool_fun_fun_fun_fun$ B$) B_b_fun_b_b_bool_fun_fun_fun$)
+(declare-fun fun_app$fa (B_b_fun_b_b_b_fun_b_b_bool_fun_fun_fun_fun_fun$ B_b_fun$) B_b_b_fun_b_b_bool_fun_fun_fun_fun$)
+(declare-fun fun_app$fb (B_tree_b_tree_bool_fun_fun$ B_tree$) B_tree_bool_fun$)
+(declare-fun fun_app$fc (B_tree_b_tree_fun_b_tree_b_tree_bool_fun_fun_fun$ B_tree_b_tree_fun$) B_tree_b_tree_bool_fun_fun$)
+(declare-fun fun_app$fd (B_tree_b_tree_b_tree_fun_b_tree_b_tree_bool_fun_fun_fun_fun$ B_tree$) B_tree_b_tree_fun_b_tree_b_tree_bool_fun_fun_fun$)
+(declare-fun fun_app$fe (B_tree_b_tree_fun_b_tree_b_tree_b_tree_fun_b_tree_b_tree_bool_fun_fun_fun_fun_fun$ B_tree_b_tree_fun$) B_tree_b_tree_b_tree_fun_b_tree_b_tree_bool_fun_fun_fun_fun$)
+(declare-fun fun_app$ff (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_bool_fun_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) B_bool_fun$)
+(declare-fun fun_app$fg (B_b_b_prod_fun_b_b_fun_fun$ B_b_b_prod_fun$) B_b_fun$)
+(declare-fun fun_app$fh (B_tree_b_tree_b_tree_prod_fun_b_tree_b_tree_fun_fun$ B_tree_b_tree_b_tree_prod_fun$) B_tree_b_tree_fun$)
+(declare-fun fun_app$fi (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$)
+(declare-fun fun_app$fj (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_fun_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_fun$)
+(declare-fun map_prod$a (B_tree_a_b_fun_sum_b_tree_fun$) B_tree_a_b_fun_sum_b_tree_fun_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun_fun$)
+(declare-fun map_prod$b (B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun_fun$)
+(declare-fun map_prod$c (B_b_tree_a_b_fun_sum_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_fun$ B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$) B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)
+(declare-fun map_prod$d (B_tree_a_b_fun_sum_b_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)
+(declare-fun map_prod$e (B_b_fun$ B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$)
+(declare-fun map_prod$f (B_b_fun$ B_b_fun$) B_b_prod_b_b_prod_fun$)
+(declare-fun map_prod$g (A_b_fun$ A_b_fun$) A_a_prod_b_b_prod_fun$)
+(declare-fun map_prod$h (A_a_fun$ A_a_fun$) A_a_prod_a_a_prod_fun$)
+(declare-fun map_prod$i (A_tree_b_fun$ A_tree_b_fun$ A_tree_a_tree_prod$) B_b_prod$)
+(declare-fun map_prod$j (B_b_fun$ B_tree_b_tree_prod_b_tree_b_tree_prod_fun$) B_b_tree_b_tree_prod_prod_b_b_tree_b_tree_prod_prod_fun$)
+(declare-fun map_prod$k (B_tree_b_tree_fun$) B_tree_b_tree_fun_b_tree_b_tree_prod_b_tree_b_tree_prod_fun_fun$)
+(declare-fun map_prod$l (B_b_fun$ B_tree_b_tree_fun$) B_b_tree_prod_b_b_tree_prod_fun$)
+(declare-fun map_prod$m (B_tree_b_tree_fun$ B_b_fun$) B_tree_b_prod_b_tree_b_prod_fun$)
+(declare-fun map_prod$n (B_b_tree_fun$ B_b_fun$) B_b_prod_b_tree_b_prod_fun$)
+(declare-fun map_prod$o (B_tree_b_fun$ B_b_fun$) B_tree_b_prod_b_b_prod_fun$)
+(declare-fun map_prod$p (B_b_tree_fun$ B_tree_b_tree_fun$) B_b_tree_prod_b_tree_b_tree_prod_fun$)
+(declare-fun map_prod$q (B_tree_b_fun$ B_tree_b_tree_fun$) B_tree_b_tree_prod_b_b_tree_prod_fun$)
+(declare-fun map_tree$a (B_b_fun$) B_tree_b_tree_fun$)
+(declare-fun map_tree$b (B_a_fun$) B_tree_a_tree_fun$)
+(declare-fun map_tree$c (A_a_fun$) A_tree_a_tree_fun$)
+(declare-fun map_tree$d (A_b_b_prod_fun$) A_tree_b_b_prod_tree_fun$)
+(declare-fun map_tree$e (A_a_sum_a_fun$) A_a_sum_tree_a_tree_fun$)
+(declare-fun map_tree$f (A_a_sum_b_fun$) A_a_sum_tree_b_tree_fun$)
+(declare-fun map_tree$g (B_tree_b_tree_fun$) B_tree_tree_b_tree_tree_fun$)
+(declare-fun map_tree$h (B_b_sum_b_b_sum_fun$) B_b_sum_tree_b_b_sum_tree_fun$)
+(declare-fun map_tree$i (B_tree_b_tree_fun_b_tree_b_tree_fun_fun$) B_tree_b_tree_fun_tree_b_tree_b_tree_fun_tree_fun$)
+(declare-fun map_tree$j (B_b_fun_b_b_fun_fun$) B_b_fun_tree_b_b_fun_tree_fun$)
+(declare-fun map_tree$k (A_b_fun_a_b_fun_fun$) A_b_fun_tree_a_b_fun_tree_fun$)
+(declare-fun pred_tree$ (A_bool_fun$ A_tree$) Bool)
+(declare-fun corec_tree$ (A_a_fun$) A_bool_fun_a_a_tree_fun_a_a_fun_a_bool_fun_a_a_tree_fun_a_a_fun_a_a_tree_fun_fun_fun_fun_fun_fun_fun$)
+(declare-fun ctor_tree$a (A_a_tree_a_tree_prod_prod$) A_tree$)
+(declare-fun dtor_tree$a () A_tree_a_a_tree_a_tree_prod_prod_fun$)
+(declare-fun corec_tree$a (A_b_fun$ A_bool_fun$ A_b_tree_fun$ A_a_fun$ A_bool_fun$ A_b_tree_fun$ A_a_fun$) A_b_tree_fun$)
+(declare-fun corec_tree$b (A_b_fun_b_fun$) A_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_bool_fun_a_b_fun_b_tree_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun_fun_fun_fun_fun_fun$)
+(declare-fun unfold_tree$ (A_b_fun_b_fun$) A_b_fun_a_b_fun_fun_a_b_fun_a_b_fun_fun_a_b_fun_b_tree_fun_fun_fun$)
+(declare-fun map_pre_tree$ (B_b_fun$ B_tree_a_b_fun_sum_b_tree_fun$) B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_b_b_tree_b_tree_prod_prod_fun$)
+(declare-fun tree_recurse$ (B_b_fun$) B_b_fun_b_b_tree_fun_fun$)
+(declare-fun unfold_tree$a (A_a_fun$) A_a_fun_a_a_fun_a_a_tree_fun_fun_fun$)
+(declare-fun unfold_tree$b (A_b_fun$ A_a_fun$ A_a_fun$ A$) B_tree$)
+(declare-fun unfold_tree$c (B_b_fun_b_fun$ B_b_fun_b_b_fun_fun$ B_b_fun_b_b_fun_fun$ B_b_fun$) B_tree$)
+(declare-fun unfold_tree$d (B_tree_b_tree_fun_b_tree_fun$ B_tree_b_tree_fun_b_tree_b_tree_fun_fun$ B_tree_b_tree_fun_b_tree_b_tree_fun_fun$ B_tree_b_tree_fun$) B_tree_tree$)
+(declare-fun map_pre_tree$a (A_b_fun$ A_b_fun$) A_a_a_prod_prod_b_b_b_prod_prod_fun$)
+(declare-fun map_pre_tree$b (A_a_fun$ A_a_fun$) A_a_a_prod_prod_a_a_a_prod_prod_fun$)
+(declare-fun map_pre_tree$c (B_b_fun$ B_b_fun$) B_b_b_prod_prod_b_b_b_prod_prod_fun$)
+(declare-fun map_pre_tree$d (B_b_fun$ B_tree_b_tree_fun$) B_b_tree_b_tree_prod_prod_b_b_tree_b_tree_prod_prod_fun$)
+(declare-fun map_pre_tree$e (B_tree_b_tree_fun$ B_b_fun$) B_tree_b_b_prod_prod_b_tree_b_b_prod_prod_fun$)
+(declare-fun map_pre_tree$f (B_tree_b_tree_fun$ B_tree_b_tree_fun$) B_tree_b_tree_b_tree_prod_prod_b_tree_b_tree_b_tree_prod_prod_fun$)
+(declare-fun map_pre_tree$g (A_b_fun$ B_b_fun$) A_b_b_prod_prod_b_b_b_prod_prod_fun$)
+(declare-fun map_pre_tree$h (A_b_fun$ B_tree_b_tree_fun$) A_b_tree_b_tree_prod_prod_b_b_tree_b_tree_prod_prod_fun$)
+(declare-fun map_pre_tree$i (A_a_fun$ B_b_fun$) A_b_b_prod_prod_a_b_b_prod_prod_fun$)
+(declare-fun map_pre_tree$j (A_a_fun$ B_tree_b_tree_fun$) A_b_tree_b_tree_prod_prod_a_b_tree_b_tree_prod_prod_fun$)
+(declare-fun map_pre_tree$k (A_a_fun$ A_tree_a_tree_fun$) A_a_tree_a_tree_prod_prod_a_a_tree_a_tree_prod_prod_fun$)
+(declare-fun map_pre_tree$l (A_b_fun$ A_tree_b_tree_fun$) A_a_tree_a_tree_prod_prod_b_b_tree_b_tree_prod_prod_fun$)
+(declare-fun map_pre_tree$m (A_b_fun$ A_tree_b_sum_b_tree_b_sum_fun$) A_a_tree_b_sum_a_tree_b_sum_prod_prod_b_b_tree_b_sum_b_tree_b_sum_prod_prod_fun$)
+(declare-fun map_pre_tree$n (A_b_fun$ A_tree_b_tree_sum_b_tree_b_tree_sum_fun$) A_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_b_b_tree_b_tree_sum_b_tree_b_tree_sum_prod_prod_fun$)
+(declare-fun map_pre_tree$o (A_a_fun$ A_tree_b_sum_a_tree_b_sum_fun$) A_a_tree_b_sum_a_tree_b_sum_prod_prod_a_a_tree_b_sum_a_tree_b_sum_prod_prod_fun$)
+(declare-fun map_pre_tree$p (A_a_fun$ A_tree_b_tree_sum_a_tree_b_tree_sum_fun$) A_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_a_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_fun$)
+(declare-fun tree_recurse$a (B_tree_b_tree_fun$ B_tree_b_tree_fun$ B_tree$) B_tree_tree$)
+(declare-fun tree_recurse$b (A_a_fun$) A_a_fun_a_a_tree_fun_fun$)
+(declare-fun dtor_corec_tree$ (A_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$) A_b_fun_b_tree_fun$)
+(declare-fun dtor_corec_tree$a (B_a_a_tree_b_sum_a_tree_b_sum_prod_prod_fun$) B_a_tree_fun$)
+(declare-fun dtor_corec_tree$b (B_b_b_tree_b_sum_b_tree_b_sum_prod_prod_fun$) B_b_tree_fun$)
+(declare-fun dtor_corec_tree$c (B_tree_a_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_fun$) B_tree_a_tree_fun$)
+(declare-fun dtor_corec_tree$d (B_tree_b_b_tree_b_tree_sum_b_tree_b_tree_sum_prod_prod_fun$) B_tree_b_tree_fun$)
+(declare-fun dtor_unfold_tree$ (B_a_b_b_prod_prod_fun$) B_a_tree_fun$)
+(declare-fun dtor_unfold_tree$a (B_b_b_b_prod_prod_fun$) B_b_tree_fun$)
+(declare-fun dtor_unfold_tree$b (B_tree_a_b_tree_b_tree_prod_prod_fun$) B_tree_a_tree_fun$)
+(declare-fun dtor_unfold_tree$c (B_tree_b_b_tree_b_tree_prod_prod_fun$) B_tree_b_tree_fun$)
+(declare-fun iso_tuple_update_accessor_eq_assist$ (B_b_fun_b_b_fun_fun$) B_b_fun_b_b_b_fun_b_b_bool_fun_fun_fun_fun_fun$)
+(declare-fun iso_tuple_update_accessor_eq_assist$a (B_tree_b_tree_fun_b_tree_b_tree_fun_fun$) B_tree_b_tree_fun_b_tree_b_tree_b_tree_fun_b_tree_b_tree_bool_fun_fun_fun_fun_fun$)
+(assert (forall ((?v0 B_tree$)) (! (= (fun_app$ uvk$ ?v0) (pair$ ?v0 ?v0)) :pattern ((fun_app$ uvk$ ?v0)))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum$)) (! (= (fun_app$a uvl$ ?v0) (pair$b ?v0 ?v0)) :pattern ((fun_app$a uvl$ ?v0)))))
+(assert (forall ((?v0 B$)) (! (= (fun_app$b uvj$ ?v0) (pair$f ?v0 ?v0)) :pattern ((fun_app$b uvj$ ?v0)))))
+(assert (forall ((?v0 A_b_fun$)) (! (= (fun_app$c uu$ ?v0) (fun_app$d (map_tree$ ?v0) t$)) :pattern ((fun_app$c uu$ ?v0)))))
+(assert (forall ((?v0 B_tree_b_tree_prod$)) (! (= (fun_app$e uvg$ ?v0) (snd$ ?v0)) :pattern ((fun_app$e uvg$ ?v0)))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (! (= (fun_app$f uvh$ ?v0) (snd$b ?v0)) :pattern ((fun_app$f uvh$ ?v0)))))
+(assert (forall ((?v0 B_b_tree_b_tree_prod_prod$)) (! (= (fun_app$g uve$ ?v0) (snd$a ?v0)) :pattern ((fun_app$g uve$ ?v0)))))
+(assert (forall ((?v0 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (! (= (fun_app$h uvf$ ?v0) (snd$c ?v0)) :pattern ((fun_app$h uvf$ ?v0)))))
+(assert (forall ((?v0 B_b_prod$)) (! (= (fun_app$i uvi$ ?v0) (snd$f ?v0)) :pattern ((fun_app$i uvi$ ?v0)))))
+(assert (forall ((?v0 B_tree_b_tree_prod$)) (! (= (fun_app$e uvc$ ?v0) (fst$ ?v0)) :pattern ((fun_app$e uvc$ ?v0)))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (! (= (fun_app$f uvd$ ?v0) (fst$b ?v0)) :pattern ((fun_app$f uvd$ ?v0)))))
+(assert (forall ((?v0 B_b_tree_b_tree_prod_prod$)) (! (= (fun_app$j uva$ ?v0) (fst$a ?v0)) :pattern ((fun_app$j uva$ ?v0)))))
+(assert (forall ((?v0 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (! (= (fun_app$k uvb$ ?v0) (fst$c ?v0)) :pattern ((fun_app$k uvb$ ?v0)))))
+(assert (forall ((?v0 B_b_prod$)) (! (= (fun_app$i uvm$ ?v0) (fst$f ?v0)) :pattern ((fun_app$i uvm$ ?v0)))))
+(assert (forall ((?v0 A_b_fun$)) (! (= (fun_app$l uun$ ?v0) (inr$ ?v0)) :pattern ((fun_app$l uun$ ?v0)))))
+(assert (forall ((?v0 B_tree$)) (! (= (fun_app$m uur$ ?v0) (inl$ ?v0)) :pattern ((fun_app$m uur$ ?v0)))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum$) (?v1 B_tree_a_b_fun_sum$)) (! (= (fun_app$a (fun_app$n uvq$ ?v0) ?v1) (pair$b ?v0 ?v1)) :pattern ((fun_app$a (fun_app$n uvq$ ?v0) ?v1)))))
+(assert (forall ((?v0 B$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (! (= (fun_app$o (fun_app$p uvp$ ?v0) ?v1) (pair$c ?v0 ?v1)) :pattern ((fun_app$o (fun_app$p uvp$ ?v0) ?v1)))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) (?v1 B$)) (! (= (fun_app$q (fun_app$r uvn$ ?v0) ?v1) (pair$c ?v1 ?v0)) :pattern ((fun_app$q (fun_app$r uvn$ ?v0) ?v1)))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum$) (?v1 B_tree_a_b_fun_sum$)) (! (= (fun_app$a (fun_app$n uvo$ ?v0) ?v1) (pair$b ?v1 ?v0)) :pattern ((fun_app$a (fun_app$n uvo$ ?v0) ?v1)))))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 B_tree_b_tree_fun$)) (! (= (fun_app$s (uux$ ?v0) ?v1) (fun_app$s (comp$ ?v1) ?v0)) :pattern ((fun_app$s (uux$ ?v0) ?v1)))))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_b_fun$)) (! (= (fun_app$t (uuv$ ?v0) ?v1) (fun_app$t (comp$a ?v1) ?v0)) :pattern ((fun_app$t (uuv$ ?v0) ?v1)))))
+(assert (forall ((?v0 A_a_fun$) (?v1 A_b_fun$)) (! (= (fun_app$u (uup$ ?v0) ?v1) (fun_app$v (comp$b ?v1) ?v0)) :pattern ((fun_app$u (uup$ ?v0) ?v1)))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_fun$) (?v1 A_b_fun$)) (! (= (fun_app$c (uut$ ?v0) ?v1) (fun_app$w ?v0 (inr$ ?v1))) :pattern ((fun_app$c (uut$ ?v0) ?v1)))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_fun$) (?v1 B_tree$)) (! (= (fun_app$x (uus$ ?v0) ?v1) (fun_app$w ?v0 (inl$ ?v1))) :pattern ((fun_app$x (uus$ ?v0) ?v1)))))
+(assert (forall ((?v0 B_tree$) (?v1 B_tree_b_tree_fun$)) (! (= (fun_app$y (uuw$ ?v0) ?v1) (fun_app$x ?v1 ?v0)) :pattern ((fun_app$y (uuw$ ?v0) ?v1)))))
+(assert (forall ((?v0 B$) (?v1 B_b_fun$)) (! (= (fun_app$z (uuu$ ?v0) ?v1) (fun_app$aa ?v1 ?v0)) :pattern ((fun_app$z (uuu$ ?v0) ?v1)))))
+(assert (forall ((?v0 A$) (?v1 A_b_fun$)) (! (= (fun_app$ab (uuo$ ?v0) ?v1) (fun_app$ac ?v1 ?v0)) :pattern ((fun_app$ab (uuo$ ?v0) ?v1)))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_set$) (?v1 B_tree_a_b_fun_sum$) (?v2 B_tree_a_b_fun_sum$)) (! (= (fun_app$ad (fun_app$ae (uuz$ ?v0) ?v1) ?v2) (member$ (pair$b ?v1 ?v2) ?v0)) :pattern ((fun_app$ad (fun_app$ae (uuz$ ?v0) ?v1) ?v2)))))
+(assert (forall ((?v0 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_set$) (?v1 B$) (?v2 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (! (= (fun_app$af (fun_app$ag (uuy$ ?v0) ?v1) ?v2) (member$a (pair$c ?v1 ?v2) ?v0)) :pattern ((fun_app$af (fun_app$ag (uuy$ ?v0) ?v1) ?v2)))))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 B_tree_b_tree_fun$) (?v2 B_tree$)) (! (= (fun_app$x (fun_app$s (uul$ ?v0) ?v1) ?v2) (fun_app$x ?v0 (fun_app$x ?v1 ?v2))) :pattern ((fun_app$x (fun_app$s (uul$ ?v0) ?v1) ?v2)))))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 A_b_fun_b_tree_fun$) (?v2 A_b_fun$)) (! (= (fun_app$c (fun_app$ah (uum$ ?v0) ?v1) ?v2) (fun_app$x ?v0 (fun_app$c ?v1 ?v2))) :pattern ((fun_app$c (fun_app$ah (uum$ ?v0) ?v1) ?v2)))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_fun$) (?v2 B_tree_a_b_fun_sum$) (?v3 B_tree_a_b_fun_sum$)) (! (= (fun_app$ai (fun_app$aj (uvs$ ?v0 ?v1) ?v2) ?v3) (pair$ (fun_app$w ?v0 ?v2) (fun_app$w ?v1 ?v3))) :pattern ((fun_app$ai (fun_app$aj (uvs$ ?v0 ?v1) ?v2) ?v3)))))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$) (?v2 B$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (! (= (fun_app$ak (fun_app$al (uvr$ ?v0 ?v1) ?v2) ?v3) (pair$a (fun_app$aa ?v0 ?v2) (fun_app$am ?v1 ?v3))) :pattern ((fun_app$ak (fun_app$al (uvr$ ?v0 ?v1) ?v2) ?v3)))))
+(assert (forall ((?v0 A_b_fun_b_fun$) (?v1 A_b_fun_bool_fun$) (?v2 A_b_fun_b_tree_fun$) (?v3 A_b_fun_a_b_fun_fun$) (?v4 A_b_fun_bool_fun$) (?v5 A_b_fun_b_tree_fun$) (?v6 A_b_fun_a_b_fun_fun$) (?v7 A_b_fun$)) (! (= (fun_app$an (fun_app$ao (fun_app$ap (fun_app$aq (fun_app$ar (fun_app$as (fun_app$at (uuq$ ?v0) ?v1) ?v2) ?v3) ?v4) ?v5) ?v6) ?v7) (id_bnf$ (pair$c (fun_app$ab ?v0 ?v7) (pair$b (ite (fun_app$au ?v1 ?v7) (inl$ (fun_app$c ?v2 ?v7)) (inr$ (fun_app$u ?v3 ?v7))) (ite (fun_app$au ?v4  [...]
+(assert (forall ((?v0 B_tree$) (?v1 B_tree$)) (! (= (fun_app$x (uuh$ ?v0) ?v1) ?v0) :pattern ((fun_app$x (uuh$ ?v0) ?v1)))))
+(assert (forall ((?v0 B_tree$) (?v1 A_b_fun$)) (! (= (fun_app$c (uui$ ?v0) ?v1) ?v0) :pattern ((fun_app$c (uui$ ?v0) ?v1)))))
+(assert (forall ((?v0 B$) (?v1 B_tree$)) (! (= (fun_app$av (uuf$ ?v0) ?v1) ?v0) :pattern ((fun_app$av (uuf$ ?v0) ?v1)))))
+(assert (forall ((?v0 B$) (?v1 B$)) (! (= (fun_app$aa (uud$ ?v0) ?v1) ?v0) :pattern ((fun_app$aa (uud$ ?v0) ?v1)))))
+(assert (forall ((?v0 B$) (?v1 A$)) (! (= (fun_app$ac (uue$ ?v0) ?v1) ?v0) :pattern ((fun_app$ac (uue$ ?v0) ?v1)))))
+(assert (forall ((?v0 A$) (?v1 A$)) (! (= (fun_app$aw (uug$ ?v0) ?v1) ?v0) :pattern ((fun_app$aw (uug$ ?v0) ?v1)))))
+(assert (forall ((?v0 B_tree$)) (! (= (fun_app$x uub$ ?v0) ?v0) :pattern ((fun_app$x uub$ ?v0)))))
+(assert (forall ((?v0 B_tree_b_tree_prod$)) (! (= (fun_app$ax uuj$ ?v0) ?v0) :pattern ((fun_app$ax uuj$ ?v0)))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (! (= (fun_app$ay uuk$ ?v0) ?v0) :pattern ((fun_app$ay uuk$ ?v0)))))
+(assert (forall ((?v0 B$)) (! (= (fun_app$aa uua$ ?v0) ?v0) :pattern ((fun_app$aa uua$ ?v0)))))
+(assert (forall ((?v0 A$)) (! (= (fun_app$aw uuc$ ?v0) ?v0) :pattern ((fun_app$aw uuc$ ?v0)))))
+(assert (not (forall ((?v0 A_b_fun$)) (= (id_bnf$a (fun_app$az (map_prod$ id$ (fun_app$ba (map_prod$a (fun_app$bb (case_sum$ id$a) uu$)) (fun_app$bb (case_sum$ id$a) uu$))) (id_bnf$ (id_bnf$ (pair$c (fun_app$ac ?v0 x$) (pair$b (inr$ (fun_app$v (comp$b ?v0) l$)) (inr$ (fun_app$v (comp$b ?v0) r$)))))))) (fun_app$bc dtor_tree$ (fun_app$d (map_tree$ ?v0) t$))) )))
+(assert (forall ((?v0 A_tree$) (?v1 A_tree$)) (= (= (fun_app$bd dtor_tree$a ?v0) (fun_app$bd dtor_tree$a ?v1)) (= ?v0 ?v1)) ))
+(assert (forall ((?v0 B_tree$) (?v1 B_tree$)) (= (= (fun_app$bc dtor_tree$ ?v0) (fun_app$bc dtor_tree$ ?v1)) (= ?v0 ?v1)) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 A_b_fun$) (?v2 A_tree$)) (= (fun_app$x (map_tree$a ?v0) (fun_app$d (map_tree$ ?v1) ?v2)) (fun_app$d (map_tree$ (fun_app$u (comp$c ?v0) ?v1)) ?v2)) ))
+(assert (forall ((?v0 B_a_fun$) (?v1 A_b_fun$) (?v2 A_tree$)) (= (fun_app$be (map_tree$b ?v0) (fun_app$d (map_tree$ ?v1) ?v2)) (fun_app$bf (map_tree$c (fun_app$bg (comp$d ?v0) ?v1)) ?v2)) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$) (?v2 A_tree$)) (= (fun_app$d (map_tree$ ?v0) (fun_app$bf (map_tree$c ?v1) ?v2)) (fun_app$d (map_tree$ (fun_app$v (comp$b ?v0) ?v1)) ?v2)) ))
+(assert (forall ((?v0 A_a_fun$) (?v1 A_a_fun$) (?v2 A_tree$)) (= (fun_app$bf (map_tree$c ?v0) (fun_app$bf (map_tree$c ?v1) ?v2)) (fun_app$bf (map_tree$c (fun_app$bh (comp$e ?v0) ?v1)) ?v2)) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 B_a_fun$) (?v2 B_tree$)) (= (fun_app$d (map_tree$ ?v0) (fun_app$be (map_tree$b ?v1) ?v2)) (fun_app$x (map_tree$a (fun_app$bi (comp$f ?v0) ?v1)) ?v2)) ))
+(assert (forall ((?v0 A_a_fun$) (?v1 B_a_fun$) (?v2 B_tree$)) (= (fun_app$bf (map_tree$c ?v0) (fun_app$be (map_tree$b ?v1) ?v2)) (fun_app$be (map_tree$b (fun_app$bj (comp$g ?v0) ?v1)) ?v2)) ))
+(assert (forall ((?v0 B_a_fun$) (?v1 B_b_fun$) (?v2 B_tree$)) (= (fun_app$be (map_tree$b ?v0) (fun_app$x (map_tree$a ?v1) ?v2)) (fun_app$be (map_tree$b (fun_app$bk (comp$h ?v0) ?v1)) ?v2)) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_b_fun$) (?v2 B_tree$)) (= (fun_app$x (map_tree$a ?v0) (fun_app$x (map_tree$a ?v1) ?v2)) (fun_app$x (map_tree$a (fun_app$t (comp$a ?v0) ?v1)) ?v2)) ))
+(assert (forall ((?v0 A_b_b_prod_fun$) (?v1 A_a_fun$) (?v2 A_tree$)) (= (fun_app$bl (map_tree$d ?v0) (fun_app$bf (map_tree$c ?v1) ?v2)) (fun_app$bl (map_tree$d (fun_app$bm (comp$i ?v0) ?v1)) ?v2)) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_sum_a_fun$) (?v2 A_a_sum_tree$)) (= (fun_app$d (map_tree$ ?v0) (fun_app$bn (map_tree$e ?v1) ?v2)) (fun_app$bo (map_tree$f (comp$j ?v0 ?v1)) ?v2)) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 A_b_fun$)) (= (map_tree$ (fun_app$u (comp$c ?v0) ?v1)) (fun_app$bp (comp$k (map_tree$a ?v0)) (map_tree$ ?v1))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$)) (= (map_tree$ (fun_app$v (comp$b ?v0) ?v1)) (fun_app$bq (comp$l (map_tree$ ?v0)) (map_tree$c ?v1))) ))
+(assert (forall ((?v0 B_a_fun$) (?v1 A_b_fun$)) (= (map_tree$c (fun_app$bg (comp$d ?v0) ?v1)) (fun_app$br (comp$m (map_tree$b ?v0)) (map_tree$ ?v1))) ))
+(assert (forall ((?v0 A_a_fun$) (?v1 A_a_fun$)) (= (map_tree$c (fun_app$bh (comp$e ?v0) ?v1)) (fun_app$bs (comp$n (map_tree$c ?v0)) (map_tree$c ?v1))) ))
+(assert (forall ((?v0 A_a_fun$) (?v1 B_a_fun$)) (= (map_tree$b (fun_app$bj (comp$g ?v0) ?v1)) (comp$o (map_tree$c ?v0) (map_tree$b ?v1))) ))
+(assert (forall ((?v0 B_a_fun$) (?v1 B_b_fun$)) (= (map_tree$b (fun_app$bk (comp$h ?v0) ?v1)) (comp$p (map_tree$b ?v0) (map_tree$a ?v1))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 B_a_fun$)) (= (map_tree$a (fun_app$bi (comp$f ?v0) ?v1)) (fun_app$bt (comp$q (map_tree$ ?v0)) (map_tree$b ?v1))) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_b_fun$)) (= (map_tree$a (fun_app$t (comp$a ?v0) ?v1)) (fun_app$s (comp$ (map_tree$a ?v0)) (map_tree$a ?v1))) ))
+(assert (forall ((?v0 A_b_b_prod_fun$) (?v1 A_a_fun$)) (= (map_tree$d (fun_app$bm (comp$i ?v0) ?v1)) (comp$r (map_tree$d ?v0) (map_tree$c ?v1))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_sum_a_fun$)) (= (map_tree$f (comp$j ?v0 ?v1)) (comp$s (map_tree$ ?v0) (map_tree$e ?v1))) ))
+(assert (forall ((?v0 B_tree$)) (= (fun_app$x (map_tree$a uua$) ?v0) ?v0) ))
+(assert (forall ((?v0 B_tree_tree$)) (= (fun_app$bu (map_tree$g uub$) ?v0) ?v0) ))
+(assert (forall ((?v0 A_tree$)) (= (fun_app$bf (map_tree$c uuc$) ?v0) ?v0) ))
+(assert (forall ((?v0 B_b_sum_tree$)) (= (fun_app$bv (map_tree$h id$b) ?v0) ?v0) ))
+(assert (forall ((?v0 B_tree_b_tree_fun_tree$)) (= (fun_app$bw (map_tree$i id$c) ?v0) ?v0) ))
+(assert (forall ((?v0 B_b_fun_tree$)) (= (fun_app$bx (map_tree$j id$d) ?v0) ?v0) ))
+(assert (forall ((?v0 A_b_fun_tree$)) (= (fun_app$by (map_tree$k id$e) ?v0) ?v0) ))
+(assert (forall ((?v0 B_tree$)) (= (fun_app$x (map_tree$a id$) ?v0) ?v0) ))
+(assert (forall ((?v0 B_tree_tree$)) (= (fun_app$bu (map_tree$g id$a) ?v0) ?v0) ))
+(assert (forall ((?v0 A_tree$)) (= (fun_app$bf (map_tree$c id$f) ?v0) ?v0) ))
+(assert (= (map_tree$h id$b) id$g))
+(assert (= (map_tree$i id$c) id$h))
+(assert (= (map_tree$j id$d) id$i))
+(assert (= (map_tree$k id$e) id$j))
+(assert (= (map_tree$a id$) id$a))
+(assert (= (map_tree$g id$a) id$k))
+(assert (= (map_tree$c id$f) id$l))
+(assert (forall ((?v0 A_a_tree_a_tree_prod_prod$)) (=> (forall ((?v1 A_tree$)) (=> (= ?v0 (fun_app$bd dtor_tree$a ?v1)) false) ) false) ))
+(assert (forall ((?v0 B_b_tree_b_tree_prod_prod$)) (=> (forall ((?v1 B_tree$)) (=> (= ?v0 (fun_app$bc dtor_tree$ ?v1)) false) ) false) ))
+(assert (= t$ (node$a x$ (fun_app$bf (map_tree$c l$) t$) (fun_app$bf (map_tree$c r$) t$))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_fun$) (?v2 B_tree_a_b_fun_sum$) (?v3 B_tree_a_b_fun_sum$)) (! (= (fun_app$am (fun_app$ba (map_prod$a ?v0) ?v1) (pair$b ?v2 ?v3)) (pair$ (fun_app$w ?v0 ?v2) (fun_app$w ?v1 ?v3))) :pattern ((fun_app$am (fun_app$ba (map_prod$a ?v0) ?v1) (pair$b ?v2 ?v3))))))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$) (?v2 B$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (! (= (fun_app$az (map_prod$ ?v0 ?v1) (pair$c ?v2 ?v3)) (pair$a (fun_app$aa ?v0 ?v2) (fun_app$am ?v1 ?v3))) :pattern ((fun_app$az (map_prod$ ?v0 ?v1) (pair$c ?v2 ?v3))))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$) (?v2 B_tree_a_b_fun_sum$) (?v3 B_tree_a_b_fun_sum$)) (! (= (fun_app$ay (fun_app$bz (map_prod$b ?v0) ?v1) (pair$b ?v2 ?v3)) (pair$b (fun_app$ca ?v0 ?v2) (fun_app$ca ?v1 ?v3))) :pattern ((fun_app$ay (fun_app$bz (map_prod$b ?v0) ?v1) (pair$b ?v2 ?v3))))))
+(assert (forall ((?v0 B_b_tree_a_b_fun_sum_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_fun$) (?v2 B$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (! (= (map_prod$c ?v0 ?v1 (pair$c ?v2 ?v3)) (pair$b (fun_app$cb ?v0 ?v2) (fun_app$f ?v1 ?v3))) :pattern ((map_prod$c ?v0 ?v1 (pair$c ?v2 ?v3))))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$) (?v2 B_tree_a_b_fun_sum$) (?v3 B_tree_a_b_fun_sum$)) (! (= (map_prod$d ?v0 ?v1 (pair$b ?v2 ?v3)) (pair$c (fun_app$cc ?v0 ?v2) (fun_app$a ?v1 ?v3))) :pattern ((map_prod$d ?v0 ?v1 (pair$b ?v2 ?v3))))))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$) (?v2 B$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (! (= (fun_app$cd (map_prod$e ?v0 ?v1) (pair$c ?v2 ?v3)) (pair$c (fun_app$aa ?v0 ?v2) (fun_app$ay ?v1 ?v3))) :pattern ((fun_app$cd (map_prod$e ?v0 ?v1) (pair$c ?v2 ?v3))))))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_b_fun$) (?v2 B$) (?v3 B$)) (! (= (fun_app$ce (map_prod$f ?v0 ?v1) (pair$f ?v2 ?v3)) (pair$f (fun_app$aa ?v0 ?v2) (fun_app$aa ?v1 ?v3))) :pattern ((fun_app$ce (map_prod$f ?v0 ?v1) (pair$f ?v2 ?v3))))))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_b_fun$) (?v2 A$) (?v3 A$)) (! (= (fun_app$cf (map_prod$g ?v0 ?v1) (pair$g ?v2 ?v3)) (pair$f (fun_app$ac ?v0 ?v2) (fun_app$ac ?v1 ?v3))) :pattern ((fun_app$cf (map_prod$g ?v0 ?v1) (pair$g ?v2 ?v3))))))
+(assert (forall ((?v0 A_a_fun$) (?v1 A_a_fun$) (?v2 A$) (?v3 A$)) (! (= (fun_app$cg (map_prod$h ?v0 ?v1) (pair$g ?v2 ?v3)) (pair$g (fun_app$aw ?v0 ?v2) (fun_app$aw ?v1 ?v3))) :pattern ((fun_app$cg (map_prod$h ?v0 ?v1) (pair$g ?v2 ?v3))))))
+(assert (forall ((?v0 A_tree_b_fun$) (?v1 A_tree_b_fun$) (?v2 A_tree$) (?v3 A_tree$)) (! (= (map_prod$i ?v0 ?v1 (pair$d ?v2 ?v3)) (pair$f (fun_app$ch ?v0 ?v2) (fun_app$ch ?v1 ?v3))) :pattern ((map_prod$i ?v0 ?v1 (pair$d ?v2 ?v3))))))
+(assert (forall ((?v0 A_b_b_prod_fun$)) (= (fun_app$bm (comp$i ?v0) id$f) ?v0) ))
+(assert (forall ((?v0 A_a_fun$)) (= (fun_app$bh (comp$e ?v0) id$f) ?v0) ))
+(assert (forall ((?v0 A_b_fun$)) (= (fun_app$v (comp$b ?v0) id$f) ?v0) ))
+(assert (forall ((?v0 A_b_fun$)) (= (fun_app$u (comp$c id$) ?v0) ?v0) ))
+(assert (forall ((?v0 A_a_fun$)) (= (fun_app$bh (comp$e id$f) ?v0) ?v0) ))
+(assert (forall ((?v0 A_b_fun$)) (= (fun_app$u (comp$c id$) ?v0) ?v0) ))
+(assert (forall ((?v0 A_a_fun$)) (= (fun_app$bh (comp$e id$f) ?v0) ?v0) ))
+(assert (forall ((?v0 B$) (?v1 B_b_sum$)) (= (fun_app$ci (case_sum$a (uud$ ?v0) (uud$ ?v0)) ?v1) ?v0) ))
+(assert (forall ((?v0 B$) (?v1 A_b_tree_sum$)) (= (case_sum$b (uue$ ?v0) (uuf$ ?v0) ?v1) ?v0) ))
+(assert (forall ((?v0 B$) (?v1 A_b_sum$)) (= (case_sum$c (uue$ ?v0) (uud$ ?v0) ?v1) ?v0) ))
+(assert (forall ((?v0 B$) (?v1 A_a_sum$)) (= (fun_app$cj (case_sum$d (uue$ ?v0) (uue$ ?v0)) ?v1) ?v0) ))
+(assert (forall ((?v0 A$) (?v1 A_a_sum$)) (= (fun_app$ck (fun_app$cl (case_sum$e (uug$ ?v0)) (uug$ ?v0)) ?v1) ?v0) ))
+(assert (forall ((?v0 B_tree$) (?v1 B_tree_a_b_fun_sum$)) (= (fun_app$w (fun_app$bb (case_sum$ (uuh$ ?v0)) (uui$ ?v0)) ?v1) ?v0) ))
+(assert (forall ((?v0 B_b_tree_b_tree_prod_prod$)) (= (fun_app$cm (map_prod$j uua$ uuj$) ?v0) ?v0) ))
+(assert (forall ((?v0 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (= (fun_app$cd (map_prod$e uua$ uuk$) ?v0) ?v0) ))
+(assert (forall ((?v0 B_b_prod$)) (= (fun_app$ce (map_prod$f uua$ uua$) ?v0) ?v0) ))
+(assert (forall ((?v0 A_a_prod$)) (= (fun_app$cg (map_prod$h uuc$ uuc$) ?v0) ?v0) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_b_fun$)) (= (= (inr$ ?v0) (inr$ ?v1)) (= ?v0 ?v1)) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_b_fun$)) (= (= (inr$ ?v0) (inr$ ?v1)) (= ?v0 ?v1)) ))
+(assert (forall ((?v0 B_b_sum$)) (! (= (fun_app$cn id$b ?v0) ?v0) :pattern ((fun_app$cn id$b ?v0)))))
+(assert (forall ((?v0 B_tree_b_tree_fun$)) (! (= (fun_app$s id$c ?v0) ?v0) :pattern ((fun_app$s id$c ?v0)))))
+(assert (forall ((?v0 B_b_fun$)) (! (= (fun_app$t id$d ?v0) ?v0) :pattern ((fun_app$t id$d ?v0)))))
+(assert (forall ((?v0 A_b_fun$)) (! (= (fun_app$u id$e ?v0) ?v0) :pattern ((fun_app$u id$e ?v0)))))
+(assert (forall ((?v0 A$)) (! (= (fun_app$aw id$f ?v0) ?v0) :pattern ((fun_app$aw id$f ?v0)))))
+(assert (forall ((?v0 B$)) (! (= (fun_app$aa id$ ?v0) ?v0) :pattern ((fun_app$aa id$ ?v0)))))
+(assert (forall ((?v0 B_tree$)) (! (= (fun_app$x id$a ?v0) ?v0) :pattern ((fun_app$x id$a ?v0)))))
+(assert (forall ((?v0 B_b_fun$) (?v1 A_b_fun$) (?v2 A$)) (! (= (fun_app$ac (fun_app$u (comp$c ?v0) ?v1) ?v2) (fun_app$aa ?v0 (fun_app$ac ?v1 ?v2))) :pattern ((fun_app$ac (fun_app$u (comp$c ?v0) ?v1) ?v2)))))
+(assert (forall ((?v0 B_a_fun$) (?v1 A_b_fun$) (?v2 A$)) (! (= (fun_app$aw (fun_app$bg (comp$d ?v0) ?v1) ?v2) (fun_app$co ?v0 (fun_app$ac ?v1 ?v2))) :pattern ((fun_app$aw (fun_app$bg (comp$d ?v0) ?v1) ?v2)))))
+(assert (forall ((?v0 A_b_b_prod_fun$) (?v1 A_a_fun$) (?v2 A$)) (! (= (fun_app$cp (fun_app$bm (comp$i ?v0) ?v1) ?v2) (fun_app$cp ?v0 (fun_app$aw ?v1 ?v2))) :pattern ((fun_app$cp (fun_app$bm (comp$i ?v0) ?v1) ?v2)))))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_sum_a_fun$) (?v2 A_a_sum$)) (! (= (fun_app$cj (comp$j ?v0 ?v1) ?v2) (fun_app$ac ?v0 (fun_app$ck ?v1 ?v2))) :pattern ((fun_app$cj (comp$j ?v0 ?v1) ?v2)))))
+(assert (forall ((?v0 A_a_fun$) (?v1 A_a_fun$) (?v2 A$)) (! (= (fun_app$aw (fun_app$bh (comp$e ?v0) ?v1) ?v2) (fun_app$aw ?v0 (fun_app$aw ?v1 ?v2))) :pattern ((fun_app$aw (fun_app$bh (comp$e ?v0) ?v1) ?v2)))))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$) (?v2 A$)) (! (= (fun_app$ac (fun_app$v (comp$b ?v0) ?v1) ?v2) (fun_app$ac ?v0 (fun_app$aw ?v1 ?v2))) :pattern ((fun_app$ac (fun_app$v (comp$b ?v0) ?v1) ?v2)))))
+(assert (forall ((?v0 A_tree$) (?v1 A_tree$) (?v2 A_tree$) (?v3 A_tree$)) (= (= (pair$d ?v0 ?v1) (pair$d ?v2 ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3))) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) (?v1 B$) (?v2 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) (?v3 B$)) (= (= (pair$h ?v0 ?v1) (pair$h ?v2 ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3))) ))
+(assert (forall ((?v0 B$) (?v1 B_tree_b_tree_prod$) (?v2 B$) (?v3 B_tree_b_tree_prod$)) (= (= (pair$a ?v0 ?v1) (pair$a ?v2 ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3))) ))
+(assert (forall ((?v0 B$) (?v1 B$) (?v2 B$) (?v3 B$)) (= (= (pair$f ?v0 ?v1) (pair$f ?v2 ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3))) ))
+(assert (forall ((?v0 A$) (?v1 A_tree_a_tree_prod$) (?v2 A$) (?v3 A_tree_a_tree_prod$)) (= (= (pair$e ?v0 ?v1) (pair$e ?v2 ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3))) ))
+(assert (forall ((?v0 B$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) (?v2 B$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (= (= (pair$c ?v0 ?v1) (pair$c ?v2 ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3))) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum$) (?v1 B_tree_a_b_fun_sum$) (?v2 B_tree_a_b_fun_sum$) (?v3 B_tree_a_b_fun_sum$)) (= (= (pair$b ?v0 ?v1) (pair$b ?v2 ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3))) ))
+(assert (forall ((?v0 A_tree$) (?v1 A_tree$) (?v2 A_tree$) (?v3 A_tree$)) (= (= (pair$d ?v0 ?v1) (pair$d ?v2 ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3))) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) (?v1 B$) (?v2 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) (?v3 B$)) (= (= (pair$h ?v0 ?v1) (pair$h ?v2 ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3))) ))
+(assert (forall ((?v0 B$) (?v1 B_tree_b_tree_prod$) (?v2 B$) (?v3 B_tree_b_tree_prod$)) (= (= (pair$a ?v0 ?v1) (pair$a ?v2 ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3))) ))
+(assert (forall ((?v0 B$) (?v1 B$) (?v2 B$) (?v3 B$)) (= (= (pair$f ?v0 ?v1) (pair$f ?v2 ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3))) ))
+(assert (forall ((?v0 A$) (?v1 A_tree_a_tree_prod$) (?v2 A$) (?v3 A_tree_a_tree_prod$)) (= (= (pair$e ?v0 ?v1) (pair$e ?v2 ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3))) ))
+(assert (forall ((?v0 B$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) (?v2 B$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (= (= (pair$c ?v0 ?v1) (pair$c ?v2 ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3))) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum$) (?v1 B_tree_a_b_fun_sum$) (?v2 B_tree_a_b_fun_sum$) (?v3 B_tree_a_b_fun_sum$)) (= (= (pair$b ?v0 ?v1) (pair$b ?v2 ?v3)) (and (= ?v0 ?v2) (= ?v1 ?v3))) ))
+(assert (forall ((?v0 B$) (?v1 B_tree$) (?v2 B_tree$) (?v3 B$) (?v4 B_tree$) (?v5 B_tree$)) (= (= (node$ ?v0 ?v1 ?v2) (node$ ?v3 ?v4 ?v5)) (and (= ?v0 ?v3) (and (= ?v1 ?v4) (= ?v2 ?v5)))) ))
+(assert (forall ((?v0 A$) (?v1 A_tree$) (?v2 A_tree$) (?v3 A$) (?v4 A_tree$) (?v5 A_tree$)) (= (= (node$a ?v0 ?v1 ?v2) (node$a ?v3 ?v4 ?v5)) (and (= ?v0 ?v3) (and (= ?v1 ?v4) (= ?v2 ?v5)))) ))
+(assert (forall ((?v0 B_tree$)) (=> (forall ((?v1 B$) (?v2 B_tree$) (?v3 B_tree$)) (=> (= ?v0 (node$ ?v1 ?v2 ?v3)) false) ) false) ))
+(assert (forall ((?v0 A_tree$)) (=> (forall ((?v1 A$) (?v2 A_tree$) (?v3 A_tree$)) (=> (= ?v0 (node$a ?v1 ?v2 ?v3)) false) ) false) ))
+(assert (= (map_prod$j uua$ uuj$) id$m))
+(assert (= (map_prod$e uua$ uuk$) id$n))
+(assert (= (map_prod$f uua$ uua$) id$o))
+(assert (= (map_prod$h uuc$ uuc$) id$p))
+(assert (forall ((?v0 B_a_fun$) (?v1 B$) (?v2 B_tree$) (?v3 B_tree$)) (! (= (fun_app$be (map_tree$b ?v0) (node$ ?v1 ?v2 ?v3)) (node$a (fun_app$co ?v0 ?v1) (fun_app$be (map_tree$b ?v0) ?v2) (fun_app$be (map_tree$b ?v0) ?v3))) :pattern ((fun_app$be (map_tree$b ?v0) (node$ ?v1 ?v2 ?v3))))))
+(assert (forall ((?v0 B_b_fun$) (?v1 B$) (?v2 B_tree$) (?v3 B_tree$)) (! (= (fun_app$x (map_tree$a ?v0) (node$ ?v1 ?v2 ?v3)) (node$ (fun_app$aa ?v0 ?v1) (fun_app$x (map_tree$a ?v0) ?v2) (fun_app$x (map_tree$a ?v0) ?v3))) :pattern ((fun_app$x (map_tree$a ?v0) (node$ ?v1 ?v2 ?v3))))))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 B_tree$) (?v2 B_tree_tree$) (?v3 B_tree_tree$)) (! (= (fun_app$bu (map_tree$g ?v0) (node$d ?v1 ?v2 ?v3)) (node$d (fun_app$x ?v0 ?v1) (fun_app$bu (map_tree$g ?v0) ?v2) (fun_app$bu (map_tree$g ?v0) ?v3))) :pattern ((fun_app$bu (map_tree$g ?v0) (node$d ?v1 ?v2 ?v3))))))
+(assert (forall ((?v0 A_b_fun$) (?v1 A$) (?v2 A_tree$) (?v3 A_tree$)) (! (= (fun_app$d (map_tree$ ?v0) (node$a ?v1 ?v2 ?v3)) (node$ (fun_app$ac ?v0 ?v1) (fun_app$d (map_tree$ ?v0) ?v2) (fun_app$d (map_tree$ ?v0) ?v3))) :pattern ((fun_app$d (map_tree$ ?v0) (node$a ?v1 ?v2 ?v3))))))
+(assert (forall ((?v0 A_a_fun$) (?v1 A$) (?v2 A_tree$) (?v3 A_tree$)) (! (= (fun_app$bf (map_tree$c ?v0) (node$a ?v1 ?v2 ?v3)) (node$a (fun_app$aw ?v0 ?v1) (fun_app$bf (map_tree$c ?v0) ?v2) (fun_app$bf (map_tree$c ?v0) ?v3))) :pattern ((fun_app$bf (map_tree$c ?v0) (node$a ?v1 ?v2 ?v3))))))
+(assert (forall ((?v0 B_b_prod$)) (exists ((?v1 B$) (?v2 B$)) (= ?v0 (pair$f ?v1 ?v2)) ) ))
+(assert (forall ((?v0 A_a_tree_a_tree_prod_prod$)) (exists ((?v1 A$) (?v2 A_tree_a_tree_prod$)) (= ?v0 (pair$e ?v1 ?v2)) ) ))
+(assert (forall ((?v0 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (exists ((?v1 B$) (?v2 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (= ?v0 (pair$c ?v1 ?v2)) ) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (exists ((?v1 B_tree_a_b_fun_sum$) (?v2 B_tree_a_b_fun_sum$)) (= ?v0 (pair$b ?v1 ?v2)) ) ))
+(assert (forall ((?v0 B$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) (?v2 B$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (=> (and (= (pair$c ?v0 ?v1) (pair$c ?v2 ?v3)) (=> (and (= ?v0 ?v2) (= ?v1 ?v3)) false)) false) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum$) (?v1 B_tree_a_b_fun_sum$) (?v2 B_tree_a_b_fun_sum$) (?v3 B_tree_a_b_fun_sum$)) (=> (and (= (pair$b ?v0 ?v1) (pair$b ?v2 ?v3)) (=> (and (= ?v0 ?v2) (= ?v1 ?v3)) false)) false) ))
+(assert (forall ((?v0 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_bool_fun$) (?v1 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (=> (forall ((?v2 B$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (fun_app$cq ?v0 (pair$c ?v2 ?v3)) ) (fun_app$cq ?v0 ?v1)) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_bool_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (=> (forall ((?v2 B_tree_a_b_fun_sum$) (?v3 B_tree_a_b_fun_sum$)) (fun_app$af ?v0 (pair$b ?v2 ?v3)) ) (fun_app$af ?v0 ?v1)) ))
+(assert (forall ((?v0 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (=> (forall ((?v1 B$) (?v2 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (=> (= ?v0 (pair$c ?v1 ?v2)) false) ) false) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (=> (forall ((?v1 B_tree_a_b_fun_sum$) (?v2 B_tree_a_b_fun_sum$)) (=> (= ?v0 (pair$b ?v1 ?v2)) false) ) false) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$) (?v2 A_b_fun$) (?v3 A$)) (=> (= (fun_app$v (comp$b ?v0) ?v1) ?v2) (= (fun_app$ac ?v0 (fun_app$aw ?v1 ?v3)) (fun_app$ac ?v2 ?v3))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$) (?v2 A_b_fun$) (?v3 A_a_fun$) (?v4 A$)) (=> (= (fun_app$v (comp$b ?v0) ?v1) (fun_app$v (comp$b ?v2) ?v3)) (= (fun_app$ac ?v0 (fun_app$aw ?v1 ?v4)) (fun_app$ac ?v2 (fun_app$aw ?v3 ?v4)))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$) (?v2 A_b_fun$) (?v3 A_a_fun$)) (=> (and (= (fun_app$v (comp$b ?v0) ?v1) (fun_app$v (comp$b ?v2) ?v3)) (=> (forall ((?v4 A$)) (= (fun_app$ac ?v0 (fun_app$aw ?v1 ?v4)) (fun_app$ac ?v2 (fun_app$aw ?v3 ?v4))) ) false)) false) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$) (?v2 A$)) (! (= (fun_app$ac (fun_app$v (comp$b ?v0) ?v1) ?v2) (fun_app$ac ?v0 (fun_app$aw ?v1 ?v2))) :pattern ((fun_app$ac (fun_app$v (comp$b ?v0) ?v1) ?v2)))))
+(assert (forall ((?v0 B_b_fun$) (?v1 A_b_fun$) (?v2 A_a_fun$)) (= (fun_app$v (comp$b (fun_app$u (comp$c ?v0) ?v1)) ?v2) (fun_app$u (comp$c ?v0) (fun_app$v (comp$b ?v1) ?v2))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$) (?v2 A_a_fun$)) (= (fun_app$v (comp$b (fun_app$v (comp$b ?v0) ?v1)) ?v2) (fun_app$v (comp$b ?v0) (fun_app$bh (comp$e ?v1) ?v2))) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 A_b_fun$) (?v2 A_a_fun$)) (= (fun_app$u (comp$c ?v0) (fun_app$v (comp$b ?v1) ?v2)) (fun_app$v (comp$b (fun_app$u (comp$c ?v0) ?v1)) ?v2)) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$) (?v2 A_a_fun$)) (= (fun_app$v (comp$b ?v0) (fun_app$bh (comp$e ?v1) ?v2)) (fun_app$v (comp$b (fun_app$v (comp$b ?v0) ?v1)) ?v2)) ))
+(assert (forall ((?v0 B$)) (! (= (fun_app$aa id$ ?v0) ?v0) :pattern ((fun_app$aa id$ ?v0)))))
+(assert (forall ((?v0 B_tree$)) (! (= (fun_app$x id$a ?v0) ?v0) :pattern ((fun_app$x id$a ?v0)))))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_b_fun$)) (=> (= (inr$ ?v0) (inr$ ?v1)) (= ?v0 ?v1)) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 A_b_fun_b_tree_fun$) (?v2 B_tree_b_tree_fun$) (?v3 A_b_fun_b_tree_fun$)) (=> (and (= (fun_app$bb (case_sum$ ?v0) ?v1) (fun_app$bb (case_sum$ ?v2) ?v3)) (=> (and (= ?v0 ?v2) (= ?v1 ?v3)) false)) false) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 B_tree_b_tree_fun$) (?v2 A_b_fun_b_tree_fun$) (?v3 B_tree_a_b_fun_sum$)) (= (fun_app$x ?v0 (fun_app$w (fun_app$bb (case_sum$ ?v1) ?v2) ?v3)) (fun_app$w (fun_app$bb (case_sum$ (fun_app$s (uul$ ?v0) ?v1)) (fun_app$ah (uum$ ?v0) ?v2)) ?v3)) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$) (?v2 A_b_fun$) (?v3 A$)) (=> (= (fun_app$v (comp$b ?v0) ?v1) (fun_app$u (comp$c id$) ?v2)) (= (fun_app$ac ?v0 (fun_app$aw ?v1 ?v3)) (fun_app$ac ?v2 ?v3))) ))
+(assert (forall ((?v0 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (=> (forall ((?v1 B$) (?v2 B_tree_a_b_fun_sum$) (?v3 B_tree_a_b_fun_sum$)) (=> (= ?v0 (pair$c ?v1 (pair$b ?v2 ?v3))) false) ) false) ))
+(assert (forall ((?v0 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_bool_fun$) (?v1 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (=> (forall ((?v2 B$) (?v3 B_tree_a_b_fun_sum$) (?v4 B_tree_a_b_fun_sum$)) (fun_app$cq ?v0 (pair$c ?v2 (pair$b ?v3 ?v4))) ) (fun_app$cq ?v0 ?v1)) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_b_fun$) (?v2 A_a_fun$) (?v3 A_a_fun$)) (= (comp$t (map_prod$g ?v0 ?v1) (map_prod$h ?v2 ?v3)) (map_prod$g (fun_app$v (comp$b ?v0) ?v2) (fun_app$v (comp$b ?v1) ?v3))) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_tree_b_tree_prod_b_tree_b_tree_prod_fun$) (?v2 B_b_fun$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$)) (= (comp$u (map_prod$j ?v0 ?v1) (map_prod$ ?v2 ?v3)) (map_prod$ (fun_app$t (comp$a ?v0) ?v2) (fun_app$cr (comp$v ?v1) ?v3))) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 B_tree_b_tree_fun$) (?v2 B_tree_a_b_fun_sum_b_tree_fun$) (?v3 B_tree_a_b_fun_sum_b_tree_fun$)) (= (fun_app$cr (comp$v (fun_app$cs (map_prod$k ?v0) ?v1)) (fun_app$ba (map_prod$a ?v2) ?v3)) (fun_app$ba (map_prod$a (fun_app$ct (comp$w ?v0) ?v2)) (fun_app$ct (comp$w ?v1) ?v3))) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$) (?v2 B_b_fun$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$)) (= (comp$x (map_prod$ ?v0 ?v1) (map_prod$e ?v2 ?v3)) (map_prod$ (fun_app$t (comp$a ?v0) ?v2) (fun_app$cu (comp$y ?v1) ?v3))) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_fun$) (?v2 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$)) (= (fun_app$cu (comp$y (fun_app$ba (map_prod$a ?v0) ?v1)) (fun_app$bz (map_prod$b ?v2) ?v3)) (fun_app$ba (map_prod$a (fun_app$cv (comp$z ?v0) ?v2)) (fun_app$cv (comp$z ?v1) ?v3))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$) (?v2 A_b_fun$) (?v3 A_a_fun$)) (= (map_prod$g (fun_app$v (comp$b ?v0) ?v1) (fun_app$v (comp$b ?v2) ?v3)) (comp$t (map_prod$g ?v0 ?v2) (map_prod$h ?v1 ?v3))) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_b_fun$) (?v2 B_tree_b_tree_prod_b_tree_b_tree_prod_fun$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$)) (= (map_prod$ (fun_app$t (comp$a ?v0) ?v1) (fun_app$cr (comp$v ?v2) ?v3)) (comp$u (map_prod$j ?v0 ?v2) (map_prod$ ?v1 ?v3))) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_b_fun$) (?v2 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$)) (= (map_prod$ (fun_app$t (comp$a ?v0) ?v1) (fun_app$cu (comp$y ?v2) ?v3)) (comp$x (map_prod$ ?v0 ?v2) (map_prod$e ?v1 ?v3))) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_fun$) (?v2 B_tree_b_tree_fun$) (?v3 B_tree_a_b_fun_sum_b_tree_fun$)) (= (fun_app$ba (map_prod$a (fun_app$ct (comp$w ?v0) ?v1)) (fun_app$ct (comp$w ?v2) ?v3)) (fun_app$cr (comp$v (fun_app$cs (map_prod$k ?v0) ?v2)) (fun_app$ba (map_prod$a ?v1) ?v3))) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$) (?v2 B_tree_a_b_fun_sum_b_tree_fun$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$)) (= (fun_app$ba (map_prod$a (fun_app$cv (comp$z ?v0) ?v1)) (fun_app$cv (comp$z ?v2) ?v3)) (fun_app$cu (comp$y (fun_app$ba (map_prod$a ?v0) ?v2)) (fun_app$bz (map_prod$b ?v1) ?v3))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_b_fun$) (?v2 A_a_fun$) (?v3 A_a_fun$) (?v4 A_a_prod$)) (= (fun_app$cf (map_prod$g ?v0 ?v1) (fun_app$cg (map_prod$h ?v2 ?v3) ?v4)) (fun_app$cf (map_prod$g (fun_app$v (comp$b ?v0) ?v2) (fun_app$v (comp$b ?v1) ?v3)) ?v4)) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_tree_b_tree_prod_b_tree_b_tree_prod_fun$) (?v2 B_b_fun$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$) (?v4 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (= (fun_app$cm (map_prod$j ?v0 ?v1) (fun_app$az (map_prod$ ?v2 ?v3) ?v4)) (fun_app$az (map_prod$ (fun_app$t (comp$a ?v0) ?v2) (fun_app$cr (comp$v ?v1) ?v3)) ?v4)) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 B_tree_b_tree_fun$) (?v2 B_tree_a_b_fun_sum_b_tree_fun$) (?v3 B_tree_a_b_fun_sum_b_tree_fun$) (?v4 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (= (fun_app$ax (fun_app$cs (map_prod$k ?v0) ?v1) (fun_app$am (fun_app$ba (map_prod$a ?v2) ?v3) ?v4)) (fun_app$am (fun_app$ba (map_prod$a (fun_app$ct (comp$w ?v0) ?v2)) (fun_app$ct (comp$w ?v1) ?v3)) ?v4)) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$) (?v2 B_b_fun$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$) (?v4 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (= (fun_app$az (map_prod$ ?v0 ?v1) (fun_app$cd (map_prod$e ?v2 ?v3) ?v4)) (fun_app$az (map_prod$ (fun_app$t (comp$a ?v0) ?v2) (fun_app$cu (comp$y ?v1) ?v3)) ?v4)) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_fun$) (?v2 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$) (?v4 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (= (fun_app$am (fun_app$ba (map_prod$a ?v0) ?v1) (fun_app$ay (fun_app$bz (map_prod$b ?v2) ?v3) ?v4)) (fun_app$am (fun_app$ba (map_prod$a (fun_app$cv (comp$z ?v0) ?v2)) (fun_app$cv (comp$z ?v1) ?v3)) ?v4)) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_b_fun$) (?v2 A_a_fun$) (?v3 A_a_fun$) (?v4 A_a_prod$)) (= (fun_app$cf (map_prod$g ?v0 ?v1) (fun_app$cg (map_prod$h ?v2 ?v3) ?v4)) (fun_app$cf (map_prod$g (fun_app$v (comp$b ?v0) ?v2) (fun_app$v (comp$b ?v1) ?v3)) ?v4)) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_tree_b_tree_prod_b_tree_b_tree_prod_fun$) (?v2 B_b_fun$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$) (?v4 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (= (fun_app$cm (map_prod$j ?v0 ?v1) (fun_app$az (map_prod$ ?v2 ?v3) ?v4)) (fun_app$az (map_prod$ (fun_app$t (comp$a ?v0) ?v2) (fun_app$cr (comp$v ?v1) ?v3)) ?v4)) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 B_tree_b_tree_fun$) (?v2 B_tree_a_b_fun_sum_b_tree_fun$) (?v3 B_tree_a_b_fun_sum_b_tree_fun$) (?v4 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (= (fun_app$ax (fun_app$cs (map_prod$k ?v0) ?v1) (fun_app$am (fun_app$ba (map_prod$a ?v2) ?v3) ?v4)) (fun_app$am (fun_app$ba (map_prod$a (fun_app$ct (comp$w ?v0) ?v2)) (fun_app$ct (comp$w ?v1) ?v3)) ?v4)) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$) (?v2 B_b_fun$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$) (?v4 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (= (fun_app$az (map_prod$ ?v0 ?v1) (fun_app$cd (map_prod$e ?v2 ?v3) ?v4)) (fun_app$az (map_prod$ (fun_app$t (comp$a ?v0) ?v2) (fun_app$cu (comp$y ?v1) ?v3)) ?v4)) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_fun$) (?v2 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$) (?v4 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (= (fun_app$am (fun_app$ba (map_prod$a ?v0) ?v1) (fun_app$ay (fun_app$bz (map_prod$b ?v2) ?v3) ?v4)) (fun_app$am (fun_app$ba (map_prod$a (fun_app$cv (comp$z ?v0) ?v2)) (fun_app$cv (comp$z ?v1) ?v3)) ?v4)) ))
+(assert (= (map_prod$f id$ id$) id$o))
+(assert (= (map_prod$l id$ id$a) id$q))
+(assert (= (map_prod$m id$a id$) id$r))
+(assert (= (fun_app$cs (map_prod$k id$a) id$a) id$s))
+(assert (forall ((?v0 B_b_prod$)) (= (fun_app$ce (map_prod$f id$ id$) ?v0) ?v0) ))
+(assert (forall ((?v0 B_b_tree_prod$)) (= (fun_app$cw (map_prod$l id$ id$a) ?v0) ?v0) ))
+(assert (forall ((?v0 B_tree_b_prod$)) (= (fun_app$cx (map_prod$m id$a id$) ?v0) ?v0) ))
+(assert (forall ((?v0 B_tree_b_tree_prod$)) (= (fun_app$ax (fun_app$cs (map_prod$k id$a) id$a) ?v0) ?v0) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 A_b_fun_b_tree_fun$) (?v2 A_b_fun$)) (! (= (fun_app$w (fun_app$bb (case_sum$ ?v0) ?v1) (inr$ ?v2)) (fun_app$c ?v1 ?v2)) :pattern ((fun_app$w (fun_app$bb (case_sum$ ?v0) ?v1) (inr$ ?v2))))))
+(assert (forall ((?v0 B$) (?v1 B_tree$) (?v2 B_tree$)) (! (= (node$ ?v0 ?v1 ?v2) (ctor_tree$ (id_bnf$a (pair$a ?v0 (pair$ ?v1 ?v2))))) :pattern ((node$ ?v0 ?v1 ?v2)))))
+(assert (forall ((?v0 A$) (?v1 A_tree$) (?v2 A_tree$)) (! (= (node$a ?v0 ?v1 ?v2) (ctor_tree$a (id_bnf$b (pair$e ?v0 (pair$d ?v1 ?v2))))) :pattern ((node$a ?v0 ?v1 ?v2)))))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 A_b_fun_b_tree_fun$)) (= (fun_app$cy (comp$aa (fun_app$bb (case_sum$ ?v0) ?v1)) uun$) ?v1) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$) (?v2 A_a_fun$)) (= (comp$j ?v0 (fun_app$cl (case_sum$e ?v1) ?v2)) (case_sum$d (fun_app$v (comp$b ?v0) ?v1) (fun_app$v (comp$b ?v0) ?v2))) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 B_tree_b_tree_fun$) (?v2 A_b_fun_b_tree_fun$)) (= (fun_app$ct (comp$w ?v0) (fun_app$bb (case_sum$ ?v1) ?v2)) (fun_app$bb (case_sum$ (fun_app$s (comp$ ?v0) ?v1)) (fun_app$ah (comp$ab ?v0) ?v2))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$) (?v2 A_bool_fun$) (?v3 A_a_tree_fun$) (?v4 A_a_fun$) (?v5 A_bool_fun$) (?v6 A_a_tree_fun$) (?v7 A_a_fun$)) (= (comp$ac (map_tree$ ?v0) (fun_app$cz (fun_app$da (fun_app$db (fun_app$dc (fun_app$dd (fun_app$de (corec_tree$ ?v1) ?v2) ?v3) ?v4) ?v5) ?v6) ?v7)) (corec_tree$a (fun_app$v (comp$b ?v0) ?v1) ?v2 (comp$ac (map_tree$ ?v0) ?v3) ?v4 ?v5 (comp$ac (map_tree$ ?v0) ?v6) ?v7)) ))
+(assert (forall ((?v0 B_tree_bool_fun$) (?v1 A_b_fun_bool_fun$) (?v2 B_tree_a_b_fun_sum$) (?v3 B_tree_bool_fun$) (?v4 B_tree_b_tree_fun$) (?v5 A_b_fun_b_tree_fun$)) (=> (and (fun_app$ad (fun_app$df (case_sum$f ?v0) ?v1) ?v2) (and (forall ((?v6 B_tree$)) (=> (fun_app$dg ?v0 ?v6) (fun_app$dg ?v3 (fun_app$x ?v4 ?v6))) ) (forall ((?v6 A_b_fun$)) (=> (fun_app$au ?v1 ?v6) (fun_app$dg ?v3 (fun_app$c ?v5 ?v6))) ))) (fun_app$dg ?v3 (fun_app$w (fun_app$bb (case_sum$ ?v4) ?v5) ?v2))) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 A$) (?v2 A_a_fun$) (?v3 A_a_fun$) (?v4 A_b_fun$)) (= (fun_app$x (map_tree$a ?v0) (fun_app$c (fun_app$dh (fun_app$di (unfold_tree$ (uuo$ ?v1)) (uup$ ?v2)) (uup$ ?v3)) ?v4)) (fun_app$c (fun_app$dh (fun_app$di (unfold_tree$ (uuo$ ?v1)) (uup$ ?v2)) (uup$ ?v3)) (fun_app$u (comp$c ?v0) ?v4))) ))
+(assert (forall ((?v0 A_b_fun_b_fun$) (?v1 A_b_fun_bool_fun$) (?v2 A_b_fun_b_tree_fun$) (?v3 A_b_fun_a_b_fun_fun$) (?v4 A_b_fun_bool_fun$) (?v5 A_b_fun_b_tree_fun$) (?v6 A_b_fun_a_b_fun_fun$)) (= (fun_app$dh (fun_app$dj (fun_app$dk (fun_app$dl (fun_app$dm (fun_app$dn (corec_tree$b ?v0) ?v1) ?v2) ?v3) ?v4) ?v5) ?v6) (dtor_corec_tree$ (fun_app$ao (fun_app$ap (fun_app$aq (fun_app$ar (fun_app$as (fun_app$at (uuq$ ?v0) ?v1) ?v2) ?v3) ?v4) ?v5) ?v6))) ))
+(assert (forall ((?v0 B_tree$) (?v1 A_b_fun$)) (= (= (inl$ ?v0) (inr$ ?v1)) false) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 B_tree$)) (= (= (inr$ ?v0) (inl$ ?v1)) false) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 A_b_fun_b_tree_fun$)) (= (fun_app$do (comp$ad (fun_app$bb (case_sum$ ?v0) ?v1)) uur$) ?v0) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_bool_fun$)) (= (exists ((?v1 B_tree_a_b_fun_sum$)) (fun_app$ad ?v0 ?v1) ) (or (exists ((?v1 B_tree$)) (fun_app$ad ?v0 (inl$ ?v1)) ) (exists ((?v1 A_b_fun$)) (fun_app$ad ?v0 (inr$ ?v1)) ))) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_bool_fun$)) (= (forall ((?v1 B_tree_a_b_fun_sum$)) (fun_app$ad ?v0 ?v1) ) (and (forall ((?v1 B_tree$)) (fun_app$ad ?v0 (inl$ ?v1)) ) (forall ((?v1 A_b_fun$)) (fun_app$ad ?v0 (inr$ ?v1)) ))) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum$)) (=> (and (forall ((?v1 B_tree$)) (=> (= ?v0 (inl$ ?v1)) false) ) (forall ((?v1 A_b_fun$)) (=> (= ?v0 (inr$ ?v1)) false) )) false) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum$)) (=> (and (forall ((?v1 B_tree$)) (=> (= ?v0 (inl$ ?v1)) false) ) (forall ((?v1 A_b_fun$)) (=> (= ?v0 (inr$ ?v1)) false) )) false) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 B_tree$)) (not (= (inr$ ?v0) (inl$ ?v1))) ))
+(assert (forall ((?v0 B_tree$) (?v1 A_b_fun$)) (not (= (inl$ ?v0) (inr$ ?v1))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 B_tree$)) (not (= (inr$ ?v0) (inl$ ?v1))) ))
+(assert (forall ((?v0 B_tree$) (?v1 A_b_fun$)) (not (= (inl$ ?v0) (inr$ ?v1))) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 A_b_fun_b_tree_fun$) (?v2 B_tree$)) (! (= (fun_app$w (fun_app$bb (case_sum$ ?v0) ?v1) (inl$ ?v2)) (fun_app$x ?v0 ?v2)) :pattern ((fun_app$w (fun_app$bb (case_sum$ ?v0) ?v1) (inl$ ?v2))))))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 A_b_fun_b_tree_fun$) (?v2 Bool) (?v3 B_tree$) (?v4 A_b_fun$)) (= (fun_app$w (fun_app$bb (case_sum$ ?v0) ?v1) (ite ?v2 (inl$ ?v3) (inr$ ?v4))) (ite ?v2 (fun_app$x ?v0 ?v3) (fun_app$c ?v1 ?v4))) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_fun$)) (= (fun_app$bb (case_sum$ (uus$ ?v0)) (uut$ ?v0)) ?v0) ))
+(assert (forall ((?v0 B_tree$)) (= (ctor_tree$ (fun_app$bc dtor_tree$ ?v0)) ?v0) ))
+(assert (forall ((?v0 B_b_tree_b_tree_prod_prod$)) (= (fun_app$bc dtor_tree$ (ctor_tree$ ?v0)) ?v0) ))
+(assert (forall ((?v0 A_a_fun$) (?v1 A_a_fun$) (?v2 A_a_fun$) (?v3 A_a_fun$) (?v4 A_b_fun$) (?v5 A_b_fun$)) (=> (and (= (fun_app$bh (comp$e ?v0) ?v1) (fun_app$bh (comp$e ?v2) ?v3)) (= (fun_app$v (comp$b ?v4) ?v2) ?v5)) (= (fun_app$v (comp$b (fun_app$v (comp$b ?v4) ?v0)) ?v1) (fun_app$v (comp$b ?v5) ?v3))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$) (?v2 A_b_fun$) (?v3 A_a_fun$) (?v4 B_b_fun$) (?v5 A_b_fun$)) (=> (and (= (fun_app$v (comp$b ?v0) ?v1) (fun_app$v (comp$b ?v2) ?v3)) (= (fun_app$u (comp$c ?v4) ?v2) ?v5)) (= (fun_app$v (comp$b (fun_app$u (comp$c ?v4) ?v0)) ?v1) (fun_app$v (comp$b ?v5) ?v3))) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 A_b_fun$) (?v2 A_b_fun$) (?v3 A_a_fun$) (?v4 A_a_fun$) (?v5 A_a_fun$)) (=> (and (= (fun_app$u (comp$c ?v0) ?v1) (fun_app$v (comp$b ?v2) ?v3)) (= (fun_app$bh (comp$e ?v3) ?v4) ?v5)) (= (fun_app$u (comp$c ?v0) (fun_app$v (comp$b ?v1) ?v4)) (fun_app$v (comp$b ?v2) ?v5))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$) (?v2 B_b_fun$) (?v3 A_b_fun$) (?v4 A_a_fun$) (?v5 A_b_fun$)) (=> (and (= (fun_app$v (comp$b ?v0) ?v1) (fun_app$u (comp$c ?v2) ?v3)) (= (fun_app$v (comp$b ?v3) ?v4) ?v5)) (= (fun_app$v (comp$b ?v0) (fun_app$bh (comp$e ?v1) ?v4)) (fun_app$u (comp$c ?v2) ?v5))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$) (?v2 A_b_fun$) (?v3 A_a_fun$) (?v4 A_a_fun$) (?v5 A_a_fun$)) (=> (and (= (fun_app$v (comp$b ?v0) ?v1) (fun_app$v (comp$b ?v2) ?v3)) (= (fun_app$bh (comp$e ?v3) ?v4) ?v5)) (= (fun_app$v (comp$b ?v0) (fun_app$bh (comp$e ?v1) ?v4)) (fun_app$v (comp$b ?v2) ?v5))) ))
+(assert (forall ((?v0 A_a_fun$) (?v1 A_a_fun$) (?v2 A_a_fun$) (?v3 A_b_fun$)) (=> (= (fun_app$bh (comp$e ?v0) ?v1) ?v2) (= (fun_app$v (comp$b (fun_app$v (comp$b ?v3) ?v0)) ?v1) (fun_app$v (comp$b ?v3) ?v2))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$) (?v2 A_b_fun$) (?v3 B_b_fun$)) (=> (= (fun_app$v (comp$b ?v0) ?v1) ?v2) (= (fun_app$v (comp$b (fun_app$u (comp$c ?v3) ?v0)) ?v1) (fun_app$u (comp$c ?v3) ?v2))) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 A_b_fun$) (?v2 A_b_fun$) (?v3 A_a_fun$)) (=> (= (fun_app$u (comp$c ?v0) ?v1) ?v2) (= (fun_app$u (comp$c ?v0) (fun_app$v (comp$b ?v1) ?v3)) (fun_app$v (comp$b ?v2) ?v3))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$) (?v2 A_b_fun$) (?v3 A_a_fun$)) (=> (= (fun_app$v (comp$b ?v0) ?v1) ?v2) (= (fun_app$v (comp$b ?v0) (fun_app$bh (comp$e ?v1) ?v3)) (fun_app$v (comp$b ?v2) ?v3))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$) (?v2 A$) (?v3 A_b_fun$) (?v4 A_a_fun$)) (=> (= (fun_app$ac ?v0 (fun_app$aw ?v1 ?v2)) (fun_app$ac ?v3 (fun_app$aw ?v4 ?v2))) (= (fun_app$ac (fun_app$v (comp$b ?v0) ?v1) ?v2) (fun_app$ac (fun_app$v (comp$b ?v3) ?v4) ?v2))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$) (?v2 A_a_fun$) (?v3 A_a_fun$) (?v4 A$)) (= (fun_app$d (map_tree$ ?v0) (fun_app$dp (fun_app$cz (fun_app$dq (unfold_tree$a ?v1) ?v2) ?v3) ?v4)) (unfold_tree$b (fun_app$v (comp$b ?v0) ?v1) ?v2 ?v3 ?v4)) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_fun$) (?v1 B_tree_b_tree_fun$) (?v2 A_b_fun_b_tree_fun$)) (=> (= (fun_app$do (comp$ad ?v0) uur$) ?v1) (= (= ?v2 (fun_app$cy (comp$aa ?v0) uun$)) (= (fun_app$bb (case_sum$ ?v1) ?v2) ?v0))) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_fun$) (?v1 B_tree_b_tree_fun$) (?v2 B_tree_a_b_fun_sum$)) (=> (= (fun_app$do (comp$ad ?v0) uur$) ?v1) (= (fun_app$w ?v0 ?v2) (fun_app$w (fun_app$bb (case_sum$ ?v1) (fun_app$cy (comp$aa ?v0) uun$)) ?v2))) ))
+(assert (forall ((?v0 A_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$) (?v1 A_b_fun$)) (= (fun_app$bc dtor_tree$ (fun_app$c (dtor_corec_tree$ ?v0) ?v1)) (fun_app$az (map_pre_tree$ id$ (fun_app$bb (case_sum$ id$a) (dtor_corec_tree$ ?v0))) (fun_app$an ?v0 ?v1))) ))
+(assert (forall ((?v0 A_b_fun_b_tree_fun$) (?v1 A_b_fun_b_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_fun$)) (=> (= (comp$ae (map_pre_tree$ id$ (fun_app$bb (case_sum$ id$a) ?v0)) ?v1) (comp$af dtor_tree$ ?v0)) (= ?v0 (dtor_corec_tree$ ?v1))) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum$)) (=> (and (forall ((?v1 B_tree$)) (=> (= ?v0 (inl$ ?v1)) false) ) (forall ((?v1 A_b_fun$)) (=> (= ?v0 (inr$ ?v1)) false) )) false) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) (?v1 B$)) (= (swap$ (pair$h ?v0 ?v1)) (pair$c ?v1 ?v0)) ))
+(assert (forall ((?v0 B$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (= (swap$a (pair$c ?v0 ?v1)) (pair$h ?v1 ?v0)) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum$) (?v1 B_tree_a_b_fun_sum$)) (= (swap$b (pair$b ?v0 ?v1)) (pair$b ?v1 ?v0)) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$) (?v2 A_b_fun$) (?v3 A_a_fun$)) (= (map_pre_tree$a (fun_app$v (comp$b ?v0) ?v1) (fun_app$v (comp$b ?v2) ?v3)) (comp$ag (map_pre_tree$a ?v0 ?v2) (map_pre_tree$b ?v1 ?v3))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_b_fun$) (?v2 A_a_fun$) (?v3 A_a_fun$) (?v4 A_a_a_prod_prod$)) (= (fun_app$dr (map_pre_tree$a ?v0 ?v1) (fun_app$ds (map_pre_tree$b ?v2 ?v3) ?v4)) (fun_app$dr (map_pre_tree$a (fun_app$v (comp$b ?v0) ?v2) (fun_app$v (comp$b ?v1) ?v3)) ?v4)) ))
+(assert (= (map_pre_tree$c id$ id$) id$t))
+(assert (= (map_pre_tree$d id$ id$a) id$m))
+(assert (= (map_pre_tree$e id$a id$) id$u))
+(assert (= (map_pre_tree$f id$a id$a) id$v))
+(assert (forall ((?v0 B_b_b_prod_prod$)) (= (fun_app$dt (map_pre_tree$c id$ id$) ?v0) ?v0) ))
+(assert (forall ((?v0 B_b_tree_b_tree_prod_prod$)) (= (fun_app$cm (map_pre_tree$d id$ id$a) ?v0) ?v0) ))
+(assert (forall ((?v0 B_tree_b_b_prod_prod$)) (= (fun_app$du (map_pre_tree$e id$a id$) ?v0) ?v0) ))
+(assert (forall ((?v0 B_tree_b_tree_b_tree_prod_prod$)) (= (fun_app$dv (map_pre_tree$f id$a id$a) ?v0) ?v0) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_b_fun$)) (=> (not (= ?v0 ?v1)) (not (= (inr$ ?v0) (inr$ ?v1)))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 B_a_b_b_prod_prod_fun$)) (= (fun_app$dw (comp$ah (map_tree$ ?v0)) (dtor_unfold_tree$ ?v1)) (dtor_unfold_tree$a (comp$ai (map_pre_tree$g ?v0 id$) ?v1))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 B_tree_a_b_tree_b_tree_prod_prod_fun$)) (= (fun_app$bt (comp$q (map_tree$ ?v0)) (dtor_unfold_tree$b ?v1)) (dtor_unfold_tree$c (comp$aj (map_pre_tree$h ?v0 id$a) ?v1))) ))
+(assert (forall ((?v0 A_a_fun$) (?v1 B_a_b_b_prod_prod_fun$)) (= (comp$ak (map_tree$c ?v0) (dtor_unfold_tree$ ?v1)) (dtor_unfold_tree$ (fun_app$dx (comp$al (map_pre_tree$i ?v0 id$)) ?v1))) ))
+(assert (forall ((?v0 A_a_fun$) (?v1 B_tree_a_b_tree_b_tree_prod_prod_fun$)) (= (comp$o (map_tree$c ?v0) (dtor_unfold_tree$b ?v1)) (dtor_unfold_tree$b (fun_app$dy (comp$am (map_pre_tree$j ?v0 id$a)) ?v1))) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_b_fun$) (?v2 B$)) (= (fun_app$dz (fun_app$ea (tree_recurse$ ?v0) ?v1) ?v2) (unfold_tree$c (uuu$ ?v2) (uuv$ ?v0) (uuv$ ?v1) id$)) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 B_tree_b_tree_fun$) (?v2 B_tree$)) (= (tree_recurse$a ?v0 ?v1 ?v2) (unfold_tree$d (uuw$ ?v2) (uux$ ?v0) (uux$ ?v1) id$a)) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_b_fun$) (?v2 B$)) (= (comp$an (map_prod$f ?v0 id$) (convol$ id$ ?v1) ?v2) (fun_app$b (convol$ (fun_app$t (comp$a id$) ?v0) ?v1) ?v2)) ))
+(assert (forall ((?v0 B_b_tree_fun$) (?v1 B_b_fun$) (?v2 B$)) (= (comp$ao (map_prod$n ?v0 id$) (convol$ id$ ?v1) ?v2) (convol$a (fun_app$eb (comp$ap id$a) ?v0) ?v1 ?v2)) ))
+(assert (forall ((?v0 B_tree_b_fun$) (?v1 B_tree_b_fun$) (?v2 B_tree$)) (= (comp$aq (map_prod$o ?v0 id$) (convol$b id$a ?v1) ?v2) (convol$c (fun_app$ec (comp$ar id$) ?v0) ?v1 ?v2)) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 B_tree_b_fun$) (?v2 B_tree$)) (= (comp$as (map_prod$m ?v0 id$) (convol$b id$a ?v1) ?v2) (fun_app$ed (convol$b (fun_app$s (comp$ id$a) ?v0) ?v1) ?v2)) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_b_tree_fun$) (?v2 B$)) (= (comp$at (map_prod$l ?v0 id$a) (convol$d id$ ?v1) ?v2) (fun_app$ee (convol$d (fun_app$t (comp$a id$) ?v0) ?v1) ?v2)) ))
+(assert (forall ((?v0 B_b_tree_fun$) (?v1 B_b_tree_fun$) (?v2 B$)) (= (comp$au (map_prod$p ?v0 id$a) (convol$d id$ ?v1) ?v2) (convol$e (fun_app$eb (comp$ap id$a) ?v0) ?v1 ?v2)) ))
+(assert (forall ((?v0 B_tree_b_fun$) (?v1 B_tree_b_tree_fun$) (?v2 B_tree$)) (= (comp$av (map_prod$q ?v0 id$a) (convol$f id$a ?v1) ?v2) (convol$g (fun_app$ec (comp$ar id$) ?v0) ?v1 ?v2)) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 B_tree_b_tree_fun$) (?v2 B_tree$)) (= (comp$aw (fun_app$cs (map_prod$k ?v0) id$a) (convol$f id$a ?v1) ?v2) (fun_app$ (convol$f (fun_app$s (comp$ id$a) ?v0) ?v1) ?v2)) ))
+(assert (forall ((?v0 A_a_fun$) (?v1 A_tree$)) (= (fun_app$bd dtor_tree$a (fun_app$bf (map_tree$c ?v0) ?v1)) (fun_app$ef (map_pre_tree$k ?v0 (map_tree$c ?v0)) (fun_app$bd dtor_tree$a ?v1))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_tree$)) (= (fun_app$bc dtor_tree$ (fun_app$d (map_tree$ ?v0) ?v1)) (fun_app$eg (map_pre_tree$l ?v0 (map_tree$ ?v0)) (fun_app$bd dtor_tree$a ?v1))) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_tree$)) (= (fun_app$bc dtor_tree$ (fun_app$x (map_tree$a ?v0) ?v1)) (fun_app$cm (map_pre_tree$d ?v0 (map_tree$a ?v0)) (fun_app$bc dtor_tree$ ?v1))) ))
+(assert (forall ((?v0 A_tree_a_tree_fun$) (?v1 A_a_fun$)) (=> (= (comp$ax dtor_tree$a ?v0) (comp$ay (map_pre_tree$k ?v1 ?v0) dtor_tree$a)) (= ?v0 (map_tree$c ?v1))) ))
+(assert (forall ((?v0 A_tree_b_tree_fun$) (?v1 A_b_fun$)) (=> (= (comp$az dtor_tree$ ?v0) (comp$ba (map_pre_tree$l ?v1 ?v0) dtor_tree$a)) (= ?v0 (map_tree$ ?v1))) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 B_b_fun$)) (=> (= (comp$bb dtor_tree$ ?v0) (comp$bc (map_pre_tree$d ?v1 ?v0) dtor_tree$)) (= ?v0 (map_tree$a ?v1))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_b_fun$) (?v2 A_a_fun$)) (= (fun_app$bm (comp$i (fun_app$eh (convol$h ?v0) ?v1)) ?v2) (fun_app$eh (convol$h (fun_app$v (comp$b ?v0) ?v2)) (fun_app$v (comp$b ?v1) ?v2))) ))
+(assert (forall ((?v0 A_a_fun$) (?v1 A_a_fun$) (?v2 A$)) (! (= (fun_app$dp (fun_app$cz (tree_recurse$b ?v0) ?v1) ?v2) (node$a ?v2 (fun_app$bf (map_tree$c ?v0) (fun_app$dp (fun_app$cz (tree_recurse$b ?v0) ?v1) ?v2)) (fun_app$bf (map_tree$c ?v1) (fun_app$dp (fun_app$cz (tree_recurse$b ?v0) ?v1) ?v2)))) :pattern ((fun_app$dp (fun_app$cz (tree_recurse$b ?v0) ?v1) ?v2)))))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_b_fun$) (?v2 A_a_fun$) (?v3 A_a_fun$)) (= (fun_app$ei (comp$bd (map_prod$g ?v0 ?v1)) (convol$i ?v2 ?v3)) (fun_app$eh (convol$h (fun_app$v (comp$b ?v0) ?v2)) (fun_app$v (comp$b ?v1) ?v3))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 B_a_a_tree_b_sum_a_tree_b_sum_prod_prod_fun$)) (= (fun_app$dw (comp$ah (map_tree$ ?v0)) (dtor_corec_tree$a ?v1)) (dtor_corec_tree$b (comp$be (map_pre_tree$m ?v0 (map_sum$ (map_tree$ ?v0) id$)) ?v1))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 B_tree_a_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_fun$)) (= (fun_app$bt (comp$q (map_tree$ ?v0)) (dtor_corec_tree$c ?v1)) (dtor_corec_tree$d (comp$bf (map_pre_tree$n ?v0 (map_sum$a (map_tree$ ?v0) id$a)) ?v1))) ))
+(assert (forall ((?v0 A_a_fun$) (?v1 B_a_a_tree_b_sum_a_tree_b_sum_prod_prod_fun$)) (= (comp$ak (map_tree$c ?v0) (dtor_corec_tree$a ?v1)) (dtor_corec_tree$a (fun_app$ej (comp$bg (map_pre_tree$o ?v0 (map_sum$b (map_tree$c ?v0) id$))) ?v1))) ))
+(assert (forall ((?v0 A_a_fun$) (?v1 B_tree_a_a_tree_b_tree_sum_a_tree_b_tree_sum_prod_prod_fun$)) (= (comp$o (map_tree$c ?v0) (dtor_corec_tree$c ?v1)) (dtor_corec_tree$c (fun_app$ek (comp$bh (map_pre_tree$p ?v0 (map_sum$c (map_tree$c ?v0) id$a))) ?v1))) ))
+(assert (forall ((?v0 B$) (?v1 A_a_fun$) (?v2 A$)) (= (fun_app$ac (fun_app$v (comp$b (uue$ ?v0)) ?v1) ?v2) ?v0) ))
+(assert (forall ((?v0 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_set$) (?v1 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_set$)) (= (= (uuy$ ?v0) (uuy$ ?v1)) (= ?v0 ?v1)) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_set$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_set$)) (= (= (uuz$ ?v0) (uuz$ ?v1)) (= ?v0 ?v1)) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_b_fun$) (?v2 A_a_fun$) (?v3 A_a_fun$)) (= (comp$bi (map_sum$d ?v0 ?v1) (map_sum$e ?v2 ?v3)) (map_sum$d (fun_app$v (comp$b ?v0) ?v2) (fun_app$v (comp$b ?v1) ?v3))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_b_fun$) (?v2 A_a_fun$) (?v3 A_a_fun$) (?v4 A_a_sum$)) (= (fun_app$el (map_sum$d ?v0 ?v1) (fun_app$em (map_sum$e ?v2 ?v3) ?v4)) (fun_app$el (map_sum$d (fun_app$v (comp$b ?v0) ?v2) (fun_app$v (comp$b ?v1) ?v3)) ?v4)) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_b_fun$) (?v2 A_a_fun$) (?v3 A_a_fun$) (?v4 A_a_sum$)) (= (fun_app$el (map_sum$d ?v0 ?v1) (fun_app$em (map_sum$e ?v2 ?v3) ?v4)) (fun_app$el (map_sum$d (fun_app$v (comp$b ?v0) ?v2) (fun_app$v (comp$b ?v1) ?v3)) ?v4)) ))
+(assert (= (map_sum$f id$ id$) id$b))
+(assert (= (map_sum$g id$ id$a) id$w))
+(assert (= (map_sum$h id$a id$) id$x))
+(assert (= (map_sum$i id$a id$a) id$y))
+(assert (forall ((?v0 B_b_sum$)) (= (fun_app$cn (map_sum$f id$ id$) ?v0) ?v0) ))
+(assert (forall ((?v0 B_b_tree_sum$)) (= (fun_app$en (map_sum$g id$ id$a) ?v0) ?v0) ))
+(assert (forall ((?v0 B_tree_b_sum$)) (= (fun_app$eo (map_sum$h id$a id$) ?v0) ?v0) ))
+(assert (forall ((?v0 B_tree_b_tree_sum$)) (= (fun_app$ep (map_sum$i id$a id$a) ?v0) ?v0) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 A_b_fun_a_b_fun_fun$) (?v2 Bool) (?v3 A_b_fun$) (?v4 B_tree_a_b_fun_sum$)) (= (fun_app$ca (fun_app$eq (map_sum$j ?v0) ?v1) (ite ?v2 (inr$ ?v3) ?v4)) (ite ?v2 (inr$ (fun_app$u ?v1 ?v3)) (fun_app$ca (fun_app$eq (map_sum$j ?v0) ?v1) ?v4))) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 A_b_fun_a_b_fun_fun$) (?v2 Bool) (?v3 B_tree_a_b_fun_sum$) (?v4 A_b_fun$)) (= (fun_app$ca (fun_app$eq (map_sum$j ?v0) ?v1) (ite ?v2 ?v3 (inr$ ?v4))) (ite ?v2 (fun_app$ca (fun_app$eq (map_sum$j ?v0) ?v1) ?v3) (inr$ (fun_app$u ?v1 ?v4)))) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 A_b_fun_a_b_fun_fun$)) (= (comp$bj (fun_app$eq (map_sum$j ?v0) ?v1) uun$) (comp$bk uun$ ?v1)) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 A_b_fun_a_b_fun_fun$) (?v2 A_b_fun$)) (! (= (fun_app$ca (fun_app$eq (map_sum$j ?v0) ?v1) (inr$ ?v2)) (inr$ (fun_app$u ?v1 ?v2))) :pattern ((fun_app$ca (fun_app$eq (map_sum$j ?v0) ?v1) (inr$ ?v2))))))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_b_fun$) (?v2 A_a_fun$) (?v3 A_a_fun$)) (= (comp$bl (case_sum$d ?v0 ?v1) (map_sum$e ?v2 ?v3)) (case_sum$d (fun_app$v (comp$b ?v0) ?v2) (fun_app$v (comp$b ?v1) ?v3))) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 A_b_fun_b_tree_fun$) (?v2 B_tree_b_tree_fun$) (?v3 A_b_fun_a_b_fun_fun$)) (= (fun_app$cv (comp$z (fun_app$bb (case_sum$ ?v0) ?v1)) (fun_app$eq (map_sum$j ?v2) ?v3)) (fun_app$bb (case_sum$ (fun_app$s (comp$ ?v0) ?v2)) (fun_app$dh (comp$bm ?v1) ?v3))) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_b_fun$) (?v2 A_a_fun$) (?v3 A_a_fun$) (?v4 A_a_sum$)) (= (fun_app$cj (case_sum$d ?v0 ?v1) (fun_app$em (map_sum$e ?v2 ?v3) ?v4)) (fun_app$cj (case_sum$d (fun_app$v (comp$b ?v0) ?v2) (fun_app$v (comp$b ?v1) ?v3)) ?v4)) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 A_b_fun_b_tree_fun$) (?v2 B_tree_b_tree_fun$) (?v3 A_b_fun_a_b_fun_fun$) (?v4 B_tree_a_b_fun_sum$)) (= (fun_app$w (fun_app$bb (case_sum$ ?v0) ?v1) (fun_app$ca (fun_app$eq (map_sum$j ?v2) ?v3) ?v4)) (fun_app$w (fun_app$bb (case_sum$ (fun_app$s (comp$ ?v0) ?v2)) (fun_app$dh (comp$bm ?v1) ?v3)) ?v4)) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_b_fun$) (?v2 B_b_sum$)) (= (comp$bn (case_sum$a id$ ?v0) (map_sum$f ?v1 id$) ?v2) (fun_app$ci (case_sum$a (fun_app$t (comp$a ?v1) id$) ?v0) ?v2)) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 A_b_fun$) (?v2 A_b_sum$)) (= (comp$bo (case_sum$a id$ ?v0) (map_sum$k ?v1 id$) ?v2) (case_sum$c (fun_app$v (comp$b ?v1) id$f) ?v0 ?v2)) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_tree_b_fun$) (?v2 B_tree_b_sum$)) (= (comp$bp (case_sum$a id$ ?v0) (map_sum$l ?v1 id$) ?v2) (case_sum$g (fun_app$er (comp$bq ?v1) id$a) ?v0 ?v2)) ))
+(assert (forall ((?v0 B_tree_b_fun$) (?v1 B_b_fun$) (?v2 B_b_tree_sum$)) (= (comp$br (case_sum$h id$ ?v0) (map_sum$g ?v1 id$a) ?v2) (fun_app$es (case_sum$h (fun_app$t (comp$a ?v1) id$) ?v0) ?v2)) ))
+(assert (forall ((?v0 B_b_tree_fun$) (?v1 B_b_tree_fun$) (?v2 B_b_sum$)) (= (comp$bs (case_sum$i id$a ?v0) (map_sum$m ?v1 id$) ?v2) (case_sum$j (fun_app$ea (comp$bt ?v1) id$) ?v0 ?v2)) ))
+(assert (forall ((?v0 B_tree_b_fun$) (?v1 A_b_fun$) (?v2 A_b_tree_sum$)) (= (comp$bu (case_sum$h id$ ?v0) (map_sum$n ?v1 id$a) ?v2) (case_sum$b (fun_app$v (comp$b ?v1) id$f) ?v0 ?v2)) ))
+(assert (forall ((?v0 B_tree_b_fun$) (?v1 B_tree_b_fun$) (?v2 B_tree_b_tree_sum$)) (= (comp$bv (case_sum$h id$ ?v0) (map_sum$o ?v1 id$a) ?v2) (case_sum$k (fun_app$er (comp$bq ?v1) id$a) ?v0 ?v2)) ))
+(assert (forall ((?v0 B_b_tree_fun$) (?v1 B_tree_b_tree_fun$) (?v2 B_tree_b_sum$)) (= (comp$bw (case_sum$i id$a ?v0) (map_sum$h ?v1 id$) ?v2) (fun_app$et (case_sum$i (fun_app$s (comp$ ?v1) id$a) ?v0) ?v2)) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 B_b_tree_fun$) (?v2 B_b_tree_sum$)) (= (comp$bx (case_sum$l id$a ?v0) (map_sum$p ?v1 id$a) ?v2) (case_sum$m (fun_app$ea (comp$bt ?v1) id$) ?v0 ?v2)) ))
+(assert (forall ((?v0 B_tree_b_tree_fun$) (?v1 B_tree_b_tree_fun$) (?v2 B_tree_b_tree_sum$)) (= (comp$by (case_sum$l id$a ?v0) (map_sum$i ?v1 id$a) ?v2) (fun_app$eu (case_sum$l (fun_app$s (comp$ ?v1) id$a) ?v0) ?v2)) ))
+(assert (forall ((?v0 A_bool_fun$) (?v1 A$) (?v2 A_tree$) (?v3 A_tree$)) (! (= (pred_tree$ ?v0 (node$a ?v1 ?v2 ?v3)) (and (fun_app$ev ?v0 ?v1) (and (pred_tree$ ?v0 ?v2) (pred_tree$ ?v0 ?v3)))) :pattern ((pred_tree$ ?v0 (node$a ?v1 ?v2 ?v3))))))
+(assert (forall ((?v0 B_b_tree_b_tree_prod_prod$)) (! (= (id_bnf$a ?v0) ?v0) :pattern ((id_bnf$a ?v0)))))
+(assert (forall ((?v0 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (! (= (id_bnf$ ?v0) ?v0) :pattern ((id_bnf$ ?v0)))))
+(assert (forall ((?v0 B_b_fun$) (?v1 B$) (?v2 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (! (= (apfst$ ?v0 (pair$c ?v1 ?v2)) (pair$c (fun_app$aa ?v0 ?v1) ?v2)) :pattern ((apfst$ ?v0 (pair$c ?v1 ?v2))))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$) (?v1 B_tree_a_b_fun_sum$) (?v2 B_tree_a_b_fun_sum$)) (! (= (fun_app$ay (apfst$a ?v0) (pair$b ?v1 ?v2)) (pair$b (fun_app$ca ?v0 ?v1) ?v2)) :pattern ((fun_app$ay (apfst$a ?v0) (pair$b ?v1 ?v2))))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_fun$) (?v1 B$) (?v2 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (! (= (apsnd$ ?v0 (pair$c ?v1 ?v2)) (pair$c ?v1 (fun_app$ay ?v0 ?v2))) :pattern ((apsnd$ ?v0 (pair$c ?v1 ?v2))))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_fun$) (?v1 B_tree_a_b_fun_sum$) (?v2 B_tree_a_b_fun_sum$)) (! (= (fun_app$ay (apsnd$a ?v0) (pair$b ?v1 ?v2)) (pair$b ?v1 (fun_app$ca ?v0 ?v2))) :pattern ((fun_app$ay (apsnd$a ?v0) (pair$b ?v1 ?v2))))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$)) (! (= (apsnd$b ?v0) (map_prod$ id$ ?v0)) :pattern ((apsnd$b ?v0)))))
+(assert (forall ((?v0 A_a_fun$) (?v1 A_a_fun$) (?v2 A$) (?v3 A_a_fun$) (?v4 A_a_fun$) (?v5 A_b_fun$)) (=> (= (fun_app$aw ?v0 (fun_app$aw ?v1 ?v2)) (fun_app$aw ?v3 (fun_app$aw ?v4 ?v2))) (= (fun_app$ac (fun_app$v (comp$b (fun_app$v (comp$b ?v5) ?v0)) ?v1) ?v2) (fun_app$ac (fun_app$v (comp$b (fun_app$v (comp$b ?v5) ?v3)) ?v4) ?v2))) ))
+(assert (forall ((?v0 B_b_tree_b_tree_prod_prod$)) (! (= (id_bnf$a ?v0) ?v0) :pattern ((id_bnf$a ?v0)))))
+(assert (forall ((?v0 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (! (= (id_bnf$ ?v0) ?v0) :pattern ((id_bnf$ ?v0)))))
+(assert (forall ((?v0 B$) (?v1 B_b_fun$) (?v2 B$)) (=> (= ?v0 (fun_app$aa ?v1 ?v2)) (fun_app$ew (fun_app$ex (fun_app$ey (fun_app$ez (fun_app$fa (iso_tuple_update_accessor_eq_assist$ id$d) id$) ?v2) ?v1) ?v0) ?v2)) ))
+(assert (forall ((?v0 B_tree$) (?v1 B_tree_b_tree_fun$) (?v2 B_tree$)) (=> (= ?v0 (fun_app$x ?v1 ?v2)) (fun_app$dg (fun_app$fb (fun_app$fc (fun_app$fd (fun_app$fe (iso_tuple_update_accessor_eq_assist$a id$c) id$a) ?v2) ?v1) ?v0) ?v2)) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$) (?v2 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (= (fst$a (fun_app$az (map_prod$ ?v0 ?v1) ?v2)) (fun_app$aa ?v0 (fst$c ?v2))) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_fun$) (?v2 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (= (fst$ (fun_app$am (fun_app$ba (map_prod$a ?v0) ?v1) ?v2)) (fun_app$w ?v0 (fst$b ?v2))) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$) (?v2 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (= (snd$a (fun_app$az (map_prod$ ?v0 ?v1) ?v2)) (fun_app$am ?v1 (snd$c ?v2))) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_fun$) (?v2 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (= (snd$ (fun_app$am (fun_app$ba (map_prod$a ?v0) ?v1) ?v2)) (fun_app$w ?v1 (snd$b ?v2))) ))
+(assert (forall ((?v0 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (= (pair$c (fst$c ?v0) (snd$c ?v0)) ?v0) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (= (pair$b (fst$b ?v0) (snd$b ?v0)) ?v0) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$)) (= (comp$bz uva$ (map_prod$ ?v0 ?v1)) (comp$ca ?v0 uvb$)) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_fun$)) (= (comp$cb uvc$ (fun_app$ba (map_prod$a ?v0) ?v1)) (comp$cc ?v0 uvd$)) ))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$)) (= (comp$cd uve$ (map_prod$ ?v0 ?v1)) (comp$ce ?v1 uvf$)) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_fun$)) (= (comp$cb uvg$ (fun_app$ba (map_prod$a ?v0) ?v1)) (comp$cc ?v1 uvh$)) ))
+(assert (forall ((?v0 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (= ?v0 (pair$c (fst$c ?v0) (snd$c ?v0))) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (= ?v0 (pair$b (fst$b ?v0) (snd$b ?v0))) ))
+(assert (forall ((?v0 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (=> (=> (= ?v0 (pair$c (fst$c ?v0) (snd$c ?v0))) false) false) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (=> (=> (= ?v0 (pair$b (fst$b ?v0) (snd$b ?v0))) false) false) ))
+(assert (forall ((?v0 B_bool_fun$) (?v1 B$) (?v2 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_bool_fun$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (=> (and (fun_app$ew ?v0 ?v1) (fun_app$af ?v2 ?v3)) (and (fun_app$ew ?v0 (fst$c (pair$c ?v1 ?v3))) (fun_app$af ?v2 (snd$c (pair$c ?v1 ?v3))))) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_bool_fun$) (?v1 B_tree_a_b_fun_sum$) (?v2 B_tree_a_b_fun_sum_bool_fun$) (?v3 B_tree_a_b_fun_sum$)) (=> (and (fun_app$ad ?v0 ?v1) (fun_app$ad ?v2 ?v3)) (and (fun_app$ad ?v0 (fst$b (pair$b ?v1 ?v3))) (fun_app$ad ?v2 (snd$b (pair$b ?v1 ?v3))))) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_bool_fun_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) (?v2 B$)) (=> (fun_app$ew (fun_app$ff ?v0 ?v1) ?v2) (fun_app$ew (fun_app$ff ?v0 (snd$c (pair$c ?v2 ?v1))) (fst$c (pair$c ?v2 ?v1)))) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_bool_fun_fun$) (?v1 B_tree_a_b_fun_sum$) (?v2 B_tree_a_b_fun_sum$)) (=> (fun_app$ad (fun_app$ae ?v0 ?v1) ?v2) (fun_app$ad (fun_app$ae ?v0 (snd$b (pair$b ?v2 ?v1))) (fst$b (pair$b ?v2 ?v1)))) ))
+(assert (forall ((?v0 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$) (?v1 B$) (?v2 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (=> (= ?v0 (pair$c ?v1 ?v2)) (= (fst$c ?v0) ?v1)) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) (?v1 B_tree_a_b_fun_sum$) (?v2 B_tree_a_b_fun_sum$)) (=> (= ?v0 (pair$b ?v1 ?v2)) (= (fst$b ?v0) ?v1)) ))
+(assert (forall ((?v0 B$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (! (= (fst$c (pair$c ?v0 ?v1)) ?v0) :pattern ((pair$c ?v0 ?v1)))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum$) (?v1 B_tree_a_b_fun_sum$)) (! (= (fst$b (pair$b ?v0 ?v1)) ?v0) :pattern ((pair$b ?v0 ?v1)))))
+(assert (forall ((?v0 B$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) (?v2 B$)) (=> (= (fst$c (pair$c ?v0 ?v1)) ?v2) (= ?v0 ?v2)) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum$) (?v1 B_tree_a_b_fun_sum$) (?v2 B_tree_a_b_fun_sum$)) (=> (= (fst$b (pair$b ?v0 ?v1)) ?v2) (= ?v0 ?v2)) ))
+(assert (forall ((?v0 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$) (?v1 B$) (?v2 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (=> (= ?v0 (pair$c ?v1 ?v2)) (= (snd$c ?v0) ?v2)) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) (?v1 B_tree_a_b_fun_sum$) (?v2 B_tree_a_b_fun_sum$)) (=> (= ?v0 (pair$b ?v1 ?v2)) (= (snd$b ?v0) ?v2)) ))
+(assert (forall ((?v0 B$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (! (= (snd$c (pair$c ?v0 ?v1)) ?v1) :pattern ((pair$c ?v0 ?v1)))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum$) (?v1 B_tree_a_b_fun_sum$)) (! (= (snd$b (pair$b ?v0 ?v1)) ?v1) :pattern ((pair$b ?v0 ?v1)))))
+(assert (forall ((?v0 B$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) (?v2 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (=> (= (snd$c (pair$c ?v0 ?v1)) ?v2) (= ?v1 ?v2)) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum$) (?v1 B_tree_a_b_fun_sum$) (?v2 B_tree_a_b_fun_sum$)) (=> (= (snd$b (pair$b ?v0 ?v1)) ?v2) (= ?v1 ?v2)) ))
+(assert (forall ((?v0 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_bool_fun_fun$) (?v1 B$) (?v2 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) (?v3 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (=> (and (fun_app$af (fun_app$ag ?v0 ?v1) ?v2) (= ?v3 (pair$c ?v1 ?v2))) (fun_app$af (fun_app$ag ?v0 (fst$c ?v3)) (snd$c ?v3))) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_bool_fun_fun$) (?v1 B_tree_a_b_fun_sum$) (?v2 B_tree_a_b_fun_sum$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (=> (and (fun_app$ad (fun_app$ae ?v0 ?v1) ?v2) (= ?v3 (pair$b ?v1 ?v2))) (fun_app$ad (fun_app$ae ?v0 (fst$b ?v3)) (snd$b ?v3))) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_prod$)) (! (= (swap$ ?v0) (pair$c (snd$h ?v0) (fst$h ?v0))) :pattern ((swap$ ?v0)))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (! (= (swap$b ?v0) (pair$b (snd$b ?v0) (fst$b ?v0))) :pattern ((swap$b ?v0)))))
+(assert (forall ((?v0 B$)) (= (fun_app$aa (fun_app$fg (comp$cf uvi$) uvj$) ?v0) (fun_app$aa id$ ?v0)) ))
+(assert (forall ((?v0 B_tree$)) (= (fun_app$x (fun_app$fh (comp$cg uvg$) uvk$) ?v0) (fun_app$x id$a ?v0)) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum$)) (= (fun_app$ca (fun_app$fi (comp$ch uvh$) uvl$) ?v0) (id$z ?v0)) ))
+(assert (forall ((?v0 B$)) (= (fun_app$aa (fun_app$fg (comp$cf uvm$) uvj$) ?v0) (fun_app$aa id$ ?v0)) ))
+(assert (forall ((?v0 B_tree$)) (= (fun_app$x (fun_app$fh (comp$cg uvc$) uvk$) ?v0) (fun_app$x id$a ?v0)) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum$)) (= (fun_app$ca (fun_app$fi (comp$ch uvd$) uvl$) ?v0) (id$z ?v0)) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) (?v1 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (= (= ?v0 (snd$c ?v1)) (exists ((?v2 B$)) (= ?v1 (pair$c ?v2 ?v0)) )) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (= (= ?v0 (snd$b ?v1)) (exists ((?v2 B_tree_a_b_fun_sum$)) (= ?v1 (pair$b ?v2 ?v0)) )) ))
+(assert (forall ((?v0 B$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$) (?v2 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod_set$) (?v3 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (=> (and (member$a (pair$c ?v0 ?v1) ?v2) (= ?v3 ?v1)) (member$a (pair$c ?v0 ?v3) ?v2)) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum$) (?v1 B_tree_a_b_fun_sum$) (?v2 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_set$) (?v3 B_tree_a_b_fun_sum$)) (=> (and (member$ (pair$b ?v0 ?v1) ?v2) (= ?v3 ?v1)) (member$ (pair$b ?v0 ?v3) ?v2)) ))
+(assert (forall ((?v0 B$) (?v1 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (= (= ?v0 (fst$c ?v1)) (exists ((?v2 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (= ?v1 (pair$c ?v0 ?v2)) )) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (= (= ?v0 (fst$b ?v1)) (exists ((?v2 B_tree_a_b_fun_sum$)) (= ?v1 (pair$b ?v0 ?v2)) )) ))
+(assert (forall ((?v0 A_b_fun$) (?v1 A_a_fun$)) (= (fun_app$v (comp$b (ctor_rec$ ?v0)) ?v1) (ctor_rec$ (fun_app$v (comp$b ?v0) (fun_app$bh (comp$e (fun_app$bh (comp$e id_bnf$c) ?v1)) id_bnf$c)))) ))
+(assert (forall ((?v0 A_b_fun$)) (= ?v0 (ctor_rec$ (fun_app$v (comp$b ?v0) id_bnf$c))) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum$) (?v1 B_tree_a_b_fun_sum$)) (! (= (pair$b ?v0 ?v1) (xtor$ (id_bnf$d (pair$b ?v0 ?v1)))) :pattern ((pair$b ?v0 ?v1)))))
+(assert (forall ((?v0 B$) (?v1 B_tree_b_tree_prod$)) (! (= (pair$a ?v0 ?v1) (xtor$a (id_bnf$a (pair$a ?v0 ?v1)))) :pattern ((pair$a ?v0 ?v1)))))
+(assert (forall ((?v0 B$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (! (= (pair$c ?v0 ?v1) (xtor$b (id_bnf$ (pair$c ?v0 ?v1)))) :pattern ((pair$c ?v0 ?v1)))))
+(assert (forall ((?v0 A_b_fun$)) (! (= (inr$ ?v0) (xtor$c (id_bnf$e (inr$ ?v0)))) :pattern ((inr$ ?v0)))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_prod$)) (= (snd$h ?v0) (comp$ci uvb$ (uncurry$ uvn$) ?v0)) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (= (snd$b ?v0) (fun_app$f (fun_app$fj (comp$cj uvd$) (uncurry$a uvo$)) ?v0)) ))
+(assert (= (uncurry$b uvp$) id$n))
+(assert (= (uncurry$a uvq$) id$aa))
+(assert (forall ((?v0 B_b_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_b_tree_b_tree_prod_fun$)) (= (map_prod$ ?v0 ?v1) (uncurry$c (uvr$ ?v0 ?v1))) ))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_fun$) (?v1 B_tree_a_b_fun_sum_b_tree_fun$)) (= (fun_app$ba (map_prod$a ?v0) ?v1) (uncurry$d (uvs$ ?v0 ?v1))) ))
+(assert (forall ((?v0 B_b_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod_prod$)) (! (= (fun_app$cd (uncurry$b uvp$) ?v0) ?v0) :pattern ((fun_app$cd (uncurry$b uvp$) ?v0)))))
+(assert (forall ((?v0 B_tree_a_b_fun_sum_b_tree_a_b_fun_sum_prod$)) (! (= (fun_app$ay (uncurry$a uvq$) ?v0) ?v0) :pattern ((fun_app$ay (uncurry$a uvq$) ?v0)))))
+(check-sat)
+(exit)
+
diff --git a/test/regress/regress0/quantifiers/cbqi-lia-dt-simp.smt2 b/test/regress/regress0/quantifiers/cbqi-lia-dt-simp.smt2
index bd7ca19..b8b1683 100644
--- a/test/regress/regress0/quantifiers/cbqi-lia-dt-simp.smt2
+++ b/test/regress/regress0/quantifiers/cbqi-lia-dt-simp.smt2
@@ -1,4 +1,4 @@
-; COMMAND-LINE: --dt-rewrite-error-sel
+; COMMAND-LINE: --cbqi --dt-rewrite-error-sel
 ; EXPECT: unsat
 (set-logic ALL_SUPPORTED)
 (declare-datatypes () ((List (cons (head Int) (tail List)) (nil))))
diff --git a/test/regress/regress0/quantifiers/cbqi-sdlx-fixpoint-3-dd.smt2 b/test/regress/regress0/quantifiers/cbqi-sdlx-fixpoint-3-dd.smt2
new file mode 100644
index 0000000..4d5cf4e
--- /dev/null
+++ b/test/regress/regress0/quantifiers/cbqi-sdlx-fixpoint-3-dd.smt2
@@ -0,0 +1,19 @@
+; COMMAND-LINE: --cbqi --decision=internal
+; EXPECT: unsat
+(set-logic LIA)
+(set-info :status unsat)
+
+(assert (or 
+(forall ((H Int) (G Int)) (= (= G 0) (= H 0)))
+
+(forall ((C Int) (D Int) (E Int)) (or 
+(= (= D 0) (= C 0)) 
+(and 
+(not (forall ((G Int)) (= (= E 0) (= G 0)))) 
+(not (forall ((A Int)) 
+  (not (= (ite (= A 0) 0 1) (ite (= C 0) 0 2)))
+))
+)))
+))
+
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/delta-simp.smt2 b/test/regress/regress0/quantifiers/delta-simp.smt2
index f18a4fb..e588313 100644
--- a/test/regress/regress0/quantifiers/delta-simp.smt2
+++ b/test/regress/regress0/quantifiers/delta-simp.smt2
@@ -1,5 +1,7 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
 (set-logic LRA)
 (set-info :status sat)
 (declare-fun c () Real)
 (assert (forall ((x Real)) (or (<= x 0) (>= x (+ c 3)))))
-(check-sat)
\ No newline at end of file
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/macro-subtype-param.smt2 b/test/regress/regress0/quantifiers/macro-subtype-param.smt2
index 20de790..586aa64 100644
--- a/test/regress/regress0/quantifiers/macro-subtype-param.smt2
+++ b/test/regress/regress0/quantifiers/macro-subtype-param.smt2
@@ -1,18 +1,17 @@
 ; COMMAND-LINE: --macros-quant
 ; EXPECT: unknown
-; this will fail if type rule for APPLY_UF requires to be subtypes
 (set-logic ALL_SUPPORTED)
 
 (declare-datatypes (T) ((List (cons (hd T) (tl (List T))) (nil))))
 
-(declare-fun R ((List Int)) Bool)
+(declare-fun R ((List Real)) Bool)
 (assert (forall ((x (List Int))) (R x)))
 (declare-fun j1 () (List Real))
 (assert (not (R j1)))
 
-(declare-fun Q ((Array Real Int)) Bool)
+(declare-fun Q ((Array Int Real)) Bool)
 (assert (forall ((x (Array Real Int))) (Q x)))
-(declare-fun j2 () (Array Int Real))
+(declare-fun j2 () (Array Real Real))
 (assert (not (Q j2)))
 
 (check-sat)
diff --git a/test/regress/regress0/quantifiers/macros-real-arg.smt2 b/test/regress/regress0/quantifiers/macros-real-arg.smt2
index 675c96d..edacdbe 100644
--- a/test/regress/regress0/quantifiers/macros-real-arg.smt2
+++ b/test/regress/regress0/quantifiers/macros-real-arg.smt2
@@ -6,6 +6,6 @@
 (assert (forall ((x Int)) (P x)))
 (declare-fun k () Real)
 (declare-fun k2 () Int)
-(assert (or (not (P k)) (not (P k2))))
+(assert (or (not (P (to_int k))) (not (P k2))))
 (assert (= k 0))
 (check-sat)
diff --git a/test/regress/regress0/quantifiers/mix-coeff.smt2 b/test/regress/regress0/quantifiers/mix-coeff.smt2
index a20867b..23ecba4 100644
--- a/test/regress/regress0/quantifiers/mix-coeff.smt2
+++ b/test/regress/regress0/quantifiers/mix-coeff.smt2
@@ -1,4 +1,4 @@
-(set-logic ALL_SUPPORTED)
+(set-logic LIRA)
 (set-info :status unsat)
 (assert (forall ((x Int) (y Int) (a Real) (z Int)) (or (> x (+ a (* (/ 2 3) y) (* (/ 4 5) z))) (< x (+ 10 (* 3 a) (* (/ 2 5) y) (* (/ 4 7) z))))))
-(check-sat)
\ No newline at end of file
+(check-sat)
diff --git a/test/regress/regress0/quantifiers/mix-complete-strat.smt2 b/test/regress/regress0/quantifiers/mix-complete-strat.smt2
index c2209f6..e75591d 100644
--- a/test/regress/regress0/quantifiers/mix-complete-strat.smt2
+++ b/test/regress/regress0/quantifiers/mix-complete-strat.smt2
@@ -1,4 +1,4 @@
-; COMMAND-LINE: --finite-model-find
+; COMMAND-LINE: --cbqi --finite-model-find --no-check-models
 ; EXPECT: sat
 (set-logic UFLIA)
 (set-info :status sat)
diff --git a/test/regress/regress0/quantifiers/mix-simp.smt2 b/test/regress/regress0/quantifiers/mix-simp.smt2
index 0b8c506..b7142c6 100644
--- a/test/regress/regress0/quantifiers/mix-simp.smt2
+++ b/test/regress/regress0/quantifiers/mix-simp.smt2
@@ -1,4 +1,6 @@
-(set-logic ALL_SUPPORTED)
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
+(set-logic LIRA)
 (set-info :status sat)
 (assert (forall ((x Real)) (exists ((y Int)) (and (>= y x) (< y (+ x 1))))))
 (check-sat)
diff --git a/test/regress/regress0/quantifiers/psyco-001-bv.smt2 b/test/regress/regress0/quantifiers/psyco-001-bv.smt2
new file mode 100644
index 0000000..e3428de
--- /dev/null
+++ b/test/regress/regress0/quantifiers/psyco-001-bv.smt2
@@ -0,0 +1,76 @@
+(set-logic BV)
+(set-info :status sat)
+(declare-fun W_S1_V1 () Bool)
+(declare-fun W_S1_V2 () Bool)
+(declare-fun W_S1_V4 () Bool)
+(declare-fun R_S1_V1 () Bool)
+(declare-fun R_E1_V1 () Bool)
+(declare-fun R_E1_V3 () Bool)
+(declare-fun R_E1_V2 () Bool)
+(declare-fun R_E1_V4 () Bool)
+(declare-fun DISJ_W_S1_R_E1 () Bool)
+(declare-fun R_S1_V3 () Bool)
+(declare-fun R_S1_V2 () Bool)
+(declare-fun R_S1_V4 () Bool)
+(declare-fun DISJ_W_S1_R_S1 () Bool)
+(declare-fun W_S1_V3 () Bool)
+(assert
+ (let
+ (($x324
+   (forall
+    ((V4_0 (_ BitVec 32)) (V2_0 (_ BitVec 32)) 
+     (V3_0 (_ BitVec 32)) (V1_0 (_ BitVec 32)) 
+     (MW_S1_V4 Bool) (MW_S1_V2 Bool) 
+     (MW_S1_V3 Bool) (MW_S1_V1 Bool) 
+     (S1_V3_!14 (_ BitVec 32)) (S1_V3_!20 (_ BitVec 32)) 
+     (E1_!11 (_ BitVec 32)) (E1_!16 (_ BitVec 32)) 
+     (E1_!17 (_ BitVec 32)) (S1_V1_!15 (_ BitVec 32)) 
+     (S1_V1_!21 (_ BitVec 32)) (S1_V2_!13 (_ BitVec 32)) 
+     (S1_V2_!19 (_ BitVec 32)) (S1_V4_!12 (_ BitVec 32)) 
+     (S1_V4_!18 (_ BitVec 32)))
+    (let
+    (($x267
+      (and (= (ite MW_S1_V4 S1_V4_!12 V4_0) (ite MW_S1_V4 S1_V4_!18 V4_0))
+      (= E1_!16 (ite MW_S1_V1 S1_V1_!21 E1_!17))
+      (= (ite MW_S1_V3 S1_V3_!14 V3_0) (ite MW_S1_V3 S1_V3_!20 V3_0))
+      (= (ite MW_S1_V1 S1_V1_!15 E1_!11) (ite MW_S1_V1 S1_V1_!21 E1_!17)))))
+    (let
+    (($x297
+      (and (or (not R_E1_V4) (= (ite MW_S1_V4 S1_V4_!12 V4_0) V4_0))
+      (or (not R_E1_V2) (= (ite MW_S1_V2 S1_V2_!13 V2_0) V2_0))
+      (or (not R_E1_V3) (= (ite MW_S1_V3 S1_V3_!14 V3_0) V3_0))
+      (or (not R_E1_V1) (= (ite MW_S1_V1 S1_V1_!15 E1_!11) V1_0)))))
+    (let
+    (($x310
+      (and (or (not R_E1_V4) (= V4_0 (ite MW_S1_V4 S1_V4_!12 V4_0)))
+      (or (not R_E1_V2) (= V2_0 (ite MW_S1_V2 S1_V2_!13 V2_0)))
+      (or (not R_E1_V3) (= V3_0 (ite MW_S1_V3 S1_V3_!14 V3_0)))
+      (or (not R_E1_V1) (= V1_0 (ite MW_S1_V1 S1_V1_!15 E1_!11))))))
+    (let
+    (($x321
+      (and
+      (or (not (or (not R_S1_V1) (= E1_!17 E1_!11))) (= S1_V3_!20 S1_V3_!14))
+      (or (not $x310) (= E1_!11 E1_!16)) 
+      (= E1_!11 E1_!17) (or (not $x297) (= E1_!16 E1_!17))
+      (or (not (or (not R_S1_V1) (= E1_!17 E1_!11))) (= S1_V1_!21 S1_V1_!15))
+      (or (not (or (not R_S1_V1) (= E1_!17 E1_!11))) (= S1_V2_!19 S1_V2_!13))
+      (or (not (or (not R_S1_V1) (= E1_!17 E1_!11))) (= S1_V4_!18 S1_V4_!12))
+      (or (not MW_S1_V4) W_S1_V4) 
+      (or (not MW_S1_V2) W_S1_V2) 
+      (or (not MW_S1_V1) W_S1_V1)))) 
+    (or (not $x321) $x267))))))))
+ (let
+ (($x40
+   (or (and W_S1_V4 R_E1_V4) 
+   (and W_S1_V2 R_E1_V2) R_E1_V3 
+   (and W_S1_V1 R_E1_V1))))
+ (let (($x42 (= DISJ_W_S1_R_E1 (not $x40))))
+ (let
+ (($x37
+   (or (and W_S1_V4 R_S1_V4) 
+   (and W_S1_V2 R_S1_V2) R_S1_V3 
+   (and W_S1_V1 R_S1_V1))))
+ (let (($x39 (= DISJ_W_S1_R_S1 (not $x37)))) (and W_S1_V3 $x39 $x42 $x324)))))))
+(check-sat)
+(exit)
+
diff --git a/test/regress/regress0/quantifiers/psyco-196.smt2 b/test/regress/regress0/quantifiers/psyco-196.smt2
index 356e627..fef1a24 100644
--- a/test/regress/regress0/quantifiers/psyco-196.smt2
+++ b/test/regress/regress0/quantifiers/psyco-196.smt2
@@ -1,3 +1,5 @@
+; COMMAND-LINE: --no-check-models
+; EXPECT: sat
 (set-logic LIA)
 (set-info :status sat)
 (declare-fun W_S1_V5 () Bool)
diff --git a/test/regress/regress0/quantifiers/pure_dt_cbqi.smt2 b/test/regress/regress0/quantifiers/pure_dt_cbqi.smt2
index 5c11a57..0ce9628 100644
--- a/test/regress/regress0/quantifiers/pure_dt_cbqi.smt2
+++ b/test/regress/regress0/quantifiers/pure_dt_cbqi.smt2
@@ -1,3 +1,5 @@
+; COMMAND-LINE: --cbqi --no-check-models
+; EXPECT: sat
 (set-logic ALL_SUPPORTED)
 (set-info :status sat)
 (declare-datatypes () ((nat (Suc (pred nat)) (zero))))
diff --git a/test/regress/regress0/quantifiers/qbv-simp.smt2 b/test/regress/regress0/quantifiers/qbv-simp.smt2
new file mode 100644
index 0000000..1f72d44
--- /dev/null
+++ b/test/regress/regress0/quantifiers/qbv-simp.smt2
@@ -0,0 +1,9 @@
+(set-logic BV)
+(set-info :status unsat)
+(assert
+   (forall
+    ((A (_ BitVec 32)) (B (_ BitVec 32)) (C (_ BitVec 32)) (D (_ BitVec 32)))
+      (or (and (= A B) (= C D)) (and (= A C) (= B D)))))
+      
+(check-sat)
+      
diff --git a/test/regress/regress0/quantifiers/quaternion_ds1_symm_0428.fof.smt2 b/test/regress/regress0/quantifiers/quaternion_ds1_symm_0428.fof.smt2
index 9b0216e..e7be953 100644
--- a/test/regress/regress0/quantifiers/quaternion_ds1_symm_0428.fof.smt2
+++ b/test/regress/regress0/quantifiers/quaternion_ds1_symm_0428.fof.smt2
@@ -1,4 +1,4 @@
-; COMMAND-LINE: --full-saturate-quant
+; COMMAND-LINE: --full-saturate-quant --multi-trigger-cache
 ; EXPECT: unsat
 (set-logic AUFLIRA)
 (set-info :status unsat)
diff --git a/test/regress/regress0/quantifiers/subtype-param-unk.smt2 b/test/regress/regress0/quantifiers/subtype-param-unk.smt2
index 836449c..42cfb3a 100644
--- a/test/regress/regress0/quantifiers/subtype-param-unk.smt2
+++ b/test/regress/regress0/quantifiers/subtype-param-unk.smt2
@@ -5,8 +5,7 @@
 
 (declare-datatypes (T) ((List (cons (hd T) (tl (List T))) (nil))))
 
-(declare-fun R ((List Int)) Bool)
-
+(declare-fun R ((List Real)) Bool)
 (assert (forall ((x (List Int))) (R x)))
 (declare-fun j1 () (List Real))
 (assert (not (R j1)))
diff --git a/test/regress/regress0/quantifiers/subtype-param.smt2 b/test/regress/regress0/quantifiers/subtype-param.smt2
index 08615ab..a7fe58a 100644
--- a/test/regress/regress0/quantifiers/subtype-param.smt2
+++ b/test/regress/regress0/quantifiers/subtype-param.smt2
@@ -3,7 +3,7 @@
 
 (declare-datatypes (T) ((List (cons (hd T) (tl (List T))) (nil))))
 
-(declare-fun R ((List Int)) Bool)
+(declare-fun R ((List Real)) Bool)
 (assert (forall ((x (List Real))) (R x)))
 
 (declare-fun Q ((Array Int Real)) Bool)
diff --git a/test/regress/regress0/rels/Makefile.am b/test/regress/regress0/rels/Makefile.am
index 50f979f..7f772a8 100644
--- a/test/regress/regress0/rels/Makefile.am
+++ b/test/regress/regress0/rels/Makefile.am
@@ -99,10 +99,23 @@ TESTS =	\
   rel_tc_5_1.cvc \
   rel_tp_join_1.cvc \
   rel_transpose_0.cvc \
-  set-strat.cvc
+  set-strat.cvc \
+  rel_tc_8.cvc \
+  atom_univ2.cvc \
+  rels-sharing-simp.cvc \
+  iden_0.cvc \
+  iden_1_1.cvc \
+  iden_1.cvc \
+  joinImg_0_1.cvc \
+  joinImg_0_2.cvc \
+  joinImg_0.cvc \
+  joinImg_1_1.cvc \
+  joinImg_1.cvc \
+  joinImg_2_1.cvc \
+  joinImg_2.cvc \
+  card_transpose.cvc
 
 # unsolved : garbage_collect.cvc
-# dump-unsat-core crash : rel_tc_8.cvc
 
 EXTRA_DIST = $(TESTS)
 
diff --git a/test/regress/regress0/rels/Makefile.in b/test/regress/regress0/rels/Makefile.in
index 909996f..a447313 100644
--- a/test/regress/regress0/rels/Makefile.in
+++ b/test/regress/regress0/rels/Makefile.in
@@ -434,6 +434,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -744,11 +745,24 @@ TESTS = \
   rel_tc_5_1.cvc \
   rel_tp_join_1.cvc \
   rel_transpose_0.cvc \
-  set-strat.cvc
+  set-strat.cvc \
+  rel_tc_8.cvc \
+  atom_univ2.cvc \
+  rels-sharing-simp.cvc \
+  iden_0.cvc \
+  iden_1_1.cvc \
+  iden_1.cvc \
+  joinImg_0_1.cvc \
+  joinImg_0_2.cvc \
+  joinImg_0.cvc \
+  joinImg_1_1.cvc \
+  joinImg_1.cvc \
+  joinImg_2_1.cvc \
+  joinImg_2.cvc \
+  card_transpose.cvc
 
 
 # unsolved : garbage_collect.cvc
-# dump-unsat-core crash : rel_tc_8.cvc
 EXTRA_DIST = $(TESTS)
 all: all-recursive
 
@@ -1583,6 +1597,104 @@ set-strat.cvc.log: set-strat.cvc
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rel_tc_8.cvc.log: rel_tc_8.cvc
+	@p='rel_tc_8.cvc'; \
+	b='rel_tc_8.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+atom_univ2.cvc.log: atom_univ2.cvc
+	@p='atom_univ2.cvc'; \
+	b='atom_univ2.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+rels-sharing-simp.cvc.log: rels-sharing-simp.cvc
+	@p='rels-sharing-simp.cvc'; \
+	b='rels-sharing-simp.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+iden_0.cvc.log: iden_0.cvc
+	@p='iden_0.cvc'; \
+	b='iden_0.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+iden_1_1.cvc.log: iden_1_1.cvc
+	@p='iden_1_1.cvc'; \
+	b='iden_1_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+iden_1.cvc.log: iden_1.cvc
+	@p='iden_1.cvc'; \
+	b='iden_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+joinImg_0_1.cvc.log: joinImg_0_1.cvc
+	@p='joinImg_0_1.cvc'; \
+	b='joinImg_0_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+joinImg_0_2.cvc.log: joinImg_0_2.cvc
+	@p='joinImg_0_2.cvc'; \
+	b='joinImg_0_2.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+joinImg_0.cvc.log: joinImg_0.cvc
+	@p='joinImg_0.cvc'; \
+	b='joinImg_0.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+joinImg_1_1.cvc.log: joinImg_1_1.cvc
+	@p='joinImg_1_1.cvc'; \
+	b='joinImg_1_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+joinImg_1.cvc.log: joinImg_1.cvc
+	@p='joinImg_1.cvc'; \
+	b='joinImg_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+joinImg_2_1.cvc.log: joinImg_2_1.cvc
+	@p='joinImg_2_1.cvc'; \
+	b='joinImg_2_1.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+joinImg_2.cvc.log: joinImg_2.cvc
+	@p='joinImg_2.cvc'; \
+	b='joinImg_2.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+card_transpose.cvc.log: card_transpose.cvc
+	@p='card_transpose.cvc'; \
+	b='card_transpose.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 .test.log:
 	@p='$<'; \
 	$(am__set_b); \
diff --git a/test/regress/regress0/rels/atom_univ2.cvc b/test/regress/regress0/rels/atom_univ2.cvc
new file mode 100644
index 0000000..e01d99d
--- /dev/null
+++ b/test/regress/regress0/rels/atom_univ2.cvc
@@ -0,0 +1,24 @@
+% EXPECT: unsat
+OPTION "sets-ext";
+OPTION "logic" "ALL_SUPPORTED";
+Atom: TYPE;
+
+a : SET OF [Atom];
+b : SET OF [Atom, Atom];
+
+x : Atom;
+y : Atom;
+
+ASSERT NOT(x = y);
+
+ASSERT TUPLE(y) IS_IN a;
+ASSERT (x, y) IS_IN b;
+
+ASSERT UNIVERSE::SET OF [Atom, Atom] = (UNIVERSE::SET OF [Atom] PRODUCT UNIVERSE::SET OF [Atom]);
+
+u : SET OF [Atom, Atom];
+ASSERT u = UNIVERSE::SET OF [Atom, Atom];
+
+ASSERT NOT (x, y) IS_IN u;
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/card_transpose.cvc b/test/regress/regress0/rels/card_transpose.cvc
new file mode 100644
index 0000000..bde7fe5
--- /dev/null
+++ b/test/regress/regress0/rels/card_transpose.cvc
@@ -0,0 +1,6 @@
+% EXPECT: unknown (INCOMPLETE)
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+ASSERT (CARD(TRANSPOSE(x)) > 0);
+CHECKSAT;
diff --git a/test/regress/regress0/rels/iden_0.cvc b/test/regress/regress0/rels/iden_0.cvc
new file mode 100644
index 0000000..4c26930
--- /dev/null
+++ b/test/regress/regress0/rels/iden_0.cvc
@@ -0,0 +1,28 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+Atom: TYPE;
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+id : SET OF IntPair;
+
+t : SET OF [INT];
+
+z : IntPair;
+ASSERT z = (1,2);
+zt : IntPair;
+ASSERT zt = (2,1);
+v : IntPair;
+ASSERT v = (1,1);
+a : IntPair;
+ASSERT a = (1,5);
+
+ASSERT TUPLE(1) IS_IN t;
+ASSERT TUPLE(2) IS_IN t;
+ASSERT z IS_IN x;
+ASSERT zt IS_IN x;
+ASSERT v IS_IN x;
+ASSERT a IS_IN x;
+ASSERT id = IDEN(t);
+ASSERT NOT ((1, 1) IS_IN (id & x));
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/iden_1.cvc b/test/regress/regress0/rels/iden_1.cvc
new file mode 100644
index 0000000..4f05817
--- /dev/null
+++ b/test/regress/regress0/rels/iden_1.cvc
@@ -0,0 +1,19 @@
+% EXPECT: unsat
+OPTION "sets-ext";
+OPTION "logic" "ALL_SUPPORTED";
+Atom:TYPE;
+AtomPair: TYPE = [Atom, Atom];
+x : SET OF AtomPair;
+t : SET OF [Atom];
+univ : SET OF [Atom];
+
+a : Atom;
+b : Atom;
+c : Atom;
+d : Atom;
+ASSERT univ = UNIVERSE::SET OF [Atom];
+ASSERT (a, b) IS_IN x;
+ASSERT (c, d) IS_IN x;
+ASSERT NOT(a = b);
+ASSERT IDEN(x JOIN univ) = x;
+CHECKSAT;
diff --git a/test/regress/regress0/rels/iden_1_1.cvc b/test/regress/regress0/rels/iden_1_1.cvc
new file mode 100644
index 0000000..985a35a
--- /dev/null
+++ b/test/regress/regress0/rels/iden_1_1.cvc
@@ -0,0 +1,22 @@
+% EXPECT: sat
+OPTION "sets-ext";
+OPTION "logic" "ALL_SUPPORTED";
+Atom:TYPE;
+AtomPair: TYPE = [Atom, Atom];
+x : SET OF AtomPair;
+t : SET OF [Atom];
+univ : SET OF [Atom];
+univ2 : SET OF [Atom,Atom];
+
+a : Atom;
+b : Atom;
+c : Atom;
+d : Atom;
+ASSERT univ = UNIVERSE::SET OF [Atom];
+ASSERT univ2 = UNIVERSE::SET OF [Atom, Atom];
+ASSERT univ2 = (univ PRODUCT univ);
+ASSERT (a, b) IS_IN x;
+ASSERT (c, d) IS_IN x;
+ASSERT NOT(a = b);
+ASSERT IDEN(univ) <= x;
+CHECKSAT;
diff --git a/test/regress/regress0/rels/joinImg_0.cvc b/test/regress/regress0/rels/joinImg_0.cvc
new file mode 100644
index 0000000..e36c6a6
--- /dev/null
+++ b/test/regress/regress0/rels/joinImg_0.cvc
@@ -0,0 +1,33 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+
+t : SET OF [INT];
+
+z : IntPair;
+ASSERT z = (1,2);
+zt : IntPair;
+ASSERT zt = (2,1);
+v : IntPair;
+ASSERT v = (1,1);
+a : IntPair;
+ASSERT a = (1,5);
+
+ASSERT (1, 7) IS_IN x;
+ASSERT z IS_IN x;
+
+ASSERT (7, 5) IS_IN y;
+
+ASSERT t = (x JOIN_IMAGE 2);
+
+ASSERT TUPLE(3) IS_IN (x JOIN_IMAGE 2);
+
+ASSERT NOT(TUPLE(1) IS_IN (x JOIN_IMAGE 2));
+
+ASSERT TUPLE(4) IS_IN (x JOIN_IMAGE 2);
+
+ASSERT TUPLE(1) IS_IN (x JOIN_IMAGE 1);
+CHECKSAT;
diff --git a/test/regress/regress0/rels/joinImg_0_1.cvc b/test/regress/regress0/rels/joinImg_0_1.cvc
new file mode 100644
index 0000000..602c4fe
--- /dev/null
+++ b/test/regress/regress0/rels/joinImg_0_1.cvc
@@ -0,0 +1,35 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+
+t : SET OF [INT];
+u : SET OF [INT];
+
+z : IntPair;
+ASSERT z = (1,2);
+zt : IntPair;
+ASSERT zt = (2,1);
+v : IntPair;
+ASSERT v = (1,1);
+a : IntPair;
+ASSERT a = (1,5);
+b: INT;
+
+ASSERT (1, 7) IS_IN x;
+ASSERT z IS_IN x;
+
+ASSERT (7, 5) IS_IN y;
+
+ASSERT t = (x JOIN_IMAGE 2);
+
+ASSERT TUPLE(3) IS_IN (x JOIN_IMAGE 2);
+
+ASSERT u = (x JOIN_IMAGE 1);
+
+ASSERT TUPLE(4) IS_IN (x JOIN_IMAGE 2);
+
+ASSERT TUPLE(b) IS_IN (x JOIN_IMAGE 1);
+CHECKSAT;
diff --git a/test/regress/regress0/rels/joinImg_0_2.cvc b/test/regress/regress0/rels/joinImg_0_2.cvc
new file mode 100644
index 0000000..e159208
--- /dev/null
+++ b/test/regress/regress0/rels/joinImg_0_2.cvc
@@ -0,0 +1,39 @@
+% EXPECT: sat
+OPTION "sets-ext";
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+r : SET OF IntPair;
+
+t : SET OF [INT];
+u : SET OF [INT];
+univ : SET OF [INT];
+
+z : IntPair;
+ASSERT z = (1,2);
+zt : IntPair;
+ASSERT zt = (2,1);
+s : IntPair;
+ASSERT s = (1,1);
+a : IntPair;
+ASSERT a = (1,5);
+b: INT;
+
+ASSERT (1, 7) IS_IN x;
+ASSERT z IS_IN x;
+
+ASSERT (7, 5) IS_IN y;
+
+ASSERT t = (x JOIN_IMAGE 2);
+ASSERT univ = (x JOIN_IMAGE 0);
+ASSERT TUPLE(100) IS_IN t;
+
+ASSERT NOT (TUPLE(3) IS_IN univ);
+
+ASSERT u = (x JOIN_IMAGE 1);
+
+ASSERT TUPLE(4) IS_IN (x JOIN_IMAGE 2);
+
+ASSERT TUPLE(b) IS_IN (x JOIN_IMAGE 1);
+CHECKSAT;
diff --git a/test/regress/regress0/rels/joinImg_1.cvc b/test/regress/regress0/rels/joinImg_1.cvc
new file mode 100644
index 0000000..47e57c1
--- /dev/null
+++ b/test/regress/regress0/rels/joinImg_1.cvc
@@ -0,0 +1,20 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+Atom: TYPE;
+x : SET OF [Atom, Atom];
+y : SET OF [Atom, Atom];
+r : SET OF [Atom, Atom];
+
+t : SET OF [Atom];
+
+a : Atom;
+b : Atom;
+c : Atom;
+d : Atom;
+e : Atom;
+
+ASSERT TUPLE(a) IS_IN (x JOIN_IMAGE 2);
+ASSERT x = {(b, c), (d, e), (c, e)};
+ASSERT NOT(a = b);
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/joinImg_1_1.cvc b/test/regress/regress0/rels/joinImg_1_1.cvc
new file mode 100644
index 0000000..a7927f7
--- /dev/null
+++ b/test/regress/regress0/rels/joinImg_1_1.cvc
@@ -0,0 +1,21 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+Atom: TYPE;
+x : SET OF [Atom, Atom];
+y : SET OF [Atom, Atom];
+r : SET OF [Atom, Atom];
+
+t : SET OF [Atom];
+
+a : Atom;
+b : Atom;
+c : Atom;
+d : Atom;
+e : Atom;
+
+ASSERT TUPLE(a) IS_IN (x JOIN_IMAGE 2);
+ASSERT t = (x JOIN_IMAGE 2); 
+ASSERT x = {(b, c), (d, e), (c, e)};
+ASSERT TUPLE(c) IS_IN t;
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/joinImg_2.cvc b/test/regress/regress0/rels/joinImg_2.cvc
new file mode 100644
index 0000000..bbf5762
--- /dev/null
+++ b/test/regress/regress0/rels/joinImg_2.cvc
@@ -0,0 +1,33 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+Atom: TYPE;
+x : SET OF [Atom, Atom];
+y : SET OF [Atom, Atom];
+r : SET OF [Atom, Atom];
+
+t : SET OF [Atom];
+
+a : Atom;
+b : Atom;
+c : Atom;
+d : Atom;
+e : Atom;
+f : Atom;
+g : Atom;
+
+ASSERT TUPLE(a) IS_IN (x JOIN_IMAGE 2);
+ASSERT TUPLE(a) IS_IN (y JOIN_IMAGE 3);
+%ASSERT y = {(f, g), (b, c), (d, e), (c, e)};
+ASSERT x = {(f, g), (b, c), (d, e), (c, e), (f, b)};
+ASSERT (a, f) IS_IN x;
+ASSERT (a, f) IS_IN y;
+ASSERT x = y;
+
+
+
+ASSERT NOT(a = b);
+
+ASSERT NOT (TUPLE(d) IS_IN (x JOIN_IMAGE 2));
+ASSERT f = d;
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/joinImg_2_1.cvc b/test/regress/regress0/rels/joinImg_2_1.cvc
new file mode 100644
index 0000000..b38bfab
--- /dev/null
+++ b/test/regress/regress0/rels/joinImg_2_1.cvc
@@ -0,0 +1,24 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+Atom: TYPE;
+x : SET OF [Atom, Atom];
+y : SET OF [Atom, Atom];
+r : SET OF [Atom, Atom];
+
+t : SET OF [Atom];
+
+a : Atom;
+b : Atom;
+c : Atom;
+d : Atom;
+e : Atom;
+f : Atom;
+g : Atom;
+
+ASSERT TUPLE(a) IS_IN (x JOIN_IMAGE 2);
+ASSERT TUPLE(a) IS_IN (y JOIN_IMAGE 1);
+ASSERT y = {(f, g), (b, c), (d, e), (c, e)};
+ASSERT x = {(f, g), (b, c), (d, e), (c, e)};
+ASSERT (NOT(a = b)) OR (NOT(a = f));
+
+CHECKSAT;
\ No newline at end of file
diff --git a/test/regress/regress0/rels/rel_tc_8.cvc b/test/regress/regress0/rels/rel_tc_8.cvc
new file mode 100644
index 0000000..9f5879c
--- /dev/null
+++ b/test/regress/regress0/rels/rel_tc_8.cvc
@@ -0,0 +1,10 @@
+% EXPECT: unsat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+x : SET OF IntPair;
+y : SET OF IntPair;
+
+ASSERT (2, 2) IS_IN (TCLOSURE x);
+ASSERT x = {}::SET OF IntPair;
+
+CHECKSAT;
diff --git a/test/regress/regress0/rels/rels-sharing-simp.cvc b/test/regress/regress0/rels/rels-sharing-simp.cvc
new file mode 100644
index 0000000..26bc94a
--- /dev/null
+++ b/test/regress/regress0/rels/rels-sharing-simp.cvc
@@ -0,0 +1,14 @@
+% EXPECT: sat
+OPTION "logic" "ALL_SUPPORTED";
+IntPair: TYPE = [INT, INT];
+w : SET OF IntPair;
+z : SET OF IntPair;
+x : INT;
+y : INT;
+
+ASSERT (1,x) IS_IN w;
+ASSERT (y,2) IS_IN z;
+
+ASSERT NOT (1, 2) IS_IN ( w JOIN z );
+
+CHECKSAT;
diff --git a/test/regress/regress0/rewriterules/Makefile.in b/test/regress/regress0/rewriterules/Makefile.in
index a2cdba3..a7295c5 100644
--- a/test/regress/regress0/rewriterules/Makefile.in
+++ b/test/regress/regress0/rewriterules/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress0/sep/Makefile.am b/test/regress/regress0/sep/Makefile.am
index f731bd1..692390d 100644
--- a/test/regress/regress0/sep/Makefile.am
+++ b/test/regress/regress0/sep/Makefile.am
@@ -56,7 +56,8 @@ TESTS =	\
   emp2-quant-unsat.smt2 \
   dispose-1.smt2 \
   finite-witness-sat.smt2 \
-  sep-fmf-priority.smt2
+  sep-fmf-priority.smt2 \
+  nil-no-elim.smt2
 
 
 FAILING_TESTS =
diff --git a/test/regress/regress0/sep/Makefile.in b/test/regress/regress0/sep/Makefile.in
index 844c74b..a1170fe 100644
--- a/test/regress/regress0/sep/Makefile.in
+++ b/test/regress/regress0/sep/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -643,7 +644,8 @@ TESTS = \
   emp2-quant-unsat.smt2 \
   dispose-1.smt2 \
   finite-witness-sat.smt2 \
-  sep-fmf-priority.smt2
+  sep-fmf-priority.smt2 \
+  nil-no-elim.smt2
 
 FAILING_TESTS = 
 # loop-1220.smt2 (slow)
@@ -1106,6 +1108,13 @@ sep-fmf-priority.smt2.log: sep-fmf-priority.smt2
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+nil-no-elim.smt2.log: nil-no-elim.smt2
+	@p='nil-no-elim.smt2'; \
+	b='nil-no-elim.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 .test.log:
 	@p='$<'; \
 	$(am__set_b); \
diff --git a/test/regress/regress0/sep/nil-no-elim.smt2 b/test/regress/regress0/sep/nil-no-elim.smt2
new file mode 100644
index 0000000..e9aa380
--- /dev/null
+++ b/test/regress/regress0/sep/nil-no-elim.smt2
@@ -0,0 +1,11 @@
+(set-logic ALL)
+(set-info :status unsat)
+(declare-sort U 0)
+(declare-fun f (U) U)
+(declare-fun a () U)
+
+(assert (= (as sep.nil U) (f a)))
+
+(assert (pto (f a) 0))
+
+(check-sat)
diff --git a/test/regress/regress0/sets/Makefile.am b/test/regress/regress0/sets/Makefile.am
index 06bd6cb..c8e416a 100644
--- a/test/regress/regress0/sets/Makefile.am
+++ b/test/regress/regress0/sets/Makefile.am
@@ -77,7 +77,16 @@ TESTS =	\
 	abt-te-exh2.smt2 \
 	univset-simp.smt2 \
 	complement.cvc \
-	complement2.cvc
+	complement2.cvc \
+	complement3.cvc \
+	sharing-simp.smt2 \
+	pre-proc-univ.smt2 \
+	nonvar-univ.smt2 \
+	sets-poly-int-real.smt2 \
+	sets-poly-nonint.smt2 \
+	int-real-univ.smt2 \
+	int-real-univ-unsat.smt2 \
+	sets-tuple-poly.cvc
 
 EXTRA_DIST = $(TESTS)
 
diff --git a/test/regress/regress0/sets/Makefile.in b/test/regress/regress0/sets/Makefile.in
index e1ade5b..3c7e748 100644
--- a/test/regress/regress0/sets/Makefile.in
+++ b/test/regress/regress0/sets/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -664,7 +665,16 @@ TESTS = \
 	abt-te-exh2.smt2 \
 	univset-simp.smt2 \
 	complement.cvc \
-	complement2.cvc
+	complement2.cvc \
+	complement3.cvc \
+	sharing-simp.smt2 \
+	pre-proc-univ.smt2 \
+	nonvar-univ.smt2 \
+	sets-poly-int-real.smt2 \
+	sets-poly-nonint.smt2 \
+	int-real-univ.smt2 \
+	int-real-univ-unsat.smt2 \
+	sets-tuple-poly.cvc
 
 
 #if CVC4_BUILD_PROFILE_COMPETITION
@@ -1276,6 +1286,69 @@ complement2.cvc.log: complement2.cvc
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+complement3.cvc.log: complement3.cvc
+	@p='complement3.cvc'; \
+	b='complement3.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sharing-simp.smt2.log: sharing-simp.smt2
+	@p='sharing-simp.smt2'; \
+	b='sharing-simp.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pre-proc-univ.smt2.log: pre-proc-univ.smt2
+	@p='pre-proc-univ.smt2'; \
+	b='pre-proc-univ.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+nonvar-univ.smt2.log: nonvar-univ.smt2
+	@p='nonvar-univ.smt2'; \
+	b='nonvar-univ.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sets-poly-int-real.smt2.log: sets-poly-int-real.smt2
+	@p='sets-poly-int-real.smt2'; \
+	b='sets-poly-int-real.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sets-poly-nonint.smt2.log: sets-poly-nonint.smt2
+	@p='sets-poly-nonint.smt2'; \
+	b='sets-poly-nonint.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+int-real-univ.smt2.log: int-real-univ.smt2
+	@p='int-real-univ.smt2'; \
+	b='int-real-univ.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+int-real-univ-unsat.smt2.log: int-real-univ-unsat.smt2
+	@p='int-real-univ-unsat.smt2'; \
+	b='int-real-univ-unsat.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+sets-tuple-poly.cvc.log: sets-tuple-poly.cvc
+	@p='sets-tuple-poly.cvc'; \
+	b='sets-tuple-poly.cvc'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 .test.log:
 	@p='$<'; \
 	$(am__set_b); \
diff --git a/test/regress/regress0/sets/complement.cvc b/test/regress/regress0/sets/complement.cvc
index 6181cbe..91388a5 100644
--- a/test/regress/regress0/sets/complement.cvc
+++ b/test/regress/regress0/sets/complement.cvc
@@ -1,9 +1,10 @@
 % EXPECT: sat
+OPTION "sets-ext";
 OPTION "logic" "ALL_SUPPORTED";
 Atom: TYPE;
 a : SET OF [Atom];
 b : SET OF [Atom];
 
-ASSERT a = (NOT b);
+ASSERT a = (~ b);
 
 CHECKSAT;
diff --git a/test/regress/regress0/sets/complement2.cvc b/test/regress/regress0/sets/complement2.cvc
index 6802065..b8100bf 100644
--- a/test/regress/regress0/sets/complement2.cvc
+++ b/test/regress/regress0/sets/complement2.cvc
@@ -1,11 +1,12 @@
 % EXPECT: unsat
+OPTION "sets-ext";
 OPTION "logic" "ALL_SUPPORTED";
 Atom: TYPE;
 a : SET OF Atom;
 b : SET OF Atom;
 c : Atom;
 
-ASSERT a = NOT(a);
+ASSERT a = ~(a);
 ASSERT c IS_IN a;
 
 CHECKSAT;
diff --git a/test/regress/regress0/sets/complement3.cvc b/test/regress/regress0/sets/complement3.cvc
new file mode 100644
index 0000000..fa0a31e
--- /dev/null
+++ b/test/regress/regress0/sets/complement3.cvc
@@ -0,0 +1,15 @@
+% EXPECT: sat
+OPTION "sets-ext";
+OPTION "logic" "ALL_SUPPORTED";
+Atom : TYPE;
+C32 : SET OF [Atom];
+C2 : SET OF [Atom];
+C4 : SET OF [Atom];
+ATOM_UNIV : SET OF [Atom];
+V1 : Atom;
+ASSERT C32 = (~C2) & (~C4);											
+ASSERT TUPLE(V1) IS_IN ~(C32);
+ASSERT ATOM_UNIV = UNIVERSE :: SET OF [Atom];
+ASSERT TUPLE(V1) IS_IN ATOM_UNIV;
+ASSERT TUPLE(V1) IS_IN ~(C2);
+CHECKSAT;
diff --git a/test/regress/regress0/sets/int-real-univ-unsat.smt2 b/test/regress/regress0/sets/int-real-univ-unsat.smt2
new file mode 100644
index 0000000..56f7e8c
--- /dev/null
+++ b/test/regress/regress0/sets/int-real-univ-unsat.smt2
@@ -0,0 +1,16 @@
+; COMMAND-LINE: --sets-ext
+; EXPECT: unsat
+(set-logic ALL)
+(set-info :status unsat)
+
+(declare-fun a () (Set Real))
+
+(declare-fun x () Real)
+
+(assert (= (as univset (Set Real)) (as univset (Set Int))))
+
+(assert (member x a))
+
+(assert (and (<= 5.5 x) (< x 5.8)))
+
+(check-sat)
diff --git a/test/regress/regress0/sets/int-real-univ.smt2 b/test/regress/regress0/sets/int-real-univ.smt2
new file mode 100644
index 0000000..afe20b9
--- /dev/null
+++ b/test/regress/regress0/sets/int-real-univ.smt2
@@ -0,0 +1,16 @@
+; COMMAND-LINE: --sets-ext
+; EXPECT: sat
+(set-logic ALL)
+(set-info :status sat)
+
+(declare-fun a () (Set Real))
+
+(declare-fun x () Real)
+
+(assert (= (as univset (Set Real)) (as univset (Set Int))))
+
+(assert (member x a))
+
+(assert (and (<= 5.5 x) (< x 6.1)))
+
+(check-sat)
diff --git a/test/regress/regress0/sets/nonvar-univ.smt2 b/test/regress/regress0/sets/nonvar-univ.smt2
new file mode 100644
index 0000000..5c3bc56
--- /dev/null
+++ b/test/regress/regress0/sets/nonvar-univ.smt2
@@ -0,0 +1,13 @@
+; COMMAND-LINE: --sets-ext
+; EXPECT: sat
+(set-logic ALL)
+(set-info :status sat)
+(declare-fun x () (Set Int))
+(declare-fun P ((Set Int)) Bool)
+
+(assert (P x))
+(assert (not (P (singleton 0))))
+(assert (member 1 x))
+(assert (not (member 0 (as univset (Set Int)))))
+
+(check-sat)
diff --git a/test/regress/regress0/sets/pre-proc-univ.smt2 b/test/regress/regress0/sets/pre-proc-univ.smt2
new file mode 100644
index 0000000..f184ebf
--- /dev/null
+++ b/test/regress/regress0/sets/pre-proc-univ.smt2
@@ -0,0 +1,11 @@
+; COMMAND-LINE: --sets-ext
+; EXPECT: unsat
+(set-logic ALL)
+(set-info :status unsat)
+(declare-fun x () (Set Int))
+
+(assert (= x (union (singleton 0) (singleton 1))))
+
+(assert (not (member 0 (as univset (Set Int)))))
+
+(check-sat)
diff --git a/test/regress/regress0/sets/sets-poly-int-real.smt2 b/test/regress/regress0/sets/sets-poly-int-real.smt2
new file mode 100644
index 0000000..407e95d
--- /dev/null
+++ b/test/regress/regress0/sets/sets-poly-int-real.smt2
@@ -0,0 +1,17 @@
+(set-logic QF_UFLIRAFS)
+(set-info :status sat)
+(declare-fun s () (Set Real))
+(declare-fun t1 () (Set Real))
+(declare-fun t2 () (Set Real))
+(declare-fun t3 () (Set Real))
+(declare-fun r1 () (Set Int))
+(declare-fun r2 () (Set Int))
+(declare-fun r3 () (Set Int))
+(assert (and (member 1.5 s) (member 0 s)))
+(assert (= t1 (union s (singleton 2.5))))
+(assert (= t2 (union s (singleton 2))))
+(assert (= t3 (union r3 (singleton 2.5))))
+(assert (= (intersection r1 r2) (intersection s (singleton 0))))
+(assert (not (= r1 (as emptyset (Set Real)))))
+
+(check-sat)
diff --git a/test/regress/regress0/sets/sets-poly-nonint.smt2 b/test/regress/regress0/sets/sets-poly-nonint.smt2
new file mode 100644
index 0000000..a0e883a
--- /dev/null
+++ b/test/regress/regress0/sets/sets-poly-nonint.smt2
@@ -0,0 +1,11 @@
+(set-logic QF_UFLIRAFS)
+(set-info :status unsat)
+(declare-fun s () (Set Int))
+(declare-fun t () (Set Real))
+(declare-fun r () (Set Real))
+(declare-fun u () (Set Real))
+(assert (member 1.5 t))
+(assert (member 2.5 r))
+(assert (member 3.5 u))
+(assert (or (= s t) (= s r) (= s u)))
+(check-sat)
diff --git a/test/regress/regress0/sets/sets-tuple-poly.cvc b/test/regress/regress0/sets/sets-tuple-poly.cvc
new file mode 100644
index 0000000..64fb310
--- /dev/null
+++ b/test/regress/regress0/sets/sets-tuple-poly.cvc
@@ -0,0 +1,17 @@
+% EXPECT: sat
+OPTION "sets-ext";
+OPTION "logic" "ALL_SUPPORTED";
+
+a : SET OF [REAL, INT];
+b : SET OF [INT, REAL];
+
+x : [ REAL, REAL ];
+
+ASSERT NOT x = (0,0);
+
+ASSERT (x.0, FLOOR(x.1)) IS_IN a;
+ASSERT (FLOOR(x.0), x.1) IS_IN b;
+
+ASSERT NOT x.0 = x.1;
+
+CHECKSAT;
diff --git a/test/regress/regress0/sets/sharing-simp.smt2 b/test/regress/regress0/sets/sharing-simp.smt2
new file mode 100644
index 0000000..761428f
--- /dev/null
+++ b/test/regress/regress0/sets/sharing-simp.smt2
@@ -0,0 +1,15 @@
+(set-logic ALL)
+(set-info :status sat)
+(declare-fun x () Int)
+(declare-fun y () Int)
+(declare-fun A () (Set Int))
+(declare-fun B () (Set Int))
+(declare-fun C () (Set Int))
+(declare-fun D () (Set Int))
+
+(assert (member x A))
+(assert (member y B))
+(assert (or (= C (intersection A B)) (= D (intersection A B))))
+
+
+(check-sat)
diff --git a/test/regress/regress0/sets/univset-simp.smt2 b/test/regress/regress0/sets/univset-simp.smt2
index ec97507..a8875cc 100644
--- a/test/regress/regress0/sets/univset-simp.smt2
+++ b/test/regress/regress0/sets/univset-simp.smt2
@@ -1,3 +1,5 @@
+; COMMAND-LINE: --sets-ext
+; EXPECT: sat
 (set-logic ALL)
 (set-info :status sat)
 
diff --git a/test/regress/regress0/strings/Makefile.am b/test/regress/regress0/strings/Makefile.am
index f4dc8eb..5c89c84 100644
--- a/test/regress/regress0/strings/Makefile.am
+++ b/test/regress/regress0/strings/Makefile.am
@@ -86,7 +86,9 @@ TESTS = \
   cmu-inc-nlpp-071516.smt2 \
   strings-index-empty.smt2 \
   bug768.smt2 \
-  username_checker_min.smt2
+  username_checker_min.smt2 \
+  repl-empty-sem.smt2 \
+  bug799-min.smt2
 
 FAILING_TESTS =
 
diff --git a/test/regress/regress0/strings/Makefile.in b/test/regress/regress0/strings/Makefile.in
index 7bbf970..4cdd1ac 100644
--- a/test/regress/regress0/strings/Makefile.in
+++ b/test/regress/regress0/strings/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -673,7 +674,9 @@ TESTS = \
   cmu-inc-nlpp-071516.smt2 \
   strings-index-empty.smt2 \
   bug768.smt2 \
-  username_checker_min.smt2
+  username_checker_min.smt2 \
+  repl-empty-sem.smt2 \
+  bug799-min.smt2
 
 FAILING_TESTS = 
 
@@ -1342,6 +1345,20 @@ username_checker_min.smt2.log: username_checker_min.smt2
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+repl-empty-sem.smt2.log: repl-empty-sem.smt2
+	@p='repl-empty-sem.smt2'; \
+	b='repl-empty-sem.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug799-min.smt2.log: bug799-min.smt2
+	@p='bug799-min.smt2'; \
+	b='bug799-min.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 .test.log:
 	@p='$<'; \
 	$(am__set_b); \
diff --git a/test/regress/regress0/strings/bug799-min.smt2 b/test/regress/regress0/strings/bug799-min.smt2
new file mode 100644
index 0000000..06acffc
--- /dev/null
+++ b/test/regress/regress0/strings/bug799-min.smt2
@@ -0,0 +1,18 @@
+; COMMAND-LINE: --incremental --strings-exp
+; EXPECT: sat
+(set-logic ALL)
+(set-info :status sat)
+
+(declare-fun u () String)
+(declare-fun s () String)
+
+(assert (= (str.len u) 9))
+(assert (= (str.at u 1) s))
+(assert (= (str.at u 2) "4"))
+(assert (= (str.at u 7) "5"))
+(assert (= (str.at u 8) "6"))
+
+(push 1)
+(assert (str.in.re s (re.range "0" "3")))
+
+(check-sat)
diff --git a/test/regress/regress0/strings/repl-empty-sem.smt2 b/test/regress/regress0/strings/repl-empty-sem.smt2
new file mode 100644
index 0000000..61f70bc
--- /dev/null
+++ b/test/regress/regress0/strings/repl-empty-sem.smt2
@@ -0,0 +1,11 @@
+; COMMAND-LINE: --strings-exp
+; EXPECT: unsat
+(set-logic ALL)
+(set-info :status unsat)
+(declare-fun x () String)
+(declare-fun z () String)
+(assert (= (str.len z) 0))
+(assert (= (str.replace "ab" z "c") x))
+(declare-fun y () String)
+(assert (= x (str.++ "c" y)))
+(check-sat)
diff --git a/test/regress/regress0/sygus/Makefile.in b/test/regress/regress0/sygus/Makefile.in
index af981d5..748198c 100644
--- a/test/regress/regress0/sygus/Makefile.in
+++ b/test/regress/regress0/sygus/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress0/tptp/Makefile.in b/test/regress/regress0/tptp/Makefile.in
index aff2d0e..da91e8f 100644
--- a/test/regress/regress0/tptp/Makefile.in
+++ b/test/regress/regress0/tptp/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress0/uf/Makefile.in b/test/regress/regress0/uf/Makefile.in
index c277014..24d1a33 100644
--- a/test/regress/regress0/uf/Makefile.in
+++ b/test/regress/regress0/uf/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress0/uflia/Makefile.in b/test/regress/regress0/uflia/Makefile.in
index c22a51e..63305fb 100644
--- a/test/regress/regress0/uflia/Makefile.in
+++ b/test/regress/regress0/uflia/Makefile.in
@@ -377,6 +377,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress0/uflra/Makefile.am b/test/regress/regress0/uflra/Makefile.am
index 09c012f..78bb67b 100644
--- a/test/regress/regress0/uflra/Makefile.am
+++ b/test/regress/regress0/uflra/Makefile.am
@@ -42,7 +42,8 @@ SMT_TESTS = \
 	fuzz01.smt
 
 # Regression tests for SMT2 inputs
-SMT2_TESTS =
+SMT2_TESTS = \
+	bug800.smt2
 
 # Regression tests for PL inputs
 CVC_TESTS = 
diff --git a/test/regress/regress0/uflra/Makefile.in b/test/regress/regress0/uflra/Makefile.in
index 5cf3938..cacaf63 100644
--- a/test/regress/regress0/uflra/Makefile.in
+++ b/test/regress/regress0/uflra/Makefile.in
@@ -88,7 +88,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-TESTS = $(SMT_TESTS) $(am__EXEEXT_1) $(am__EXEEXT_1) $(am__EXEEXT_1)
+TESTS = $(SMT_TESTS) $(SMT2_TESTS) $(am__EXEEXT_1) $(am__EXEEXT_1)
 subdir = test/regress/regress0/uflra
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
@@ -377,6 +377,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -632,7 +633,9 @@ SMT_TESTS = \
 
 
 # Regression tests for SMT2 inputs
-SMT2_TESTS = 
+SMT2_TESTS = \
+	bug800.smt2
+
 
 # Regression tests for PL inputs
 CVC_TESTS = 
@@ -963,6 +966,13 @@ fuzz01.smt.log: fuzz01.smt
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug800.smt2.log: bug800.smt2
+	@p='bug800.smt2'; \
+	b='bug800.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 .test.log:
 	@p='$<'; \
 	$(am__set_b); \
diff --git a/test/regress/regress0/uflra/bug800.smt2 b/test/regress/regress0/uflra/bug800.smt2
new file mode 100644
index 0000000..d36f62b
--- /dev/null
+++ b/test/regress/regress0/uflra/bug800.smt2
@@ -0,0 +1,168 @@
+; COMMAND-LINE: --incremental
+; EXPECT: sat
+; EXPECT: sat
+(set-logic QF_UFLRA)
+(set-info :source |CPAchecker with bounded model checking on SV-COMP14 program using MathSAT5, submitted by Philipp Wendler, http://cpachecker.sosy-lab.org|)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+
+
+(declare-fun |__ADDRESS_OF_main::c1| () Real)
+(declare-fun |__ADDRESS_OF_main::x1| () Real)
+(declare-fun |__ADDRESS_OF_main::x2| () Real)
+(declare-fun |__ADDRESS_OF_main::c2| () Real)
+(declare-fun |main::x3 at 3| () Real)
+(declare-fun |main::x1 at 3| () Real)
+(declare-fun |__ADDRESS_OF_main::d3| () Real)
+(declare-fun __BASE_ADDRESS_OF__ (Real) Real)
+(declare-fun |main::x2 at 3| () Real)
+(declare-fun |main::d3 at 2| () Real)
+(declare-fun |__VERIFIER_assert::cond at 2| () Real)
+(declare-fun |__ADDRESS_OF_main::x3| () Real)
+(declare-fun |main::d1 at 2| () Real)
+(declare-fun |__ADDRESS_OF_main::d2| () Real)
+(declare-fun |__ADDRESS_OF_main::__CPAchecker_TMP_0| () Real)
+(declare-fun |main::__CPAchecker_TMP_0 at 3| () Real)
+(declare-fun |__ADDRESS_OF_main::d1| () Real)
+(declare-fun |main::d2 at 2| () Real)
+(define-fun _7 () Real 0)
+(define-fun _8 () Real |__ADDRESS_OF_main::x1|)
+(define-fun _9 () Real (__BASE_ADDRESS_OF__ _8))
+(define-fun _10 () Bool (= _8 _9))
+(define-fun _11 () Real |__ADDRESS_OF_main::x2|)
+(define-fun _12 () Real (__BASE_ADDRESS_OF__ _11))
+(define-fun _13 () Bool (= _11 _12))
+(define-fun _14 () Bool (and _10 _13))
+(define-fun _15 () Real |__ADDRESS_OF_main::x3|)
+(define-fun _16 () Real (__BASE_ADDRESS_OF__ _15))
+(define-fun _17 () Bool (= _15 _16))
+(define-fun _18 () Bool (and _14 _17))
+(define-fun _19 () Real |__ADDRESS_OF_main::d1|)
+(define-fun _20 () Real (__BASE_ADDRESS_OF__ _19))
+(define-fun _21 () Bool (= _19 _20))
+(define-fun _22 () Real 1)
+(define-fun _23 () Real |main::d1 at 2|)
+(define-fun _24 () Bool (= _23 _22))
+(define-fun _25 () Bool (and _21 _24))
+(define-fun _26 () Bool (and _18 _25))
+(define-fun _27 () Real |__ADDRESS_OF_main::d2|)
+(define-fun _28 () Real (__BASE_ADDRESS_OF__ _27))
+(define-fun _29 () Bool (= _27 _28))
+(define-fun _30 () Real |main::d2 at 2|)
+(define-fun _31 () Bool (= _30 _22))
+(define-fun _32 () Bool (and _29 _31))
+(define-fun _33 () Bool (and _26 _32))
+(define-fun _34 () Real |__ADDRESS_OF_main::d3|)
+(define-fun _35 () Real (__BASE_ADDRESS_OF__ _34))
+(define-fun _36 () Bool (= _34 _35))
+(define-fun _37 () Real |main::d3 at 2|)
+(define-fun _38 () Bool (= _37 _22))
+(define-fun _39 () Bool (and _36 _38))
+(define-fun _40 () Bool (and _33 _39))
+(define-fun _41 () Real |__ADDRESS_OF_main::c1|)
+(define-fun _42 () Real (__BASE_ADDRESS_OF__ _41))
+(define-fun _43 () Bool (= _41 _42))
+(define-fun _44 () Bool (and _40 _43))
+(define-fun _45 () Real |__ADDRESS_OF_main::c2|)
+(define-fun _46 () Real (__BASE_ADDRESS_OF__ _45))
+(define-fun _47 () Bool (= _45 _46))
+(define-fun _48 () Bool (and _44 _47))
+(define-fun _49 () Real |main::x1 at 3|)
+(define-fun _50 () Bool (<= _49 _7))
+(define-fun _51 () Bool (not _50))
+(define-fun _53 () Bool (and _48 _51))
+(define-fun _54 () Bool (and _48 _50))
+(define-fun _55 () Real |main::x2 at 3|)
+(define-fun _56 () Bool (<= _55 _7))
+(define-fun _57 () Bool (not _56))
+(define-fun _59 () Bool (and _53 _57))
+(define-fun _60 () Bool (and _53 _56))
+(define-fun _61 () Bool (or _54 _60))
+(define-fun _62 () Real |main::x3 at 3|)
+(define-fun _63 () Bool (<= _62 _7))
+(define-fun _67 () Bool (and _59 _63))
+(define-fun _68 () Bool (or _61 _67))
+(define-fun _69 () Real |__ADDRESS_OF_main::__CPAchecker_TMP_0|)
+(define-fun _70 () Real (__BASE_ADDRESS_OF__ _69))
+(define-fun _71 () Bool (= _69 _70))
+(define-fun _72 () Bool (and _68 _71))
+(define-fun _73 () Bool (= _49 _7))
+(define-fun _75 () Bool (and _72 _73))
+(define-fun _76 () Bool (not _73))
+(define-fun _77 () Bool (and _72 _76))
+(define-fun _78 () Bool (= _55 _7))
+(define-fun _80 () Bool (and _77 _78))
+(define-fun _81 () Bool (not _78))
+(define-fun _82 () Bool (and _77 _81))
+(define-fun _83 () Bool (or _75 _80))
+(define-fun _84 () Bool (= _62 _7))
+(define-fun _86 () Bool (and _82 _84))
+(define-fun _87 () Bool (not _84))
+(define-fun _88 () Bool (and _82 _87))
+(define-fun _89 () Bool (or _83 _86))
+(define-fun _90 () Real |main::__CPAchecker_TMP_0 at 3|)
+(define-fun _91 () Bool (= _90 _7))
+(define-fun _92 () Bool (and _88 _91))
+(define-fun _93 () Bool (= _90 _22))
+(define-fun _94 () Bool (and _89 _93))
+(define-fun _95 () Bool (or _92 _94))
+(define-fun _96 () Real |__VERIFIER_assert::cond at 2|)
+(define-fun _97 () Bool (= _90 _96))
+(define-fun _98 () Bool (and _95 _97))
+(define-fun _99 () Bool (= _96 _7))
+(define-fun _101 () Bool (and _98 _99))
+(declare-fun __ART__34 at 0 () Bool)
+(declare-fun |main::c2 at 3| () Real)
+(declare-fun __ART__24 at 0 () Bool)
+(declare-fun __ART__45 at 0 () Bool)
+(declare-fun |main::c1 at 3| () Real)
+(declare-fun __ART__23 at 0 () Bool)
+(declare-fun __ART__32 at 0 () Bool)
+(declare-fun __ART__36 at 0 () Bool)
+(declare-fun __ART__26 at 0 () Bool)
+(declare-fun __ART__53 at 0 () Bool)
+(declare-fun __ART__29 at 0 () Bool)
+(define-fun _64 () Bool (not _63))
+(define-fun _108 () Real |main::c1 at 3|)
+(define-fun _109 () Bool (= _108 _7))
+(define-fun _123 () Real |main::c2 at 3|)
+(define-fun _124 () Bool (= _123 _7))
+(define-fun _160 () Bool __ART__23 at 0)
+(define-fun _161 () Bool (= _51 _160))
+(define-fun _162 () Bool __ART__24 at 0)
+(define-fun _163 () Bool (= _57 _162))
+(define-fun _164 () Bool (and _161 _163))
+(define-fun _165 () Bool __ART__26 at 0)
+(define-fun _166 () Bool (= _64 _165))
+(define-fun _167 () Bool (and _164 _166))
+(define-fun _168 () Bool __ART__29 at 0)
+(define-fun _169 () Bool (= _109 _168))
+(define-fun _170 () Bool (and _167 _169))
+(define-fun _171 () Bool __ART__32 at 0)
+(define-fun _172 () Bool (= _73 _171))
+(define-fun _173 () Bool (and _170 _172))
+(define-fun _174 () Bool __ART__34 at 0)
+(define-fun _175 () Bool (= _78 _174))
+(define-fun _176 () Bool (and _173 _175))
+(define-fun _177 () Bool __ART__36 at 0)
+(define-fun _178 () Bool (= _84 _177))
+(define-fun _179 () Bool (and _176 _178))
+(define-fun _180 () Bool __ART__45 at 0)
+(define-fun _181 () Bool (= _99 _180))
+(define-fun _182 () Bool (and _179 _181))
+(define-fun _183 () Bool __ART__53 at 0)
+(define-fun _184 () Bool (= _124 _183))
+(define-fun _185 () Bool (and _182 _184))
+
+
+(push 1)
+(assert _101)
+(set-info :status sat)
+(check-sat)
+(push 1)
+(assert _185)
+(set-info :status sat)
+(check-sat)
+(pop 1)
+(pop 1)
+(exit)
diff --git a/test/regress/regress0/unconstrained/Makefile.in b/test/regress/regress0/unconstrained/Makefile.in
index cfceda0..5804a12 100644
--- a/test/regress/regress0/unconstrained/Makefile.in
+++ b/test/regress/regress0/unconstrained/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress1/Makefile.am b/test/regress/regress1/Makefile.am
index c399a79..aebf0de 100644
--- a/test/regress/regress1/Makefile.am
+++ b/test/regress/regress1/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = . bv aufbv auflia datatypes rewriterules lemmas decision fmf strings sets sygus sep
+SUBDIRS = . bv aufbv auflia datatypes rewriterules lemmas decision fmf strings sets sygus sep quantifiers
 
 # don't override a BINARY imported from a personal.mk
 @mk_if at eq ($(BINARY),)
diff --git a/test/regress/regress1/Makefile.in b/test/regress/regress1/Makefile.in
index 0cbe2c2..8a5bd3c 100644
--- a/test/regress/regress1/Makefile.in
+++ b/test/regress/regress1/Makefile.in
@@ -434,6 +434,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -656,7 +657,7 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 zz_cvc4_use_personal_make_rules = @zz_cvc4_use_personal_make_rules@
-SUBDIRS = . bv aufbv auflia datatypes rewriterules lemmas decision fmf strings sets sygus sep
+SUBDIRS = . bv aufbv auflia datatypes rewriterules lemmas decision fmf strings sets sygus sep quantifiers
 @mk_empty at BINARY = cvc4
 LOG_COMPILER = @srcdir@/../run_regression
 AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXEEXT)
diff --git a/test/regress/regress1/aufbv/Makefile.in b/test/regress/regress1/aufbv/Makefile.in
index 5b89bc1..86ae446 100644
--- a/test/regress/regress1/aufbv/Makefile.in
+++ b/test/regress/regress1/aufbv/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress1/auflia/Makefile.in b/test/regress/regress1/auflia/Makefile.in
index 5276ae4..32e6770 100644
--- a/test/regress/regress1/auflia/Makefile.in
+++ b/test/regress/regress1/auflia/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress1/bug519.smt2 b/test/regress/regress1/bug519.smt2
index 72ec634..6cabbaa 100644
--- a/test/regress/regress1/bug519.smt2
+++ b/test/regress/regress1/bug519.smt2
@@ -1,4 +1,4 @@
-; COMMAND-LINE: -mi
+; COMMAND-LINE: --cbqi -mi --no-check-models
 ; EXPECT: sat
 ; EXPECT: unsat
 
diff --git a/test/regress/regress1/bv/Makefile.in b/test/regress/regress1/bv/Makefile.in
index 8bffad7..715d79c 100644
--- a/test/regress/regress1/bv/Makefile.in
+++ b/test/regress/regress1/bv/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress1/datatypes/Makefile.in b/test/regress/regress1/datatypes/Makefile.in
index 1310fc7..2349ac2 100644
--- a/test/regress/regress1/datatypes/Makefile.in
+++ b/test/regress/regress1/datatypes/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress1/decision/Makefile.in b/test/regress/regress1/decision/Makefile.in
index 680b72d..c47f9b6 100644
--- a/test/regress/regress1/decision/Makefile.in
+++ b/test/regress/regress1/decision/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress1/fmf/Makefile.am b/test/regress/regress1/fmf/Makefile.am
index 3cb00d6..efaf535 100644
--- a/test/regress/regress1/fmf/Makefile.am
+++ b/test/regress/regress1/fmf/Makefile.am
@@ -17,7 +17,8 @@ endif
 # If a test shouldn't be run in e.g. competition mode,
 # put it below in "TESTS +="
 TESTS =	\
-	ForElimination-scala-9.smt2
+	ForElimination-scala-9.smt2 \
+	nunchaku2309663.nun.min.smt2
 
 EXTRA_DIST = $(TESTS)
 
diff --git a/test/regress/regress1/fmf/Makefile.in b/test/regress/regress1/fmf/Makefile.in
index 0b595fd..28c8165 100644
--- a/test/regress/regress1/fmf/Makefile.in
+++ b/test/regress/regress1/fmf/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -605,7 +606,8 @@ AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXE
 # If a test shouldn't be run in e.g. competition mode,
 # put it below in "TESTS +="
 TESTS = \
-	ForElimination-scala-9.smt2
+	ForElimination-scala-9.smt2 \
+	nunchaku2309663.nun.min.smt2
 
 EXTRA_DIST = $(TESTS)
 all: all-am
@@ -802,6 +804,13 @@ ForElimination-scala-9.smt2.log: ForElimination-scala-9.smt2
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+nunchaku2309663.nun.min.smt2.log: nunchaku2309663.nun.min.smt2
+	@p='nunchaku2309663.nun.min.smt2'; \
+	b='nunchaku2309663.nun.min.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 .test.log:
 	@p='$<'; \
 	$(am__set_b); \
diff --git a/test/regress/regress1/fmf/nunchaku2309663.nun.min.smt2 b/test/regress/regress1/fmf/nunchaku2309663.nun.min.smt2
new file mode 100644
index 0000000..076150d
--- /dev/null
+++ b/test/regress/regress1/fmf/nunchaku2309663.nun.min.smt2
@@ -0,0 +1,79 @@
+; EXPECT: unsat
+; COMMAND-LINE: --finite-model-find
+(set-logic ALL_SUPPORTED)
+(set-info :status unsat)
+(declare-datatypes () ((nat__ (Suc__ (_select_Suc___0 nat__)) (zero__ ))))
+(declare-sort a__ 0)
+(declare-fun __nun_card_witness_0_ () a__)
+(declare-datatypes ()
+   ((tree__
+       (MKT__ (_select_MKT___0 a__) (_select_MKT___1 tree__) 
+          (_select_MKT___2 tree__) (_select_MKT___3 nat__)) 
+       (ET__ ))))
+(declare-sort G_plus__ 0)
+(declare-fun __nun_card_witness_1_ () G_plus__)
+(declare-fun plus__ (nat__ nat__) nat__)
+(declare-fun proj_G_plus__0_ (G_plus__) nat__)
+(declare-fun proj_G_plus__1_ (G_plus__) nat__)
+
+(declare-sort G_less__eq__ 0)
+(declare-fun __nun_card_witness_2_ () G_less__eq__)
+(declare-fun less__eq__ (nat__ nat__) Bool)
+(declare-fun proj_G_less__eq__0_ (G_less__eq__) nat__)
+(declare-fun proj_G_less__eq__1_ (G_less__eq__) nat__)
+
+(declare-sort G_max__ 0)
+(declare-fun __nun_card_witness_3_ () G_max__)
+(declare-fun max__ (nat__ nat__) nat__)
+(declare-fun proj_G_max__0_ (G_max__) nat__)
+(declare-fun proj_G_max__1_ (G_max__) nat__)
+
+(declare-sort G_one__ 0)
+(declare-fun __nun_card_witness_4_ () G_one__)
+(declare-fun one__ () nat__)
+(assert (forall ((a/295 G_one__)) (= one__ (Suc__ zero__))))
+(declare-sort G_height__ 0)
+(declare-fun __nun_card_witness_5_ () G_height__)
+(declare-fun height__ (tree__) nat__)
+(declare-fun proj_G_height__0_ (G_height__) tree__)
+
+(declare-sort G_avl__ 0)
+(declare-fun __nun_card_witness_6_ () G_avl__)
+(declare-fun avl__ (tree__) Bool)
+(declare-fun proj_G_avl__0_ (G_avl__) tree__)
+
+(declare-fun l__ () tree__)
+(declare-fun r__ () tree__)
+(declare-sort G_minus__ 0)
+(declare-fun __nun_card_witness_7_ () G_minus__)
+(declare-fun minus__ (Bool Bool) Bool)
+(declare-fun proj_G_minus__0_ (G_minus__) Bool)
+(declare-fun proj_G_minus__1_ (G_minus__) Bool)
+
+(declare-sort G_ht__ 0)
+(declare-fun __nun_card_witness_8_ () G_ht__)
+(declare-fun ht__ (tree__) nat__)
+(declare-fun proj_G_ht__0_ (G_ht__) tree__)
+
+(declare-sort G_mkt__ 0)
+(declare-fun __nun_card_witness_9_ () G_mkt__)
+(declare-fun mkt__ (a__ tree__ tree__) tree__)
+(declare-fun proj_G_mkt__0_ (G_mkt__) a__)
+(declare-fun proj_G_mkt__1_ (G_mkt__) tree__)
+(declare-fun proj_G_mkt__2_ (G_mkt__) tree__)
+
+(declare-fun x__ () a__)
+
+(assert (and
+(forall ((a/334 G_avl__)) (and (= (avl__ (proj_G_avl__0_ a/334)) (=> (is-MKT__ (proj_G_avl__0_ a/334)) (and (or (= (height__ (_select_MKT___1 (proj_G_avl__0_ a/334))) (height__ (_select_MKT___2 (proj_G_avl__0_ a/334)))) (= (height__ (_select_MKT___1 (proj_G_avl__0_ a/334))) (plus__ (height__ (_select_MKT___2 (proj_G_avl__0_ a/334))) one__)) (= (height__ (_select_MKT___2 (proj_G_avl__0_ a/334))) (plus__ (height__ (_select_MKT___1 (proj_G_avl__0_ a/334))) one__))) (= (_select_MKT___3 (proj [...]
+(forall ((a/603 G_minus__)) (= (minus__ (proj_G_minus__0_ a/603) (proj_G_minus__1_ a/603)) (ite (proj_G_minus__0_ a/603) (ite (proj_G_minus__1_ a/603) (and (proj_G_minus__0_ a/603) (not (proj_G_minus__1_ a/603))) (and (proj_G_minus__0_ a/603) (not (proj_G_minus__1_ a/603)))) (ite (proj_G_minus__1_ a/603) (and (proj_G_minus__0_ a/603) (not (proj_G_minus__1_ a/603))) (and (proj_G_minus__0_ a/603) (not (proj_G_minus__1_ a/603)))))) )
+(forall ((a/296 G_height__)) (and (= (height__ (proj_G_height__0_ a/296)) (ite (is-MKT__ (proj_G_height__0_ a/296)) (plus__ (max__ (height__ (_select_MKT___1 (proj_G_height__0_ a/296))) (height__ (_select_MKT___2 (proj_G_height__0_ a/296)))) one__) zero__)) (=> (is-MKT__ (proj_G_height__0_ a/296)) (and (exists ((a/297 G_plus__)) (and (= one__ (proj_G_plus__1_ a/297)) (= (max__ (height__ (_select_MKT___1 (proj_G_height__0_ a/296))) (height__ (_select_MKT___2 (proj_G_height__0_ a/296)))) ( [...]
+(forall ((a/604 G_ht__)) (= (ht__ (proj_G_ht__0_ a/604)) (ite (is-MKT__ (proj_G_ht__0_ a/604)) (_select_MKT___3 (proj_G_ht__0_ a/604)) zero__)) )
+
+(not (=> (and (avl__ l__) (exists ((a/1961 G_avl__)) (= l__ (proj_G_avl__0_ a/1961)) )) (=> (and (avl__ r__) (exists ((a/2175 G_avl__)) (= r__ (proj_G_avl__0_ a/2175)) )) (=> (or (and (= (height__ l__) (height__ r__)) (exists ((a/2334 G_height__)) (= l__ (proj_G_height__0_ a/2334)) ) (exists ((a/2333 G_height__)) (= r__ (proj_G_height__0_ a/2333)) )) (and (minus__ (= (height__ l__) (plus__ (height__ r__) one__)) (= (height__ r__) (plus__ (height__ l__) one__))) (exists ((a/2382 G_height_ [...]
+(forall ((a/605 G_mkt__)) (and (= (mkt__ (proj_G_mkt__0_ a/605) (proj_G_mkt__1_ a/605) (proj_G_mkt__2_ a/605)) (MKT__ (proj_G_mkt__0_ a/605) (proj_G_mkt__1_ a/605) (proj_G_mkt__2_ a/605) (plus__ (max__ (ht__ (proj_G_mkt__1_ a/605)) (ht__ (proj_G_mkt__2_ a/605))) one__))) (exists ((a/671 G_max__)) (and (= (ht__ (proj_G_mkt__2_ a/605)) (proj_G_max__1_ a/671)) (exists ((a/674 G_ht__)) (= (proj_G_mkt__2_ a/605) (proj_G_ht__0_ a/674)) ) (= (ht__ (proj_G_mkt__1_ a/605)) (proj_G_max__0_ a/671)) [...]
+(forall ((a/295 G_one__)) (= one__ (Suc__ zero__)) )
+
+))
+  
+(check-sat)
diff --git a/test/regress/regress1/lemmas/Makefile.in b/test/regress/regress1/lemmas/Makefile.in
index 08488a8..d213ab2 100644
--- a/test/regress/regress1/lemmas/Makefile.in
+++ b/test/regress/regress1/lemmas/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress1/sygus/Makefile.am b/test/regress/regress1/quantifiers/Makefile.am
similarity index 98%
copy from test/regress/regress1/sygus/Makefile.am
copy to test/regress/regress1/quantifiers/Makefile.am
index 0451f93..cc5834a 100644
--- a/test/regress/regress1/sygus/Makefile.am
+++ b/test/regress/regress1/quantifiers/Makefile.am
@@ -17,7 +17,7 @@ endif
 # If a test shouldn't be run in e.g. competition mode,
 # put it below in "TESTS +="
 TESTS =	\
-	hd-sdiv.sy
+	bug802.smt2
 
 EXTRA_DIST = $(TESTS)
 
diff --git a/test/regress/regress1/decision/Makefile.in b/test/regress/regress1/quantifiers/Makefile.in
similarity index 99%
copy from test/regress/regress1/decision/Makefile.in
copy to test/regress/regress1/quantifiers/Makefile.in
index 680b72d..e3330bd 100644
--- a/test/regress/regress1/decision/Makefile.in
+++ b/test/regress/regress1/quantifiers/Makefile.in
@@ -88,7 +88,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-subdir = test/regress/regress1/decision
+subdir = test/regress/regress1/quantifiers
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/config/abc.m4 \
 	$(top_srcdir)/config/antlr.m4 \
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -605,7 +606,7 @@ AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXE
 # If a test shouldn't be run in e.g. competition mode,
 # put it below in "TESTS +="
 TESTS = \
-	error3.smt
+	bug802.smt2
 
 EXTRA_DIST = $(TESTS)
 all: all-am
@@ -621,9 +622,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress1/decision/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/regress/regress1/quantifiers/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu test/regress/regress1/decision/Makefile
+	  $(AUTOMAKE) --gnu test/regress/regress1/quantifiers/Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -795,9 +796,9 @@ recheck: all
 	        am__force_recheck=am--force-recheck \
 	        TEST_LOGS="$$log_list"; \
 	exit $$?
-error3.smt.log: error3.smt
-	@p='error3.smt'; \
-	b='error3.smt'; \
+bug802.smt2.log: bug802.smt2
+	@p='bug802.smt2'; \
+	b='bug802.smt2'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
diff --git a/test/regress/regress1/quantifiers/bug802.smt2 b/test/regress/regress1/quantifiers/bug802.smt2
new file mode 100644
index 0000000..57da851
--- /dev/null
+++ b/test/regress/regress1/quantifiers/bug802.smt2
@@ -0,0 +1,12 @@
+(set-logic BV)
+(set-info :source | 
+Hardware fixpoint check problems.
+These benchmarks stem from an evaluation described in Wintersteiger, Hamadi, de Moura: Efficiently solving quantified bit-vector formulas, FMSD 42(1), 2013.
+The hardware models that were used are from the VCEGAR benchmark suite (see www.cprover.org/hardware/).
+ |)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(assert (forall ((Verilog__main.reset_64_0 Bool)) (forall ((Verilog__main.rst_64_0 Bool)) (forall ((Verilog__main.usb_rst_64_0 Bool)) (forall ((Verilog__main.i_tx_phy.hold_64_0 Bool)) (forall ((Verilog__main.i_tx_phy.stuff_64_0 Bool)) (forall ((Verilog__main.i_tx_phy.sft_done_e_64_0 Bool)) (forall ((Verilog__main.i_tx_phy.sft_done_64_0 Bool)) (forall ((Verilog__main.i_tx_phy.sft_done_r_64_0 Bool)) (forall ((Verilog__main.i_tx_phy.one_cnt_64_0 (_ BitVec 3))) (forall ((Verilog__main.i_tx_p [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress1/rewriterules/Makefile.in b/test/regress/regress1/rewriterules/Makefile.in
index 2028cbf..f147840 100644
--- a/test/regress/regress1/rewriterules/Makefile.in
+++ b/test/regress/regress1/rewriterules/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress1/sep/Makefile.in b/test/regress/regress1/sep/Makefile.in
index 113a81e..249dc56 100644
--- a/test/regress/regress1/sep/Makefile.in
+++ b/test/regress/regress1/sep/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress1/sets/Makefile.in b/test/regress/regress1/sets/Makefile.in
index af684c5..d1474dc 100644
--- a/test/regress/regress1/sets/Makefile.in
+++ b/test/regress/regress1/sets/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress1/strings/Makefile.am b/test/regress/regress1/strings/Makefile.am
index 7830f14..716e664 100644
--- a/test/regress/regress1/strings/Makefile.am
+++ b/test/regress/regress1/strings/Makefile.am
@@ -18,7 +18,9 @@ endif
 # put it below in "TESTS +="
 TESTS =	\
 	cmu-5042-0707-2.smt2 \
-	cmu-dis-0707-3.smt2
+	cmu-dis-0707-3.smt2 \
+	cmu-prereg-fmf.smt2 \
+	cmu-repl-len-nterm.smt2
 
 EXTRA_DIST = $(TESTS)
 
diff --git a/test/regress/regress1/strings/Makefile.in b/test/regress/regress1/strings/Makefile.in
index ba18304..74b6fda 100644
--- a/test/regress/regress1/strings/Makefile.in
+++ b/test/regress/regress1/strings/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -606,7 +607,9 @@ AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXE
 # put it below in "TESTS +="
 TESTS = \
 	cmu-5042-0707-2.smt2 \
-	cmu-dis-0707-3.smt2
+	cmu-dis-0707-3.smt2 \
+	cmu-prereg-fmf.smt2 \
+	cmu-repl-len-nterm.smt2
 
 EXTRA_DIST = $(TESTS)
 all: all-am
@@ -810,6 +813,20 @@ cmu-dis-0707-3.smt2.log: cmu-dis-0707-3.smt2
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cmu-prereg-fmf.smt2.log: cmu-prereg-fmf.smt2
+	@p='cmu-prereg-fmf.smt2'; \
+	b='cmu-prereg-fmf.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+cmu-repl-len-nterm.smt2.log: cmu-repl-len-nterm.smt2
+	@p='cmu-repl-len-nterm.smt2'; \
+	b='cmu-repl-len-nterm.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 .test.log:
 	@p='$<'; \
 	$(am__set_b); \
diff --git a/test/regress/regress1/strings/cmu-prereg-fmf.smt2 b/test/regress/regress1/strings/cmu-prereg-fmf.smt2
new file mode 100644
index 0000000..0d6827c
--- /dev/null
+++ b/test/regress/regress1/strings/cmu-prereg-fmf.smt2
@@ -0,0 +1,12 @@
+; COMMAND-LINE: --strings-exp --strings-fmf
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+
+(declare-fun url () String)
+
+(assert (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and [...]
+
+(check-sat)
+
+;(get-value (url))
diff --git a/test/regress/regress1/strings/cmu-repl-len-nterm.smt2 b/test/regress/regress1/strings/cmu-repl-len-nterm.smt2
new file mode 100644
index 0000000..004db77
--- /dev/null
+++ b/test/regress/regress1/strings/cmu-repl-len-nterm.smt2
@@ -0,0 +1,12 @@
+; COMMAND-LINE: --strings-exp
+; EXPECT: sat
+(set-logic ALL_SUPPORTED)
+(set-info :status sat)
+
+(declare-fun url () String)
+
+(assert (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and (and [...]
+
+(check-sat)
+
+;(get-value (url))
diff --git a/test/regress/regress1/sygus/Makefile.am b/test/regress/regress1/sygus/Makefile.am
index 0451f93..2dff1f1 100644
--- a/test/regress/regress1/sygus/Makefile.am
+++ b/test/regress/regress1/sygus/Makefile.am
@@ -17,7 +17,8 @@ endif
 # If a test shouldn't be run in e.g. competition mode,
 # put it below in "TESTS +="
 TESTS =	\
-	hd-sdiv.sy
+	hd-sdiv.sy \
+	stopwatch-bt.sy
 
 EXTRA_DIST = $(TESTS)
 
diff --git a/test/regress/regress1/sygus/Makefile.in b/test/regress/regress1/sygus/Makefile.in
index daf66e9..ea320b1 100644
--- a/test/regress/regress1/sygus/Makefile.in
+++ b/test/regress/regress1/sygus/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -605,7 +606,8 @@ AM_LOG_FLAGS = $(RUN_REGRESSION_ARGS) @abs_top_builddir@/src/main/$(BINARY)$(EXE
 # If a test shouldn't be run in e.g. competition mode,
 # put it below in "TESTS +="
 TESTS = \
-	hd-sdiv.sy
+	hd-sdiv.sy \
+	stopwatch-bt.sy
 
 EXTRA_DIST = $(TESTS)
 all: all-am
@@ -802,6 +804,13 @@ hd-sdiv.sy.log: hd-sdiv.sy
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+stopwatch-bt.sy.log: stopwatch-bt.sy
+	@p='stopwatch-bt.sy'; \
+	b='stopwatch-bt.sy'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 .test.log:
 	@p='$<'; \
 	$(am__set_b); \
diff --git a/test/regress/regress1/sygus/stopwatch-bt.sy b/test/regress/regress1/sygus/stopwatch-bt.sy
new file mode 100644
index 0000000..0162805
--- /dev/null
+++ b/test/regress/regress1/sygus/stopwatch-bt.sy
@@ -0,0 +1,230 @@
+; EXPECT: unsat
+; COMMAND-LINE: --sygus-inv-templ=post --no-dump-synth
+(set-logic LIA)
+
+(define-fun
+  __node_init_previous_0 (
+    (previous.usr.x at 0 Int)
+    (previous.usr.y at 0 Int)
+    (previous.res.init_flag at 0 Bool)
+  ) Bool
+  
+  (and (= previous.usr.y at 0 0) previous.res.init_flag at 0)
+)
+
+(define-fun
+  __node_trans_previous_0 (
+    (previous.usr.x at 1 Int)
+    (previous.usr.y at 1 Int)
+    (previous.res.init_flag at 1 Bool)
+    (previous.usr.x at 0 Int)
+    (previous.usr.y at 0 Int)
+    (previous.res.init_flag at 0 Bool)
+  ) Bool
+  
+  (and (= previous.usr.y at 1 previous.usr.x at 0) (not previous.res.init_flag at 1))
+)
+
+(define-fun
+  __node_init_stopwatch_0 (
+    (stopwatch.usr.toggle at 0 Bool)
+    (stopwatch.usr.reset at 0 Bool)
+    (stopwatch.usr.count at 0 Int)
+    (stopwatch.res.init_flag at 0 Bool)
+    (stopwatch.res.abs_0 at 0 Bool)
+    (stopwatch.impl.usr.running at 0 Bool)
+    (stopwatch.res.abs_1 at 0 Int)
+    (stopwatch.res.inst_0 at 0 Bool)
+  ) Bool
+  
+  (and
+   (= stopwatch.impl.usr.running at 0 (not (not stopwatch.usr.toggle at 0)))
+   (=
+    stopwatch.usr.count at 0
+    (ite
+     stopwatch.usr.reset at 0
+     0
+     (ite
+      stopwatch.impl.usr.running at 0
+      (+ stopwatch.res.abs_1 at 0 1)
+      stopwatch.res.abs_1 at 0)))
+   (= stopwatch.res.abs_0 at 0 (>= stopwatch.usr.count at 0 0))
+   (__node_init_previous_0
+    stopwatch.usr.count at 0
+    stopwatch.res.abs_1 at 0
+    stopwatch.res.inst_0 at 0)
+   stopwatch.res.init_flag at 0
+   true)
+)
+
+(define-fun
+  __node_trans_stopwatch_0 (
+    (stopwatch.usr.toggle at 1 Bool)
+    (stopwatch.usr.reset at 1 Bool)
+    (stopwatch.usr.count at 1 Int)
+    (stopwatch.res.init_flag at 1 Bool)
+    (stopwatch.res.abs_0 at 1 Bool)
+    (stopwatch.impl.usr.running at 1 Bool)
+    (stopwatch.res.abs_1 at 1 Int)
+    (stopwatch.res.inst_0 at 1 Bool)
+    (stopwatch.usr.toggle at 0 Bool)
+    (stopwatch.usr.reset at 0 Bool)
+    (stopwatch.usr.count at 0 Int)
+    (stopwatch.res.init_flag at 0 Bool)
+    (stopwatch.res.abs_0 at 0 Bool)
+    (stopwatch.impl.usr.running at 0 Bool)
+    (stopwatch.res.abs_1 at 0 Int)
+    (stopwatch.res.inst_0 at 0 Bool)
+  ) Bool
+  
+  (and
+   (=
+    stopwatch.impl.usr.running at 1
+    (not (= stopwatch.impl.usr.running at 0 stopwatch.usr.toggle at 1)))
+   (=
+    stopwatch.usr.count at 1
+    (ite
+     stopwatch.usr.reset at 1
+     0
+     (ite
+      stopwatch.impl.usr.running at 1
+      (+ stopwatch.res.abs_1 at 1 1)
+      stopwatch.res.abs_1 at 1)))
+   (= stopwatch.res.abs_0 at 1 (>= stopwatch.usr.count at 1 0))
+   (__node_trans_previous_0
+    stopwatch.usr.count at 1
+    stopwatch.res.abs_1 at 1
+    stopwatch.res.inst_0 at 1
+    stopwatch.usr.count at 0
+    stopwatch.res.abs_1 at 0
+    stopwatch.res.inst_0 at 0)
+   (not stopwatch.res.init_flag at 1)
+   true)
+)
+
+
+
+(synth-inv str_invariant(
+  (stopwatch.usr.toggle Bool)
+  (stopwatch.usr.reset Bool)
+  (stopwatch.usr.count Int)
+  (stopwatch.res.init_flag Bool)
+  (stopwatch.res.abs_0 Bool)
+  (stopwatch.impl.usr.running Bool)
+  (stopwatch.res.abs_1 Int)
+  (stopwatch.res.inst_0 Bool)
+))
+
+
+(declare-primed-var stopwatch.usr.toggle Bool)
+(declare-primed-var stopwatch.usr.reset Bool)
+(declare-primed-var stopwatch.usr.count Int)
+(declare-primed-var stopwatch.res.init_flag Bool)
+(declare-primed-var stopwatch.res.abs_0 Bool)
+(declare-primed-var stopwatch.impl.usr.running Bool)
+(declare-primed-var stopwatch.res.abs_1 Int)
+(declare-primed-var stopwatch.res.inst_0 Bool)
+
+(define-fun
+  init (
+    (stopwatch.usr.toggle Bool)
+    (stopwatch.usr.reset Bool)
+    (stopwatch.usr.count Int)
+    (stopwatch.res.init_flag Bool)
+    (stopwatch.res.abs_0 Bool)
+    (stopwatch.impl.usr.running Bool)
+    (stopwatch.res.abs_1 Int)
+    (stopwatch.res.inst_0 Bool)
+  ) Bool
+  
+  (and
+   (= stopwatch.impl.usr.running (not (not stopwatch.usr.toggle)))
+   (=
+    stopwatch.usr.count
+    (ite
+     stopwatch.usr.reset
+     0
+     (ite
+      stopwatch.impl.usr.running
+      (+ stopwatch.res.abs_1 1)
+      stopwatch.res.abs_1)))
+   (= stopwatch.res.abs_0 (>= stopwatch.usr.count 0))
+   (__node_init_previous_0
+    stopwatch.usr.count
+    stopwatch.res.abs_1
+    stopwatch.res.inst_0)
+   stopwatch.res.init_flag
+   true)
+)
+
+(define-fun
+  trans (
+    
+    ;; Constants.
+    
+    
+    ;; Current state.
+    (stopwatch.usr.toggle Bool)
+    (stopwatch.usr.reset Bool)
+    (stopwatch.usr.count Int)
+    (stopwatch.res.init_flag Bool)
+    (stopwatch.res.abs_0 Bool)
+    (stopwatch.impl.usr.running Bool)
+    (stopwatch.res.abs_1 Int)
+    (stopwatch.res.inst_0 Bool)
+    
+    ;; Next state.
+    (stopwatch.usr.toggle! Bool)
+    (stopwatch.usr.reset! Bool)
+    (stopwatch.usr.count! Int)
+    (stopwatch.res.init_flag! Bool)
+    (stopwatch.res.abs_0! Bool)
+    (stopwatch.impl.usr.running! Bool)
+    (stopwatch.res.abs_1! Int)
+    (stopwatch.res.inst_0! Bool)
+  
+  ) Bool
+  
+  (and
+   (=
+    stopwatch.impl.usr.running!
+    (not (= stopwatch.impl.usr.running stopwatch.usr.toggle!)))
+   (=
+    stopwatch.usr.count!
+    (ite
+     stopwatch.usr.reset!
+     0
+     (ite
+      stopwatch.impl.usr.running!
+      (+ stopwatch.res.abs_1! 1)
+      stopwatch.res.abs_1!)))
+   (= stopwatch.res.abs_0! (>= stopwatch.usr.count! 0))
+   (__node_trans_previous_0
+    stopwatch.usr.count!
+    stopwatch.res.abs_1!
+    stopwatch.res.inst_0!
+    stopwatch.usr.count
+    stopwatch.res.abs_1
+    stopwatch.res.inst_0)
+   (not stopwatch.res.init_flag!)
+   true)
+)
+
+(define-fun
+  prop (
+    (stopwatch.usr.toggle Bool)
+    (stopwatch.usr.reset Bool)
+    (stopwatch.usr.count Int)
+    (stopwatch.res.init_flag Bool)
+    (stopwatch.res.abs_0 Bool)
+    (stopwatch.impl.usr.running Bool)
+    (stopwatch.res.abs_1 Int)
+    (stopwatch.res.inst_0 Bool)
+  ) Bool
+  
+  stopwatch.res.abs_0
+)
+
+(inv-constraint str_invariant init trans prop)
+
+(check-synth)
diff --git a/test/regress/regress2/Makefile.am b/test/regress/regress2/Makefile.am
index c47d584..72c66a0 100644
--- a/test/regress/regress2/Makefile.am
+++ b/test/regress/regress2/Makefile.am
@@ -43,8 +43,9 @@ TESTS =	bug136.smt \
 	FIREFLY_3_e2_2236_e7_3681.ec.minimized.smt2 \
 	xs-09-16-3-4-1-5.smt \
 	xs-09-16-3-4-1-5.decn.smt \
-	uflia-error0.smt2
-
+	uflia-error0.smt2 \
+	bug812.smt2
+ 
 EXTRA_DIST = $(TESTS) \
 	FIREFLY_3_e2_2236_e7_3681.ec.minimized.smt2.expect \
 	uflia-error0.smt2.expect \
diff --git a/test/regress/regress2/Makefile.in b/test/regress/regress2/Makefile.in
index 309ec67..eed90ef 100644
--- a/test/regress/regress2/Makefile.in
+++ b/test/regress/regress2/Makefile.in
@@ -434,6 +434,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -688,7 +689,8 @@ TESTS = bug136.smt \
 	FIREFLY_3_e2_2236_e7_3681.ec.minimized.smt2 \
 	xs-09-16-3-4-1-5.smt \
 	xs-09-16-3-4-1-5.decn.smt \
-	uflia-error0.smt2
+	uflia-error0.smt2 \
+	bug812.smt2
 
 EXTRA_DIST = $(TESTS) \
 	FIREFLY_3_e2_2236_e7_3681.ec.minimized.smt2.expect \
@@ -1143,6 +1145,13 @@ uflia-error0.smt2.log: uflia-error0.smt2
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+bug812.smt2.log: bug812.smt2
+	@p='bug812.smt2'; \
+	b='bug812.smt2'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 .test.log:
 	@p='$<'; \
 	$(am__set_b); \
diff --git a/test/regress/regress2/arith/Makefile.in b/test/regress/regress2/arith/Makefile.in
index 541c6fb..020eb33 100644
--- a/test/regress/regress2/arith/Makefile.in
+++ b/test/regress/regress2/arith/Makefile.in
@@ -375,6 +375,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress2/bug812.smt2 b/test/regress/regress2/bug812.smt2
new file mode 100644
index 0000000..8bc87fa
--- /dev/null
+++ b/test/regress/regress2/bug812.smt2
@@ -0,0 +1,117 @@
+(set-logic UFNIA)
+(set-info :source |
+    VCC and HAVOC benchmarks.  Contributed by Nikolaj Bjorner, Leonardo de Moura,
+    Michal Moskal, and Shaz Qadeer.
+  |)
+(set-info :smt-lib-version 2.0)
+(set-info :category "industrial")
+(set-info :status unsat)
+(declare-fun x (Int Int) Int)
+(declare-fun true_1 () Int)
+(declare-fun false_1 () Int)
+(declare-fun intGreater (Int Int) Int)
+(declare-fun intAtLeast (Int Int) Int)
+(declare-fun intAtMost (Int Int) Int)
+(declare-fun intLess (Int Int) Int)
+(declare-fun anyNeq (Int Int) Int)
+(declare-fun anyEqual (Int Int) Int)
+(declare-fun boolNot (Int) Int)
+(declare-fun boolOr (Int Int) Int)
+(declare-fun boolAnd (Int Int) Int)
+(declare-fun boolImplies (Int Int) Int)
+(declare-fun boolIff (Int Int) Int)
+(declare-fun select2 (Int Int Int) Int)
+(declare-fun store2 (Int Int Int Int) Int)
+(declare-fun select1 (Int Int) Int)
+(declare-fun store1 (Int Int Int) Int)
+(declare-fun NULL_CHECK (Int) Int)
+(declare-fun LIFT (Int) Int)
+(declare-fun BIT_BAND (Int Int) Int)
+(declare-fun POW2 (Int) Int)
+(declare-fun choose (Int Int Int) Int)
+(declare-fun DIV (Int Int) Int)
+(declare-fun MULT (Int Int) Int)
+(declare-fun PLUS (Int Int Int) Int)
+(declare-fun MINUS_LEFT_PTR (Int Int Int) Int)
+(declare-fun MINUS_BOTH_PTR_OR_BOTH_INT (Int Int Int) Int)
+(declare-fun n_fooInv (Int) Int)
+(declare-fun n_foo (Int) Int)
+(declare-fun S_n_fooInv (Int) Int)
+(declare-fun S_n_foo (Int) Int)
+(declare-fun p_fooInv (Int) Int)
+(declare-fun p_foo (Int) Int)
+(declare-fun S_p_fooInv (Int) Int)
+(declare-fun S_p_foo (Int) Int)
+(declare-fun next_fooInv (Int) Int)
+(declare-fun next_foo (Int) Int)
+(declare-fun S_next_fooInv (Int) Int)
+(declare-fun S_next_foo (Int) Int)
+(declare-fun Match (Int Int) Int)
+(declare-fun foo_name () Int)
+(declare-fun n_foo_name () Int)
+(declare-fun p_foo_name () Int)
+(declare-fun next_foo_name () Int)
+(declare-fun HasType (Int Int) Int)
+(declare-fun Pfoo_name () Int)
+(declare-fun Field (Int) Int)
+(declare-fun PPfoo_name () Int)
+(declare-fun PINT4_name () Int)
+(declare-fun PPINT4_name () Int)
+(declare-fun INT4_name () Int)
+(declare-fun Values (Int) Int)
+(declare-fun Unified (Int) Int)
+(declare-fun Disjoint (Int Int) Int)
+(declare-fun Subset (Int Int) Int)
+(declare-fun Equal (Int Int) Int)
+(declare-fun Inverse (Int Int) Int)
+(declare-fun Difference (Int Int) Int)
+(declare-fun Singleton (Int) Int)
+(declare-fun Union (Int Int) Int)
+(declare-fun Dereference (Int Int) Int)
+(declare-fun Intersection (Int Int) Int)
+(declare-fun Empty () Int)
+(declare-fun HavocArray (Int Int Int) Int)
+(declare-fun AtLeast (Int Int) Int)
+(declare-fun Rep (Int Int) Int)
+(declare-fun FourBytesToInt (Int Int Int Int) Int)
+(declare-fun TwoBytesToInt (Int Int) Int)
+(declare-fun OneByteToInt (Int) Int)
+(declare-fun BYTE () Int)
+(declare-fun FREED () Int)
+(declare-fun ALLOCATED () Int)
+(declare-fun UNALLOCATED () Int)
+(declare-fun Mem_3 () Int)
+(declare-fun result_bar_24_4_1__0 () Int)
+(declare-fun Mem_0 () Int)
+(declare-fun LOOP_12_Mem_0 () Int)
+(declare-fun LOOP_12_Mem_1 () Int)
+(declare-fun sum_0 () Int)
+(declare-fun head_0 () Int)
+(declare-fun head_2 () Int)
+(declare-fun tempBoogie0_0 () Int)
+(declare-fun tempBoogie0_3 () Int)
+(declare-fun sum_2 () Int)
+(declare-fun i_0 () Int)
+(declare-fun i_3 () Int)
+(declare-fun LOOP_12_alloc_0 () Int)
+(declare-fun LOOP_12_alloc_1 () Int)
+(declare-fun Mem () Int)
+(declare-fun Base (Int) Int)
+(declare-fun alloc () Int)
+(declare-fun sum_1 () Int)
+(declare-fun i_1 () Int)
+(declare-fun head_1 () Int)
+(declare-fun Mem_1 () Int)
+(declare-fun tempBoogie0_2 () Int)
+(declare-fun i_2 () Int)
+(declare-fun Mem_2 () Int)
+(declare-fun head1 () Int)
+(declare-fun sum () Int)
+(declare-fun result_bar_24_4_1_ () Int)
+(declare-fun i () Int)
+(declare-fun head () Int)
+(assert (not (or (not (forall ((?A Int) (?i Int) (?v Int)) (= (select1 (store1 ?A ?i ?v) ?i) ?v))) (not (forall ((?A Int) (?i Int) (?j Int) (?v Int)) (=> (not (= ?i ?j)) (= (select1 (store1 ?A ?i ?v) ?j) (select1 ?A ?j))))) (not (forall ((?A Int) (?o Int) (?f Int) (?v Int)) (= (select2 (store2 ?A ?o ?f ?v) ?o ?f) ?v))) (not (forall ((?A Int) (?o Int) (?f Int) (?p Int) (?g Int) (?v Int)) (=> (not (= ?o ?p)) (= (select2 (store2 ?A ?o ?f ?v) ?p ?g) (select2 ?A ?p ?g))))) (not (forall ((?A I [...]
+(assert (not (or (not (distinct UNALLOCATED ALLOCATED FREED BYTE next_foo_name p_foo_name n_foo_name INT4_name PINT4_name PPINT4_name PPfoo_name Pfoo_name foo_name)) (not (forall ((?b0 Int) (?c0 Int)) (! (=> (= (OneByteToInt ?b0) (OneByteToInt ?c0)) (= ?b0 ?c0)) :pattern ((OneByteToInt ?b0) (OneByteToInt ?c0)) ))) (not (forall ((?b0 Int) (?b1 Int) (?c0 Int) (?c1 Int)) (! (=> (= (TwoBytesToInt ?b0 ?b1) (TwoBytesToInt ?c0 ?c1)) (not (or (not (= ?b0 ?c0)) (not (= ?b1 ?c1))))) :pattern ((Two [...]
+(assert (let ((?v_52 (forall ((?a Int)) (! (let ((?v_53 (Field ?a))) (= (HasType (select1 (select1 Mem_3 ?v_53) ?a) ?v_53) true_1)) :pattern ((select1 (select1 Mem_3 (Field ?a)) ?a)) ))) (?v_51 (= (HasType result_bar_24_4_1__0 INT4_name) true_1)) (?v_50 (not (or (not (<= 0 head_0)) (not (<= head_0 0))))) (?v_49 (= head_0 0)) (?v_48 (=> true (=> false true))) (?v_44 (= (HasType sum_1 INT4_name) true_1))) (let ((?v_47 (not ?v_44)) (?v_29 (= (HasType i_1 INT4_name) true_1))) (let ((?v_35 (n [...]
+(check-sat)
+(exit)
diff --git a/test/regress/regress3/Makefile.in b/test/regress/regress3/Makefile.in
index 2c524db..fe6b546 100644
--- a/test/regress/regress3/Makefile.in
+++ b/test/regress/regress3/Makefile.in
@@ -434,6 +434,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/regress4/Makefile.in b/test/regress/regress4/Makefile.in
index adc4e6d..e5faffa 100644
--- a/test/regress/regress4/Makefile.in
+++ b/test/regress/regress4/Makefile.in
@@ -434,6 +434,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/regress/run_regression b/test/regress/run_regression
index a04e488..5bc46d4 100755
--- a/test/regress/run_regression
+++ b/test/regress/run_regression
@@ -212,7 +212,7 @@ else
   error "benchmark \`$benchmark' must be *.cvc or *.smt or *.smt2 or *.p or *.sy"
 fi
 
-command_line="${command_line:+$command_line }--lang=$lang"
+command_line="--lang=$lang ${command_line:+$command_line }"
 
 gettemp expoutfile cvc4_expect_stdout.$$.XXXXXXXXXX
 gettemp experrfile cvc4_expect_stderr.$$.XXXXXXXXXX
diff --git a/test/system/CVC4JavaTest.java b/test/system/CVC4JavaTest.java
index bd0d1ff..4046a04 100644
--- a/test/system/CVC4JavaTest.java
+++ b/test/system/CVC4JavaTest.java
@@ -2,9 +2,9 @@
 /*! \file CVC4JavaTest.java
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/test/system/Makefile.in b/test/system/Makefile.in
index 47ba4d7..76f8ef7 100644
--- a/test/system/Makefile.in
+++ b/test/system/Makefile.in
@@ -432,6 +432,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
diff --git a/test/system/boilerplate.cpp b/test/system/boilerplate.cpp
index 297f69a..dc32d9b 100644
--- a/test/system/boilerplate.cpp
+++ b/test/system/boilerplate.cpp
@@ -2,9 +2,9 @@
 /*! \file boilerplate.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/test/system/cvc3_george.h b/test/system/cvc3_george.h
index 9dba3ed..afe1b89 100644
--- a/test/system/cvc3_george.h
+++ b/test/system/cvc3_george.h
@@ -2,9 +2,9 @@
 /*! \file cvc3_george.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/test/system/cvc3_main.cpp b/test/system/cvc3_main.cpp
index c74cb73..cee5675 100644
--- a/test/system/cvc3_main.cpp
+++ b/test/system/cvc3_main.cpp
@@ -2,9 +2,9 @@
 /*! \file cvc3_main.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/test/system/ouroborous.cpp b/test/system/ouroborous.cpp
index 189bf20..d019a79 100644
--- a/test/system/ouroborous.cpp
+++ b/test/system/ouroborous.cpp
@@ -2,9 +2,9 @@
 /*! \file ouroborous.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/test/system/smt2_compliance.cpp b/test/system/smt2_compliance.cpp
index 933f8c6..2961bf7 100644
--- a/test/system/smt2_compliance.cpp
+++ b/test/system/smt2_compliance.cpp
@@ -2,9 +2,9 @@
 /*! \file smt2_compliance.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Tim King, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/test/system/statistics.cpp b/test/system/statistics.cpp
index 11b8cd3..ffe9e47 100644
--- a/test/system/statistics.cpp
+++ b/test/system/statistics.cpp
@@ -2,9 +2,9 @@
 /*! \file statistics.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/test/system/two_smt_engines.cpp b/test/system/two_smt_engines.cpp
index c916ac7..47510ba 100644
--- a/test/system/two_smt_engines.cpp
+++ b/test/system/two_smt_engines.cpp
@@ -2,9 +2,9 @@
 /*! \file two_smt_engines.cpp
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/test/unit/Makefile.am b/test/unit/Makefile.am
index 129d086..c2f2b24 100644
--- a/test/unit/Makefile.am
+++ b/test/unit/Makefile.am
@@ -37,7 +37,6 @@ UNIT_TESTS += \
 	context/cdmap_black \
 	context/cdmap_white \
 	context/cdvector_black \
-	context/stacking_vector_black \
 	util/array_store_all_black \
 	util/assert_white \
 	util/binary_heap_black \
diff --git a/test/unit/Makefile.in b/test/unit/Makefile.in
index c1a6731..990483d 100644
--- a/test/unit/Makefile.in
+++ b/test/unit/Makefile.in
@@ -121,7 +121,6 @@ target_triplet = @target@
 @WHITE_AND_BLACK_TESTS_TRUE@	context/cdmap_black \
 @WHITE_AND_BLACK_TESTS_TRUE@	context/cdmap_white \
 @WHITE_AND_BLACK_TESTS_TRUE@	context/cdvector_black \
- at WHITE_AND_BLACK_TESTS_TRUE@	context/stacking_vector_black \
 @WHITE_AND_BLACK_TESTS_TRUE@	util/array_store_all_black \
 @WHITE_AND_BLACK_TESTS_TRUE@	util/assert_white \
 @WHITE_AND_BLACK_TESTS_TRUE@	util/binary_heap_black \
@@ -478,6 +477,7 @@ CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
 CLN_CFLAGS = @CLN_CFLAGS@
 CLN_LIBS = @CLN_LIBS@
+COVERAGE_ON = @COVERAGE_ON@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CRYPTOMINISAT_HOME = @CRYPTOMINISAT_HOME@
@@ -1311,13 +1311,6 @@ context/cdvector_black.log: context/cdvector_black
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-context/stacking_vector_black.log: context/stacking_vector_black
-	@p='context/stacking_vector_black'; \
-	b='context/stacking_vector_black'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
 util/array_store_all_black.log: util/array_store_all_black
 	@p='util/array_store_all_black'; \
 	b='util/array_store_all_black'; \
diff --git a/test/unit/expr/expr_manager_public.cpp b/test/unit/expr/expr_manager_public.cpp
index 088f974..b16e108 100644
--- a/test/unit/expr/expr_manager_public.cpp
+++ b/test/unit/expr/expr_manager_public.cpp
@@ -21,12 +21,12 @@ int main( int argc, char *argv[] ) {
     return status;
 }
 bool suite_ExprManagerPublic_init = false;
-#include "/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/test/unit/expr/expr_manager_public.h"
+#include "/barrett/scratch/preiner/src/CVC4/test/unit/expr/expr_manager_public.h"
 
 static ExprManagerPublic suite_ExprManagerPublic;
 
 static CxxTest::List Tests_ExprManagerPublic = { 0, 0 };
-CxxTest::StaticSuiteDescription suiteDescription_ExprManagerPublic( "../../../../../test/unit/expr/expr_manager_public.h", 30, "ExprManagerPublic", suite_ExprManagerPublic, Tests_ExprManagerPublic );
+CxxTest::StaticSuiteDescription suiteDescription_ExprManagerPublic( "../../../test/unit/expr/expr_manager_public.h", 30, "ExprManagerPublic", suite_ExprManagerPublic, Tests_ExprManagerPublic );
 
 static class TestDescription_suite_ExprManagerPublic_testMkAssociative : public CxxTest::RealTestDescription {
 public:
diff --git a/test/unit/expr/expr_manager_public.h b/test/unit/expr/expr_manager_public.h
index 788b496..804e77d 100644
--- a/test/unit/expr/expr_manager_public.h
+++ b/test/unit/expr/expr_manager_public.h
@@ -2,9 +2,9 @@
 /*! \file expr_manager_public.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Christopher L. Conway, Tim King, Morgan Deters
+ **   Christopher L. Conway, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/test/unit/expr/expr_public.cpp b/test/unit/expr/expr_public.cpp
index ad80a35..fbd9ea3 100644
--- a/test/unit/expr/expr_public.cpp
+++ b/test/unit/expr/expr_public.cpp
@@ -21,12 +21,12 @@ int main( int argc, char *argv[] ) {
     return status;
 }
 bool suite_ExprPublic_init = false;
-#include "/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/test/unit/expr/expr_public.h"
+#include "/barrett/scratch/preiner/src/CVC4/test/unit/expr/expr_public.h"
 
 static ExprPublic suite_ExprPublic;
 
 static CxxTest::List Tests_ExprPublic = { 0, 0 };
-CxxTest::StaticSuiteDescription suiteDescription_ExprPublic( "../../../../../test/unit/expr/expr_public.h", 31, "ExprPublic", suite_ExprPublic, Tests_ExprPublic );
+CxxTest::StaticSuiteDescription suiteDescription_ExprPublic( "../../../test/unit/expr/expr_public.h", 31, "ExprPublic", suite_ExprPublic, Tests_ExprPublic );
 
 static class TestDescription_suite_ExprPublic_testDefaultCtor : public CxxTest::RealTestDescription {
 public:
diff --git a/test/unit/expr/expr_public.h b/test/unit/expr/expr_public.h
index cfdee8d..248a432 100644
--- a/test/unit/expr/expr_public.h
+++ b/test/unit/expr/expr_public.h
@@ -4,7 +4,7 @@
  ** Top contributors (to current version):
  **   Morgan Deters, Dejan Jovanovic, Christopher L. Conway
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/test/unit/expr/type_cardinality_public.cpp b/test/unit/expr/type_cardinality_public.cpp
index 33cf888..e27b8bf 100644
--- a/test/unit/expr/type_cardinality_public.cpp
+++ b/test/unit/expr/type_cardinality_public.cpp
@@ -21,12 +21,12 @@ int main( int argc, char *argv[] ) {
     return status;
 }
 bool suite_TypeCardinalityPublic_init = false;
-#include "/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/test/unit/expr/type_cardinality_public.h"
+#include "/barrett/scratch/preiner/src/CVC4/test/unit/expr/type_cardinality_public.h"
 
 static TypeCardinalityPublic suite_TypeCardinalityPublic;
 
 static CxxTest::List Tests_TypeCardinalityPublic = { 0, 0 };
-CxxTest::StaticSuiteDescription suiteDescription_TypeCardinalityPublic( "../../../../../test/unit/expr/type_cardinality_public.h", 32, "TypeCardinalityPublic", suite_TypeCardinalityPublic, Tests_TypeCardinalityPublic );
+CxxTest::StaticSuiteDescription suiteDescription_TypeCardinalityPublic( "../../../test/unit/expr/type_cardinality_public.h", 32, "TypeCardinalityPublic", suite_TypeCardinalityPublic, Tests_TypeCardinalityPublic );
 
 static class TestDescription_suite_TypeCardinalityPublic_testTheBasics : public CxxTest::RealTestDescription {
 public:
diff --git a/test/unit/expr/type_cardinality_public.h b/test/unit/expr/type_cardinality_public.h
index dd2578e..14a2d1a 100644
--- a/test/unit/expr/type_cardinality_public.h
+++ b/test/unit/expr/type_cardinality_public.h
@@ -2,9 +2,9 @@
 /*! \file type_cardinality_public.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/test/unit/memory.h b/test/unit/memory.h
index d15d135..9acc14d 100644
--- a/test/unit/memory.h
+++ b/test/unit/memory.h
@@ -2,9 +2,9 @@
 /*! \file memory.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Tim King, Morgan Deters, Paul Meng
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim
diff --git a/test/unit/util/cardinality_public.cpp b/test/unit/util/cardinality_public.cpp
index f67a1c5..ce1c174 100644
--- a/test/unit/util/cardinality_public.cpp
+++ b/test/unit/util/cardinality_public.cpp
@@ -21,12 +21,12 @@ int main( int argc, char *argv[] ) {
     return status;
 }
 bool suite_CardinalityPublic_init = false;
-#include "/barrett/scratch/cvc4-nightly/src/cvc4-2017-03-16/test/unit/util/cardinality_public.h"
+#include "/barrett/scratch/preiner/src/CVC4/test/unit/util/cardinality_public.h"
 
 static CardinalityPublic suite_CardinalityPublic;
 
 static CxxTest::List Tests_CardinalityPublic = { 0, 0 };
-CxxTest::StaticSuiteDescription suiteDescription_CardinalityPublic( "../../../../../test/unit/util/cardinality_public.h", 26, "CardinalityPublic", suite_CardinalityPublic, Tests_CardinalityPublic );
+CxxTest::StaticSuiteDescription suiteDescription_CardinalityPublic( "../../../test/unit/util/cardinality_public.h", 26, "CardinalityPublic", suite_CardinalityPublic, Tests_CardinalityPublic );
 
 static class TestDescription_suite_CardinalityPublic_testCardinalities : public CxxTest::RealTestDescription {
 public:
diff --git a/test/unit/util/cardinality_public.h b/test/unit/util/cardinality_public.h
index 7d7c675..939a4d2 100644
--- a/test/unit/util/cardinality_public.h
+++ b/test/unit/util/cardinality_public.h
@@ -2,9 +2,9 @@
 /*! \file cardinality_public.h
  ** \verbatim
  ** Top contributors (to current version):
- **   Morgan Deters, Tim King
+ **   Morgan Deters, Paul Meng, Tim King
  ** This file is part of the CVC4 project.
- ** Copyright (c) 2009-2016 by the authors listed in the file AUTHORS
+ ** Copyright (c) 2009-2017 by the authors listed in the file AUTHORS
  ** in the top-level source directory) and their institutional affiliations.
  ** All rights reserved.  See the file COPYING in the top-level source
  ** directory for licensing information.\endverbatim

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/cvc4.git



More information about the debian-science-commits mailing list